CSCI 4630
Summer 2001

Last modified: 6/17/01

Announcements

Practice questions for quiz 5 are available.

Syllabus

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


Office hours

M-Th 1:15-2:00. I will stay a little later if there is demand.

Links

Buggy system programs can be serious problems, not just to the correct functioning of an operating system, but also to security. By exploiting bugs, people can break into computers and get levels of privilege that allow them to get secret information or do damage. One kind of program that exploits a computer network is a worm. It transfers copies of itself to as many computers as it can. Some recent worms affect Linux systems. Mark Ahlstrom has pointed out a link that discusses a worm for Linux that is designed to come in behind those worms and patch the bugs that they exploit, as well as clean out the worm. See http://linuxtoday.com/news_story.php3?ltsn=2001-05-17-002-20-SC.

You can find out information about viruses and worms that affect PCs and Linux systems as well from http://www.sarc.com. The "friendly" worm for Linux is also described there, in somewhat less friendly terms. It is worth reading about some of the level 4 viruses/worms, and what they do. It takes a strong stomach, though. Look at the Win32 Magistr virus for an example of what some people will do.


Examples


How to use Unix and how to write programs

I use these links for CSCI 3510. You should meet or exceed the standards of that course.


Assignments

  1. Homework assignment 1
  2. Programming assignment 1
  3. Homework assignment 2
  4. Homework assignment 3
  5. Programming assignment 2
  6. Homework assignment 4
  7. Programming assignment 3
  8. Homework assignment 5
  9. Homework assignment 6


Quizzes

  • 10.11
  • 10.17
  • 10.20

    Quizzes and practice quizzes will be posted here as they become available.


    Checking your grade

    If you have obtained a password then you can check your grades as I have them recorded. You can obtain a password from me. To obtain one by email, send me email indicating the password that you want. Choose a string of 4 or 5 letters/digits.


    Summary of material covered

    Very brief lecture summaries will be posted here. Do not expect them to be substitutes for coming to class.
    1. [5/15/01] We went over the role of an operating system (OS) and covered a brief history of OSs, including a survey of OS characteristics and features. This material is in chapters 1 and 2 of the text.

    2. [5/16/01] We looked at the structure of an OS, and began talking about processes. This is in chapters 3 and 4 of the text. (We will slow down quite bit when we hit chapter 4.)

    3. [5/17/01] We covered basic material on processes. We looked at process creation in Unix using fork and exec, and began looking at interprocess communication. See example program 1 and example program 2.

    4. [5/18/01] We continued looking at processes and threads. We have now covered through chapter 5 of the text.

    5. [5/21/01] Quiz 1. We covered more material on threads from Chapter 5, plus how to use POSIX threads. The functions that we looked at include pthread_create, pthread_join, pthread_attr_init and pthread_attr_set_scope. You can get detailed information on these from their man pages on the Unix machines.

    6. [5/22/01] We covered material in Chapter 6 on scheduling of processes and threads. Read chapter 6.

    7. [5/23/01] We began Chapter 7 on synchronization. We introduced the critical section problem and looked at solution of it for two threads using a shared memory and busy-waiting.

    8. [5/24/01] We continued to look at synchronization, including hardware primitives, semaphores and condition variables.

    9. [5/25/01] We looked more at synchronization, including monitors and synchronization in Java. We looked at wait-free synchronization and saw how to implement a wait-free shared counter. We saw two classical syncnronization problems, the readers-writers problem and the dining philosophers problem.

    10. [5/28/01] Quiz 2. We looked at chapter 8 on deadlock, and began looking at chapter 9 on memory management.

    11. [5/29/01] We looked at paged memory.

    12. [5/30/01] We began to look at virtual memory. This material is in Chapter 10 of the text.

    13. [5/31/01] We looked at page replacement algorithms and allocation of page frames to processes. This is also in Chapter 10.

    14. [6/1/01] We finished virtual memory and began to look at the file system.

    15. [6/4/01] Quiz 3. We continued looking at the file system, Chapter 11. We looked at methods of allocating files.

    16. [6/5/01] We discussed more on the file system, including free space management and directory structure.

    17. [6/6/01] We covered Chapter 13 on disk management, and began looking at distributed systems (Chapter 14). We began looking at characteristics of local area networks.

    18. [6/7/01] We covered more material on networking, including TCP/IP and using TCP sockets.

    19. [6/8/01] We finished material on networking.

    20. [6/11/01] Quiz 4. We discussed distributed algorithms and distributed coordination, including algorithms discussed in chapter 16 of the text and the agreement and coordinated attack problems.

    21. [6/12/01] We finished distributed coordination and discussed distributed file systems. This is in chapter 17 of the text.

    22. [6/13/01] We discussed protection issues, mainly concerning protecting access to files and directories.