[week 12] pintos - page와 frame

Woody Jo·2025년 8월 6일

kjungle

목록 보기
21/31

pintos vm 공부 키워드

page, frame, page table, frame table
아는 것 같은데

잘 모르겠다.
명확하지 않아.

설명을 못하겠어.
설명 못해?
그럼 모르는거야.


페이지

페이지란?

  • 가상 메모리를 일정한 크기로 나눈 블록이다.

pintos의 페이지는
pml4 -> pdp -> pgdir -> pte -> phsyical address
이렇게 4단계로 구성되어 있다.

출처: https://blog.xenoscr.net/2021/09/06/Exploring-Virtual-Memory-and-Page-Structures.html

(사진과 다를 수 있음)


프레임

프레임이란??

  • 물리 메모리를 일정한 크기로 나눈 블록이다.

출처: https://en.wikipedia.org/wiki/Page_table

페이지(가상 메모리 4KB 단위)는 페이지 테이블을 통해 물리 프레임에 매핑되며, 그 프레임은 코드, 데이터, 힙, 스택 등 유저 메모리 영역의 실제 내용을 담고 있다.

page -> page table -> frame

  • page는 kernel pool에 위치해 있고
  • frame은 user pool에 위치해 있다.

찾아 보기 전까지 page는 가상 메모리일 때 불리는 이름이고,
frame은 물리 메모리일 때 불리는 이름일 뿐이잖아?
위치에 따라 이름만 다르게 부르는게 그럼
"page == frame 아니야?" 이렇게 생각했다.

같다고도 말할 수 있지만, 사실 다르다.

무엇이 다른데?

  • 1:1로 매핑될 수 있지만, 동일하지 않다.
    • 예를 들어, 여러 page가 하나의 frame을 공유할 수 있고,
    • 페이지는 있지만 프레임에 매핑되지 않은 상태 (lazy allocation - 현재 pintos 진행중)
  • 운영체제 수준에서 관리 방식이 다름
    • page: 논리적인 주소
    • frame: 실제 메모리 주소

page table


출처: https://ddongwon.tistory.com/49

page table의 위치는 사실 Physical Memory에 위치해 있다고 알고 있다.
그렇기 때문에 위 이미지(위키피디아)에는 page table이 따로 보이진 않는 것 같다.

근데 사람의 입장으로 이렇게 따로 빼서 시각화하고 기억하는게 훨씬 좋은듯?

하나의 프로세스는 하나의 page table만 가질 수 있다.

출처: https://www.geeksforgeeks.org/operating-systems/page-table-entries-in-page-table/

page table에는 각각의 PTE(Page Table Entry)를 갖고 있다.

  • FN(Frame Number): 실제 물리 메모리 프레임 주소
  • Present/Absent: 유효 비트
  • Protection: 읽기, 쓰기, 실행 등 접근 권한 비트 (다른 메모리 영역 침범하지 못하도록 막음)
  • Reference: 접근(accessed) 비트라고도 한다. (page replacement algorithm 에서 사용)
  • Caching: 해당 페이지가 캐시될 수 있는지 여부 확인
  • Dirty: 수정(modified) 비트, 0이면 변경되지 않았으므로 디스크에 다시 기록할 필요 없음

사실 page는 이전 userprog 에서도 많이 사용했는데,
사실 제대로 모르고 사용했던거임.

그래서 이번에 정리 ~끝~

profile
developer

0개의 댓글