
[목표]
Priority Scheduling에 대해서 코드를 분석하고, 작성합니다. (중단)
본격적으로 donation을 구현합니다.(중단)
프로젝트 2에 대해서 공부합니다. (진행중)
donation 테스트 케이스를 통과할 수 있게 합니다. 어찌 저찌 해서 GPT와 함께 다 만들었는데, FIFO, sema, condvar 가 다시 되지 않는다… 수정을 진행하기엔 시간이 많이 걸려서 다음 프로젝트할 준비를 해야할 것 같습니다.
식사를 하고 휴식을 취했습니다.
Project1을 중단하기 전에 블로그들에 있는 코드를 가져와서 All pass 가 되는지 확인했습니다.
결론적으로 프로젝트 1은 donation과 mlfqs(4BSD)는 구현하지 못했습니다. 그래도 자력으로 푼 alarm, priority, sema, condvar 등은 뿌듯합니다.
본격적으로 프로젝트 2에 대해서 공부를 시작했습니다. KAIST 공식 깃허브 문서와 키워드들을 확인하여 공부합니다. 저번에도 개념과 이론을 잘이해하고 있어야 코드, 알고리즘 작성하는데 도움이 많이 되었어서 차근차근 이해하고 가겠습니다.
-> 이번주는 저번주와 다르게 개념 파일도 PintOS Project2: User Programs 라는 구현페이지에 같이 정리하겠습니다.
[목표]
프로젝트2의 소개 챕터 이해하기
정글에서 제공하는 키워드 공부하기
먹은 음식들을 가져와봤습니다. 집에서 정글까지는 차타고 왔습니다.



캠퍼스 도착 후 짐정리를 했다. 동생이 가져가야할 장비가 있어서 돌려주었다.
프로젝트 2에 대해서 공부를 진행했습니다. 소개부터 확인을 하고 있습니다. 이후에 정글에서 제공하는 공부 키워드 토대로 공부할 예정입니다.
→ 프로젝트 소개와 관련된 문서(동기화, 가상주소)를 모두 읽어보았다. 100퍼센트 이해하는 것보단 흐름을 파악하고, 이러한 내용과 어떤 요소를 사용하고 수정해야하는지 알아보았다.
이제, 정글에서 제공하는 공부 키워드를 정리해보겠다. 이후에는 프로젝트 파일에 대한 번역 진행 예정입니다.
정리하기 전에 process.c에서 오류가 뜨는 문제가 있어서 확인을 해보니, thread.h에 define이 되지 않았습니다. 그래서 #ifndef 는 #define USERPROG 로 바꿔줘서 해결했습니다. 하나만 정의하면 나머지도 if문에 따라 정의됩니다.
그리고 부팅 테스트를 해봐야 프로젝트2를 진행될 수 있다고 하여서 먼저 부팅테스트를 했습니다. 최상단 파일에서 source ./activate 를 실행하고, cd userprog 를 통해 파일을 이동하여 make 로 파일을 만들어서 build 파일로 들어가서 해당 코드를 실행하면 정상 부팅 여부를 확인할 수 있다.
pintos --fs-disk=10 -p tests/userprog/args-single:args-single -- -q -f run 'args-single onearg'

이제부터 본격적으로 공부 키워드를 정리해보겠습니다.