Virtual Storage
- Non-continuous allocation
- 사용자 프로그램을 여러 개의 block으로 분할
- 실행 시,
필요한 block들만 메모리
에 적재
- 나머지 block
들은 swap device(Disk)
에 존재
- Paging system
- Segmentation system
- Hybrid paging/segmentation system
Address Mapping
Continuous allocation
- Relative address(상대 주소):
프로그램의 시작 주소를 0으로 가정한 주소
- Relocation(재배치)
메모리 할당 후, 할당된 주소(allocation address)에 따라 상대 주소들을 조정하는 작업
Non-continuous allocation
- Virtual address (가상 주소) = relative address
- Logical address(논리주소)
- 연속된 메모리 할당을 가정한 주소
- Real address (실제 주소) = absolute (physical)
- 실제 메모리에 적재된 주소
- Address mapping:
Virtual address -> real address
Block mapping
procedure
- 프로세스의 BMT에 접근
- BMT에서 block b에 대한 항목(entry)를 찾음
- Residence bit 검사
3-1) Residence bit = 0,
swap device에서 해당 블록을 메모리로 가져 옴
BMT 업데이트 후 3-2 단계 수행
3-2) Residence bit = 1,
BMT에서 b에 대한 real address 값 a 확인
- 실제 주소 r 계산 (r=a+d)
- r을 이용하여 메모리에 접근
Paging system
- 프로그램을 같은 크기의 블록으로 분할(Pages)
- Page: 프로그램의 분할된 block
- Page frame:
- 메모리의 분할 영역으로 page와 같은 크기로 분할
Address Mapping
- Virtual address: v = (p,d)
- p: page number
- d: displacement(offset)
- Address mapping
- PMT(Page Map Table) 사용 - kernel에 존재
- Address mapping mechanism
- Direct mapping(직접 사상) = block mapping과 유사
- Associative mapping(연관 사상) - TLB
- Hybrid direct/associative mapping
Direct mapping
Residence bit가 0인 경우, page fault 발생함. 따라서, swap device에서 해당 page를 메모리로 적재한 후 해당 entry에서 page frame 번호를 확인하여 물리 주소를 계산함.
-> page fault 시 결국 swap device에 접근하게 되고, 이는 disk I/O 이므로 프로세스는 block됨. 이는 context switching이 발생한다는 의미이므로 overhead가 큼
문제점
- 원하는 메모리에 접근하고 싶다 가정하면 PMT가 메모리(kernel이 메모리에 존재함)에 존재하기 때문에 PMT 확인하러 한번, 데이터를 찾으러 한번 즉, 메모리 접근 횟수가 2배이므로 성능이 저하되고, PMT를 위한 메모리 공간이 필요함.
해결방안
- Associative mapping(TLB)
- PMT를 위한 전용 기억장치(공간) 사용
등등
Associative Mapping
- TLB(Translation Look-aside Buffer, 비싼 장치라서 큰 PMT를 다루기가 어려움)에 PMT를 적재하고, PMT를 병렬 탐색하여 overhead를 줄이고, 속도를 높임.
Hybrid Direct/Associative Mapping
- 두 기법을 혼합하여 사용함
- HW 비용은 줄이고, Associative mapping의 장점 활용
- 작은 크기의 TLB 사용
- PMT: 메모리(커널 공간)에 저장
- TLB: PMT 중 일부 entry들을 적재(최근에 사용된 page들에 대한 entry 저장)
- Locality (지역성) 활용
- 프로그램의 수행과정에서 한번 접근한 영역을 다시 접근(시간 지역성) 또는 인접 영역을 다시 접근(공간 지역성)할 가능성이 높음
- 처음 PMT에 접근했을 때 페이지가 적재되어 있을 경우 물리 주소로 변환하여 메모리에 접근하고, 그렇지 않으면 kernel에 존재하는 PMT에서 page를 찾아 메모리에 접근하는데 이 때, 해당 정보를 TLB에 올림. 그럼 다음에 동일한 페이지를 방문할 시 TLB에서 바로 페이지 정보를 획득할 수 있음
Memory management
- Page와 같은 크기로 미리 분할하여 관리 및 사용
- Frame table
- Page frame당 하나의 entry
- Frame table 구성
- Allocated/available field
- PID field
- Link field: For free list(사용가능한 fp들을 연결)
- AV: Free list header(free list의 시작점)
Page sharing
- 여러 프로세스가 특정 page를 공유 가능
- Non-continuous allocation이기 때문에 부분부분 잘라서 나눌 수 있음.
- 공유 가능 page(Procedure pages, Data pages)
Page protection
Summary
- 프로그램을 고정된 크기의 block으로 분할(page) / 메모리를 block size로 미리 분할(page frame)
- 외부 단편화 문제 없음
- 메모리 통합/압축 불필요
- 프로그램의 논리적 구조 고려하지 않음
- Page sharing/protection이 복잡
- 일정한 크기(page)로 잘라서 적재하기 때문에 하나의 함수와 같은 기능이 잘리게되면 관리하기 어려워짐
- 필요한 page만 page frame에 적재하여 사용하므로 메모리를 효율적으로 사용
- page mapping overhead
- 메모리 공간 및 추가적인 메모리 접근이 필요
- 전용 HW(ex:TLB) 활용으로 해결 가능하지만 하드웨어 비용이 증가함
Segmentation System
- 프로그램을 논리적 block으로 분할(segment)
- Block의 크기가 서로 다를 수 있음
ex) stack, heap, main procedure, shared lib, Etc
- 메모리를 미리 분할하지 않음
- Segment sharing/protection이 용이함 - 논리적으로 나눴기 때문에
- Address mapping 및 메모리 관리의 overhead가 큼
- No internal fragmentation
- External fragmentation 발생 가능
Segmentation System
- Address mapping
- Virtual address: v = (s, d)
- s: segment number
- d: displacement in a segment
- Segment Map Table (SMT)
- Address mapping mechanism
Segment Map Table
segment 마다 크기가 다르기 때문에 segment length가 필요하고, 논리 구조대로 나누었기 때문에 protection bit(해당 세그먼트에 대한 접근 권한)을 추가하여 보호 및 공유를 용이하게 함. 페이지 시스템의 경우 일정 크기로 나누었기 때문에 해당 페이지에 대한 권한을 부여할수가 없었음.
Address mapping(direct mapping)
Segment sharing/protection
- 논리적으로 분할되어 있어, 공유 및 보호가 용이함
Segmentation System - Summary
- 프로그램을
논리 단위
로 분할(segment)/메모리를 동적
으로 분할
- 내부 단편화 문제 없음
- Segment sharing/protection이 용이함
- Paging system 대비 관리 overhead가 큼
- 필요한 segment만 메모리에 적재하여 사용하므로 메모리를 효율적으로 활용가능
- Segment mapping overhead
- 메모리 공간 및 추가적인 메모리 접근이 필요함(segmentation table)
- 전용 HW 활용으로 해결 가능(=Paging system과 동일)