> operating\ systems_

due: Tuesday, September 4
Lab 1: Introductions

due: Wednesday, September 5
Corbato, Daggett, and Daley; "An Experimental Time-sharing System"

Summarize the Corbato et al. article and answer the following questions:

  • What is time sharing? Why is it important? Are the motivations still relevant in modern systems? Are there additional motivations to time sharing in modern systems?
  • What interface do users have to the IBM 7090? Does the interface affect time sharing differently than modern interfaces?
  • What are some technical problems in performing time sharing?
  • How are these problems addressed by Corbato et al?
  • Describe the job-scheduling algorithm implemented. Why is it not simply round-robin?

due: Thursday, September 6
Lab 2: malloc, Data Structures, etc

due: Friday, September 7
Lab 3: I/O

due: Monday, September 10
Implement a Shell

due: Thursday, September 13

Use pthreads to complete the producers-consumers project described in Chapter 6, pages 236-41 of your text. Email Jonathan your documented source, instructions how to run and compile your program, how to test it, and sample output.
Scoring expectations

due: Friday, September 14
Draves, Bershad, Rashid, Dean; "Using Continuations to Implement Thread Management and Communication in Operating Systems"

Summarize the Draves et al. article and answer the following questions:

  • What is a continuation?
  • In what senses are continuations better than traditional procedure calls?
  • What overhead does implementing a continuation involve?
  • How do the authors measure the benefits of continuation use?

due: Tuesday, September 18
Implement Malloc

Class Projects

Choose a topic for a class project. Scroll down the bottom of the page for topic suggestions. You may work alone, or with one other classmate to complete a class project. There are three elements to a class project:
  • Implementation: Submit documented source code, instructions for use and compilation, and testing output.
  • Research Paper: Submit a paper discussing the background for your topic and present the current state of research in the topic. You must use outside sources to support your paper. Request texts early from the library, as you will likely rely on resources from Prospector or inter-library loan. Portal, the ACM's digital library is a great on-line source for technical papers. Plan on writing 8 single-spaced pages. You may submit a rough draft the 21st.
  • Presentation:Present your findings or demonstrate your implementation. Schedule a time either the 24th or 25th to practice your presentation with Jonathan. Plan ahead to reserve audio/visual/computer resources.
To earn an A, a project must incorporate all three; two for a B; and one for a C, however, if only one aspect is chosen, it cannot be the presentation. All work is to be completed by the beginning of the last class. Presentations and demonstrations will be delivered during the last day of class.

You must decide on a project topic by Monday, September 17. Only one group may work on a project topic and topics are available on a first-come first-served basis.

Topic Ideas

Grid Computing:

Grid computing harnesses the power of many computers and presents their combined resources as a single-system image to the programmer. There are several directions that a final project might take. Present a tutorial on how to install and use an existing grid-computing platform (Condor is a good start). Write a paper describing security, naming, or resource allocation used by grid systems. Implement a toy version of a grid-computing system, such as resource location.

Memory Management:

Extend your own versions of malloc and free to experiment on the effectiveness of different heap allocation rules. Your project should measure performance of policies for allocating free space and thoroughly test allocation and deallocation procedures. As an additional direction, you could implement garbage collection.

File Systems as Database:

Modern operating systems and computing environments provide increasingly sophisticated methods to search file contents. Some developers believe that the file system can be treated as a database and provide ways to search files for content. For example, the latest version of OSX can search text, as well as PDF, for content. Google distributes the Google Desktop to provide similar search capabilities for a personal computer's local storage as Google provides for the Web.

Implement a library to open and search files. Start by designing an programmer's interface to your library. What functionality should you provide to the user? You may write your database from scratch, or use an existing database platform such as MySQL.

Mobile Operating Systems:

Mobile phones and personal digital assistants (PDA) run operating systems, too. Some examples are PalmSource's Palm OS, Microsoft's Pocket PC, ans Symbian's Symbian OS. Even Linux runs on cell phones, PDAs, and MP3 players.

Topic Ideas:

  • Write a paper comparing different mobile operating systems. What features to these OSs offer that differ from traditional operating systems? Compare and contrast several mobile OSs.
  • Implement a virtual PDA. Your virtual machine should demonstrate how a mobile operating system provides system services, such as security, file-system access and search, networking, and synchronization with other computers to applications.
  • Install a new operating system onto a mobile device.
  • Write a set of utilities for a mobile device to aid security, synchronization, or some system-level functionality.
Note: you must supply your own hardware to complete the previous two projects.

Object Repository

Write an object repository where programs may leave objects to be copied and acted upon by other programs running on other machines. Your project might duplicate many of the same functions as Java RMI. Use your framework to asynchronously pass messages and synchronize programs. Provide security for object access as well as a resource-allocation policy to ensure that storage is not abused.

Peer to Peer:

Peer-to-peer network search and retrieval applications leverage many concepts from operating system design, such as fault tolerance, synchronization, security and authentication, resource allocation.

Topic Ideas:

  • Implement your own peer-to-peer search and retrieval system.
  • Implement a scalable, secure peer-to-peer application on top of an existing framework, such as JXTA.
  • Coordinate your project with the database project.

  • Remote Execution

    Write a set of programs to allow a user to securely execute programs on one computer from another. Your framework should verify a user's identity prior to running a script and the server program should not rely on being run as the same user id as the client.

    Security

    The geeks on slashdot constantly discuss (argue?) over what makes an operating system secure, or which operating system is the most secure. Write a survey of security on modern operating systems. How does one measure security? Can you propose additional measures or tests of security? Can you design structures to improve security on some system?

    Single-image Distributed Operating Systems

    A single-image distributed operating system transparently couples many resources across the network to construct the appearance that the user accesses a more powerful computer than otherwise available. Examples are Plan 9, Beowulf, and Condor.

    Topic Ideas:

    • Implement a library to provide some services for a single-image OS, such as process migration or file storage.
    • Write a research paper describing the state of the art of single-image distributed operating systems.

    > ls /usr/bin (assignments)
    > ls /etc (miscellaneous)
    > cal (schedule)
    > ls / (syllabus)
    > cat thoughts | mail $PROFESSOR (mail)