Computer Science/Operating System(OS)
Memory Management(2)-메모리 관리
J._.cobb
2022. 3. 21. 02:51
Noncontiguous Allocation
Paging
- Process의 virtual memory를 동일한 사이즈(보통 4KB)의 page 단위로 나눔
- Virtual memory의 내용이 page 단위로 noncontiguous 하게 저장됨
- 일부는 backing storage에, 일부는 physical memory에 저장
Basic Method
- physical memory를 동일한 크기의 frame으로 나눔
- logical memory를 동일 크기의 page로 나눔 (frame과 같은 크기)
- 모든 가용 frame들을 관리
- page table을 사용하여 logical address를 physical address로 반환
- External fragmentation 발생 안 함
- Internal fragmentation 발생 가능
Paging Example
- page table에는 각 page별 entry가 존재하고 entry는 물리적인 frame의 위치를 알려줌
Address Translation Architecture
- Offset: 페이지 내에서 얼마큼 떨어져 있는지 나타냄
- Page 내부에서의 상대적인 위치(Offset)는 PageTable에서 Main Memory로 Page가 옮겨지더라도 똑같기 때문에 주소변환에도 영향을 받지 않음.
Implementation of Page Table
- page table은 register와 cache에 들어가지 못하고, main memory에 상주
- 32비트 주소체계의 컴퓨터는 약 4GB의 주소공간을 갖는 프로그램을 지원할 수 있다.
- Page의 단위가 4KB이기 때문에 1M(약 백만 개)가량의 page entry를 담기에는 용량이 부족하기 때문
- 또한, Page table은 각 프로그램마다 존재하기 때문에 여러 개가 생성된다.
- Page-table base register (PTBR)가 메모리 상의 page table의 시작 위치 가리킴
- Page-table length register(PTLR)가 테이블 크기를 보관
- 모든 메모리 접근 연산에는 두 번의 memory access 필요
- page table을 통한 주소전환을 위해 접근 1번
- 주소 전환 후 실제 데이터를 메모리에서 접근하기 위한 data/instruction 접근 1번
- 속도의 향상을 위해 associative register 혹은 translation look-aside buffer(TLB)라 불리는 고속의 lookup hardware cache 사용
- 두 번의 메모리 접근 연산은 비용이 크기 때문 (시간이 2배로 걸림)
*TLB : 일종의 cache, 메인 메모리보다 빠르고 메인 메모리와 CPU사이에 존재하는 주소변환을 해주는 계층
Paging Hardware with TLB
- CPU가 논리적인 주소를 주게 되면 메모리 상에 있는 pagetable에 접근하기 전에 TLB에 먼저 접근해서 TLB의 정보로 주소변환이 가능한지 확인
Associative Register
- Associative register (TLB)
- TLB에는 page table 중 일부(빈번히 참조되는 엔트리)만 존재
- parallel search(전체 탐색)가 가능
- TLB에는 page table 중 일부(빈번히 참조되는 엔트리)만 존재
- Address translation
- page table 중 일부가 associative register에 보관되어 있음
- 만약 해당 page #가 associative register에 있는 경우 곧바로 frame #을 얻음 (main memory 1번 접근)
- 그렇지 않은 경우 main memory에 있는 page table로부터 frame #을 얻음 (main memory 2번 접근)
- TLB는 context switch 때 flush (remove old entries)
- 프로세스마다 주소변환 정보가 다르기 때문
- page table과 TLB의 차이
- 주소 변환 과정에 필요한 탐색 방법에 차이가 있음
- TLB: parallel search
- page table: p(page number) 번째 entry에 직접 접근
- TLB는 page number와 frame number가 쌍을 이룸
- 이를 통해 main memory에 1번만 접근 가능
- 주소 변환 과정에 필요한 탐색 방법에 차이가 있음
Effective Access Time(실제 메모리 접근 시간)
- Associative register lookup time은 main memory에 접근하는 시간인 1보다 매우 작음
- <hit> = (1+ε)α
- 1 : main 메모리에 접근하는 시간
- ε : TLB에 접근하는 시간
- α : TLB에서 정보가 찾아지는 비율
- <miss> = (2+ε)(1-α)
- 2 : main 메모리에 접근하는 시간
- 주소변환을 위해 메모리에 있는 page table에 접근 1 + 주소변환 후 실제 데이터 접근을 위한 메모리 접근 1
- ε : TLB에 접근하는 시간
- 1-α : TLB에서 정보가 찾아지지 않는 비율
- 2 : main 메모리에 접근하는 시간
- 따라서 전체 결과인, 2 + ε - α 는 α가 1에 가까운 높은 비율이기 때문에 페이지 테이블만 존재하는 경우보다 빠르다는 것을 알 수 있음
Two-level Page Table
- 사용 목적: 시간이 더 걸려도 Page Table을 사용하기 위한 공간을 줄이는 것
- 사용되지 않는 주소 공간에 대한 outer page table의 엔트리 값은 NULL로 지정하고 대응하는 inner page table은 만들지 않음.
- 현재의 컴퓨터는 address space가 매우 큰 프로그램을 지원
- 32 bit address 사용 시 : $2^{32}$ (4G)의 전체 메모리 주소 공간
- page size가 4K 시 1M 개(약 백만 개)의 page table entry 필요
- 각 page entry가 4B시 프로세스당 4MB의 page table 필요
- 그러나, 대부분의 프로그램은 4G의 주소 공간 중 지극히 일부분만 사용하므로 page table 공간이 심각하게 낭비됨
- 32 bit address 사용 시 : $2^{32}$ (4G)의 전체 메모리 주소 공간
- page table 자체를 page로 구성
- 즉, 안쪽 page table의 크기는 page크기와 똑같음
Two-Level Paging Example
- offset : Page 하나의 크기가 4KB(=2^(12) Byte)이므로 이를 구분하기 위해서는 12bit가 필요.
- p2 : 각 entry의 크기는 4Byte이기 때문에 Page하나 당 1K(=2^(10))개씩 존재하므로 이를 구분하기 위해서 각각 10bit씩 필요
- p1(바깥쪽 page table) : 32bit - offset(12bit) - p2(10bit) = 10bit
Address-Translation Scheme
- 2단계 페이징
출처
KOCW : 이화여대 반효경 교수님 <운영체제, 2014>