운영체제 9. 가상 메모리 (1) - Non-continuous allocation

728x90
반응형

출처 : https://www.youtube.com/watch?v=YCfP9I4K-8Y&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=27

 

 

 

Virtual Storage (Memory)

 

  • Non-continuous allocation = 프로세스를 여러 개로 분할해서 메모리에 연속되지 않게 적재하는 memory allocation 기법
  • 사용자 프로그램을 여러 개의 block으로 분할
  • 실행 시, 필요한 block들만 메모리에 적재
    • 나머지 block들은 swap device(=하드 디스크)에 존재
  • 기법들
    1. Paging system
    2. Segmentation system
    3. Hybrid paging / segmentation system

 

 

Address Mapping

 

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

 

 

우리가 continuous allocation에서는 시작 주소가 0번이라고 가정하고 실제 메모리의 물리 주소를 업데이트 한 뒤에, 그 물리 주소 만큼 프로그램 코드들을 업데이트해서 메모리에 적재했다.

 

 

 

  • Non-continuous allocation
    • Virtual address (가상 주소) = relative address
      • Logical address (논리 주소)
      • 연속된 메모리 할당을 가정한 주소
      • 우리가 실제로 메모리에 적재할 때는 나누어서 적재를 하지만, 연속되어있다고 가정하고 프로그램을 작성하는 것
    • Real address (실제 주소) = absolute (physical)
      • 실제 메모리에 적재된 주소
    • Address mapping
      • Virtual address -> real address. Virtual address를 real address로 바꾸어주는 것

 

 

  • Non-continuous allocation

 

  • 사용자 / 프로세스는 실행 프로그램 전체가 메모리에 연속적으로 적재되었다고 가정하고 실행할 수 있음
  • Virtual address 상에 원하는 주소를 지정해서 access 한다.
  • 실제로 적재되어있는 메모리 주소는 달라지므로 address mapping을 통해 virtual address를 real address로 바꿔준다.

 

 

Block Mapping

 

  • 사용자 프로그램을 block 단위로 분할 / 관리
    • 각 block에 대한 address mapping 정보 유지
  • Virtual address : v = (b, d). virtual address는 b와 d로 구성되어있다.
    • b = block number. 우리가 원하는 데이터가 있는 블록의 번호
    • d = displacement(offset) in a block. 시작 주소로부터 얼마만큼 떨어져있는가

 

 

 

  • Block map table(BMT)
    • Address mapping 정보 관리
      • 커널 공간에 프로세스마다 하나의 BMT를 가짐
    • block의 번호
    • residence bit
      • 해당 블록이 실제로 메모리에 적재되었는지 여부 (0 : 적재 안됨 / 1 : 적재 됨)
      • 전체 프로세스는 swap device에 있고, 이 중에 일부가 메모리에 올라가고, 나머지는 아직 메모리에 올라와있지 않다.
    • real address
      • residence bit가 1이라면 (메모리에 적재되어있다면), 어느 주소에 적재되어있는가

 

 

Virtual address V는 b와 d로 이루어져있다. 우리가 어떤 데이터가 필요하면 V를 요청하게 된다.

요청받으면 BMT에 가서 block b의 residence bit를 확인하고, 1이라면 어디에 올라와있는지를 알 수 있다.

그리고 real address a와 displacement d를 더한 r (=a + d)를 찾아갈 수 있다.

 

 

정리하자면, Virtual address를 통해 요청이 들어왔을 때 Block Mapping 은 다음과 같은 단계를 거치게 된다.

 

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

 

 

 

다음 장에서는 실제로 Virtual address system을 사용하는 Paging system을 알아본다.

 

 

 

728x90
반응형