3) 페이징과 세그먼트(Paging and Segment)
3-1) 페이징 (Paging)
프로세스가 사용하는 주소 공간을 여러 개로 분할하여 비연속적인 물리 메모리 공간에 할당, 가상 메모리를 모두 같은 크기의 블록으로 나누어 메모리를 관리하는 방식.
단위
프레임 : 실제 메모리 공간 (4KB)
페이지 : 프로세스의 메모리 공간 (4KB)
프레임 사이즈 = 페이지 사이즈
★ 페이지 테이블 내에 프레임과 페이지가 서로 매핑이 되어 있어서 페이지 테이블을 참조하여 실제 메모리에 접근하게 된다.
★ 문제 : 매번 메모리의 페이지 테이블을 먼저 읽어야 하므로 메모리 접근 시간이 두 배가 된다. => 페이지 테이블의 캐시 사용
3-2) 세그먼테이션 (Segmentation)
논리적 의미에 부합하도록 세그먼트들의 크기가 서로 다름.
크기가 다 다르기 때문에 메모리를 페이징 기법에서처럼 미리 분할해 둘 수 없고, 메모리에 적재될 때 빈 공간을 찾아 할당.
사용자가 정의한 주소를 실제 주소로 맵핑하는 정보를 저장.
개별 세그먼트는 항목별로 Base(세그먼트 시작 주소) + Limit(세그먼트 길이)의 정보를 갖는다.
3-3) 요구 페이징 (Demand Paging)
페이지 테이블에 valid bit를 두고, 해당 page가 물리 메모리에 있으면 1, 그렇지 않으면 0로 설정한다.
1) 페이징 하드웨어는 page table entry의 valid bit를 보고 invalid인 것을 확인한 후 OS에게 trap으로 알린다.
2) OS는 정말로 메모리에 없는 것인지 아니면 잘못된 접근인지 확인한 후 잘못된 접근이었으면 종료시킨다.
3) Empty frame (free page)을 얻는다.
5) 프로세스의 page table과 TLB를 page-in/page-out 된 것을 토대로 재설정한다.
6) Page fault를 야기했던 인스트럭션부터 다시 수행한다.
이처럼 victim frame을 선택하는 과정에서 Page Replacement Algorithm을 사용한다.
3-4) 페이지 교체 정책 (Page Replacement Algorithm)
메모리 공간이 부족하면 특정 페이지를 스왑 하여 교체한다.
º 메모리에 적재된 시간이 가장 오래된 페이지를 교체 (프레임 개수가 많아지면 페이지 부재 율이 높아지는 현상, Belady의 모순이 된다.)
º 앞으로 가장 오래 사용되지 않을 페이지를 교체, 들어온 데이터를 쭉 읽어서 앞으로 사용하지 않을 걸 교체
º 다른 모든 알고리즘보다 페이지 부재 율이 낮으면서 Belady의 모순이 발생하지 않는 페이지 교체 알고리즘
º 실제 구현이 불가능하다 : 미래의 페이지 참조를 미리 알아야 함.
º 제안된 알고리즘의 성능을 비교하기 위한 목적으로 사용
º 최적 페이지 교체 알고리즘에 근사하는 방법, 과거 참조를 기반으로 미래 참조 형태의 근사치를 결정
- 페이지들을 최근에 사용한 시간 순서대로 나열할 수 있어야 함
- 하드웨어의 지원이 필요 : 모든 메모리 참조에 대해 참조 정보를 갱신
º 참조 빈도와 참조 시간은 정확히 일치하지 않습니다.
º 참조 횟수가 적은 페이지는 최근에 적재되었고 앞으로 참조될 가능성이 높을 것이라는 직관에 의존
※ 자세히 설명하자면 Demand Paging을 가능하게 하는 것은 Locality의 개념이다.
따라서 Page Table에서는 LRU-approximation 알고리즘을 사용한다. 이 알고리즘은 하드웨어의 도움을 받아 하나의 bit를 두고 이용한다.
구분 |
설명 |
특징 |
원리 |
– 지역성 가정을 기반으로 동작 |
– 지역성 기반 |
특징 |
– 과도기, 안정기가 주기적 반복 |
– 프로세스 변화 |
장점 |
– Multi-Programming 정도 높임 |
– Page Hit rate증가 |
– CPU 활용률 최적화 |
– 임계치 극대화 |
|
단점 |
– Working Set 추적관리 복잡 |
– 크기/구성 변화 |
– Window 사이즈 설정이 모호함 |
– 최적값 모름 |
|
– 참조 페이지 Queue 유지관리 |
– 메모리관리 복잡 |
Virtual Memory를 사용하게 되면 생기는 부가적인 장점으로 공유 메모리 사용, Copy on write 메커니즘, Memory mapped file이 있다.
여러 프로세스간의 communication의 한 가지 방법으로 공유 메모리를 사용할 수 있는데 demand paging 기법을 사용할 경우 다른 프로세스의 각각의 페이지가 같은 프레임을 가리키도록 하면 공유 메모리를 사용할 수 있다.
또한 COW(Copy-On-Write) 메커니즘은 부모 프로세스를 clone하여 자식 프로세스를 생성하였을 때 처음에는 같은 메모리를 사용하도록 하다가 그곳에 Write가 발생하였을 때 메모리를 copy하는 것으로 이것 또한 공유 메모리처럼 같은 프레임을 가리키도록 하였다가 복사가 되었을때 새로운 프레임을 할당하면 된다.
그리고 Memory mapped file은 file을 접근하는 것을 메모리 접근하듯이 페이지를 할당하여 할 수 있도록 하는 것이며 메모리 접근 속도가 더 빠르므로 효율적이다.
Paging은 동일한 크기를 가지는 page 단위로 메모리를 나누는 것이라 하였다.
반면에 Segmentation은 가변 크기의 단위인 segment로 메모리 영역을 나눈다. 이것은 사용자가 바라보는 관점에서 메모리를 나눈 것이며 일반적인 사용자는 페이지 단위로 메모리를 바라보지 않고 큰 단위단위로 바라보게 된다.
따라서 최근의 컴퓨터는 세그멘테이션 기법과 페이징 기법을 동시에 적용하여 메모리를 접근하게 된다.
'Study > Operating System' 카테고리의 다른 글
운영체제(File System)_개념[1] (0) | 2020.05.25 |
---|---|
운영체제 (Virtual Memory)_개념[3] (0) | 2020.05.25 |
운영체제 (Virtual Memory)_개념[1] (0) | 2020.05.24 |
운영체제(Scheduling)_개념[2] (0) | 2020.05.24 |
운영체제(Scheduling)_개념[1] (0) | 2020.05.24 |