            +----------------------+
            |        OS 211        |
            |  TASK 0: ALARMCLOCK  |
            |    DESIGN DOCUMENT   |
            +----------------------+
            

---- PRELIMINARIES ----

>> If you have any preliminary comments on your submission, or notes for the
>> markers, 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.

                 ALARM CLOCK
                 ===========

---- DATA STRUCTURES ----

>> A1: (2 marks) 
>> 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 roughly 25 words.

---- ALGORITHMS ----

>> A2: (2 marks)
>> Briefly describe what happens in a call to timer_sleep(), including the 
>> actions performed by the timer interrupt handler on each timer tick.

>> A3: (2 marks)
>> What steps are taken to minimize the amount of time spent in the timer 
>> interrupt handler?

---- SYNCHRONIZATION ----

>> A4: (1 mark)
>> How are race conditions avoided when multiple threads call timer_sleep() 
>> simultaneously?

>> A5: (1 mark)
>> How are race conditions avoided when a timer interrupt occurs during a call 
>> to timer_sleep()?

---- RATIONALE ----

>> A6: (2 marks)
>> Why did you choose this design? 
>> In what ways is it superior to another design you considered?
