Transcript Nachos Project Assignment 2 CPU scheduling
Nachos Project Assignment 2 CPU scheduling
If you still have trouble to install Nachos • https://code.google.com/p/damody/downloads/detail?name=mips decstation.linux-xgcc.gz
Part 1-System call • Implement a system call – Sleep() • userprog/syscall.h
• Define a system call number of Sleep • test/start.s
• Prepare registers for Sleep • userprog/exception.cc
• Add a new case for Sleep
System call:start.s
• • • Assembly language assist to make system calls to the Nachos kernel http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html
Take System call Sleep as an example .
globl Sleep .ent Sleep PrintInt: addiu $2,$0,SC_Sleep // put system call number in register 2 syscall /* all parameter of this system call will be stored in register4, 5, 6, and 7 by MIPS machine automatically. */ .end PrintInt
Part 2-Non-preemptive shortest job first scheduler • Nachos default scheduler: Round Robin • • Shortest job first n+1 • = t n + (1 ) n n time of the nth predicate CPU burst • t n time of the nth actual CPU burst • Design several test case to proof your result • E-mail your code and presentation files(report) to TA
Non-preemptive shortest job first scheduler • thread/alarm.cc, thread/alarm.h
• Implement WaitUntil(int x) to handle sleep(int t) • Add a class to management the threads which are sleeping Begin Running Per timer interrupt: 1.Record actual CPU burst 2.Wake up time up threads Invoke Sleep(x) 1.Set next predicted CPU burst 2.Insert this thread to Sleeping thread lists 3.Invoke thread->Sleep
More details • http://puremonkey2010.blogspot.tw/2013/05/nachos-40-nachos system-call.html