For each reading assignment, email your reading report to Dr. Lin. See the reading report form: as a word document or a web page.
Reading and lab report due: Aug 31.
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.
Read about concurrent programming and simulation using the BACI environment.
Download BACI’s DOS executables (or LINUX executables) and BACI C-- User Guide.
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.
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.
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.
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.
Reading #5: Section 2.6 of the MINIX book on the overview of the implementation of processes in MINIX. Reading due: Thursday, Sept. 28.
Homework #4: Concurrent Readers and Writers Due: Thursday, Oct. 4.
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.
Reading #7: Sections 4.1~4.6 of the MINIX book on memory management 1 2. Reading due: Thursday, Oct. 19.
Reading #8: 4.7.4~4.7.8 and Section 4.8 of the MINIX book on the implementation of process manager in MINIX.
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.
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.
For more details on Java concurrent programming, you can look at this tutorial from Sum Micosystems or look into Java textbooks such as chapter 23 of Big Java.
Homework #8: Study proposal on the code of MINIX file system. Due: Tuesday, Nov. 28.
In-class presentation 5: Final MINIX presentation of your MINIX study project, Dec. 5~7.
· 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.
Provide an estimate of the total amount of time spent on the study.
Based on the overview information in he MINIX book and the part of source code you have studied, describe your understanding of the source code and header files, the main data structures used there.
Describe how the key operating system features in process management, memory management, the file system are implemented.
Comment on new things you have learned through this study: list some questions that you had before about the subject, and describe new understandings gained through the study.
Comment on future study raise some questions about things that are still not clear to you, and list some topics that you would like to have further study in the future to clarify your understanding.