🤔(핀토스) 회고
한달이라는 긴 호흡, 드디어 끝이 났다. (사실 아직 12H 남았는데, 빨리 끝내버리고 싶어서 회고글을 먼저 써버린다.. ㅎㅎ)핀토스라는 큰 산을 넘은게 기특해서 주차별이 아닌, 한달 회고를 해보려한다. 공부 텐션은 핑퐁을 오갔다. 어느 날은 재밌어서 날도 새가며 공부했지만, 다음날 졸려서 일찍 퇴근한 날도 있었다. 무엇을 공부했더라.
(1주차) 시분할, 우선순위 Scheduling 구현 후 어떻게 여러 개의 프로그램이 동시에 실행될 수 있는지 공부했다.
(2주차) 커맨드 파싱 후 User Program이 실행되고, Context Switching 시 어떻게 interrupt frame 저장 및 레지스터 복원을 하는지, Context 의미를 이해할 수 있었다.
(3주차) 작은 RAM 사이즈로도 큰 프로그램을 어떻게 실행하는지, VM이 제공하는 무한대 저장소라는 환상 (실은 Disk 크기까지지만) 의 의미를 이해하고, 더나아가 Paging을 이용한 Lazy Load 까지 도식화해보았다.
(4주차) read vs mmap 차이를 곱씹어보았다. (아직도 이해 중) swap in/out 연산이 실제 disk 의 sector 영역에서 read/write 되는 것을 코드로 확인해보았다.
피그마로, 도식화
솔직히 후반에는 코드 작성할 감도 오지 않아서 대신 정답코드를 분석하고, 도식화 그리고 팀원들에게 공유라는 결과물을 남겼다. 과거 고등학생때, 생명과학 호르몬 파트를 쉽게 외우기 위해 직접 구강~식도~십이지장까지 그렸던 것처럼 효과는 좋았다. 함수 참조가 깊다보니 코드를 따라가다 무엇으로부터 왔었나 까먹기 일 수 였는데 도구가 대신 기억해주기 때문이다. 목표는 전체 파트 정리하기였는데, 뒷심이 딸려버렸다 (//^-^//)>
같은 개념 과거와 다른 즐거움으로 다가오다.
단순히 줄글만 보는게 아니라, 코드까지 연계해서 보니 HDD 구조도 꽤 재밌었다. head가 정보를 읽어오고, crash가 일어나지 않도록 landing zone이 따로 있고, data는 sector 단위로 disk_read/write 되고, 물론 핀토스가 간략 버전이라 쉽게 읽힐 수 있다. 하지만, 정처기를 공부하던 때와 다르게 호기심이 일었다. 그럼 Partition은? Volumne은? 이제보니 알고있던 혹은 새로 배운 개념이 코드로 어떻게 표현되었는지 찾는 과정이 마치 숨은 그림찾기 같았나 보다.
기본의 중요성
malloc에서 배운 할당, free block 관리 개념이 File System, Paging 등 다양한 곳에서 복습되다니, 새삼 정글이 좋은 커리큘럼이라고 느꼈다. 추상화도 그렇다. Network에서 배운 Layer 개념이 Virtual File System에서도 쓰이고, 캐싱은 보다 빠른 접근을 위한 중간 Layer로 종종 그 개념이 보였다. 이미 익힌 개념들 같은 경우는 가볍게 볼 수 있어서 확실히 학습 속도가 빨라진 것 같고, 이래서 기본이 중요하고 CS지식을 공부해야하구나 싶었다.
read vs mmap 파보길 잘했다.
타 컨텐츠에서 비교를 하곤하지만 핀토스에서 본 코드로 mmap은 단순히 lazy-loading을 가미한 read였다. 조교님께 질문하기 전에 지식을 쌓고자 날을 샜었고, '둘 다 같은 file을 읽기 위한 메소드이고, 메커니즘이 다를 뿐이다' 라는 답변을 들었지만, 와닿지 않닸다. 그리고 동기가 왜 mmap이 큰 사이즈 파일을 더 빠르게 읽는거야? 라는 질문을 남겨 나는 다시 물음표를 남긴 채 Project4로 진입을 했다. 그런데 예상치 못한 곳에서 그 질문에 대한 힌트를 얻을 수 있었다. File System 개념을 쌓기 위해 반효경 교수님 OS 강의를 들으면서 말이다. 두 메소드가 결국 같다는 느낌을 지울 수 없었는데 'memory mapped I/O나 read/write system call을 쓰든 실제로 I/O가 일어나는 과정은 피할 수 없는 단계'라는 멘트가 무슨말인지 확 와닿았기 때문이다. 그리고 자료조사할 때 Kernel Memory를 맵핑한다는게 바로 Buffer Cache를 연결한다는 말이었다. 교수님이 어렵다면서 흘리면서 말씀하신 부분이 무엇인지 공감되니깐 강의가 너무 재밌게 들렸다. 그 외에도 강의를 듣는데 용어와 개념이 술술 들려와서 '헐 어떻게 해!' 를 연달아 외쳤다. ◟( ˘ ³˘)◞
테트리스 중간 지대처럼
위처럼 공부 텐션이 좋았던 순간만 적어서 그렇지 흔들린 기간도 존재한다. 동생이 대전까지 놀러와서 휴식 후 복귀를 안하기도, 안보던 유튜브를 보기도했다. 자칫 정글에 왜 왔더라 초심까지 흔들기도 했다. 하지만, 테트리스 고수들이 말한 것처럼 실수를 만회하면 된다. 왜 이렇지 포기할게 아니라, 다시 재정비하면된다. 그렇게 오늘 다시 출근하면 되고 하루를 살아가면된다. 이제 2달 남짓이다. 새로운 마음으로 그리고 잘 배운 것들을 기억하면서 또 살아가보자. 고생했다 뚜부!
📅필수 목표
[241015 화] 21:30-01:30 (5H, 회식 후 영화 '전란' 시청 후 본공부 시작)
✅ 발표 및 발제
✅ 국취제 3차 상담 (이제 지원금 나온다! ㅎㅎ)
✅ 18/ 회식 (스시안, 맛나게 저녁)
✅ stack growth guide, 구현 스펙 확인
리프레시도 하고, 오늘의 할일도 All Clear! 뿌-듯!
[241016 수] 12:30 (유튜브 보면 안됨, 늦잠잔다..)
✅ 13/ Stack Growth 팀활동 및 코드 구현 시작/끝 (하루내 목표)
✅ stack관련 통과 후 > PR 두개 머지 (계속 Panic 떠서 정답 카피)
✅ figma 정리
❌ userporg all pass 기능 추가 ( Supplemental Page Table - Revisit / 혹은 전처리기 다시 추가)
🔼 bad-ptr은 Project3 수정하면서 발생한 것 같고, 정답 카피떠서 다시 pass
❌ fork, exec는 Guide 말고 어디를 더 추가해야할까?? 결국 포기
[241017 목] 13:30 - 22:40 (오전 휴식)
❌ File Mapped 가이드 분석 (팀활동 같이)
✅ 13/ 팀활동 및 구현 시작
✅ do_munmap 구현
✅ 19/ file mapped 코드 리뷰
[241018 금] 10 - 03:30 (15H 30min)
✅ 10/ 팀활동 (swap in/out guide 이해하기)
✅ 구현 감 못 잡아서, 개인 공부
✅ 14/ 팀활동 (답 코드 분석)
개인공부
❌ File Mapped 피그마 정리
✅ mmap vs read 질문 올리기 (필요한 자료 섭렵 후)
[241019 토] 14:30 - 20:00 (늦잠 후 어수선한 마음에 퇴근)
✅ 반효경 교수 OS 강의: filesys
✅ mmap 질문 마무리
[241020 일] 휴식
[241021 월] 13:40 -18:00 (공부 예열 실패, 마무리)
🔼 Filesys 자료 섭렵하기 > Figma 정리 필요
❌ OSTEP 관련 파트 읽기
✅ 포스팅
🔥추가 정리 필요
[동료 질문]
syscall vs interrupt
iretq, do_iret, sysretq 등 핀토스 코드 다시 이해하기
[PintOS]
- Stack Growth figma QnA
-- arr[1000] > 어셈블리어에서 8bytes씩 순회를하는지 확인하기
📝메모
tmux
Ctrl + b -> shift + " -> 가로로 분할
Ctrl + b -> shift + % -> 세로로 분할
Ctrl + b -> o -> 화면 이동
Ctrl + b -> Ctrl + o -> 화면 회전
Ctrl + b, x -> y 누름 -> 화면 닫기
Ctrl + b, [ -> 스크롤 모드 진입
q -> 스크롤 모드 종료
Ctrl + r, 이전에 사용했던 명령어 검색
history, !숫자 -> 이전에 사용했던 명령어 선택
tmux a -t 0 -> 기존 작업 내용 복구 (git bash, cmd 연동 가능)
'💻 프로젝트 > 정글 사관학교' 카테고리의 다른 글
[WEEK15] 나만무 중간회고 (0) | 2024.11.29 |
---|---|
[WEEK11] 내 방식으로 (0) | 2024.10.29 |
[WEEK9] 면역력이 떨어져도 (4) | 2024.10.15 |
[WEEK8] 100점이 아니어도 괜찮아 (3) | 2024.10.08 |
[WEEK7] CS 꿈틀꿈틀 #핀토스_1주차 (2) | 2024.10.01 |