Notice Pintos 프로젝트 프로그래밍 팁

2017.10.05 17:03

조교 조회 수:21708

프로젝트를 진행하는데 있어 도움이 될까 싶어 예전에 올렸던 글을 올려드립니다.


시험기간도 있고 프로젝트의 수행에 어려움을 겪는 학생들이 많은 것 같아. 몇가지 팁을 드리겠습니다.


process.c 에 보시면 process_execute(const char *file_name) 이라는 함수가 있을 것입니다.

완전히 구현된 상태의 핀토스에서는 이 함수가 user program이 끝날때까지 block된 상태로 기다리고 있어야합니다.

이는 process_wait() 함수가 제대로 구현되어야 동작하게 되어있습니다.

하지만 초반부터 wait를 구현하기 어려울 수 있기 때문에 argument passing을 확인하는 과정에서는 process_wait() 함수에 무한루프를 넣어

user program이 완전히 수행되기 전에도 핀토스가 기다리게 만들어야 합니다.

아마 학생들 중 아무런 출력도 보이지 않는 학생들은 대부분 이러한 이유 때문일 것입니다.

이는 임시방편으로 결과값을 출력하고자 하는 것이니 process_wait()를 구현하지 않은 상태에서는 어떠한 test더 pass 할 수 없을 것입니다.

핀토스라는 메인쓰레드가 자신의 자식 쓰레드인 user program이 끝날때까지 기다려야하고 이를 구현하기 위해서는 synchronization 기법이 필요하게 됩니다.


그리고 make를 한뒤 하나의 test 케이스만 수행해보고 싶은 경우.

build 폴더로 들어가서 아래의 명령어를 입력하시면 하나의 테스트 케이스만 수행해 볼 수 있습니다.


pintos -v -k -T 60 --bochs  --filesys-size=2 -p tests/userprog/args-none -a args-none -- -q  -f run args-none


한 번더 요약하면 다음과 같습니다.

1. process.c 파일의 process_wait() 함수내에 while(1); 로 무한루프를 건다.

2. argument passing을 구현한다.

3. printf 혹은 hex_dump를 사용하여 argument passing이 잘 이루어지고 있는지 출력 할 수 있도록 만든다.

4. make를 한다.

5. build 폴더에 들어가 다음 명령어를 입력한다. pintos -v -k -T 60 --bochs  --filesys-size=2 -p tests/userprog/args-none -a args-none -- -q  -f run args-none

( 위의 test 파일은 argument가 없는 test이니 다른 test를 이용하시는 것을 추천합니다)

6. argument passing이 잘 이루어 지고 있는지 확인한다.

7. Ctrl + c 를 눌러서 무한루프를 종료한다.
번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로젝트 기여도에 대한 점수 환산 [1] 박성용교수님 2017.12.26 88462
공지 [공지] 운영체제 기말고사 공지 조교 2017.12.12 76905
공지 [공지] 운영체제 중간고사 공지(10월 30일 수정) 조교 2017.10.16 80083
공지 2017년 2학기 운영체제 강의계획서입니다. 조교 2017.09.04 80901
공지 2017년 2학기 운영체제 게시판입니다. 조교 2017.09.04 80141
103 테스트 갯수 관련 [1] 20121604_안진우 2017.10.14 15329
102 path 설정 [1] file 20121625_이정명 2017.10.02 15336
101 파일 명 제출 관련 질문드립니다. [1] 20131528_김성권 2017.09.28 15357
100 추가 구현 테스트 질문 있습니다. [1] file 20121578_김태훈 2017.10.11 15382
99 project0-1 설치 관련 질문 입니다 [1] file 20151559_성창훈 2017.09.24 15437
98 계정 로그인이 안됩니다. [1] 두비두비두 2017.09.25 15459
97 gdb 질문 [1] file 20151604_전해성 2017.10.15 15459
96 보고서 확장자명 관련 [1] 장종석_20121635 2017.09.27 15473
95 보고서 관련해서... [1] 20131599_전시흠 2017.09.26 15482
94 보고서 확장자 관련 질문 있습니다 20151623_한상구 2017.10.20 15486
93 Argument Passing구조 질문있습니다. [1] file 20151587_이윤아 2017.10.11 15496
92 프로젝트 0-2 테스트케이스 질문 있습니다. [1] 20131526_김상섭 2017.09.24 15521
91 bitmap_mark질문있습니다. [3] file 20101670_이상은 2017.09.27 15556
90 bitmap 테스트케이스 질문입니다 [1] 20141555_이서희 2017.09.27 15573
89 프로젝트 보고서 관련 질문 [1] 20151571_유용혁 2017.10.19 15596
88 조교님 .bashrc 파일을 지워버렸습니다; [1] 두비두비두 2017.09.26 15612
87 프로젝트 0-1 제출관련 질문있습니다. [1] 20131516강민구 2017.09.27 15666
86 새로 구현해야 하는 함수 4가지에 대해 질문이 있습니다. [1] 이환희_20121629 2017.09.26 15668
85 숙제 관련 질문 있습니다. [1] 20131517 2017.09.25 15684
84 강의자료 8장 (Memory Management Strategies) file 박성용교수님 2017.11.13 15733
XE Login