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) 제어 기법 관리하에서만 가능
- Procedure pages
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
반응형
'Study > 운영체제' 카테고리의 다른 글
운영체제 9. 가상 메모리 (5) - Hybrid Paging-Segmentation System (2) | 2023.12.04 |
---|---|
운영체제 9. 가상 메모리 (4) - Segmentation System (1) | 2023.12.01 |
운영체제 9. 가상 메모리 (2) - Paging system (0) | 2023.11.29 |
운영체제 9. 가상 메모리 (1) - Non-continuous allocation (2) | 2023.11.27 |
운영체제 8. 메모리(주 기억장치) 관리 (3) - Variable Partition Multi-programming (2) | 2023.11.27 |