Introduction to Operating Systems
C. Sc. 284
Programming Assignment
Fall 2000
Please refer to "Programming Requirements" on the Syllabus
-
Due Monday, August 28.
-
Using the 'script' command to capture you output
-
Using a2ps to format your output
-
Pass an arbitrary number of args to main. These args specify the
ENV variable to display.
-
Also display the Total number of ENV vars
-
Due Friday, September 1.
-
Main should display a short message, then fork() a process.
-
The original process (P1) and the child process(P2) should use sleep()
to force alternation of execution.
-
P1 should display P2 PID and P2 should display its own PID
-
Due Wednesday, September 6.
-
Create 2 programs, 3a and 3b.
-
Program 3b displays a couple messages, sleep()s, displays additional info
and exits.
-
Program 3a displays a message, fork()s and execl()s 3b, sleep()s, displays
a message and exits.
-
Due Wednesday, September 13
-
Create 2 programs, 4a and 4b
-
Program 4b reads tokens from stdin until EOF; and writes those tokens to
stdout with argv[1] appended
-
Program 4a fork()s 3 child processes (C1, C2, C3) and establishes a pipe()ing
arrangement such that
-
4a's stdin comes from the keyboard and 4a's stdout goes INTO pipe1
-
C1's stdin comes from pipe1 and C1's stdout goes INTO pipe2
-
C2's stdin comes from pipe2 and C2's stdout goes INTO pipe3
-
C3's stdin comes from pipe3 and C3s stdout goes the display
-
Each child process should have a unique argv[1]
-
Due Wednesday, September 20
-
Create a multithreaded application as follows:
-
main()
{
Create 2 non detached threads
pass the 1st one the char[] name THREAD 1
pass the 2nd one the char[] name THREAD 2
for(1 to 10)
++a shared variable
thread yield
thread join
message who you joined with and what they returned
thread join
message of who you joined with and what they returned
}
-
void * THREAD_ROUTINE(void * arg)
{
message containing the value of arg
for(1 to 10)
message containing the value of the shared variable
thread yield
thread exit with an integer
}
-
Due Monday, October 2
-
Write a multithreaded application to simulated the Dining Philosopher problem.
-
There should be at least five philosophers
-
Each philosopher will need to eat three meals
-
No philosopher is allowed to eat meal N until all philosophers have eaten
meal N-1.
-
The main() thread should not exit() until all philosophers have finished
eating
-
Due Wednesday, October 11
-
Write a multithreaded/signal processing application that simulates a diamond
processing facility
-
Each 'agent' may be simulated by either a thread or a process - your choice
-
There should be at least three 'diamond polishing' agents who polish five
diamonds and go home
-
There is a 'manager agent' who is allowed to hold a maximum of ten diamonds
which are distributed one at a time to the polishing agents
-
There is a 'vault agent' who distributes unpolished diamonds to the manager.
-
Communication between the agents must be MT safe.
-
Communication may be done via any combination of process interrupts, condition
signals and pipes.