본문 바로가기
💻 프로젝트/정글 사관학교

[WEEK8] 100점이 아니어도 괜찮아

by ddubbu 2024. 10. 8.

🤔회고

디깅한다는 건?
이슈를 맞딱드렸을 때 끝까지 파보는 연습? 그럼 저번에 용량 큰 동영상 이슈를 끝까지 파보았어야했나. 과제 끝내니는게 중요한게 아니라면, 이번주차는 어떻게 임해볼까. 문제를 계속 맞딱드려야한다라..
 
100점이 아니어도 괜찮아
마의 system call - process fork, wait, exec 구현에 진입해서 멘붕이 왔다. 핀토스 답을 보는게 당연해지고, 포기하는 마음이 들려고 한다. 이러지 않으려고 여기 왔는데, 난이도가 나한테 안 맞다면 나는 어떤 배움의 과정을 가져야 했을까. 어떤 동기는 부족한 개념을 채우기 위해 OS 강의를 보는 선택을 하기도 했다. 후반부가 되자, 나도 남는게 없을 것 같아 해당 파트는 과감히 버리고, 핀토스 수행 과정에서 실제로 궁금했던걸 고민해보았다. 전체적인 흐름을 코드로 두 눈으로 직접 확인해보고 싶었다. 그 덕에 어셈블리어도 팔 수 있었고, linux manual syscall 도 알게되었다. 더 나아가 컨텍스트 스위칭 이란 레지스터 값을 저장했다가 실행 재개 시 복원하는 과정인데, syscall 호출 시 모드간 전환에는 kernel stack에 저장하고 / thread간 스위칭을 위해서는 interrupt tf에 저장함을 사용함을 알 수 있었다. 테스트를 전부 통과하지 못했다는 슬픔은 싹 다 잊혀졌고, 알찬 자료로 밀린 블로깅까지 마무리할 수 있었다. 근데 신기한건 GPT와 함께 분석해서일까? 선배님들 몇 분도 같은 궁금증을 가지고 비슷하게 디깅을 했다는 것이다. (물론 GPT 도움이 있긴 했지만) 단연코 블로그 도움 없이 디깅했음을 내 스스로 알고 있기에 대견하다. 2인조로 핀토스 2주차를 성공리에 마쳐서 기쁘고, 또 한 차례 극복했구나! (벌써 나쁜 기억은 싹 다 잊은 듯.. ㅋㅋ)
 

📅필수 목표

[241001 화] 09:30 - 15 / 21:30 - 1:40 (회식 스킵 후 5시간 자고 옴)
✅ PintOS 1주차 발표 (자신감 만족)
Week07 회고 포스팅 및 draft 비공개 배포
 
[PintOS 2주차 과제 분석]
✅ Kaist youtube 강의 [Command Line Parsing]
- Guide 읽기 
✅ Introduction
-- Argument Passing
-- Appendix memory allocator / page table / virtual address
-- Code 및 테스트 살펴보기
 
[기타]
✅ 국취제 직업선호도 검사 L형, 구직준비도 검사 / 커리큘럼 이메일로 보기
 
[241002 수] 9:10 - 01시
✅ 9시 출근 목표 ❤️
Pintos 2주차 Guide 읽기 
✅  Argument Passing (블로그 참고)
✅ Appendix memory allocator / page table / virtual address
✅ Code 및 테스트 살펴보기
 
[241003 목] 10:30 - 02시
argument passing 마무리
syscall 구현 시작 (halt, exit, exec) / (fork 시도하다 맘)
 
[241004 금] 10-02 (14H)
✅ fork type 이슈 해결 및 if 값 넣는 방법
✅ PR 머지 및 wait 함수 정리
🔼 syscall 리팩토링 (함수 타입에서 막힘) - stash save 해둠 (action dictionary로 관리함)
 
[241005 토] 11 - 21 (종일 배부르게 먹어서 빠른 퇴근)
✅ sys-call fail 테스트 케이스 분석
✅ 요가 및 리츄얼
 
[241006 일] 14 - 01 (여름 옷 정리, 장보기 등 회복 시간)
🔼 Project2 마무리 (process wait, exec, fork) (정답을 봐서라도, 일부 테스트 미통과)
 
[241007 월]  11 - 03 (16H)
개념 추가 공부 
발표 자료 준비
욕심나면 Project2 코드 완성시켜볼까? PR 머지라두 이해라두
 
[시간 남으면]
- semaphore, condition_var 테스트 코드 GPT 에 넣어서, action / semaphore / result 값 변화 어떻게 되는지
- thread_launch 함수 (레지스터에 저장되는 값들) 이해하기 [KAIST 강의] 
https://www.youtube.com/watch?v=mtX-bj1Fu6M
 
 

🔥추가 정리 필요

 

📝메모

Project2: User Program

  • Process를 만듦
    • kernel, user-memory isolation (cmd 포함)
    • user > system call > kernel 접근 : 부지런하게 구현해야함
  • 원래 1.5주 > 1주로 줄었음 참고하기
  • 원래 VM있는데, Project3 VM에서 개선할 예정

 

'💻 프로젝트 > 정글 사관학교' 카테고리의 다른 글

[WEEK10] 핀토스 끝,  (7) 2024.10.21
[WEEK9] 면역력이 떨어져도  (4) 2024.10.15
[WEEK7] CS 꿈틀꿈틀 #핀토스_1주차  (2) 2024.10.01
[WEEK6] RE-START  (1) 2024.09.24
[WEEK5] allocator 재밌다!  (1) 2024.09.13