운영체제 - 메모리관리(4)
OS를 공부하면서 정리를 한 내용들 입니다.
지난번 연속할당에 이어서 불연속 할당의 paging에 대해서 정리합니다.
하나의 프로세스가 메모리의 여러 영역에 분산되어 올라 갈 수 있습니다.
이것을 불연속 할당이라고 부릅니다.
Noncontiguous allocation(불연속 할당)
크게 3가지로 구분 합니다.
- Paging
- Segmentation
- Paged Segmentation
Paging
프로세스 각각의 virtual 메모리 주소공간을 페이지 단위로 자릅니다.
virtual memory의 내용이 page 단위로 불연속하게 저장이 됩니다.
당장 필요한 부분은 physical memory에 저장, 그렇지 않은 부분은 backing storage(보조기억장치)에 저장합니다.
Basic Method
- physical memory를 동일한 크기의 frame으로 나눔
- logical memory를 동일 크기의 page로 나눔(frame과 같은 크기)
- 모든 가용 frame들을 관리
- page table을 사용하여 주소변환을 함(logical address를 physical address로 변환)
- 외부 단편화 발생 안함
- 내부 단편화 발생 가능
- 프로그램의 크기는 페이지 크기의 배수가 안 될 수도 있습니다.
페이지 테이블
Page table은 main memory에 상주합니다.
- Page-table base register(PTBR)가 page table을 가리킵니다.
- Page-table length reigster(PTLR)가 테이블의 크기를 보관합니다.
- 모든 메모리 접근 연산에는 2번의 memory acces가 필요합니다.
- page table 접근 1번, 실제 data/instruction 접근 1번
- 속도 향상을 위해 associative register 혹은 translation look-aside buffer(TLB)라 불리는 고속의 lookup HW cache를 사용
2단계 페이지 테이블
페이지 테이블을 사용하면 좋은 점은 프로그램을 동일 크기의 페이지로 잘라서 메모리의 빈위치가 있으면 올릴 수 있고,
당장 필요한 것만 사용하므로 메모리를 효율적으로 사용할 수 있습니다.
그런데
페이지의 갯수가 프로세스마다 100만개가 넘습니다.
현대의 컴퓨터는 address space가 매우 큰 프로그램을 지원합니다.
- 32bit address 사용시 : 2^32(4G)의 주소 공간을 사용
- page size가 4k시 1M개의 page table entry가 필요
- 각 page entry가 4B시 프로세스당 4M의 page table 필요
- 그러나, 대부분의 프로그램은 4G의 주소 공간 중 지극히 일부만 사용하므로 page table의 공간이 심히 낭비됨.
이러한 점을 해결하기 위해 2단계 페이지 테이블 기법을 사용합니다.
-
page table 자체를 page로 구성
-
사용되지 않는 주소 공간은 외부 페이지 테이블 항목을 NULL로 설정하고, 대응하는 내부 페이지 테이블을 생성하지 않는다.
다층 페이지 테이블을 사용하면 메모리 공간 소모는 줄어들지만, 메모리 접근 횟수가 많아져서 접근 시간이 크게 늘어난다.
이를 해결하기 위해서 TLB를 사용한다.
4단계 페이지 테이블 / 메모리 접근 시간 100ns / TLB 접근 시간 20ns / 주소 변환 정보 TLB 존재 확률 98% 이면
(EAT = 0.98 *120 + 0.02 * 520 = 128ns)
-참고 KOCW 이화여자 대학교 반효경 교수님 : 운영체제 강의