Operating Systems

CSCI 311, Fall semester, 2006

To the Bottom of the Page


Instructor:        Dr. Shieu-Hong Lin

Email: shieu-hong.lin@bubbs.biola.edu

Class: Tuesday & Thursday 3:00-4:15 pm at LIBR L141

Office Hours: Monday & Wednsday 3:00-5:00 pm, Math & CS department




For each reading assignment, email your reading report to Dr. Lin. See the reading report form: as a word document or a web page.

Week 1: Introduction to Concurrency

Reading and lab report due: Aug 31.

Reading #1: This slide set on the mutual-exclusion problem (the critical section problem) and the overview Sections 1.1~1.3 of the MINIX book

Lab #1: (i) Follow the guidance here to use the VMWARE player to run MINIX pre-installed on a VMWARE virtual machine. (ii) Follow appendix A to install and rebuild MINIX on a spare computer in alcove 2 or on your own spare machine. (iii) Use the easypack command to fetch and install at least the X Windows package X11R6.8.2  (also see the full list of packages) into your MINIX installation on the spare machine. (iv) Browse and play with some of the MINIX commands and read about POSIX consistency of MINIX.


Homework #1 on Concurrency and BACI (Implementing a software solution to the mutual exclusion problem using Petersonís algorithm) Due Thursday Sept. 7

Read about concurrent programming and simulation using the BACI environment.

Download BACIís DOS executables (or LINUX executables) and BACI C-- User Guide.

Use BACI to compile and run the concurrent BACI program add.cm. (Use the commands: bacc add.cm and bainterp add respectively under the DOS command line window.)

Explain why the program does not always give the right sum when you run the program for several times. What is wrong?

Revise add.cm according to the discussion of slide set on the mutual-exclusion problem of reading #3. You should still have at least two concurrent threads running within the cobegin statement in the main function, but use Petersonís algorithm so that the concurrent program can always correctly calculate the sum in the end. Run it multiple times to make sure your program works fine.

Send your answers and the source code to me.


Week 2: Basics of processes and more on concurrency

Reading and lab report due: Thursday, Sept. 7.

Reading #2: (i) Two slide sets: 1 and 2 on synchronization and the use of semaphores and (ii) Sections 1.4~2.1 of the MINIX book on system calls and OS structures.

Lab #2: Try out the basic Unix commands in this public UNIX tutorial on your MINIX to get familiar with the basics of Unix commands.


Homework #2 on Concurrency and BACI (Implementing a software solution to the bounded buffer problem using semaphores) Due: Thursday Sept. 14: Compete the code in ProCon.cm according to the solution to the bounded-buffer producer-consumer problem in slide set 2 on synchronization. You should have one consumer to check the 100 integers deposited in the shared buffer by the producers and at least four producers all running concurrently. (You may choose to have more.) Run it multiple times under the BACI environment to make sure the multiple producers and consumers in your program always work fine to collectively output all the odd numbers less than 100 is acceptable. Send your source code to me.


Week 3: More on concurrent processes and inter-process communication

Reading and lab report due: Thursday, Sept. 14.

Reading #3: (i) This slide set on processes and (ii) Sections 2.2~2.5 of the MINIX book on processes.

Lab 3: Basic operations under a UNIX environment.


Week 4: Basics of I/O

Reading due: Thursday, Sept. 21.

Reading #4: Sections 3.1, 3.2 and 3.4 of the MINIX book on the basics of I/O in operating systems.


Homework #3: Basics of the FAT file system. due: Thursday, Sept. 21.


Exam #1 on processes and concurrency: Solutions (Open-book test) Thursday, Sept. 21.


Week 5: A Closer Look at MINIX Ė I (Implementation of Processes)

Reading #5: Section 2.6 of the MINIX book on the overview of the implementation of processes in MINIX. Reading due: Thursday, Sept. 28.

In-class presentation 1 ( 20~25 minutes/each group on Tuesday Oct. 3):

       2.6.1~2.6.4: Matthew, Jenny, Kenneth

       2.6.5~2.6.8: Chris, Hee-Chun, Irene

       2.6.9~2.6.12: Mamoru, Nate, Aaron


Homework #4: Concurrent Readers and Writers Due: Thursday, Oct. 4.


Weeks 6~7: Basics of Memory Management and More about MINIX - II

Reading #6: Section 2.7, 2.8, and 4.7.1~4.7.3 of the MINIX book on the system task, the clock task, and memory layout in MINIX. Reading due: Thursday, Oct.

In-class presentation 2 (20~25 minutes/each group on Thursday Oct. 12):

       2.7: Matthew, Jenny, Kenneth

       2.8: Chris, Hee-Chun, Irene

       4.7.1~4.7.3: Mamoru, Nate, Aaron

Reading #7: Sections 4.1~4.6 of the MINIX book on memory management 1 2. Reading due: Thursday, Oct. 19.


Lab 4: Introduction to shelling programming (For more details, you can find online shell programming tutorials like the one by Mendel Cooper.)


Weeks 8~9: MINIX Study Project Part 1; Torrey Conference + Faith-and-Learning Reflection


Homework #5:Study proposal on the code of MINIX Process Management. Due: Thursday, Oct. 26


Faith-and-Learning reflection paper (Reflection on operating systems and issues related to resurrection): See the assignment here, write a short reflection paper accordingly, and email me your paper.  Due Date: Thursday, Oct. 26


Exam #2 on memory management: (Open-book test) Tuesday, Oct. 31


Week 10: More on the MINIX process manager

Reading #8: 4.7.4~4.7.8 and Section 4.8 of the MINIX book on the implementation of process manager in MINIX.

In-class presentation 3 (20~25 minutes/each group on Thursday, Nov.2)

       4.7.4~4.7.8: Mamoru, Nate, Aaron

       4.8.1~4.8.4: Chris, Hee-Chun, Irene

       4.8.5~4.8.8:: Matthew, Jenny, Kenneth

Reading report due: Thursday, Nov.2


Lab 5: Introduction to concurrent programming in Java. For more details, you can look at this tutorial from Sum Micosystems or look into Java textbooks such as chapter 23 of Big Java.


Homework #6: Writing a shell script using Emacs. Due: Thursday, Nov. 2



Week 11: Basics of File systems 1 2

Reading #9: Reading due: Thursday, Nov. 9.

Sections 5.3~5.5 of the MINIX book on the implementation of file systems and the security and protection mechanism.

Homework #7: Concurrent programming using Java. Based on your understanding of Java concurrent programming in Lab#5, Implement a Java version of Homework #2 Due: Thursday, Nov. 16.


Weeks 12~13: More on the MINIX file system; Thanksgiving recess

Reading #10: Read Sections 5.6 and 5.7 of the MINIX book on the implementation of the MINIX file system

In-class presentation 4 (25 minutes or more /each group starting Nov.14~Nov.21

       5.6.1~5.6.3 and 5.7.1~5.7.3: Matthew, Jenny, Kenneth

       5.6.4~5.6.6 and 5.7.4~5.7.6: Mamoru, Nate, Aaron

       5.6.7~5.6.10 and 5.7.7~5.7.10: Chris, Hee-Chun, Irene

Reading report due: Thursday, Nov. 16


Homework #8:Study proposal on the code of MINIX file system. Due: Tuesday, Nov. 28.


Weeks 14~15: Final MINIX presentation. Introduction to (i) distributed operating systems and (ii) concurrent programming in C#

Reading #11: Read the basics of distributed operating systems and Wikipedia articles on Sunís Network File System and Virtual file systems Due: Dec. 14

In-class presentation 5: Final MINIX presentation of your MINIX study project, Dec. 5~7.

       Order of presentation: Matthew, Jenny, Kenneth, Mamoru, Nate, Aaron, Chris, Hee-Chun

       20~25 minutes each person briefing on the selected subjects, the extent of your understanding at this point, and your study plan.


Exam #3 on MINIX (Open-book test): Tuesday, Dec. 12. 3:30-5:30 p.m.


Final MINIX study report: Thursday, Due Dec. 21.


To the Top of the Page