pintos

프로젝트/Pint OS

[Pint OS] 에러: Kernel panic... thread_yield()

발생 Pint OS의 프로젝트 2, argument passing을 실행시켜보았다가 발생했다. formatting file system을 하다가 터진다. Kernel panic in run: PANIC at ../../threads/thread.c:338 in thread_yield(): assertion `!intr_context ()' failed. * backtrace Call stack: 0x800421874b 0x80042072c0 0x800420a92f 0x8004214d12 0x8004209704 0x8004209b22 0x800420762b Translation of call stack: 0x000000800421874b: debug_panic (lib/kernel/debug.c:32) 0..

프로젝트/Pint OS

[Pint OS] Argument Passing

Requirement thread.h에 #define USERPROG 선언 process_exec() 함수 수정 /* Switch the current execution context to the f_name. * Returns -1 on fail. */ int process_exec (void *f_name) { /* ... */ /* for project 2 * todo: implementation argument passing */ int argc = 0; char *argv[64]; char *ret_ptr, *next_ptr; ret_ptr = strtok_r(file_name, " ", &next_ptr); while(ret_ptr) { argv[argc++] = ret_ptr; ret_ptr..

크래프톤 정글 2기

[크래프톤 정글 2기] Day 60

회고 오늘은 핀토스 프로젝트 1의 주간 공유(과제 발표)를 하는 날이다. 발표는 깃헙 레포에 기록한 WIL을 기준으로 진행한다. 그래서 전날 새벽 4시까지 WIL을 열심히 작성했다. 프로젝트 1을 진행하면서 느낌 점, 어려웠던 점, 과제에서 배운 것, 스레드 스케줄링이란, 우선순위 도네이션이란 무엇인지 등을 기록하고 앞에서 준비한 대로 발표한다. 발표는 문제없이 마무리했다. Pint OS 프로젝트 1을 수행하며 Pint OS가 특히 어렵긴 하다. 이전까지의 과제는 그래도 할만했는데, 이번부터는 아예 솔루션 보는 것이 금지되었기에 스스로의 힘 만으로 과제를 해결해야 했다. 특히 동료학습이 중요해졌는데, 서로 틀린 것을 고치고 아는 것을 공유하며 수월하게 공부할 수 있었다. 어려웠던 것은 OS 개념을 이해하..

크래프톤 정글 2기

[크래프톤 정글 2기] Day 58

회고 오늘은 Pint OS의 Project 1의 Priority Scheduling과 Synchronization을 구현했다. 그러나 제일 중요한 부분은 너무 어려워서 결국 솔루션을 봤다. 개념을 알 것 같다가도 코드를 보면 이해를 못해서 몇 번이나 개념을 숙지하려고 노력했다. 특히 어려웠던 것은 운영체제 교재에서 알려주는 락, 컨디션 변수, 세마포어와 핀토스에서 주어진 자료구조가 사용법이 달라서 이걸 이해하는 것이었다. 컨디션 변수의 waiting list의 우선순위 정렬을 하려면 아래와 같은 함수를 써야 한다. 자료구조가 복잡해서 스레드 간 우선순위를 비교하는 것만 해도 이렇게 타고 들어가야 한다는게 어려웠다. bool cmp_sem_priority (const struct list_elem *a, ..

크래프톤 정글 2기

[크래프톤 정글 2기] Day 54

회고 오늘부터 본격적으로 핀토스(Pint OS) 과제를 시작한다. 이번 과제는 주어진 강의자료와 주어진 코드만으로 개발해야 한다. 이전처럼 보고 하는 것은 권장하지 않더라. 핀토스는 스탠포드 대학교에서 개발된 간단한 OS 교육용 프로젝트이다. OS 자체는 구현되어있지만, 성능을 개선시키는 것이 우리의 과제이다. 4주에 걸쳐 진행되며 1주마다 구현해야 하는 파트가 다르다. 1주차는 thread, 2주차는 예외 처리... 한주 한주 과제를 해결하기 위해서는 주어진 강의자료와 CSAPP과 운영체제 교재를 꼼꼼히 읽어야 한다. 핀토스 과제부터는 특히 팀업을 중시한다. 한주 안에 과제를 해결하기 위해 공부할 분야를 정하고 언제부터 코딩을 할지 등을 계획한다. 핀토스의 첫 번째 과제는 thread 성능을 개선시키는..

KimCookieYa
'pintos' 태그의 글 목록