FastCampus UpStage AI/운영체제

운영체제 - 페이징과 페이지 테이블

하오츠(해석:맛있다) 2024. 10. 22. 00:01

스와핑

: 프로세스를 보조기억장의 일부 영역으로 쫓아내고, 당장 필요한 프로세스를 적재하는 메모리 관리기법

 

페이징

: 외부 단편화(연속적 메모리 할당 중 프로세스가 실행되고 삭제되면서 메모리가 충분함에도 불구하고 프로세스를 실행할 수 없는 상태)를 막기 위해 프로세스를 페이지 단위로 나눈것 

 

: 단, 내부 단편화가 발생할 수 있음(페이지 내부에 빈 메모리가 발생)

 

 

 

페이지 테이블

: 프레임과 페이지 매핑 정보를 담고 있는 표 형태의 데이터

: 프로세스마다 페이지 테이블을 가지고 있다.

 

 

 

페이지 테이블 베이스 레지스터(PTBR)

: 각 프로세스의 페이지 테이블 위치를 가리키는 레지스터(베이스 레지스터)

 

페이지 테이블의 캐시메모리(TLB)

: 페이지 테이블이 메모리에 적재되면 페이지의 위치를 찾느라 한번, 프레임에 접근하기 위해 한번 총 2번씩 메모리에 접근하게 됨으로 캐시 테이블로 적재해서 성능을 향상 시킨다. 

 

페이지 폴트(Page Fault)

: 접근하려는 페이지가 보조기억장치에 있을 경우 

 

* 페이지 폴트가 발생했을때 

: 작업 내역 백업 -> 페이지 폴트 루틴 실행 -> 유효비트 1로 변경 -> 접근하려는 페이지 접근

 

페이지 테이블의 비트

 

- 유효비트 : 접근하려는 페이지가 메모리(ddr5)에 있는지 보조기억장치(rom)에 있는지 (페이지 폴트)

- 보호비트 : 접근하려는 페이지 권한(read only, write, exe)

- 참조비트 : 접근한적이 있는지

- 수정비트 : 쓰기 작업을 한적이 있는 페이지인지

 

스래싱

: 지나친 페이징 폴트로 인해 너무 많은 시간을 소요해서 성능이 떨어짐

: 프로세스 적재가 높을수록 특정 구간에서 성능이 떨어진다

 

 

페이지 교체 알고리즘

: 페이지 폴트를 적게 일으킬 수 있도록 메모리에 적재하거나, 보조 기억장치로 내보낼 페이지를 교체하는 알고리즘

 

* 페이지 폴트가 적게 발생했다는 것을 아는 방법은 참조하는 페이지 중 연속된 페이지를 생략한 페이지열을 확인하면된다. => 페이지 참조열

 

- FIFO 페이지 교체 알고리즘

: 가장 먼저 메모리에 적재된 페이지를 보조 기억장치로 내보낸다(페이지 아웃).

* 단점 : 프로그램 실행 내내 유지해야하는 페이지일 수 있잖아 

 

- 2차 기회 FIFO 페이지 교체 알고리즘

: FIFO 페이지 교체 알고리즘 변형

 

가장 오랜 페이지부터 페이지 아웃

-> 단, 참조 비트가 1인 경우 0으로 변경하고 한번 더 기회를 부여

-> 참조 비트가 0이면 페이지 아웃

 

- 최적 페이지 교체 알고리즘

: 앞으로 쓸 일이 없는 페이지를 교체(비현실적)

 

 

- LRU 페이지 교체 알고리즘

: 가장 적게 참조했었던 페이지를 페이지 아웃한다.

 

가상 메모리

: 프로세스의 일부만 적재하여 실제 물리 메모리보다 큰 프로세스를 실행하는 기술