운영체제 9. 가상 메모리 (3) - paging system (2)

728x90
반응형

출처 : https://www.youtube.com/watch?v=B_QLTChsi04

 

 

 

Memory Management

 

페이징 시스템이 메모리를 어떻게 관리할까

 

  • Page와 같은 크기로 미리 분할하여 관리 / 사용
    • Page frame
    • FPM(Fixed Partition Multi-programming) 기법과 유사
  • Frame table 형태로 관리함
    • page frame 당 하나의 entry
    • 구성
      • Allocated / available field : frame이 할당되었는가 / 아니면 사용가능한가
      • PID field : 실제로 어떤 page가 올라와있는가?
      • Link field : For free list (사용가능 한 fp들을 연결)
      • AV : Free list header (free list의 시작점)

 

 

  • Frame table
    • page frame number : page frame의 번호
    • allocated : 할당되었는가 (=어떤 페이지가 사용을 하고있는가?)
    • PID : 만약 allocated 가 1이라면, 어떤 page가 사용하고있는가?
    • AV : AV는 가장 처음에 비어있는 entry를 지칭한다. 어떤 page의 frame 요청이 들어왔을 때, page를 메모리에 넣어주기 위해 빈 공간을 찾아야한다. 이때, 빈 공간을 찾기 위해서 AV라는 포인터를 사용한다. 
    • link : 현재 entry 다음에 비어있는 entry를 찾아서 기록한다. 즉, 비어있는 entry에 대한 linked list를 만든다. 현재 AV를 통해 메모리를 할당해주면, AV를 연결된 링크를 통해 옮겨준다.

 

 

Page Sharing

 

  • 여러 프로세스가 특정 page를 공유 가능
    • 어떤 function이 있고, 프로그램 A, B, C가 모두 해당 function을 사용한다고 했을 때, 메모리에 프로세스를 A-x, B-x, C-x 따로따로 올리지 말고 메모리에 올라와있는 function을 공유해서 사용하자.
    • Page sharing이 가능한 이유는 Non-continuous allocation이기 때문이다.
  • 공유 가능 page는 2가지가 있다.
    • Procedure pages
      • Pure code (reenter code) 를 담고있는 page
    • Data page
      • Read-only data
      • Read-write data
        • 병행성(concurrency) 제어 기법 관리하에서만 가능

 

 

Page sharing 예시

 

  • 워드 프로그램을 3명이 사용하는 경우
    • 모든 사용자가 ed 1, 2, 3 이라는 코드를 공유한다. 이때, ed1, 2, 3은 메모리에 하나씩만 올려놓고 프로세스들이 공유해서 사용한다.
    • 실제로 사용자가 작성하는 문서 data 들만 다른 메모리 공간에 적재한다.

 

 

  • Data page sharing
    • 2개의 프로세스가 자신만의 PMT를 가지고 있지만, 공유하고있는 데이터가 들어있는 page frame p'을 공유해서 사용한다.

 

 

 

  • Procedure Page Sharing (Problem)
    • PMT에서 같은 page frame number를 적음으로써, 같은 procedure page를 공유할 수 있다.
    • 그러나 실제로는 같은 주소에 있으나 서로 다른 page number를 지칭하게 된다.
    • P1의 입장에서는 v = (k1, d)가 되고, P2의 입장에서는 v = (k2, d)가 된다. 그런데 P1도 k2가 따로 존재할 테고, P2도 k1이라는 page number가 존재할테니, 만약 Brance(k1, 2)라고 쓰면, P1은 문제가 없으나 P2가 전혀 엉뚱한 주소를 접근하게 될 수 있다.

 

 

  • Procedure Page Sharing (Solution)
    • 프로세스들이 shared page에 대한 정보를 PMT의 같은 entry에 저장하도록 함. 즉, 공유하려는 page의 이름을 동일하게 만든다.

 

 

 

Page Protection

 

  • 여러 프로세스가 page를 공유할 때, 보안의 문제가 발생할 수 있다.
    • Protection bit 사용
    • 즉, 해당 페이지에 접근하는 프로세스가 할 수 있는 작업을 적어놓는 것 = 접근 권한을 관리
    • 예를 들어, P1의 VRWE가 1100이라면, P1은 메인 메모리의 적재와 읽기는 가능하나 쓰기와 실행은 불가능하다.

 

 

Paging System - Summary

 

  • 프로그램을 고정된 크기의 block으로 분할 (page) / 메모리를 block size로 미리 분할 (page frame)
    • 미리 고정된 크기로 분할하기 때문에 외부 단편화(external fragmentation) 문제 없음. 하지만 내부 단편화(internal fragmentation) 문제는 발생할 수 있음
    • 메모리 통합 / 압축 불필요
    • 프로그램의 논리적 구조 고려하지 않음 = 특정 페이지 안의 여러개의 function이 들어갈 수 있음
      • Page sharing / protection이 복잡
  • 필요한 page만 page frame에 적재하여 사용
    • 메모리의 효율적 활용
  • Page mapping overhead
    • 메모리 공간 및 추가적인 메모리 접근이 필요
    • 전용 HW(TLB) 활용으로 해결 가능
      • 하드웨어 비용 증가

 

 

 

 

 

728x90
반응형