본문 바로가기

TIL (Today I Learned)

3/19 (화) TIL - 오늘은 꼭 fork를 끝내야지

728x90

 

 

어제 마무리하면서 적었던 내용이 remove와 close를 어떻게 다르게 구현해야 하는가? 였다.

다른 정글러분께 질문했고 답을 들을 수 있었다! 

remove를 내가 기존에 구현했던 close처럼 동작하게 하고, close는 파일에 대한 메모리 할당을 해제해주어야 한다.

그리고 filesys_remove는 실제 하드웨어의 파일을 삭제하는 것이라고 한다. 그냥 썼으면 큰일날뻔~

 

 

 

퀴즈 준비하면서 돌려놓은 make check

36개 남았다 ㅎㅎ...

 

 

fork 가보자고~

못 갔 다!

 

thread.h에 선언했던 자식 리스트를 활용해봤다. init_thread()에서 부모와 자식 스레드 모두 만날 수 있기 때문에 여기에서 자식 리스트에 추가, 자식의 부모 설정을 동시에 해주었다.

 

이것저것 추가하고 

wait()에서 process_wait()을 호출하게 설정해줌! 또, exit()에서 출력하던 이 메시지를

printf ("%s: exit(%d)\n", ...);

 

process_exit()에서 출력할 수 있도록 thread 구조체에 exit_status를 추가해주었다.

 

이것저것 해보았으나 지금 가장 큰 문제!

process_wait()이 호출되지 않는다 ㅠㅠ

프로세스 fork와 exec, exit 모두 호출되는데 wait이 호출이 안 된다...why...테스트케이스에서 wait을 호출함에도 불구하고 why...

 

선배님의 구현 구조?를 살펴봐도...진전이 없다리

일단 내일 다시 해보겠다...와중에 sema 추가하니 write도 안 됨 ㅜㅜ 

 

내일은 제발 되기를...다른 사람 코드 참고하고 싶지 않아...