aux는 frame을 어떻게 초기화할지 정보가 담긴 구조체다. 그리고 frame에 처음 페이지를 올릴 때만 사용된다. 페이지가 VM_ANON, VM_FIEL 타입으로 초기화 된 이후에는 페이지 내부에 메타데이터가 따로 저장되고 aux는 사용하지 않는다.
struct lazy_file_info {
struct file *file;
off_t offset;
size_t read_bytes;
size_t zero_bytes;
};
file, offset, read_bytes, zero_bytes
struct lazy_anon_info {
struct file *file;
off_t offset;
size_t read_bytes;
size_t zero_bytes;
};
필요가 없다. 어짜피 0으로 초기화하기 때문이다.
처음이 아니라면 페이지 내부에 메타 데이터 정보가 있다. 따라서 aux는 더 이상 필요없다.
| aux가 필요한 상황 | 실행파일 불러올 때 | 스택 영역에서 처음 불러올 때 | 스왑 영역에서 불러올 때 | 파일에서 불러올 때 |
|---|---|---|---|---|
| VM_ANON | O | X | X | X |
| VM_FILE | X | X | X | O |