일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- pintos
- 티스토리챌린지
- 유니티
- 크래프톤 정글
- KRAFTON JUNGLE
- 연결리스트
- BFS
- 전쟁-전투
- Unity
- User Stack
- kraftonjungle
- 백준
- 4기
- C
- 다익스트라
- 크래프톤정글4기
- 파이썬
- 알고리즘
- 크래프톤정글
- 크래프톤 정글 4기
- anonymous page
- 네트워크
- 오블완
- 알고리즘수업-너비우선탐색2
- 이벤트 함수 실행 순서
- c#
- 추상클래스와인터페이스
- 핀토스
- TiL
- project3
- Today
- Total
목록project3 (2)
말감로그
📆2024. 04.02 Memory Mapped Files는 파일을 기반으로 매핑하는 페이지를 구현하는 것이다. 파일과 메모리 매핑은 System Call인 mmap()을 통해 이루어진다. Pintos에서는 vm/file.c의 do_mmap()을 이용해서 매핑을 수행하는데, 그 이전에 mmap()에 전달된 인자들에 대한 검증이 먼저 이루어져야 한다. 시스템 콜 mmap() 1. offset의 값이 PGSIZE에 알맞게 align되어 있지 않은 경우 2. addr이 NULL이거나, addr이 page-aligned되지 않았거나 kernel 영역인 경우 3. 매핑하려는 페이지가 이미 존재하는 페이지와 겹칠 때 (=spt에 존재하는 페이지일 때) 4. 찾는 파일이 디스크에 없는 경우 5. fd로 열린 파일의 ..
load_segment 흐름 load_segment (메모리만 로드) - > setupstack( 페이지 요구하고 매핑) -> page_fault (커널 제어권 획득) -> vm_try_handler (페이지 물리 프레임 매핑 ) -> lazy load segmet ( 프레임에 세그먼트 할당 ) 🤔궁금했던 점 왜 load_segment 부분에서 페이지를 load할 때 uninit 페이지 생성하지 않고 anonymous 페이지로 생성하는가? load_segment를 보면, vm_alloc_page_with_initializer를 호출할 때, 타입 인자를 VM_ANON으로 넘겨서, 모든 uninit 페이지가 page fault 이후 Anonymous로 생성되게 만들어놓은 것을 볼 수 있다. 왜 filed_b..