기어가더라도 제대로

[운영체제-김덕수 교수님] 가상 메모리(1/5) - 비연속 메모리 할당 본문

CS/운영체제

[운영체제-김덕수 교수님] 가상 메모리(1/5) - 비연속 메모리 할당

Damagucci-juice 2022. 8. 10. 14:18
  • Non-continuous allocation
  • 사용자 프로그램을 여러 개의 block으로 분할
  • 실행 시, 필요한 block들만 메모리에 적재
  • 나머지 block 들은 swap device에 존재
  • 기법들
    • Paging system
    • Segmentation system
    • Hybrid paging/segmentation

‏‏‎ ‎

가상 메모리(1/7) - 비연속 메모리 할당 image

실제로는 분리된 영역에 블럭 단위로 쪼개져서 메모리에 실리는데 운영체제가 볼 때 프로세스는 연속된 메모리영역에 있다고 생각을 하는데, 그러기 위해서 필요한 것이 가상메모리 이다.

  • 어드레스 매핑
    • 가상 주소(논리적)를 실제 주소로 옮겨 주는 작업

Block Mapping

  • 사용자 프로그램을 Block 단위로 분할/관리
    • 각 블록에 대한 주소 매핑 정보 유지
  • Virtual address : V = (b, d)
    • b = block number
    • d = displacement(offset) in a block

가상 메모리(1/7) - 비연속 메모리 할당 image

  • Block map table(BMT)
    • Address mapping 정보 관리
      • kernel 공간에 프로세스마다 하나의 BMT를 가짐

가상 메모리(1/7) - 비연속 메모리 할당 image

가상 메모리(1/7) - 비연속 메모리 할당 image

  • block number 를 보고
    • a라는 것을 보고
  • displacement 를 참조하여
    • 실제 주소 a + d 에 가서 요청
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 에 대해서 보도록 하겠습니다 ~

가상 메모리(1/7) - 비연속 메모리 할당 image

‏‏‎ ‎

D(Displacement) 가 왜 필요한지 고민을 하다가 댓글을 보고 어느 정도 이해가는 것을 찾았다.

잘못 이해했었구나..

근데 댓글을 달고 보니 잘못 알고 있었다는게 이해가 된다. 

block 은 4kb가 보통 단위라고 하는데, 4kb 안에서도 자기가 찾는 주소가 어디에 있는지 찾아야하는 것이 아닌가? (4kb 가 전부 니꺼야?)

이제 이해가 간다.

Comments