1 / 12

2004 Nachos Project

2004 Nachos Project. Project #2 : Build a Thread System Due date : 2004. 04.20. Introduction. Nachos 의 code/threads/ directory 에는 아직 불완전한 thread system 이 있습니다 . 이번 project 에는 이 thread routine 을 분석하고 , synchronization 과 scheduling 과 관련한 새로운 function 을 추가함으로써 thread system 을 완성하는 것입니다.

alize
Download Presentation

2004 Nachos Project

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2004 Nachos Project Project #2 : Build a Thread System Due date : 2004. 04.20 Distributed Computing System Laboratory

  2. Introduction • Nachos의 code/threads/ directory에는 아직 불완전한 thread system이 있습니다. • 이번 project 에는 이 thread routine을 분석하고, synchronization과 scheduling과 관련한 새로운 function을 추가함으로써 thread system을 완성하는 것입니다 Distributed Computing System Laboratory

  3. Assignments • Thread관련 루틴 분석 (20) • Alarm::WaitUntil구현 (10) • Thread::Join구현 (10) • Thread Scheduling구현 (60) • Round-Robin Scheduling (20) • Priority Scheduling (30) • Test & Evaluation (10) Distributed Computing System Laboratory

  4. Thread 관련 루틴 분석 threads nachos userprog lib network machine test bin filesys Distributed Computing System Laboratory

  5. Thread 관련 루틴 분석 • Files • Thread, Alarm, Timer, Scheduler, Interrupt, Stats, Semaphore 등 • 그 외의 클래스들도 필요할 경우 간략히 관련 부분만 설명 • Focus • Thread 의 생성에서 소멸까지의 경로 • SWITCH(), StackAllocate() 분석 • sleep에서 interrupt disable을 호출하는 이유 • Alarm, Timer, Interrupt 의 관계 • Semaphore와 Condition variable과의 관계 • Nachos에서 시간의 흐름을 처리하는 방법 • Real world time, Simulated time, kernel time 사이의 관련을 중심 Distributed Computing System Laboratory

  6. Alarm::WaitUntil 구현 • Alarm::WaitUntil(x) • 현재 시간에서 x time 이 경과할 때까지 함수를 호출한 thread를 block함 • x 는 Timer tick 단위로 표시 • x Timer tick 이상이 경과하면 해당 thread는 ready 상태로 전이 • 구현 : block된 thread들의 리스트를 만들고 timer interrupt 발생 시 마다 timer tick이 x 이상 지났는지 검사한다 Distributed Computing System Laboratory

  7. Thread::Join 구현 • Thread::Join() • UNIX 의 wait() 과 유사하게 동작 t1 Constructed & forked by t1 t2 (child of t1) t2가 종료될 때까지 block됨 t2.join() t2 실행 종료 return from join • 이미 종료되었으면 바로 return • t1이 join을 호출하지 않을 수도 있음 Distributed Computing System Laboratory

  8. Thread Scheduling 구현 • Round-Robin Scheduling 구현 • 실행 가능한 thread들은 FIFO 큐에서 대기 • queue의 첫번째 thread가 실행 • Priority Scheduling with preemption구현 • 운영 체제 교재 21장 The Linux System의 Scheduling part 참조 • Understanding Linux Kernel 의 Scheduling part 참조 • Goodness 값이 큰 순서대로 scheduling • Goodness = priority + counter • Priority : static priority (setPriority, getPriority에 의해 변경 가능) • Counter : CPU 사용량 반영, 매 timer interrupt 마다 1 감소 • Counter가 0이 되면 scheduling 수행 • 모든 ready thread의 counter가 0인 경우 모든 thread의 counter 재계산 Distributed Computing System Laboratory

  9. Thread Scheduling Test • 테스트 • 테스트 루틴을 Thread::SelfTest() 에 구현 • Test 방법 • 각 thread는 Computation, I/O가 교대로 수행되는 것으로 modeling • Computation : interrupt disable  interrupt enable 반복 • I/O : Alarm:WaitUntil() 사용 • e.g. <10, 5> thread • Computation-bound, I/O-bound thread 들이 조합된 thread set들에 대해 test • e.g. <20, 0>, <20, 0>, <5, 15>, … • Join 구현을 확인하기 위해 임의의 process가 child를 fork 하고 Join 한다 … computation I/O computation I/O computation I/O 10 tick 5 tick Distributed Computing System Laboratory

  10. Guidelines • 이번 project 부터 결과는 조별로 받습니다. • 결과는 소스코드와 보고서로 나뉩니다. • 구현을 위해 수정한 code는 e-mail을 통해 제출하고, 보고서의 장수는 10장으로 제한합니다. • 수정한 소스의 앞뒤에는 다음과 같은 lines을 추가합니다. #if(n)def CHANGED….#endif • 보고서는 2004년 4월 20일 정오까지 302동 311-2호의 숙제 제출함에 제출합니다. Distributed Computing System Laboratory

  11. Guidelines • 소스 코드는 수정한 file만 제출합니다. • 예를 들어 code/threads/thread.cc와 thread.h 그리고 /userprog/addrspace.cc 를 수정했다면 thread directory와 userprog directory를 만들고 threads directory안에 수정한 thread.cc 와 thread.h , userprog directory안에 addrspace.cc를 넣고 압축을 합니다. • 따라서 숙제 검사시 /code directory에서 압축을 풀면 올바른 위치에 압축이 풀리도록 합니다.압축 파일의 이름은 [조이름]_proj2.tar.gz ( ex : os049_proj2.tar.gz )입니다. • tar czvf os049_proj2.tar.gz * • 이렇게 압축한 파일은 2004년 4월 20일 0:00시까지 os2004@dcslab.snu.ac.kr로 제출합니다. Distributed Computing System Laboratory

  12. 보고서 양식 • 과제의 개요 및 팀 구성원의 작업 분담 내용(구체적으로) • 기존 루틴의 분석 • 자료 구조 분석 • 기능의 요약 및 필드 정의 설명 • 주요 함수의 분석 • arguments, global variable, local variable • 함수의 기능 설명 • 각 구현 루틴에 대해서 • 설계 및 디자인 • 루틴에 대한 설명 • test program • 설명 및 실행 방법 • 수행 결과를 변경/추가 부분과 관련하여 설명 Distributed Computing System Laboratory

More Related