운영체제

메인메모리 - 페이징

페이징

: 프로세스의 물리주소 공간이 연속적이지 않도록 하는 메모리 관리체계
외부단편화 방지
기본 방법

  • 물리메모리를 프레임이라고 하는 고정된 크기의 블록으로 나눔
  • 논리메모를 페이지라고 하는 동일한 크기의 블록으로 나눔
  • 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
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

profile
Devops, AWS에 관심있어요.

0개의 댓글