어제의 이야기
어제 공부한 것
오전에는 mmap munmap 보다가 총 정리함.

3시, 4시까지 mmap과 munmap 쓰고
돌렸더니 예외 처리는 되는데 제 기능은 못함.
mmap은 총 length 에 맞춰 하면 될거라 생각했는데,
length는 사용자가 지정한 파일 크기고,
실제 파일 size는 다른 개념이었음.
그리고 또 어려웠던건
수정이 이루어진다면 munmap에서 write를 해야하는데
대체 수정된 순간은 어떻게 판단하냐는 거임.
(나중에 보니 pml4 is dirty라고 내장 함수가 있다.)
- zero, zero len 케이스는 다른거라서 length가 0인건 가능하나 filesize가 0인건 불가하게 처리.
- stack growth에서 만족해야하는 < 연산자가 여러개인데, 이어서 쓰면 그중 하나라도 만족하면 참이 되어버리므로 && 로 나누어서 쓰기.
- munmap시 mmap에서 반환하는 addr은 하나인만큼, 하나의 addr을 munmap했을 때도 할당한 페이지 수 만큼 돌려야함. 그래서 할당한 페이지의 count를 세서 munmap시 반복함.
- read byte, zero byte를 초기에 정해놓고 load segment와 같은 흐름으로 하되, length를 고려해서 read와 zero 바이트를 정하면 편하다.
- kernel addr외에도, kernel에서 페이지 사이즈 하나 차이만큼도 거르더라.(왜? 아무튼 mmap이 그러라고 시켰음.)
- unmap 에서 munmap을 향한 기존 while count !=0으로 해놓고 count를 빼는 방식이었는데, 실제로 내가 쓴 식은 초반에 destroy하고 다음으로 넘어가기때문에 잉.......? 뭐지? 맞나?
- mmap exit 케이스에서 free wait 위로 process clean up 해주니 통과, 실제로 자식이 쓰고나서 읽어야하는데 자식이 쓰기전에 읽어서 빈칸을 읽어버리는 이슈였는데, process clean up과 관련이 있는건가...
근데 지금 잘 되던 munmap 쓰던 케이스가
끝까지 출력 못하고 죽고있음
손보기가 필요함...
소감
오늘 swap 들어갈순 있나...
mmap이 절 괴롭혀요
오늘의 계획
변경 사항 및 일정
2시 40분 티타임
7시 채용 설명회 : 팀 스파르타
오전
munmap과 싸운다...
낮
열심히 싸운다...
티타임.
저녁
채용 설명회.
티타임, 채용 설명회 정리.
잘 싸웠다면
swap...
소감
mungmung...