가상 메모리를 사용하면서 생기는 부가 장점으로 다음과 같은 것들이 있다.
º 공유 메모리 사용
º Copy-on-write 메커니즘
º Memory mapped file
여러 프로세스 간의 communication의 한 가지 방법으로 공유 메모리를 사용할 수 있는데, demand-paging 기법을 사용할 경우 다른 프로세스의 각각의 페이지가 같은 프레임을 가리키도록 하면 공유 메모리를 사용할 수 있다.
윈도우의 dll이나 리눅스의 so 역시 이 방식으로 물리 메모리 프레임을 같이 가리키게 하여, 전체 메모리를 절약하게 된다. 아래 그림에서 프로세스 A의 1번 페이지, 프로세스 B의 7번 페이지가 물리 메모리 5번 프레임을 같이 가리키는 것을 볼 수 있다.
부모 프로세스를 clone하여 자식 프로세스를 생성하였을 때, 처음에는 같은 메모리를 사용하도록 하다가 그곳에 Write가 발생하였을 때 메모리를 copy하는 것으로 이것 또한 공유 메모리처럼 같은 프레임을 가리키도록 하였다가 복사가 되었을 때 새로운 프레임을 할당하면 된다.
Linux에서는 자식 프로세스(child process)를 생성(fork)하면 같은 메모리 공간을 공유하게 된다. 그런데 부모 프로세스가 데이터를 새로 넣거나, 수정하거나, 지우게 되면 같은 메모리 공간을 공유할 수 없게 된다. 따라서 부모 프로세스는 해당 페이지를 복사한 다음 수정한다. 이것을 Copy-on-Write(COW)라고 한다. 만약 자식 프로세스가 없었다면 페이지를 복사하지 않고 바로 수정했을 것이다. 따라서 자식 프로세스가 생성되어 작업을 하는 동안 데이터 입력/수정/삭제가 발생하면 해당 메모리 페이지를 복사해야 되기 때문에 평소보다 더 많은 메모리가 필요해진다.
<자식 프로세스를 생성(fork)한 직후 프로세스와 메모리 모습>
< 부모 프로세스가 Page C 를 수정한 후 프로세스와 메모리 모습 >
가. MMU(Memory Management Unit)의 개념
CPU와 Cache 사이 불연속적 메모리 주소를 논리적 연속된 가상 주소로 Mapping 관리 장치
나. MMU 역할
주요 기능 | 설명 |
---|---|
주소 변환 | 실제 메모리와 가상 메모리의 주소 변환 |
메모리 보호 | 각 영역 간 읽기/쓰기 침범 차단 역할 |
가. MMU 주요 기능
주요 기능 | 설명 |
---|---|
주소 변환 | 가상메모리 주소를 물리 주소로 변환 |
특권 통제 | 사용자 프로그램에서 커널 영역 침범 차단 |
캐시 통제 | 캐시 가능 영역과 불가 영역 설정 |
읽기/쓰기보호 | Read / Write 불가 영역 생성 기능 |
메모리 보호 | 각 프로세스 별 영역만 접근하도록 통제 |
나. MMU 주소 변환 과정
Memory Mapping 절차 | 절차 설명 |
---|---|
① MMU에 가상주소 전달 ② Page Table 탐색 ③ 물리주소 MMU에 전달 ④ 주소신호(RAS,CAS)발생 ⑤ Data를 CPU에 전달 |
가. TLB(Translation Look-aside Buffer)의 정의
자주 참조되는 가상 메모리 주소를 실제 메모리 주소로 매핑 시 성능 개선 위해 MMU(Memory Management Unit)에서 사용하는 고속 캐시.
나. TLB의 특징
특징 | 설명 |
---|---|
변환 결과 테이블 | 매번 주소를 변환하는 대신 변환 결과를 테이블에 저장하여 사용 |
특수 고속 캐시 | 페이지 테이블 항목에 대한 특수 고속 캐시 사용하여 메모리 참조시간 단축 |
가. TLB의 개념도
나. TLB의 동작원리
방안 | 상태 | TLB 동작 |
---|---|---|
TLB Hit | 가상주소에 해당 항목이 TLB에 있음 | CPU가 TLB 통해 즉시 물리주소 생성 |
TLB Miss | 가상주소에 해당 항목이 TLB에 없음 | 주기억장치 페이지테이블 참조, TLB 갱신 |
페이지 Fault | 가상주소에 해당 항목이 주기억장치에 없음 | 디스크에서 페이지 반입, 페이지테이블 갱신 |
다. 직접사상 방식과 TLB의 비교
항목 | 직접 사상의 주소 변환 | TLB에 의한 주소 변환 |
---|---|---|
사상 방식 | Direct Mapping | Association Mapping |
페이지 테이블 위치 | 주기억장치 내 | 고속의 특수 캐시 내 (TLB) |
장단점 | 데이터 접근시 주기억장치 두 번 접근 필요 | 1. TLB 병렬 고속탐색 2. 고비용, 적용 한계 |
고려사항 | 상세 내용 |
---|---|
Entry 수 증가 | TLB 참조 증가, 많은 전력 사용 |
페이지 크기 증대 | 사상 적용 증가, 내부 단편화 증가 |
다중 페이지 지원 | 적은 내부 단편화, 큰 페이지 사용 가능 |