[Week10] 0328

안나경·2024년 3월 28일

크프정 일상

목록 보기
78/109

어제의 이야기

어제 공부한 것

오전에는 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...

profile
개발자 희망...

0개의 댓글