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)
|