일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 핀토스 프로젝트 1
- 핀토스 프로젝트 3
- 마일섬
- 핀토스 프로젝트
- 셋업
- 일지 시작한 지 얼마나 됐다고
- 핀토스 프로젝트 2
- 핀토스 프로젝트 4
- 바빠지나?
- 끝
- 글리치
- botw
- alarm clock
- 글루민
- 내일부터
- Project 1
- 황금 장미
- multi-oom
- 자 이제 시작이야
- 제발흰박
- 아직도 실험 중
- 노가다
- 파란 장미
- 가테
- PINTOS
- Today
- Total
목록핀토스 프로젝트 2 (7)
거북이의 쉼터
오늘 글 참 많이 쓰네 ㅋㅋㅋ 이제 이것만 하면 프로젝트 2도 끝이다. 가기 전에 프로젝트 3 가이드라인까진 작성할 수 있을 것 같다. 매뉴얼에는 살벌한 멘트가 우리를 반겨준다. YOU SHOULD PASS ALL TESTCASES FOR EXTRA TO GET THE CREDIT. TAKE ALL OR NOTHING. 와우... 테케 개수가 몇 개이길래? 두 개네? 심지어 multi-oom까지 쳐도 3개다. 이것만 통과하면 끝이다. 물론 프로젝트 3부터는 이런 얍삽이 방지를 위해 히든 테케가 존재한다고 한다. (모르지 프로젝트 2에도 있을지) 그래서 현재 정해둔 목표는 프로젝트 3까지는 추가 플젝을 해 보고 프로젝트 4는 되도록 손절하는 것이다. 내용도 무시무시하던데 시간이 정말 썩어나면 하는 것으로 ..
1. 서론 및 필요 내용 설명 4번째 포스팅까지 할 줄은 몰랐다. 그것도 디버깅만으로 분량 절반을 채우면서. 이제 multi-oom (out of memory의 약자)를 깨보자. 이름에서 대충 감이 오겠지만 해당 프로그램은 메모리를 쳐먹는 용도로 구성이 된 프로그램이다. 메모리가 부족한 상황을 만들고, 메모리가 한계점에 다다르면 모든 메모리를 커널이 회수했다가 다시 메모리를 소비하는 방식으로 구성이 된다. 코드 레벨에서 좀 더 자세히 살펴보자. main은 다음과 같이 구성되어 있는데, int main (int argc UNUSED, char *argv[] UNUSED) { msg ("begin"); int first_run_depth = make_children (); CHECK (first_run_de..
오늘은 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..