[운영체제] 공룡책 - 가상 메모리 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를 가진다.

  1. 프로세스의 BMT에 접근
  2. 각 블록에 대한 entry찾음 
  3. residence bit 검사 (메모리에 있나 없나)
    1. 0이면 swap device에서 해당 블록을 메모리로 가져온다
    2. BMT 업데이트한다
    3. 1이면 BMT에서 B에대한 실제 주소 값을 확인한다.
  4. 실제 주소값 (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
반응형
TAGS.

Comments