일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- botw
- 자 이제 시작이야
- 핀토스 프로젝트 4
- 마일섬
- 황금 장미
- PINTOS
- 제발흰박
- 핀토스 프로젝트 2
- 바빠지나?
- 가테
- 셋업
- 내일부터
- 일지 시작한 지 얼마나 됐다고
- 핀토스 프로젝트 1
- multi-oom
- 노가다
- alarm clock
- 핀토스 프로젝트
- 핀토스 프로젝트 3
- 글리치
- 아직도 실험 중
- 끝
- 글루민
- 파란 장미
- Project 1
- Today
- Total
목록전체 글 (128)
거북이의 쉼터
보호되어 있는 글입니다.

오늘은 fork의 구현에 사용될 process_fork의 세부적인 동작을 코드 단위로 뜯어보면서 어디를 고쳐야 할지를 살펴보자. /* Clones the current process as `name`. Returns the new process's thread id, or * TID_ERROR if the thread cannot be created. */ tid_t process_fork (const char *name, struct intr_frame *if_ UNUSED) { /* Clone current thread to new thread.*/ return thread_create (name, PRI_DEFAULT, __do_fork, thread_current ()); } 우선 시작인 proc..
가이드를 쓰는데 좀 오래걸렸다. 읽어봐야 할 부분이 한 두 개가 아니라.... 드디어 오고야 말았다. 가장 귀찮았던 부분... syscall을 하나하나 구현하면 된다. syscall 요청이 들어올 경우, syscall.c에 있는 syscall_handler가 호출되면서 필요한 syscall을 실행시키는 것이 주요 과정이다. 어떤 syscall을 호출할지는 호출 시 rax 레지스터에 무슨 값이 들어있는지를 판단하여 호출하며, 해당 syscall을 호출할 때 필요한 인자 또한 비슷한 방식으로 레지스터에서 넘겨받는다. 이것이 x86이랑 비교했을 때 크게 달라지는 부분이다. x86의 경우 argument가 stack에 들어가 있는 상태였으며, esp에 대해서 상대 주소를 참조해서 가져오는 방식이었다. 그러나 x..
보호되어 있는 글입니다.