Software Courses/Operating System

[Memory] Paging system

김 정 환 2020. 12. 9. 19:15
반응형

Paging system

    - 프로그램을 같은 크기의 블록으로 분할하여 관리

    - 필요한 page만 page frame에 적재하여 사용

 

 

 

용어 표현

    - page : 프로그램의 분할된 block

    - page frame : page 크기로 분할된 메모리 영역

 

 

특징

    - 논리적 분할이 아닌 단지 크기로 분할

    - segmentation 대비 page 공유 및 보호 과정이 복잡

    - segmentation 대비 simple 및 efficient

    - 내부 단편화 발생 : 프로그램을 page로 잘랐을 때, 마지막 꼬투리는 page의 크기보다 작을 수 있으므로 page frame에 넣으면 내부 단편화 발생

    - 외부 단편화 발생 안함 : 메인 메모리와 프로그램 모두 page 크기로 분할되어 있기 때문에

 

 

 

문제점

    - 단지 크기로 분할하기 때문에 공유하기 어려움

    - 단지 크기로 분할하기 때문에 보호하기 어려움

 

 

 

실제 사용

    - 경로 : 제어판 => 시스템 -> 고급 시스템 설정 => 고급 => 성능

    - 오른쪽 사진에서, 맨 위 자동 관리 체크를 해제하면 가상 메모리를 수동으로 변경 가능

    - 어떤 디스크를 가상 메모리로 사용할 것인지, 크기는 얼마로 할 것인지 설정 가능

 

 

 

Address mapping

    - 가상 주소 : v = (p, d)

    - PMT(page map table) 사용

PMT

    - 방법

        * Direct mapping

        * Associative mapping

        * Hybrid direct/associative mapping

 

1) Direct mapping

    - block mapping과 유사

    - PMT를 커널 안에 저장

 

    - 동작 : 해당 프로세스의 PMT가 저장되어 있는 주소 b에 접근 => 해당 PMT에서 page p에 대한 entry를 찾음(위치 : b + p * entrySize) =>

residence bit = 0 인 경우(page fault), swap device에서 해당 page를 메모리로 적재 => PMT 갱신 후, residence bit = 1와 동일

residence bit = 1 인 경우, 해당 entry에서 page frame 변호 p'를 확인 => p'와 가상 주소의 변위 d를 사용하여 실제 주소를 찾음(위치 : p' * pageSize + d) => 실제 주소로 메인 메모리 접근

 

 

    - page fault : 프로그램이 메모리에 적재되어 있지 않은 상태에서 접근하는 경우를 말함

    - 방법 : 프로세스는 asleep/block 상태 => 메모리에 적재하여 ready 상태 => 프로세스 running 상태가 되어 작업 진행

    - 문제 : context switching이 발생하여 overhead 발생

    - 실제 예시 : 작업 관리자에서 확인 가능

붉은 박스는 word 프로그램을 실행시켰을 때

 

    -  단점 

        * 메모리 접근 횟수 2배 : 메모리에 있는 PMT에 접근하고 다시 메모리에 접근 => 성능 저하

        * 메모리에 PMT를 위한 공간 필요

 

    - 해결 방법

        * Associative mapping(TLB) : 메모리 접근 횟수 해결

        * Hierarchical paging

        * Hashed page table

        * Inverted page table

 

 

 

 

2) Associative Mapping

    - TLB(translation look-aside buffer)에 PMT 적재

    - TLB : PMT 적재 전용 HW

    - 하드웨어적으로 PMT 병렬 탐색 가능

 

    - 장점

        * low overhead

        * high speed

 

    - 단점

        * expensive HW

        * 비싸서 큰 PMT를 다루기 어려움

 

    - 동작

 

 

 

 

3) Hybrid Direct/Associate Mapping

    - Direct와 Associate 기법을 혼합

    - 전체 PMT는 메모리(kernel)에 저장

    - TLB에는 PMT의 일부 entry들을 적재

        * 최근에 사용된 page들에 대한 entry 저장

        * 최근? locality(지역성) 활용 : 프로그램의 수행과정에서 한 번 접근한 영역을 다시 접근 또는 인접 영역을 다시 접근할 가능성이 높음

 

 

    - 동작

        * TLB에 적재되어 있는 경우 : residence bit를 검사하고 page frame 번호 확인하여 메인 메모리에 접근

        * TLB에 적재되어 있지 않은 경우 : Direct mapping으로 page frame 번호를 확인하고 해당 PMT entry를 TLB에 적재한 뒤에 메인 메모리에 접근

 

 

Page 관리

    - FPM 기법과 유사

 

 

Frame table

    - page frame을 관리하기 위한 자료구조

    - page frame 당 하나의 entry

    - 구성

        * allocated/available field : 할당되었는지/사용할 수 있는지

        * PID field : page의 ID

        * Link field : 빈 공간을 관리하기 위한 연결 리스트

        * AV : 빈 공간을 관리하기 위한 해더

 

Page sharing

    - 여러 프로세스가 특정 page를 공유

        * 가능한 이유 : Non-continuous allocation으로 프로그램을 부분적으로 잘라서 사용하기 때문에

 

    - 공유 가능한 page

        * procedure(function) page

        * data page : read-only data, read-write data

 

    - 예시 : word 프로그램 3개를 띄워 놓고 작업을 한다고 할 때, editor 1~3은 같은 기능임으로 공유해서 사용하고 데이터만 다른 곳에 저장

 

    - Data sharing(PMT 관점에서)

 

    - Procedure page sharing(PMT 관점에서)

        * 이해가 안되서 다시 보기 https://youtu.be/B_QLTChsi04 (10:20)

 

 

Page protection

    - page를 공유하므로 보안이 필요

    - protection bit 사용

 

 

본 내용은 한국기술교육대학교 김덕수 교수님의 유튜브 강의를 듣고 정리한 내용입니다.

 

반응형