본문 바로가기
CS/OS(운영체제)

페이징과 스와핑

by 계범 2022. 1. 7.
운영체제 관련 글 순서

- 프로세스란
- 쓰레드
- CPU 스케줄링
- 동기화 툴
- 동시성 제어 예제
- 데드락
- 주 메모리
- 페이징과 스와핑
- 가상 메모리와 디맨드 페이징
- 페이지 교체 알고리즘(FIFO, OPT, LRU), 쓰레싱, working set

페이징(Paging)

  • 메모리를 쪼개서 사용하는 것
  • 연속적 할당의 반대개념이다.
  • 외부 단편화 발생을 방지해준다.

 

가장 기본적인 페이징 방법

  • 실제 메모리를 고정된 크기(frame)로 쪼개서 사용 == 메모리를 나눈 조각
  • 똑같은 크기로 논리 메모리도 쪼갬(page) == 프로세스를 나눈 조각
  •  

  • 논리 메모리는 논리 주소인 페이지 넘버[각주:1]와 페이지 오프셋[각주:2]을 가지고 있다. 이 논리 주소는 프레임 테이블[각주:3]을 통해 물리 주소에 매칭됨.

  • 논리주소는 몇번 페이지에 몇번 오프셋에 있는지 알려준다.
  • 페이지 넘버와 오프셋으로 페이지 테이블을 통해서 실제 물리적인 주소를 알려준다.

예시 그림

 

 

 

페이지 사이즈

  • 반드시 2의 배수여야 한다.
  • 페이지 크기가 작을 경우, 페이지 테이블 크기가 커지게 되고, 메모리가 낭비된다.
  • 페이징 크기는 하드웨어가 결정한다.
  • logical address space가 2^m, page size가 2^n bit이면,
    • page number는 m-n bit 필요
    • page offset은 n bit 필요

새로운 프로세스 들어온 경우

  • frame 리스트엔 14,13,15,18,20 순서로 되어있음.
  • 페이지를 4개 가지고 있는 새로운 프로세스가 들어옴.
  • 리스트 순서대로 14 -> 13 -> 18 -> 20에 할당됨.

 

하드웨어 지원

cpu 스케줄러가 새로운 프로세스를 실행하기위해 선택하려고할때, 페이지 테이블도 context switch에 포함된다.

페이지 테이블이 클수록 관리하기 힘들다.

 

PTBR(page-table base register)

  • 페이지 테이블을 context switch 시에 다시 로드하지 않기 위한 것.
  • context switch는 감소하지만, PTBR로 메모리 상에 있는 페이지 테이블 접근 후 실제 메모리로 접근 되기때문에 메모리 access 시간은 TLB에 비해 증가한다.(2번 접근하게 됨. 기존방식도 결국 2번 접근하는 형태

 

 TLB(transloation Look-aside Buffer)

  •  
  • TLB라는 cpu와 메모리 사이의 캐시 메모리를 통해 바로 접근이 가능하다.
  • TLB hit: page number가 TLB 존재할때
  • TLB miss: page number가 TLB 존재하지 않을 때
  • hit ratio:  page number가 TLB에서 발견되는 비율
    • 예시 ) 10 NS 시간만큼 메모리 접근시간이 걸릴때,
      • 80% hit ratio : 0.80*10 + 0.2*20 = 12ns
      • 99% hit ratio : 0.99*10 + 0.01*20 = 10.1ns

 

 

페이징 시에 메모리 보호방법

  • 연속 메모리 할당에선 시작주소와 끝주소를 통해서 쉽게 legal한 주소인지 판단 가능했지만,
  • 페이징에선 보호 비트에 의해 구현된다.
  • 해당 그림에서 page table에 valid-invalid bit가 추가되었다.(보호 비트)
  • 보호비트를 통해 사용하지않는 해당 번호에 접근하더라도 보호 비트에 의해 걸러진다.

 

Shared Pages

  • 페이징의 장점은 공통적인 코드는 공유할 수가 있다.
  • 이로인해 메모리 낭비가 방지된다.
  • 조건은 코드가 reentrant code[각주:4]여야 한다.
  • 위의 그림처럼 같은 프로그램을 쓰는 프로세스들은 같은 코드를 가지고 있으므로, 각각의 논리적인 주소로 동일한 실제 주소를 참조하여 쓸 수가 있다.

 

페이지 테이블의 구조

 

계층적 페이징(Hierachical Paging)

  • 페이지 테이블의 페이지 테이블을 만드는 것.

 

해시 페이지 테이블(Hashed Page Tables)

  • 주소공간이 32비트보다 크면 사용하는 구조
  • 논리주소가 오면 해시테이블을 통해서 페이지 넘버를 관리.
    • 페이지 번호가 오면 해싱
    • 해시형 페이지의 테이블에서 연결리스트를 따라가며 들어온 번호와 테이블 내 가상 페이지 번호를 비교
    • 일치하면 해당하는 물리적 주소를 얻음

 

역 페이지 테이블(Inverted Page Table)

  • 페이지 테이블을 위해 많은 메모리를 요구하는 이유는 각 프로세스마다 페이지 테이블을 가지고 있기 때문이다.
  • 이러한 문제를 해결 하기 위해, 실제 메모리의 프레임마다 페이지 테이블의 한 항목을 할당하여 1개의 페이지 테이블만 만든다.
  • 각 항목 가상 주소는 PID,Page Number가 기록되어 있다.
  • 단점
    • 주소를 변환할때마다 페이지 테이블을 탐색해야 하므로 시간이 소모된다.
    • 물리 주소에 대해 하나의 가상 주소를 매핑하기때문에 공유가 어렵다.

 

스와핑(Swapping)

메모리에 올라와 있는 프로세스의 주소 공간 전체를 디스크의 스왑 영역[각주:5]으로 일시적으로 내려 놓는 것.

 

역할

  • 실제 메모리보다 큰 프로그램을 돌릴 수 있게 된다.
  • 멀티 프로그래밍을 조절한다.
    • 메모리에 많은 프로그램이 실행중이면, 한정된 메모리의 양을 각각 적게 사용하게 되어 성능을 크게 떨어트린다. 이러한 문제 해결을 위해 일부 프로그램을 스왑영역으로 보내서 메모리 공간을 확보해준다.

 

과정

  • 스와퍼라고 불리는 스케줄러에 의해 스왑 아웃 및 스왑 인 시킬 프로세스 선택
  • 스왑 아웃(swap out): 프로세스에 할당된 메모리 주소 공간을 빼앗고 스왑 영역으로 보낸다.
  • 스왑 인(swap in): 스왑영역에 있는 프로세스를 메모리 주소 공간을 할당시킨다.

 

 

 

페이징 된 스와핑 과정

  • 작은 단위의 스와핑이 가능해진다.
  • swap 대신 page out, page in으로 부른다.

 

 

 

참조

 

주니온님의 인프런 운영체제강의(공룡책)

페이징참조 블로그

 

[운영체제(OS)] 13. 페이징

1. 페이징(Paging) 외부 단편화로 인한 메모리 낭비는 매우 심하다는 것을 살펴보았다. Compaction을 사용하면 외부 단편화는 해결할 수 있지만, 그로 인해 발생하는 오버헤드와 비효율적인 성능으로

velog.io

페이지 테이블 구조 참조 블로그

 

페이지 테이블의 구조 (Structure of the Page Table)

페이지 테이블의 구조 (Structure of the Page Table) 1. 계층적 페이징(Hierarchical Paging) 대부분 현대 컴퓨터는 매우 큰 논리 주소 공간(2^32에서 2^64)을 지원한다. 이러한 환경에서는 페이지 테이블 자체가.

neos518.tistory.com

스와핑 참조 블로그

 

[OS] 메모리 스왑(스와핑) #swap

[OS] 메모리 스왑(스와핑) #swap 안녕하세요? 장장스입니다. 오늘은 메모리 스와핑에 대해 정리해보겠습니다! 스와핑 (swapping) 메모리에 올라온 프로세스의 주소 공간 전체를 디스크의 스왑 영역(swa

zangzangs.tistory.com

TLB 참조 블로그

 

[운영체제] MMU, page table, inverted page table, TLB

우선 MMU의 정의부터 보고 가면 메모리 관리 장치(Memory Management Unit, 줄여서 MMU)는 CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품이다. 가상 메모리 주소를 실제 메모리 주소로

about-myeong.tistory.com

 

  1. 물리 주소로 접근할때 사용(인덱스) [본문으로]
  2. 하나의 프레임 안에서의 위치 [본문으로]
  3. MMU안에 있는 재배치 레지스터. 즉 논리주소를 물리주소로 변경해주는 레지스터. [본문으로]
  4. 실행 중 변경되지 않는 코드 [본문으로]
  5. 백킹스토어(backing store)라고 부르며, 디스크 내 파일 시스템과 별도로 존재하는 일정 영역 [본문으로]

댓글