| Assignment #1 | Best Solution by Ran Cao: click here. |
Basic Unix system calls, fork(), exec() |
| Assignment #2 | Best Solution by David Rosas: source: p0 p1 unnamed output: unnamed named piped |
Named and unnamed pipe system calls |
| Assignment #3 | Solution |
Concurrent algorithms with semaphores |
| Assignment #4 | Solution |
Concurrent algorithms with CR, CCR statements and monitors |
| Assignment #5 | Best Solution by Ian Charnas: Code Output Binary |
Unix System V semaphores and shared memory |
Assignment #6 |
Best Solution by Stuart Morgan: source: client.c server.c MailBox.x output: client1.txt client2.txt binary: Client1.out MailServer.out |
Solaris RPCs--Sequential Mailbox Server with RPCs |
Assignment #7 |
Best Solution by Ben Adams: source: client.c server.c shared.h output: server clienta clientb clientc binary: server.out client.out |
Connection-Oriented (TCP-IP) Sockets Sequential Mailbox Server |
Assignment #8 |
Best Solution by Ken Alverson: source: server.c svc.c client.c clnt.c share.c mail.h output: server client1 client2 client3 binary: server.out client.out |
Connectionless (UDP-IP) Sockets and Posix Threads Concurrent Mailbox Server |
Important notes:
1) All assignments are to be done in C, prefereably, in gcc which is located at /p/gcc-2.8.1/gcc. The binary and the code you submit must run on the department's SOLARIS machines.
2) You should all have web pages in your home directories on the Unix machines. And, you must NOT develop your code in ~/web directory as it is world-readable. Any file that you place in ~/web directory is readable by anybody.
3) You must restrict access to your UNIX directories as they are set up with the default of world-readable. Limit the access to your directories using the chmod command. If your code is copied by someone and submitted, you are responsible from cheating.
Assignment submission Policy:
* On the due date: You will submit your
assignment as a hardcopy in the regular
lecture time. At this time, you should also make the binary code of your assignment available on your web
page. Your grader/recitation leader will run your code, if (s)he wishes. Late assignments
will be accepted for only 5 CWRU days, after the assignment's due date.
* On the 6th CWRU day after the due date of the assignment:
You are to post
the source code of your assignment on your web page. Please note that,
because everybody posts their assignments on the 6th day, late assignments will no longer be
accepted.
Normally, this course has 8 to 10
assignments. With the exception of two, all assignments are, what I call, Unix
system programming assignments. To give you an idea, last year, we had 8
assignments as listed below (check the web page http://nashua.cwru.edu/338.2000/assignments.html):
--UNIX Assignments:
(1) Unix system callls,
(2) Unix
named/unnamed pipe programming,
(5) Unix System V IPC semaphores+shared memory programming,
(6) Solaris RPCs; producer-consumer problem,
(7) Connection Oriented (TCP/IP) Sockets--Sequential Server,
(8) Connectionless (UDP/IP) sockets and Posix Threads--Concurrent Server
--Concurrent Programming Algorithms:
(3) Concurrent algorithms with semaphores and conditional critical
region statements,
(4) Concurrent algorithms with monitors.
EXAM Dates:
Midterm #1:
March 8, Thu
Midterm #2:
April 19, Thu
Final exam:
Will be announced soon.