TIL(Today I Learned)
1월 8일(일)
공부한 내용을 제 언어로 빠르게 정리한 내용이라서 잘못된 내용이 있을 수 있습니다.
가상 메모리
- 실제 물리적 메모리의 크기보다 더 많은 크기의 메모리가 있는 것처럼 사용할 수 있도록 하는 것 (문득 운영체제 시간에 교수님이 디스크 공간을 메모리처럼 사용하는 것이라고 설명해주신게 떠올랐다.)
- 가상의 메모리인 Logical 메모리를 통해 실제 존재하는 Physical 메모리보다 더 많은 크기의 메모리가 있는 것처럼 사용할 수 있게함
- 프로그램이 필요한 공간을 Page 단위로 나눠서 당장 필요한 부분만 Physical 메모리에 로드하고, 아닌 부분은 디스크에 저장하고 있다가 필요할때 Physical 메모리에 로드
- 프로그래머가 실제 디바이스의 메모리가 얼마 남았는지를 신경쓰지 않고 프로그램이 할 수 있도록 해주는 장점이 있다.
- Thrashing(쓰레씽): 디스크에서 메모리로 프로그램을 자주 로드하게되면 실행속도가 저하되는 문제가 있다.
Process vs Thread
- Process: 실행되기 위해 로드된 프로그램, 프로그램 카운터, 스텍 영역, 데이터 영역, 힙 영역 등을 갖는다.
- Thread: 프로세스 내의 제어 흐름(control of flow), 프로세스의 코드 영역, 데이터 영역 등의 메모리 영역을 공유하고, 각 쓰레드만의 쓰레드 아이디, 프로그램 카운터, 레지스터 세트, 스텍 영역을 갖는다.
- 쓰레드를 사용하면 프로세스를 할당하는 것에 비해 더 효율적이다. 프로세스를 할당하기 위해 필요한 자원이 더 많으므로. 또한 컨텍스트 스위치 시간이 쓰레드가 더 빠르다.
Context Switch
- 다른 프로세스를 실행하기 위해 PCB에 로드된 현재 프로세스의 컨텍스트를 다른 프로세스의 컨텍스트로 바꿔주는 작업
참고
- 가상메모리: OPERATING SYSTEM CONCEPTS(공룡책), ABRAHAM SILBERSCHATZ, WILEY, 9판, 397-402 페이지
- https://namu.wiki/w/%EA%B0%80%EC%83%81%20%EB%A9%94%EB%AA%A8%EB%A6%AC
- http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-isa-ko-4/s1-memory-virt-details.html
- 프로세스: 공룡책 105페이지
- 쓰레드: 공룡책 163페이지, 191페이지
- 컨텍스트 스위치: 공룡책 114페이지