[Week10] 0321

안나경·2024년 3월 21일

크프정 일상

목록 보기
71/109

어제의 이야기

어제 공부한 것

...
알고리즘 안 했고(비운)
어제 썼던 부분부터 이어서 쓰자면

그 뒤로 추가 페어프로그래밍? 디버깅을 하나 했는데
딱히 안 하셔서 총 정리 하다가
argument passing 앞부분 쓰던 중에
저녁...

깜박 저녁 먹고 잠들어서 쪼끔 늦게 복귀했는데
그 뒤에 페어프로그래밍...

wait와 exec에서

wait시
자신의 child list를 순회해서
받은 tid와 일치하면
그 때부터 wait하는 건데

이상하게 for 문 안에서 wait를 걸면 잘 안 되길래
따로 빼서 아래로 내리고
거기에 child가 Null이면 바로 리턴해야만 괜찮다길래

thread create 시점에 나는 child를 추가하지만
이번에서는
즉, 그러니까 fork에서만
child list를 추가하셨었어서 생긴 이슈였음.

이후 모든 thread를 child와 parent를 지정해주면서 해결.
그 외에도 wait sema를
exit-wait sema와
fork-load wait sema를
둘다 wait sema로 해서 생긴 이슈도 해결.

어떤 분이 sema가 안 풀려서 봤더니
세마가 세 개인데 하나를 수정한다는게 수정을 덜했던 거라서 해결.

multi-oom에서
fork 횟수가 적다길래 fdt를 돌면서 i를 close 시키면서 해결.
(다른 팀.)

multi-oom에서
어떻게 하든 close만 호출하면 이슈가 생긴대서 봤더니
mulit-oom case를 분석하여
child와 parent가 각각 다른 for문에 들어가는 걸 파악하고
page fault handler에서
exit(-1)등 null ptr 예외 처리를 취소하셨던걸 발견해 해결.
그러나 이후 close 다시 이슈가 생겼으나
한번 주소를 쭉 뽑았더니 2라는 이상한 주소가 뽑히는 경우가 발생.
나중에 들었는데 close시 역순이 아니라 0부터 시작해서
전부 닫힐때까지 while로 반복하여 해결하셨다고 하셨음.
(palloc 관련으로 file 설정을하셔서 생긴 이슈인듯함.)

rox, deny writable의 의의를 설명했음.
그때 안 됐지만 늦은 밤이라 먼저 퇴근했는데
다음날 아침 들으니 단순히 file을 thread 구조체에
잘못된 형태로 저장해서 그랬던 거고 그걸 고쳤더니 해결되셨다고함.

그 외에도
동료가 모든 case에서 뻑나길래
보니까 ready list가 idle thread가 기본으로 있어야하는데
없어서 빈 ready list에서 yield 하며 생긴 이슈.
어떻게 해결하셨는지는 전해듣지 못했음.
(내가 한건 실제로 어느 부분에서 뻑났는지 같이 확인하고
ready list에서 idle thread가 없는걸 확인한뒤
그에 대해 이슈가 있는건 아닌지 확인해달라고 하고 넘어감.)

그 외에
exit status의 역할과 주고 받게 되는 sema 메커니즘을 설명하였고

syscall 에서 intr frame을 전달받아 process fork에 넘기려면
fork를 오버라이팅을 하게 되는데 그건 좀 아닌거같지만,
부모 프로세스의 컨텍스트 자체는 전달해야해서
왜 tf로는 전달이 되지 않는지,
if는 정말 함수를 고쳐서 intr_frame을 전해받아야하는지,
얘기하다가 syscall 부분 자체에서 미리 memcpy를 하면
함수 자체는 고칠 필요 없다는 걸 알게 됨.

여럿분의 디버깅을 도와
확실히 내가 잘 알고 있고
디버깅도 그럭저럭...아마도....하는...할줄...
아는... 다는 느낌을 받았음.

그렇지만 총 정리를 덜함...
오늘은 새로 배정받은 팀원분들도
각자 다른 일을 하시는것 같기에 빠르게 총정리를 끝내고
project 3으로 넘어갈 것.

project4도 하시고 싶어하는 분이 많아서 신기하다.
나도 물론 같이 할수 있을때 하는게 좋지만
제일 어렵대서 시간이 넉넉치 않을거같다..

소감

요즘 잠이 일찍 못 듦
그치만 잠 자체는 깊이 잠듦

그렇지만 암만봐도 한두시간동안 깨어있는다는 느낌은
기쁘진않다...

오늘의 계획

변경 사항 및 일정

오후 6시 회식.

오전

발표.
발표 하기 전에 미리 연습했었음.
했는데 6분 정도 걸려서 뜨악하고
분량 줄임.

실제로는 다른 팀원분들이 생각보다 시간을 초과하여
마지막 타순이라 2분으로 마무리함.

dup2를 구현하시는 케이스가 인상깊었고
intr_frame이 tf로 하면 안되는 이유같은 것도 흥미로웠음.
별개로 project2 초반 부팅 자체가 안 되었던 이슈도 흥미로웠음.

생각보다 디버깅 이슈를 말하는게
더 재밌을지도 모른다는 생각이 듦.

열심히 자리바꿈.
동료 피드백함.

동료들과 잠시 놂.

총정리 할 것.

저녁

회식이 끝나고도
총 정리가 안 끝났으면 와서 총정리.

(근데 총 정리가 끝났어도
project3을 보는게 낫긴 할지도.)

오늘의 다짐

끝났지만
끝나지않았다....

profile
개발자 희망...

0개의 댓글