[목표]
정글에서 제공하는 키워드 공부 / 정리하기(중단)
코드 파일들 전체 번역하기
아침에 유저 커널모드 정리하기, 졸리면 번역 먼저 시작, 안졸리면 키워드 정리
이번주는 퀴즈가 없다. 그러므로 프로젝트에 좀 더 집중을 해야한다. 본래의 키워드를 공부하기 보다 빠르게 코드 작성을 해보고, 모르는 부분만 다시 확인을 해보겠다. 먼저 번역을 진행중이다.
식사 후 휴식을 가졌다. 너무 졸려서 30분 좀 넘게 잠을 잤다. 4시30분쯤 자서...

아까 다 못한 번역을 실시하고 있다. 겸사 겸사 코드의 이해도 진행중이다. process.c의 코드가 많아 해석하고 흐름을 파악하는데 시간이 좀 걸렸다. 이어서 syscall.c 를 주석을 해석하며 코드의 흐름을 파악했습니다.
나머지 파일중에 tss.c 와 gdt.c 는 중요도도 떨어지고 더 알아보고 싶으면 확인해보는 코드들로 이루어져 있다. 그러므로 아래를 참고해 어떤 느낌의 코드인지만 확인하고 따로 주석을 해석하지는 않겠습니다.
→ 저희 조 같은 경우에는 파일마다 담당을 정해 주석을 해석하기로 했습니다. 이후 코어타임때 모두 합쳐 코드를 작성하는데 용이할 수 있도록 병합하도록 하겠습니다.
exception.c 관련된 주석을 해석하며 코드의 흐름을 파악했습니다. 운동을 갔다와야해서 팀원들에서 주요 파일인 process.c에 대한 코드 파일만 카톡을 통해 공유하고, 나중에 돌아와서 깃병합을 진행하도록 하겠습니다.
운동(하체)을 했습니다.
갔다와서 코어타임시 깃허브 병합과 동시에 새 주차에 대한 노션을 정리하는 시간을 가지겠다.
이번 부터 어려워서 gitbook 한국어 버전을 짜집기 해서 한 파일로 만들어야겠다.
식사를 하고 샤워를 하고 복귀했습니다.

코어타임전 풀리퀘스트까지 각자의 코드를 깃허브로 업로딩하기로 했다.
오늘 코어 타임 얘기할 것들은 다음과 같다.
이렇게 진행할 것 같다. 아직 나는 10주차 키워드를 정리할지, 나눠서 할지 결정하지 못했다… git book에 있는 한글 해석은 진행할 것 같다. 진행하는데 편하도록… 노션으로 정리된 페이지는 있어서 짜집기만 할 것 같다.
2시간에 걸쳐서 코드 병합을 완료했다.
해당 과정에서 문제가 많아서 오랜 시간이 걸렸다. 항상 병합할 때마다 예상치 못한 문제가 생기는 것 같다.
make clean을 안했다던가, 기호 하나를 틀렸다던가, 파일이 몇개가 안올려졌다던가… 파일 개수가 더 많아지니 더욱 헷갈리고 생각해야될 것이 많아지는 것 같다.
위의 계획들을 팀 노션에 업데이트 했다.
hex_dump() : 스택에서 어떻게 쌓여있는지 확인가능. 인수 전달이 올바르게 구현되었는지 확인가능.
우리조는 우선적으로 arug 진행 예정이다.
키워드 정리나 개념 정리는 시간도 부족하고, 구현에 집중하기 위해서 어렵거나 보충이 필요한 개념만 다시 공부하는 것으로 하겠습니다.
이제 본격적으로 Argument Passing 에 대해서 구현해보도록하겠습니다.
먼저 Git book을 참고합니다. Kaist의 pintos 강의를 학습합니다.
전개순서
process_exec → load → setup_stack() 순으로 전개된다.
ELF 헤더를 통해 파일을 읽는다. 헤더기준으로 data, bsi 등이 정렬되어 있으므로 헤더를 알면 파싱을 진행할 수 있다. 근데 해당 내용은 load() 함수에 이미 구현되어 있어서 우리가 구현안해도된다. (강의 끝까지 볼걸...)
int N 인스트럭션을 호출시: User Program → Operating system
iret 인스트럭션 호출시: Operating system → User Program
우리는 load를 통해 받은 인자들을 스택에 차례대로 쌓으면 될 것 같다.
string.c에 있는 strtok_r을 통해 args를 파싱하여 스택에 올릴 수 있을 것 같다. 그런데 잘 몰라서 내일 해야될 것 같다.
이렇게 계속해서 알아보려고 시도중이고, 코드를 작성중이다. 내일 계속 구현 시도해보겠다.