CSCI 4630, Spring 2000

Last modified: 5/1/00

The final exam is Monday, May 8 from 2:00-4:00.

Quizzes

  • Quiz 1
  • Quiz 1'
  • Quiz 2
  • Quiz 3
  • Quiz 4
  • Quiz 5
  • Syllabus

    This is a course on the foundations of operating systems. Please see the syllabus for details.

    Assignments

    1. Due Wednesday, Jan 19. Exercises 1.5, 1.10, 2.3, 2.5, 2.9 in the text. Please give clear and concise answers. Turn in at the beginning of class.
    2. Due Wednesday, Jan 26. Exercises 3.5, 3.9, 3.11.
    3. Due Wednesday, Feb 2. Exercises 4.2, 4.4, 4.6 and 4.8. Please give concise answers.
    4. Due Wednesday Feb 16. Exercises 5.2, 5.3, 5.5, 5.8.
    5. Due Wednesday Feb 23. Exercises 6.1, 6.3, 6.7. (Exercise 6.3 will take considerable thought, and the answer will not be short. Try to distill the answer the best that you can, and make it as convincing as you can. You might ask a classmate whether he or she is convinced by your argument.)
    6. Due Monday, Feb. 28. Programming assignment 1.
    7. Due Wednesday, Mar. 1. Homework set 6.
    8. Due Wednesday, Mar. 22. Programming assignment 2.
    9. Due Monday, Apr 10. Programming assignment 3.
    10. Due Wednesday, April 19. Programming assignment 4.

    Summary of material covered

    1. Jan 10. We discussed the syllabus and the history of operating systems. This material is in sections 1.1-1.8 of Silberschatz and Galvin.

    2. Jan 12. We discussed material from sections 2.1-2.6.

    3. Jan 17. We discussed material from Chapter 3. The most important thing is the design of an operating system in layers, with the more basic services being provided at the lower layers.

    4. Jan 24. We discussed material from Chapter 3 on virtual machines, and then began discussing processes. Chapter 4 discusses processes. We introduced the POSIX fork system call, which creates a new process.

    5. Jan 26. We used the fork, execv and wait system calls to make a parent process create a child that runs another program. The parent waited for the child to finish. We also looked at an example where the parent did not wait for the child to finish. The system calls are:

      fork()
      Create a new child process that is nearly identical to the parent. Return the process number of the child process to the parent, and return 0 to the child.

      wait(v)
      Wait until a child process has terminated. Store into memory address v the status value returned by that child, and return from wait the process number of that child.

      execv(cmd,argv)
      Replace the current program by the program in file cmd. argv is an array of strings giving the command line, with argv[0] being the name of the command itself. The last member of argv must be a null pointer.

      We also discussed interprocess communication. Three modes of communication are

      1. Shared memory.
      2. Message passing.
      3. Files and pipes.

    6. Jan. 31. We finished discussing Chapter 4 of the text. We discussed threads. We covered more on methods of communication, including message passing with mailboxes (as in Mach), rendezvous, and remote procedure call (as in Windows NT).

    7. Feb 2. We discussed material on scheduling from Chapter 5, including the role of the scheduler (which determines scheduling policy) and various scheduling policies, including first-come-first-serve, shortest-job-first, shortest-remain-time-first and priority methods.

    8. Feb 7. We had quiz 1. We continued looking at Chapter 5 on scheduling.

    9. Feb 9 We began Chapter 6 on process synchronization.

    10. Feb 14. We had a second attempt at quiz 1. We continued looking at Chapter 6 on process synchronization, and examined solutions to the critical section problem.

    11. Feb 16. We discussed more material from Chapter 6 on process synchronization. We looked at semaphores and implementations of semaphores.

    12. Feb 21. We completed material from Chapter 6. We discussed synchronization mechanisms in programming languages, including critical regions, monitors and synchronized methods in Java.

    13. Feb 23. We discussed deadlock, deadlock detection, avoidance and recovery. This material is in Chapter 7.

    14. Feb 28. We finished deadlock detection and prevention, and began material on memory management from Chapter 8.

    15. Mar 1. We had quiz 2. We discussed memory management, from contiguous allocation strategies to the beginning of virtual memory.

    16. Mar 6. The quizzes were handed back. We began discussing virtual memory, including the page table and the need for the implementation of the page table to be very fast.

    17. Mar 8. We continued with Chapter 8 on the memory.

    18. Mar 13--17. Spring break.

    19. Mar 20. We began Chapter 9, on virtual memory.

    20. Mar 22. We finished Chapter 9.

    21. Mar 27. We began Chapter 10 on the file system.

    22. Mar 29. We had quiz 3 and finished Chapter 10 on the file system.

    23. Apr 3. The quizzes were handed back. We covered Chapter 11, on file system storage. Assignment in Ch. 10, due Apr. 10: 10.5, 10.11, 10.12. Also, answer the following question. Solaris 2 stores the /tmp directory in the same disk partition that is used to store virtual memory. Comment on the advantages and disadvantages of doing that.

    24. Apr 5. This course will not cover the material in Chapter 12. Today, we begin Ch. 13 on managing disks.