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