일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 핀토스 프로젝트 2
- 핀토스 프로젝트 1
- 셋업
- 가테
- 핀토스 프로젝트 3
- PINTOS
- 핀토스 프로젝트
- Project 1
- 내일부터
- 노가다
- 일지 시작한 지 얼마나 됐다고
- botw
- 글루민
- 아직도 실험 중
- multi-oom
- 제발흰박
- alarm clock
- 바빠지나?
- 끝
- 글리치
- 핀토스 프로젝트 4
- 황금 장미
- 자 이제 시작이야
- 파란 장미
- 마일섬
- Today
- Total
목록핀토스 프로젝트 3 (10)
거북이의 쉼터
원서 작성 + 동아리 qual로 4일 정도 보낸 뒤 복귀했다. 이제 수업에서는 플젝 1 제출이 코앞이기에 먼저 제공된 가상 머신에 플젝 1 내용을 올려 테스트해보기로 한다. 전부 잘 통과하는 것을 볼 수 있다. pass tests/threads/alarm-single pass tests/threads/alarm-multiple pass tests/threads/alarm-simultaneous pass tests/threads/alarm-priority pass tests/threads/alarm-zero pass tests/threads/alarm-negative pass tests/threads/priority-change pass tests/threads/priority-donate-one pass..
구현은 어디가고 다른 챕터 가이드라인이냐고 할 수 있다. 맞다. 사실 구현 포스팅을 작성하기 위해 열심히 코드를 조지고 있었다. 근데 작성을 하면서 수정을 하던 도중, VM_FILE을 destroy하는 상황에 사용하는 file_backed_destroy 함수를 구현하게 되었다. 해당 함수가 해야 하는 역할은 현재 VM_FILE의 dirty bit가 켜져있으면, 해당 내용을 원래 파일에 작성 (write_back)을 하고, 그 페이지에서 보유하고 있는 자원을 해소하는 것이었다. 그런데, 중요한 것은 이 write_back 역할을 하는 함수가 있다는 것이다. 바로 file_backed_swap_out이다. /* Swap out the page by writeback contents to the file. *..
지난 시간에 매뉴얼은 다 봤으니 설계를 해 보자. VM_FILE에 저장을 해야 하는 것들을 생각해보면: 인자로 들어가는 type (마커가 있을지도 모르기에) swap in/out을 하기 위해 해당 페이지가 어디에서 기원했는지를 알려주는 정보 (file 포인터, ofs 등) nullbyte 패딩을 위한 길이 해당 인자들은 struct file_page에 넣어주고 관리할 것이다. 문제는 해당 인자들을 넘기려면 aux에서 넘겨야 하기 때문에 file_backed_initializer에서는 해줄 것이 마땅히 없다. 중요한 것은 lazy_load_segment와 유사하게 aux가 넘겨지는 init을 구현해주는 것이다. 아직도 initializer 계열 함수에 kva가 들어가 있는 이유를 모르겠다. 왜지? swap..
드디어 VM_UNINIT과 VM_ANON의 좁고 편협한 사고에서 벗어나 VM_FILE을 다루게 되는 mmap이다. 보이는 것처럼 나는 아주 "절거워"질 예정이다. 지금 여기까지 해온 사람들에게는 익숙하겠지만 mmap은 파일의 내용을 메모리 상에 올려 입출력을 빠르게 해줄 수 있는 기법이다. 구현할 mmap의 형태는 다음과 같으며, void *mmap (void *addr, size_t length, int writable, int fd, off_t offset); addr에 주어진 length 만큼의 공간에 fd에 대응되는 파일의 offset에 해당하는 내용을 매핑한다. 이 때, 매핑된 해당 페이지의 쓰기 권한은 writable을 따른다. 주어진 addr은 반드시 page-aligned 되어 있어야 하며..