[OS] - Virtual Memory - Non-continuous allocation

오동훈·2021년 4월 16일
0

Operating System

목록 보기
6/16

1. Non-contiuous allocation

  • 사용자 프로그램을 여러 개의 block으로 분할
  • 실행 시, 필요한 block들만 메모리에 적재
    나머지 block들은 swap device에 존재(ex). Disk)

1.1 Address Mapping

Virtual address → Real address

1. Continuous allocation

  • Relative address (상대 주소)
    - 프로그램 시작 주소를 0으로 가정한 주소
  • Relocation (재배치)
    - 메모리 할당 후, 할당된 주소에 따라 상대 주소들을 조정하는 작업

2. Non-continuous allocation

  • Virtual address (가상 주소) = relative address
    - Logical address
    - 연속된 메모리 할당을 가정한 주소
  • Real Address (실제 주소) = absolute (physical address)
    - 실제 메모리에 적재된 주소

3. Mapping 기법

3.1 Block Mapping

  • 사용자 프로그램을 block 단위로 분할 / 관리
  • virtual address: v = (b, d)
    - b: block number
    - d: displacement(offset) in a block

3.2 Block Map Table (BMT)

  • Address mapping 정보 관리
    - Kernel 공간에 프로세스마다 하나의 BMT를 가짐

3.3 Block Mapping summary

  1. 프로세스 BMT에 접근
  2. BMT에서 block의 b에 대한 항목(entry)을 찾음
  3. Residence bit 검사
    1) 0인 경우
    - swap device에서 해당 블록을 메모리로 가져옴
    BMT 업데이트 후 3-2 수행
    2) 1인 경우
    - BMT에서 b에 대한 real address 값 a 확인
  4. 실제 주소 r 계산 (r = a + d)
  5. r을 이용해 메모리에 접근

지금까지의 내용은 HPC Lab의 강의와 자료를 참조했습니다

profile
삽질의 기록들🐥

0개의 댓글