운영체제
메인메모리 - 페이징
페이징
: 프로세스의 물리주소 공간이 연속적이지 않도록 하는 메모리 관리체계
외부단편화 방지
기본 방법
- 물리메모리를 프레임이라고 하는 고정된 크기의 블록으로 나눔
- 논리메모를 페이지라고 하는 동일한 크기의 블록으로 나눔
- CPU에 의해 생성되는 모든 주소는 페이지번호(p-몫),페이지 오프셋(d-나머지) 두 부분으로 나뉨
✔️ 페이지 번호 : 페이지 테이블에 대한 인덱스로 사용
✔️ 페이지 테이블 : 물리메모리에 있는 각 프레임에 기본주소를 포함. 프레임의 기본주소가 페이지 오프셋과 결합되어 물리 메모리 주소 정의

페이지 크기
- 페이지 크기는 보통 4KB~1GB정도(요즘 512KB가 최소). 2의 제곱수
- 외부 단편화 방지
- 논리 주소 공간 사이즈가 2^m, 페이지 사이즈가 2^n 바이트라고 할때, 논리주소의 상위 m-n 비트는 페이지 번호를 지정, 하위 n비트는 페이지 오프셋 지정
- p는 페이지 테이블의 인덱스, d는 페이지 내의 오프셋

-> 논리주소공산은 2^4 = 16, 페이지 사이즈는 2^2 = 4
마지막 논리주소 13일때 page는 3임
페이징시 내부단편화
- 외부 단편화는 없으나 내부 단편화는 존재할 수 있다.
- 프로세스가 페이지 경계와 일치하지않는 크기의 메모리를 요구한다면, 마지막 페이지 프레임은 전부 할당되지 않음
- 평균적으로 프로세스 당 반 페이지 정도의 내부 단편화를 예상
➡️ 페이지 크기가 작을수록 좋은가?
➡️ 페이지 테이블의 크기가 반비례 관계로 커지게 됨
➡️ 디스크 입장에서는? 페이지 크기가 클 수록 효율적
하드웨어 지원 - TLB
- Key(tag) Value 구성
- TLB는 페이지 테이블과 함께 사용됨, 페이지 테이블 항목 중 일부만 포함
- 페이지 번호를 찾으면 프레임 번호를 즉시 사용. 메모리 액세스에 사용
- 페이지 번호사 TLB에 없으면 페이지 테이블에 대한 메모리 참조를 새로 생성

보호
: 메모리 보호는 각 프레임과 관련된 보호 비트에 의해 수행됨
1) 페이지 읽기-쓰기 또는 읽기 전용 비트
- 보호 비트를 검사하여 읽기전용 페이지에 쓰기를 시도하면 위반을 검출함
2) 유효-무효 비트
- "유효"로 설정되면 관련된 페이지가 프로세스의 합법적인 페이지임을 나타냄
- "무효"로 설정되면 그 페이지 프로세스의 논리 주소 공간에 속하지 않는다는 것을 나타냄
페이징의 장점 : 공통 코드를 공유할 수 있음

https://bit.ly/3FVdhDa
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.