[운영체제] 공룡책 - 가상 메모리 Virtual Storage 요약
728x90
반응형
비연속 할당
- 사용자 프로그램을 여러 개의 block으로 분할한다 (Paging, segmentation)
- 실행 시 필요한 block만 메모리에 적재한다 (나머지는 swap device에 존재)
- 프로세스를 통째로 올리지 않고 일부만 올려놓고 사용한다
- 기법
- paging system
- segmentation system
- hybrid paging/segmentation system
Address Mapping 주소 매핑
- 가상 주소 = 상대 주소 = 논리주소: 연속된 메모리 할당을 가정한 주소
- 실제주소 = 물리주소 = 절대주소: 실제 메모리에 적재된 주소
- Address mapping: 가상 주소를 실제 주소로 매핑하는 작업
Block Mapping
- 사용자 프로그램 block 단위로 분할 및 관리
- Virtual Address= (b,d)
- b: 블록 번호
- d: 볼록의 오프셋 번호
- Block Map Table (BMT)
- Address maping 정보 관리
- 커널 공간에 프로세스마다 하나의 BMT를 가진다.
- 프로세스의 BMT에 접근
- 각 블록에 대한 entry찾음
- residence bit 검사 (메모리에 있나 없나)
- 0이면 swap device에서 해당 블록을 메모리로 가져온다
- BMT 업데이트한다
- 1이면 BMT에서 B에대한 실제 주소 값을 확인한다.
- 실제 주소값 (r=a+d)을 계산해 메모리에 접근한다.
Paging System
- 프로그램을 같은 크기의 블록으로 분할
- 페이지 프레임: 페이지와 같은 크기로 분할된 메모리
- 논리적 분할이 아니다 (크기에 따른 분할)
- 페이지 공유 및 보호 과정이 복잡하다 (같은 크기로 분할하다 범위를 넘어서기도 함)
- 간단하고 효율적이다
- 외부 단편화가 없다 (프로세스 할당하거나 말거나)
- 내부 단편화는 발생한다
Paging System Address Mapping
- v = (p,d) , p: 페이지 번호, d: 오프셋
- PMT (Page Map Table) 사용
- 주소 매핑은 Direct mapping (직접 사상) 과 Associative Mapping (연관 사상)이 있다.
- 연관 사상은 TLB (Translation Look aside buffer)를 둔다.
- 둘을 합친 Hybrid direct/associative mapping 방법이 있다.
Direct Mapping
- block mapping 과 유사하다
- PMT 커널 안에 저장 (각 프로세스가 별도로 가짐)
- PMT에서 page p에 대한 entry를 찾고 (b+p*entrySize)
- 존재 비트(residence bit)를 검사한다.
- 존재 비트가 0이면 page fault가 발생하여 swap device에서 해당 page를 메모리에 적재한다.
- PMT를 업데이트 한 후 해당 엔트리에서 page frame 번호를 확인한다
- page frame 번호 * pageSize + d(오프셋 값)으로 실제 주소 r을 계산한다.
- 계산된 실제 주소 r로 주기억장치에 접근한다.
- 문제점
- 메모리 접근 횟수 2배 (성능 저하)
- PMT를 위한 메모리 공간 필요
- 해결 방안
- Associative mapping (TLB)
- PMT를 위한 전용 기억장치 (공간)을 사용한다
Associative Mapping
- TLB에 PMT를 적재한다.
- PMT를 HW적으로 병렬 탐색한다
- 오버헤드가 적고 (병렬처리) 속도가 빠르다
- 병렬로 탐색하고 TLB에 저정하므로 메모리에 두 번 접근하지 않는다.
- 비싸기 때문에 큰 PMT를 다루기 어려워 작다.
Hybrid Direct / Associative Mapping
- hw 비용 줄이고 associative mapping 장점 활용
- 작은 크기의 TLB 사용
- PMT: 메모리 (커널 공간)에 저장
- TLB: PMT 중 일부 엔트리들을 적재한다. (최근에 사용된 페이지 엔트리 저장)
- 지역성을 활용한 이점
Page Sharing
- 여러 프로세스가 특정 페이지 공유할 수 있다 (공통적으로 필요한 부분을 메모리에 올려서 사용)
Paging System 요약
- 프로그램을 고정된 크기의 block으로 분할한다 (page)
- 메모리를 페이지와 같은 키기의 block으로 분할한다 (page frame)
- 외부 단편화 문제 없다. 내부 단편화 발생
- 페이지 공유/보호가 복잡하다
- 필요한 페이지만 페이지 프레임에 적재해서 사용한다
- 페이지 매핑 오버헤드: 메모리 공간 및 추가적인 메모리 접근 필요, 전용 HW 활용으로 해결가능 (비용 증가)
Segmentation System
- 프로그램 논리적 block으로 분할
- block크기는 서로 다르다 (stack, heap, main procedure)
- 메모리를 미리 분할하지 않는다. (VPM과 유사)
- 세그먼트 공유/보호 용이
- 내부 단편화 없음, 외부 단편화 발생 가능
Address Mapping
- 페이지 주소 매핑과 다르게 세그먼트 길이와 보호비트가 있음
- 존재 비트가 0이면 segment fault 발생하여 swap device로 부터 해당 segment를 메모리에 적재한 후 SMT를 갱신한다
- 세그먼트 길이를 넘어가거나 허가되지 않은 연산인 경우(보호비트검사) exception 처리 모듈을 호출한다
Segment Sharing/Protection
- 논리적으로 분할되어 공유 및 보호가 용이하다
Segmentation System 요약
- 프로그램을 논리 단위로 분할하고 메모리를 동적으로 분할한다
- 내부 단편화 문제없다
- 논리적인 단위로 분할하여 세그멘트 공유/보호가 용이하다
- 페이징 시스템 대비 관리 overhead 크다
- 필요한 세그멘트만 메모리에 적재하여 사용한다 => 메모리 효율적
- 매핑 오버헤드 => 메모리 공간 및 추가적 메모리 접근 필요, 전용 hw활용으로 해결가능
Hybrid paging/segmentation
- 논리 단위의 segment로 분할한다
- 각 세그먼트를 고정된 크기의 page로 분할한다
- page단위로 메모리에 적재한다
Address Mapping
가상 주소 v= (s, p, d) s: 세그먼트 번호, p: 페이지 번호, d: 페이지 내 오프셋
- SMT와 PMT 모두 사용
- 각 프로세스 마다 하나의 SMT
- 각 세그먼트 마다 하나의 PMT
- 메모리 관리는 고정분할 방식과 유사
- 메모리 접근이 3번 이루어진다.
Hybrid paging/Segmentation 요약
- 논리적 분할(segment)와 고정 크기 분할 (page)를 결합했다
- 페이지 공유/보호가 쉽다
- 메모리 할당/관리 오버헤드 작다
- 외부 단편화 없다
- 전체 테이블 수 증가 => 메모리 소모 크다, 주소 매핑 복잡해짐
- 직접 사상의 경우 메모리 접근 3배
728x90
반응형
'운영체제(os)' 카테고리의 다른 글
[운영체제] 공룡책 - 데드락 (Deadlock) 요약 (0) | 2021.04.06 |
---|---|
[운영체제] 공룡책 - 메모리 관리 Memory Management 요약 (0) | 2021.04.06 |
[운영체제 1주차 스터디] 공룡책 2장 운영체제 구조 정리 (0) | 2021.03.13 |
multi 시리즈 (multi-processing, multi-threading, multi-programming) (0) | 2021.01.31 |
TAGS.