Operating System Lab Project 1 Autumn 2011
Overview Goal: 더 다양한 기능을 하는 thread system을 구현 참고 자료 Alarm clock (5 points) Priority scheduling (20 points) Multilevel feedback queue scheduler (MLFQS) (10 points) 참고 자료 “Project1.docx, Project1_MLFQS.doc” in e-class: Project 1의 요구사항 및 MLFQS 설명에 대한 한글 번역 문서 Section 2, A.2, A.3, B in Pintos project homepage: 위의 문서를 포함한 project 1 전체 내용 및 thread system (A.2), synchronization (A.3), MLFQS (B) 설명
Alarm clock Goal: devices/timer.c의 timer_sleep()을 수정 기능: current thread를 n tick동안 정지시킨다. 현재 구현: n tick이 지날 때 까지 thread_yield()를 계속 호출, while문을 반복하는 형태이므로 해당 시간까지 다른 thread 를 처리하지 않고 기다리는 효과를 가진다. (busy waiting) 새로운 구현에서는 현재 schedule되어 있는 다른 thread들 이 바로 실행이 되야 한다.
Priority scheduling Goal: priority scheduling을 구현 기능: 각 thread가 서로 다른 priority를 가지는 경우 이를 반 영하여 thread들을 scheduling한다. 실행되는 thread가 대기 중인 나머지 모든 thread들보다 priority가 항상 크거나 같도록 설계한다. Priority inversion, priority donation의 개념을 이해하고 (design report에 반드시 포함), priority donation이 올바로 동 작하도록 구현해야 한다.
Multilevel feedback queue scheduler Goal: multilevel feedback queue scheduler (MLFQS) 구현 각 thread들의 최근 CPU 사용빈도 등을 고려하여 priority가 자동으로 갱신되는 MLFQS를 구현한다. 매 4 tick마다 priority가 자동으로 갱신되야 하면 자세한 계 산공식은 “Project1_MLFQS.doc”를 참조한다. 실행옵션에 “-mlfqs”를 추가함으로써 MLFQS를 이용한 scheduling이 가능하게 된다. thread.c 내에서는 thread_mlfqs 라는 boolean 변수를 통해 어떤 방식인지를 판단할 수 있다.
Design report should include How to achieve each requirement 현재 구현상태 및 앞으로의 구현 방향 자세한 data structure 및 algorithm 제시 Analysis of the current thread system Structure, functions (thread_init(), …), how to switch threads thread.h, thread.c, 및 Pintos homepage의 section A.2 참고 Analysis of synchronization Semaphore, lock의 의미 및 pintos에서의 구현 synch.h, synch.c, 및 Pintos homepage의 section A.3 참고
Announcement (1) Team name 팀원1 팀원2 funkybrothers 민재슬 이다열 team team1 강형석 엄해광 team6 박종수 곽우석 team10 이재환 남현섭 failist 이재원 박영도 lol 박제현 김해준 teamname 김종민 이재연 abc qwerty 정성원 최준환 Team name 팀원1 팀원2 GLaDOS romi 홍새롬 임희은 alkaba 차영록 손영빈 asdf 김준성 정일채 thgud1624 zxcv
Announcement (2) Design presentation for project 1 Demo Time: 15:30 ~ 17:20, 9/22 (시간 확인) Team: Demo Time: 15:30 ~ 17:20, 9/30 Place: SunLab 보고서 및 코드 제출 (e-class 이용) Design report: ~ 23:59, 9/23 Final report & source codes: ~ 23:59, 9/30