'프레임에 대한 백 레퍼런스'라는 표현은 구조체 page
에서 frame
필드가 프레임을 가리키는 포인터를 저장하고 있다는 의미입니다. 이를 이해하려면 '프레임'과 '백 레퍼런스'의 개념을 분리해서 설명해보겠습니다.
프레임 (Frame)
- 프레임은 물리 메모리의 페이지를 의미합니다. 즉, 실제 메모리의 한 블록을 나타냅니다.
- 가상 메모리 시스템에서 페이지와 프레임은 일대일로 매핑됩니다. 페이지는 가상 주소 공간에서의 단위이고, 프레임은 물리 주소 공간에서의 단위입니다.
백 레퍼런스 (Back Reference)
- 백 레퍼런스는 양방향 참조를 의미합니다. 즉, 객체 A가 객체 B를 참조하고 있고, 동시에 객체 B도 객체 A를 참조하고 있는 경우입니다.
- 이는 객체 간의 상호 참조를 가능하게 하여, 한 객체에서 다른 객체로 쉽게 접근할 수 있게 합니다.
구조체 page
와 frame
간의 관계
구조체 page
와 frame
은 양방향 참조를 통해 서로 연결됩니다. 이를 통해 페이지와 프레임 간의 연관성을 유지하고, 서로의 정보를 쉽게 접근할 수 있습니다.
구조체 정의
struct page {
const struct page_operations *operations;
void *va; /* Address in terms of user space */
struct frame *frame; /* Back reference for frame */
union {
struct uninit_page uninit;
struct anon_page anon;
struct file_page file;
#ifdef EFILESYS
struct page_cache page_cache;
#endif
};
};
struct frame {
void *kva; /* Kernel virtual address */
struct page *page; /* Reference to the corresponding page */
};
예제
예를 들어, 페이지 p
가 있고, 이에 대응하는 프레임 f
가 있다고 가정해봅시다.
struct page p;
struct frame f;
p.frame = &f; // 페이지가 프레임을 참조
f.page = &p; // 프레임이 페이지를 참조
이 경우:
p.frame
은 페이지p
가 프레임f
를 가리키고 있음을 나타냅니다.f.page
는 프레임f
가 페이지p
를 가리키고 있음을 나타냅니다.
이렇게 하면:
- 페이지 구조체에서 해당 페이지가 매핑된 프레임을 쉽게 찾을 수 있습니다.
- 프레임 구조체에서 해당 프레임이 매핑된 페이지를 쉽게 찾을 수 있습니다.
요약
'프레임에 대한 백 레퍼런스'는 페이지 구조체에서 해당 페이지가 매핑된 물리 메모리 프레임을 가리키는 포인터를 의미합니다. 이를 통해 페이지와 프레임 간의 양방향 참조가 가능해져, 페이지에서 프레임을, 프레임에서 페이지를 쉽게 접근할 수 있게 됩니다.
'크래프톤 정글 일지' 카테고리의 다른 글
[PintOS] project 3.0 - vm.h (0) | 2024.06.03 |
---|---|
[PintOS] union이 뭐임? What is union in C (0) | 2024.06.03 |
[PintOS] Struct Page (0) | 2024.06.01 |
[PintOS] Lazy Loading (0) | 2024.06.01 |
[PintOS] project 3 - 가상 메모리 개요 virtual memory (0) | 2024.06.01 |