가상 메모리, 페이징, 세그멘테이션, 뮤텍스, 세마포어
8. 가상 메모리란?
메모리에 로드되어 실행 중인 프로세스가 사용하고 있지 않은 페이지를
추상화된 가상 메모리 공간에 저장하고, 필요할 때 참조함으로써,
메모리의 효율성을 높여주는 OS의 메모리 관리 기법
8-1. 가상 메모리의 주요 기능
주기억장치를 하드디스크에 대한 캐시로 설정하고, 필요한 페이지만 유지하여 효율적으로 관리하고,
프로세스 별로 통일된 가상 메모리 주소 공간을 할당해줘서 메모리 관리가 단순해지고,
거의 무한에 가까운 가상 메모리 공간을 배정하여 프로세스들끼리의 메모리 침범 발생률을 크게 줄인다.
8-2. 가상 메모리와 관련된 하드웨어에 대해 말씀해주세요.
MMU(Memory Management Unit)과 TLB(Translation Lookaside Buffer)
MMU(메모리 관리 장치)
- 가상 메모리 주소를 물리 메모리 주소로 변환해주는 하드웨어 (CPU가 메모리에 접근하는 것을 관리)
TLB(변환 참조 버퍼) - 변환 작업의 속도를 높이기 위해 사용되는 Cache (보조 기억장치)
9. 페이징과 세그멘테이션이란?
페이징
- 메모리 공간 일정한 크기의 블록인 페이지로 나누어 관리하는 기법
- 페이징을 사용하기 위해 주소의 동적 재배치를 허용하고, 메모리 주소 변환을 위한 MMU가 필요하다
- 외부 단편화를 줄일 수 있지만, 페이지가 커질 수록 내부 단편화가 발생한다.
세그멘테이션
- 사용자 관점에서의 메모리 관리 기법
- 페이징은 일정한 크기의 블록으로 미리 공간을 나눠놓지만,
세그멘테이션은 메모리를 사용하는 시점에 논리적 내용 단위인 세그먼트로 나눈다. - 동적으로 할당하는 방식이므로 외부 단편화가 발생할 수 있다.
9-1. 페이지나 세그먼트가 메모리에 할당되는 방법
페이지, 세그먼트 테이블에 접근하여 필요한 가상 메모리주소를 MMU가 가상 주소를 물리주소로 변환시켜줍니다.
9-2. 단편화를 해결할 수 있는 방법
세그먼트를 페이징하는 방법을 취하면 해결할 수 있지만, 두 가지 테이블을 모두 거쳐야 하므로 속도가 떨어진다는 단점이 있다.
10. 뮤텍스와 세마포어란? 차이점은?
뮤텍스 (상호배제)
- Critical Section에 단 하나의 스레드만 접근할 수 있고, 이 스레드가 빠져나올 때 까지 해당 section에 대한 다른 스레드의 접근을 막고 대기시키는 것
세마포어
- 사전에 허용치를 설정하여, 이 허용치만큼만 동시에 접근이 가능한 방식
- 스레드가 접근할 때마다 count가 하나씩 줄어들게 되고, 0이 되면 접근을 대기 시킨다.
차이점
- 세마포어를 허용치를 1로 설정하면 뮤텍스가 될 수 있지만, 뮤텍스는 세마포어가 될 수 없다.
- 세마포어는 소유가 불가능하지만, 뮤텍스는 소유가 가능하다.
- 뮤텍스는 프로세스 범위, 세마포어는 파일시스템 상 파일로 존재
- 뮤텍스는 소유하고 있는 쓰레드만 해제 가능, 세마포어는 다른 스레드가 해제 가능
10-1. 뮤텍스의 소유권
뮤텍스는 신호, 비신호 상태를 가지는데, 이 뮤텍스를 소유하게 되면 비신호 상태가 됩니다.
뮤텍스를 생성할 때 어떤 스레드가 소유할 것인지 결정하고, 아무도 소유하지 않으면 신호상태로 기다리게 됩니다.
가상 메모리, 페이징, 세그멘테이션, 뮤텍스, 세마포어
You need to set
install_url
to use ShareThis. Please set it in _config.yml
.