[Week11] 0329

안나경·2024년 3월 29일

크프정 일상

목록 보기
79/109

어제의 이야기

어제 공부한 것

깃북 swap in, out.
anon 파트 구상.

화이트보드에 쓰기 귀찮았음

근데 그것도 그건데
본래 내장 함수와 비교해야 봐야해서 비교해본다는게
어느새 짜버린 모습

어제 티타임, 채용 설명회 들어서 시간이 약간 뜬 것도 있어서
코드는 많이 짜지 못했음.

오전에 생각보다 바로 디버깅 성공해버려서...

  • mmap close등 munmap시 destroy의 for문을 p-> ... 등으로 조건을 지정해줬는데 p를 계속 spt find로 갱신하고 있었으니 오류가 생겼었음.
  • anon init, anon swap out 슈도 코드 좀 작성. victim을 대충 쓰긴 했지만 anono swap out과 연계할 방법 고민 중.

그 외에
stack growth 시
rsp -8 이라는게 정확히 어떤 상황인지

rsp -8 : 맨처음 지역 변수 선언 등으로 적재시 생기는 push 명령어로 생기는 지점
실제로 찾을때는 rsp 사이에 있는 addr등으로 찾아감.

근데 사실 페이지 크기 단위로 이미 fault 나는 순간에 할당을 하기때문에
중간에 page fault가 나는 상황은 대개...
예전에 할당한다고 해놓고 할당을 안 했기때문에 그때 할당하기 위해
page growth를 쓰는 방식으로 구현함.

이게 헷갈리는 이유가

맨 처음 적재 : 적재가 안 되어 fault 나는 순간 할당 -> 할당이 잘 되었기때문에 그 이후는 fault 날 일이 없음. (단 Push로 넣었기때문에 rsp -8 지점에서 fault 가 날 것임. 그것도 growth로 판단.)
(rsp -8 지점은, 애초에 끝까지 push를 해야하지만
Push 명령어 자체가 그걸 마치기 전에 addr을 검사하는데
그것때문에 rsp 자체는 아직 움직이지 못했음.)

addr이 중간에 접근했는데 (제대로 할당했다면) fault 나는 경우는 없다 -> 맞음
addr이 중간에 접근하는 경우가 없지않나 -> 틀림

이라

흠 확실히 순서를 제대로 알지 못하긴 했음
나는 rsp가 움직이고 addr은 그 사이 값을 가져오는줄 알았는데

넣을 때는 addr은 항상 rsp-8이고
찾을떄야 addr은 중간 값일수는 있으나 PGSIZE 안이라면 fault 날일 없으니 stk growth 케이스로 넣을 필요 없음. (났으면 걍.... 문제임)

그래서 addr이 분명 적재되었을
중간 부분에 접근했을때 growth 처리한건 코드 재량인거고.

오케이... 끝.

소감

내가 헷갈리게 된 이유가 뭔지도 알거같고
대화에 혼선이 있던 이유가 뭔지도 알거같음

중간 addr이 fault나야 handle하는 일반적 상황과 헷갈림
rsp-8 자체가 무슨 상황에 일어나는건지 헷갈림

근데 뭐....
알게 되는게 중요한 거지...

오늘의 계획

변경 사항 및 일정

없...을걸?

swap in, out 슈도 코드 완성.

저녁

열심히 코드 디버깅...

오늘의 다짐

멍멍멍멍

profile
개발자 희망...

0개의 댓글