+--------------------+ | OS Development | | PROJECT 0: INTRO | | DESIGN DOCUMENT | +--------------------+ ---- GROUP ---- >> Fill in the names and email addresses of your group members. Peter Ketscher Karoline Koth Manuel Mausz ---- PRELIMINARIES ---- >> If you have any preliminary comments on your submission, notes for the >> TAs, or extra credit, please give them here. >> Please cite any offline or online sources you consulted while >> preparing your submission, other than the Pintos documentation, course >> text, lecture notes, and course staff. TODO ALARM CLOCK =========== ---- DATA STRUCTURES ---- >> A1: Copy here the declaration of each new or changed `struct' or >> `struct' member, global or static variable, `typedef', or >> enumeration. Identify the purpose of each in 25 words or less. struct thread: int64_t alarm_tick ...absolute tick when to trigger an alarm event ---- ALGORITHMS ---- >> A2: Briefly describe what happens in a call to timer_sleep(), >> including the effects of the timer interrupt handler. TODO >> A3: What steps are taken to minimize the amount of time spent in >> the timer interrupt handler? TODO ---- SYNCHRONIZATION ---- >> A4: How are race conditions avoided when multiple threads call >> timer_sleep() simultaneously? TODO >> A5: How are race conditions avoided when a timer interrupt occurs >> during a call to timer_sleep()? We've disabled the interrupts during list operations. ---- RATIONALE ---- >> A6: Why did you choose this design? In what ways is it superior to >> another design you considered? It's very simple, doesn't require any complex structures and memory allocations and fulfills the needs of project0. ARGUMENT PASSING ================ ---- DATA STRUCTURES ---- >> A1: Copy here the declaration of each new or changed `struct' or >> `struct' member, global or static variable, `typedef', or >> enumeration. Identify the purpose of each in 25 words or less. ---- ALGORITHMS ---- >> A2: Briefly describe how you implemented argument parsing. How do >> you arrange for the elements of argv[] to be in the right order? >> How do you avoid overflowing the stack page? ---- RATIONALE ---- >> A3: Why does Pintos implement strtok_r() but not strtok()? strtok() uses global data, so it is unsafe in threaded programs such as kernels. >> A4: In Pintos, the kernel separates commands into a executable name >> and arguments. In Unix-like systems, the shell does this >> separation. Identify at least two advantages of the Unix approach. SURVEY QUESTIONS ================ Answering these questions is optional, but it will help us improve the course in future quarters. Feel free to tell us anything you want--these questions are just to spur your thoughts. You may also choose to respond anonymously in the course evaluations at the end of the quarter. >> In your opinion, was this assignment, or any one of the three problems >> in it, too easy or too hard? Did it take too long or too little time? >> Did you find that working on a particular part of the assignment gave >> you greater insight into some aspect of OS design? >> Is there some particular fact or hint we should give students in >> future quarters to help them solve the problems? Conversely, did you >> find any of our guidance to be misleading? >> Do you have any suggestions for the TAs to more effectively assist >> students, either for future quarters or the remaining projects? >> Any other comments?