Search
Duplicate
📒

[OS Stduy] 03-x. 가상 메모리 - 페이징 기법

상태
미진행
수업
OS Study
주제
OS
4 more properties
참고

페이징을 통한 가상 메모리 관리

NOTE
가상 메모리프로세스의 일부만 메모리에 적재하여 실제 물리 메모리보다 더 큰 프로세스를 실행! 페이징 ⇒ 메모리와 프로세스를 일정한 단위로 자르고 프로세스를 메모리에 불연속적인 조각 단위로 할당하는 기법!
요즘 게임은 다 100GB넘기는데 우리집 16GB Ram은 게임을 어케 돌리는건가?
이렇게 쪼개고 쪼개서 필요한거만 올리면 가능하다!

페이지 & 프레임

NOTE
페이지프레임은 동일한 크기로 설정되며, 이 크기 단위로 메모리 할당이 이루어진다!
쪼개고 쪼개서 할당해준다
연속 메모리 할당과 똑같이 보조기억 장치에 스왑도 가능 프로세스 단위와 구분하기 위해 페이지 인 - 페이지 아웃으로 말한다
페이지
프로세스의 논리 주소로 공간을 일정한 크기 단위로 자른 것
프레임
메모리의 물리 주소 공간을 일정한 크기 단위로 자른 것

내부 단편화

ex) 108kb의 프로세스 경우, 20kb로 나누면 8kb의 페이지가 12kb 낭비됨
아무리 페이지, 프레임을 쪼개서 할당해도 크기가 모두 맞을수는 없다.
이를 내부 단편화라고 하지만, 외부 단편화보다는 훨씬 작은 양이다.

페이지 테이블

NOTE
페이지 ⇒ 메모리에 불연속적으로 적재된다. 논리 주소의 연속성을 유지한 채 불연속적인 페이지와 맵핑하기 위해 페이지 테이블을 이용한다!
프로세스 페이지의 위치가 제각각이므로 테이블을 통해 관리해줌
페이지 테이블을 통해 실제 물리주소는 불규칙해도 연속적인것처럼 읽을 수 있음!
페이지 테이블은 페이지 번호프레임 번호를 맵핑해서, CPU가 페이지 번호만 보고 해당 페이지가 적재된 프레임을 찾을 수 있게 해준다.
CPU는 이를 통해 메모리에 분산되더라도, 논리 주소를 통해 순차적으로 실행

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

NOTE
각각의 프로세스는 고유의 페이지 테이블을 메모리에 가지고 있으며 PCB의 PTBR에 그 시작주소가 담긴다! 페이지 테이블 = 카탈로그(페이지를 찾는 안내서) 페이지 테이블 베이스 레지스터 = 카탈로그의 시작점(홈페이지)
PTBR은 프로세스 페이지 테이블이 적재된 주소를 가리킴!

TLB

NOTE
페이지 테이블은 메모리에 저장하기 때문에, 이를 통해 접근하면 메모리 접근을 2번하는 비효율성이 존재한다!
하지만 페이지 테이블은 메모리에 저장하기 때문에, 위와 같이 2번을 접근하는 비효율성 존재
메모리 접근 2번을 방지하기 위해, 캐시 메모리를 둔다!
일반적으로 MMU내에 존재하며 TLB(Transfer lookaside buffer)라고 부른다.
캐시 메모리와 마찬가지로 참고하고자 하는 페이지 존재 유무를 TLB 히트/미스 라고 한다.

페이징에서의 주소 변환

NOTE
특정 주소에 접근하기 위해서는 2가지 정보가 필요하며, 이에 따라 페이징 시스템의 논리 주소는 두 부분으로 이루어져 있다!
페이지 번호(A의 페이지 2), 변위(10만큼 떨어진)가 필요하다!
논리주소 <페이지 번호, 변위>가 <5,2>인 곳에 접근? ⇒ 1번 프레임의 10번지
페이지 번호
접근하고자 하는 페이지가 무엇인지 나타내는 비트
변위
접근하고자 하는 주소가 페이지 내 어디에 저장되어 있는지 나타내는, N비트를 제외한 나머지 비트

페이지 테이블 엔트리

NOTE
페이지 테이블 항목을 도서관의 카탈로그라 생각하고, 테이블 엔트리카탈로그 내의 개별 카드로 생각하자! 각 카드는 책의 제목, 저자와 같은 정보가 들어간다!
예시 이미지 (저 흰색의 종이들이 테이블 엔트리라 생각하자!)
프로세스의 모든 테이블 페이지 엔트리를 메모리에 유지하는 것은 비효율적이기 때문에 계층적 페이징을 통해 여러 단계의 페이지를 두기도 한다!

유효 비트

NOTE
해당 페이지에 접근이 가능한가?
아직 적재되지 않았거나 스왑 아웃이되었을 경우 0이 되며, 접근 시도 시 페이지 폴트 예외가 발생한다!

보호 비트

NOTE
읽고 쓰기가 가능한가?
쓰기가 가능하면 1, 읽기 전용인 경우 0의 값을 가진다.
위의 그림처럼 R/W/X의 3개 비트로 상세한 권한을 설정할 수 있다.

참조 비트

NOTE
CPU가 접근한 적 있는가?

수정 비트

NOTE
해당 페이지에 데이터를 쓴 적 있는가?