TIL(Today I Learned)

1월 8일(일)

공부한 내용을 제 언어로 빠르게 정리한 내용이라서 잘못된 내용이 있을 수 있습니다.

가상 메모리

  • 실제 물리적 메모리의 크기보다 더 많은 크기의 메모리가 있는 것처럼 사용할 수 있도록 하는 것 (문득 운영체제 시간에 교수님이 디스크 공간을 메모리처럼 사용하는 것이라고 설명해주신게 떠올랐다.)
  • 가상의 메모리인 Logical 메모리를 통해 실제 존재하는 Physical 메모리보다 더 많은 크기의 메모리가 있는 것처럼 사용할 수 있게함
  • 프로그램이 필요한 공간을 Page 단위로 나눠서 당장 필요한 부분만 Physical 메모리에 로드하고, 아닌 부분은 디스크에 저장하고 있다가 필요할때 Physical 메모리에 로드
  • 프로그래머가 실제 디바이스의 메모리가 얼마 남았는지를 신경쓰지 않고 프로그램이 할 수 있도록 해주는 장점이 있다.
  • Thrashing(쓰레씽): 디스크에서 메모리로 프로그램을 자주 로드하게되면 실행속도가 저하되는 문제가 있다.

Process vs Thread

  • Process: 실행되기 위해 로드된 프로그램, 프로그램 카운터, 스텍 영역, 데이터 영역, 힙 영역 등을 갖는다.
  • Thread: 프로세스 내의 제어 흐름(control of flow), 프로세스의 코드 영역, 데이터 영역 등의 메모리 영역을 공유하고, 각 쓰레드만의 쓰레드 아이디, 프로그램 카운터, 레지스터 세트, 스텍 영역을 갖는다.
  • 쓰레드를 사용하면 프로세스를 할당하는 것에 비해 더 효율적이다. 프로세스를 할당하기 위해 필요한 자원이 더 많으므로. 또한 컨텍스트 스위치 시간이 쓰레드가 더 빠르다.

Context Switch

  • 다른 프로세스를 실행하기 위해 PCB에 로드된 현재 프로세스의 컨텍스트를 다른 프로세스의 컨텍스트로 바꿔주는 작업

참고