티스토리 뷰

운영체제

[운영체제] 3. 페이징(Paging)

알고도감 2020. 6. 2. 13:09

페이징(Paging)

페이징(Paging)

1. 정의: 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법.
2. 물리 메모리는 Page Frame(페이지 프레임), 논리 메모리는 Page(페이지) 단위로 나눌 수 있음.
3. 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없고 물리 메모리의 남는 Page Frame에 적절히 배치됨으로 외부 단편화를 해결 가능함.
4. 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아 자유 공간을 확보하는 압축 작업보다 효율성이 높음.
5. 단점: 내부 단편화 문제 발생 가능성이 큼.
ex) Page 크기가 1000 Byte, Process A의 메모리 요구 크기가 3010 Byte라 가정하면 -> 물리 메모리 내 4개의 Page Frame이 사용되고 그 중 한 개는 990(1000-10) Byte 만큼의 여유 공간이 남게 됨. (= 내부 단편화)

 

페이지 테이블(Page Table)

1. 운영체제는 프로세스마다 Page Table 이라는 자료구조를 유지함.
2. 하나의 프로세스는 하나의 Page Table을 가짐.
3. Page Table은 Page Table Entry라는 페이지 정보를 저장함.
4. Page Table Entry의 Key는 Page번호, Value는 물리 메모리의 시작 주소임.
5. CPU에서 논리 주소를 보내면 Page Table을 통해 물리 메모리의 시작 주소를 찾음.

 

 Page Table 변환 과정

1) 가상 주소가 물리 메모리 주소로 변환 되어야할 때, 테이블 정보들이 저장되어 있는 TLB(Translation Lookaside Buffer)라는 연관 캐쉬를 검색함.
2) TLB에서 검색을 성공하면 물리 메모리 주소를 반환하여 프로세스는 해당 주소로 접근이 가능함.
-> 만약 검색에 실패하면 해당 가상 주소에 Mapping된 물리 메모리 주소가 있는 지 Page Table에서 검색하고, 찾으면 TLB에 Update하고 1)부터 다시 진행함.
3) Mapping 데이터를 찾지 못한 경우
 i) 가상 메모리 주소 자체가 유효하지 않은 경우 -> Segmentation Fault 발생.
 ii) 해당 가상 메모리 주소가 물리 메모리에 존재하지 않는 경우 -> 페이지가 다른 메모리 접근 요청에 의해 공간이 부족해져서 Page-Out된 상황.

 

 Page Fault

1. Page Table 변환 과정에서 Mapping 데이터를 찾지 못하고 물리 메모리 공간이 부족해져서 Page-Out이 발생되면 운영체제는 Page Fault를 발생시킴.
2. 해결:
 i) 물리 메모리가 꽉 차지 않았다면 Paging 파일에 존재하는 데이터를 물리 메모리에 존재하는 Empty Frame으로 Load하면서, Page Table과 TLB 내용을 갱신함.
 ii) 물리 메모리에 Empty Frame이 존재하지 않는다면(= 여유 메모리 공간이 없다면), 물리 메모리에서 Empty Page로 변경할 Page를 찾은 후 해당 Page를 Empty Frame으로 변환함. 그 후, Load하려는 데이터를 Empty Frame으로 Load하면서 Page Table과 TLB 내용을 갱신함. 이 경우, Page-Out된 Page에 대한 제거 과정도 포함.

 

 Paging Algorithm

: Page Fault가 발생했을 때, 모든 Page Frame이 사용중이라면 어떤 Page Frame을 선택하여 교체할 것인지를 결정하는 알고리즘.

 

 세그멘테이션(Segmentation)

1. 페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할하는 방법. 
2. 사용자가 두 개의 주소로 지정(세그먼트 번호 + 변위)함.
3. 세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리 주소)과 한계(세그먼트의 길이)를 저장.
4. 단점 : 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수도 있음. (= 외부 단편화)

 

※ 단편화

i) 외부 단편화: 메모리 공간 중 일부 사용 못하게 되는 부분이 발생. 물리 메모리(RAM)에서 사이사이 남는 공간들을 합치면 충분한 공간이 되는 부분들이 분산되어 있을 때 발생함.

ii) 내부 단편화: 프로세스가 사용하는 메모리 공간에 포함된 남은 부분. 예를 들어 메모리 분할 자유 공간이 10,000B 있고 Process A가 9,998B를 사용하게 되면 2B라는 여유 공간이 남게 되는 현상.

 

※ 압축 작업

: 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아, 자유 공간을 확보하는 방법론이지만, 작업 효율이 좋지 않음.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total