COSC 423 Operating Systems
Last modified: "January 8, 2022 09:38:24 by evett"
This page is maintained for archival purposes. Up to date materials are now accessed via Canvas
Look for any symbols below!
Lecture Notes
- Event-driven programming and callback methods
in Java. This includes modifications of some of the code we looked at
in class.
- The Coffee and Tea code (multi-threading)
- Unsynchronized
and the synchronized
bank examples. These illustrate the use of synchronization in Java.
- Animation in Java.
- Chapter 1 of textbook
- Chapter 2, What's an OS?
- Chapter 3, Components of an OS
- Chapter 4, Processes
- Chapter 6, CPU scheduling
- Chapter 7, Process Coordination
- Code example demonstrating
the dangers of Synchronization
- Chapter 8, Deadlocks
- Chapter 9, Memory Management
- Chapter 10, Virtual Memory
- Source code from Silberschatz textbook. (You
should download this to your PC and decompress it there. Here is the decompressed code, for your viewing
pleasure!
Assignments
To submit assignments, go to webct2.emich.edu. From there, go to our course's page. Click on the "Assignments" tab in the left-hand column.
Notes on assignments, in general
See the page on Stylistic Suggestions for
programming assignments, here.
Programming and other assignments should be completed
by each student on their own. It is expressly forbidden for students to
collaborate on assignments without the express permission of the
instructor. A few friendly pointers and a bit of advice is fine, but
"borrowing" or copying another's work is grounds for punitive action,
including a failing grade and possible expulsion from the University.
Grading of programming assignments
As specified in the course syllabus, program functional correctness
accounts for only about 80% of the grade assigned to a program. The
remainder of the grade accounts for the program's style (including header
and in-line comments, indentation, identifier names) and design (how you
decompose the solution, what classes you use, etc.) A fuller description
of stylistic and design requirements is here.
Feel free to make use of the web caucus for this class to discuss problems
you are having with assignments, etc. To use the webcaucus, you must have a
working EMU e-mail account (you can get one for free at the library, if you
don't already have one). The URL is webcaucus.emich.edu. Once there, you want
to register for the cosc423_F06 caucus.
While students may certainly use their own PCs to develop and test their
programming assignments, the final version of the programs must be
executable under JDK1.5, on a PC running Windows XP. We will examine how to ensure
this during the course.
All programming projects shall be written in Java, using only the
libraries explicitly permitted by the instructor.
Java
To obtain JDK, go to Sun's site.
You want to download the latest release of the JDK. If you are using a Mac, you
may have to download an earlier release of the JDK. Follow the installation directions!
(You may have to set your DOS PATH variable.)
If you haven't set up a Java IDE, I suggest using Eclipse.
If you are more comfortable working in a text-based environment, you can use
your favorite editor and work with the JDK directly.
With Java installed, you may want to download the SDK documentation, too.
Okay, now let's look at some code. Download the code examples from Horstman and
Cornell's book, Core Java. This is a zip file, which you should
decompress. Now, cd into v1ch2/Welcome, and use BlueJ to open Welcome.java.
From within TextPad, use Tools:Compile Java to compile the file (forming
Welcome.class), then run it using Tools:Run Java Application.
Core Java source code
If you want to get really serious about understanding designing programs with
Java, you might check out Josh Bloch's book, Effective Java. You can
read about some of his ideas in this
interview.
For a history of BSD Unix, see this
interesting article.