이번주는 모두가 힘들었을 것이라고 생각한다.
매우 방대한 양의 과제와 부족한 시간 그리고 어려운 난이도 이 3개가 합쳐져서 삼위일체를 이루었는데
사람마다 마주한 문제와 에러 덩어리들이 한 가득해서 정신이 아득했을 것이다.
나 또한 그랬고 우리 반 사람들도 그랬을 것이다.
그리고 모두가 해내지 못해도 얻어가는 것이 그만큼 많았을 것이라고 생각한다.
그래도 여기는 정글 아닌가! 10일을 몰입헤서 물어뜯은결과 결국 마지막 날에 겨우 all pass를 받아냈다.
알게된것
1. 꺼진불도 다시 보자
우리팀이 1주차에 짠 lock_acquire()가 테스트 케이스가 당연히 잘돌아가고 all pass를 받아서 저 함수가 잘못되었다는 생각조차 안했다.
하지만 알고보니 lock을 끝날때 NULL로 초기화를 안해줘서 lock자체가 이상하게 동작 하고 있었지만 Test_Case는 쓰레드 하나로만 돌아가기 때문에 발견하지 못했다.
2. 메모리 사이즈 체크
Pintos에서 *fdt[]와 **fdt는 동일하게 동작하지만 사이즈가 다르다. 그리고 thread->fdt[0] 에 메모리를 할당해주면
thread->fdt[0]의 값에 메모리를 할당해주는 것이다.
그러므로 &thread->fdt[0]에 할당을 해주어야한다. 하지만 C언어에서는 lvalue에 &연산자를 사용하지 못하기 때문에
가독성이 쓰레기가 되기는 하지만.....이중 포인터의 주소를 담을 수 있는 삼중포인터 변수를 만들어 할당해줄수있다.
이번주의 느낀점
반에서 제일 먼저 우리조가 all pass를 받은 것이 기뻤다.
이제 슬슬 우리들만의 OS가 만들어져 가는 모양이 잡히는게 너무 뿌듯하고 보람찬 느낌이 들어 기분이 좋다.
'정글' 카테고리의 다른 글
늦게 써보는 Pintos 3주차 VM(가상메모리) 회고 (0) | 2023.09.25 |
---|---|
Pintos Thread (WIL) 깊게 생각해볼 Keyword (0) | 2023.06.02 |
(Pintos 1주차) Priority scheduling (0) | 2023.05.31 |
Pintos(1일차 후기) 쓰레드 (0) | 2023.05.28 |
WIL(7주차) Proxy 구현 (0) | 2023.05.25 |