To the Bottom of the Page
Instructor: Dr. Shieu-Hong Lin
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.
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.
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.
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.
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
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
Homework #6: Writing a shell script using Emacs. Due: Thursday, Nov. 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#
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