COSC 361 -- Operating Systems -- Fall 2020

Class Time: 10:30 am - 11:20 am MWF
Classroom: 100% Online



Instructor: Micah Beck

TA: Yi Wu


Textbook

Reading Assignments

Date Assignment
8/21 Conway's Game of Life
A Life Simulator
8/26 OSTEP Ch. 2
8/28 OSTEP Ch. 4
8/31 OSTEP Chs. 5 and 6
9/10 OSTEP Ch. 7
9/14 Notes on vfork()
9/16 OSTEP Ch. 7
9/18 OSTEP Ch. 8
9/21 OSTEP Ch. 9
9/23 OSTEP Ch. 13
9/25 OSTEP Chs. 15 and 18
9/28 OSTEP Ch. 20
10/05 OSTEP Ch. 19
10/07 OSTEP Ch. 21
10/14 OSTEP Ch. 22
10/26 OSTEP Ch. 26
10/28 Unix Pipes
Unix Signals
10/30 OSTEP Chs. 27 and 28
11/4 OSTEP Ch. 29
11/9 OSTEP Ch. 30
11/11 OSTEP Ch. 31
11/20 OSTEP Ch. 32
11/23 OSTEP Ch. 39
OSTEP Ch. 40

Homework Assignments & Projects: see Canvas

Annotated Course Syllabus (Under revision!)

  • Processes [2 (code)]
  • Virtualization [4] [5 (code)]
    • What are the reasons for using libraries?
    • What is a protected resource?
    • What is a manager?
    • How is virtualization used to manage resources?
  • Multitasking [6]
    • What is a process? How does it differ from a task or a thread?
    • What are the elements of process context?
    • How is the process/task control block used in operating systems?
    • What are the steps in kernel/user and user/user context switches?
    • How are runnable processes managed, and how is the next to run chosen?
    • How are processes created?
  • Scheduling [7] [8] [9 (code)] [10]
    • What is the CPU-I/O burst cycle?
    • What is the function of a CPU scheduler? When are scheduling decisions made?
    • What are the usual criteria used in making scheduling decisions?
    • What are the criteria used in making preemptive scheduling decisions?
    • What is the ideal or optimal scheduler? Why can't it be implemented?
    • What is the definition and important attributes of these CPU scheduling algorithms: FCFS, SJF, priority, RR and multilevel?
  • Memory [13] (code)] [14]
  • Virtual Memory [15 [16] [17]
    • What are the definitions and uses for swapping, paging and segmentation?
  • Paging [18] [19] [20]
    • Describe a straightforward hardware implementation of paging.
    • What is a Translation Look Aside Buffer, and why is it important in paging?
    • How does a multi-level page table work? A hashed page table? An inverted page page table?
    • How is page management hardware used to support demand paging? copy-on-write?
    • Define and explain one strength and one weakness of random, FIFO, optimal, LRU and LRU approximation page replacement algorithms.
    • Explain one explain one LRU algorithm and the second chance LRU approximation algorithms, and compare their use of resources.
    • What are the causes of thrashing and what can be done to avoid it?
    • Explain three advantages of memory-mapped files.
  • Threads [26 (code)] [27 (code)]
    • What are the major reasons for programming with threads?
    • What is the difference between a thread and a (heavyweight) process?
    • What are the different modes of support that an OS kernel may provide for threads?
    • What are the strengths of preemptive vs. non-preemptive threads?
    • How are threads used in the programming of multicore architectures?
  • Mutual Exclusion [28 (code)] [29]
    • Why is mutual exclusion important in preemptive and parallel systems?
    • What are the requirements for a solution to the critical section problem?
  • Concurrency [30 (code)] [31 (code)] [32]
    • What are Semaphores and Monitors and how are they used for process synchronization?
    • What are Deadlock and Priority Inversion?
    • Explain the Bounded Buffer and Dining Philosophers problems and their solutions.
  • Storage [36] [37]
  • File Systems [39] [40] [41]
    • How is the inode used to implement sequential files?
    • Why does the use of a memory cache raise the possibility of inconsistent file system structures on disk in the case of a system crash?
    • What is read-ahead and why is it central to file system read performance?
    • Why are Unix directories a performance bottleneck while storing large numbers of larges?

    Course Requirements and Grading (Under revision!)

    • There will be a midterm exam and a final exam.
    • There will be programmng projects.
    • Homework will be assigned on a regular basis.

    The final course grade will be calculated as

      10%(H) + 25%(P) + 25%(M) + 40%(F)
    where
    • H = homework grade
    • P = project grade
    • M = MAX(final exam grade, midterm grade)
    • F = final exam grade

    For example, a student who scores 70 on the midterm, 85 on the projects, 84 on the final, and 75 on the homework will have an overall score of

      10%(75) + 25%(85)) + 25%(MAX(84, 70)) + 40%(84) = 83.35

    The intention of this grading scheme is that students have two chances to show their mastery of the material covered in the midterm: on the midterm and on the cummulative final. The 65% of the course grade that is awarded on the basis of exams is available to every student at the time they take the final.

    While it is possible for a student to skip the midterm exam and rely solely on the homework, project and final for their course grade, students are strongly advised against this approach. Here are some reasons for this advice:

    • Taking the midterm exam is a no-risk proposition: it can only improve a student's final course grade.
    • The midterm is more focused, and so it should be easier to study the material covered deeply and get a good grade.
    • There is less presure on students when taking midterms than during the final exam period.
    • Taking the midterm is the best preparation for the final exam.