Virtual Storage (Memory)

이진호·2022년 6월 8일
0

운영체제 이론

목록 보기
8/9

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

  1. 프로세스의 BMT에 접근
  2. BMT에서 block b에 대한 항목(entry)를 찾음
  3. Residence bit 검사
    3-1) Residence bit = 0,
    swap device에서 해당 블록을 메모리로 가져 옴
    BMT 업데이트 후 3-2 단계 수행
    3-2) Residence bit = 1,
    BMT에서 b에 대한 real address 값 a 확인
  4. 실제 주소 r 계산 (r=a+d)
  5. 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
      • Paging system과 유사

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과 동일)

0개의 댓글