Computer Operating Systems: Internals and Design Principles

CS 345 Course Syllabus, Spring 2023

 

Instructor: Paul Roper
Office: 3370 TMCB, 422-8149
Hours: By Appointment

Email: proper@cs.byu.edu

Section 001

10:00-11:50 am MWF

B092 JKB

 

 

CS 345 is an introduction to the principles underlying the design and the implementation of contemporary computer operating systems.

·        CS 224, 240, and a knowledge of C are prerequisites for CS 345 (or the instructor’s consent).

·        The text for the course is “Operating Systems Internals and Design Principles (7th Edition or later)” by William Stallings.  This book will be used extensively throughout the course including homework assignments.

·        All class materials are available on the CS 345 Web Site (http://students.cs.byu.edu/~cs345ta/).  This includes the class syllabus, schedule, PowerPoint lectures, homework, programming assignments, messages, and other reference material.  All homework, labs, and exam scores will be recorded in BYU Learning Suite Grades.   It is the responsibility of each to student to verify that all grades have been correctly recorded.

·        Each student will individually implement a preemptive, prioritized operating system with virtual memory and file management capabilities.

 

Learning Outcomes

 

The objective of this course is to study the principles of concurrency and resource management with respect to the design and implementation of contemporary computer operating systems.  CS 345 is designed for students majoring in Computer Science or in areas having a strong emphasis in Computer Science.  At the end of the course, the student will have…

·        Demonstrated a basic understanding of design and implementation issues of an operating system by implementing a cooperative OS.

·        Discussed, analyzed, and implemented many of the concepts of process, multithreading, symmetric multiprocessing, and microkernels.

·        Implemented memory management techniques, including virtual memory.

·        Programmed various approaches to process scheduling.

·        Programmed an OS management of files.

 

Course Activities

 

Class Lectures

 

PowerPoint lectures and class discussions will be presented in person as outlined on the course schedule.  There will be times when information is given in class that is not in the text nor on the class website.  It is very important that students attend (on-line) class and take careful notes.  You will be held responsible for this information.

 

Computer Programming Assignments

 

CS 345 programming assignments consist of six labs that build upon each other and are designed to emphasize topics and objectives discussed in class.

·        Lab 1: Shell.  Write a Shell (Command Language Interpreter) to parse textual commands entered from the user’s keyboard, malloc argument variables, handle signals, and execute programs directly or as child processes.

·        Lab 2: Scheduler.  Write a five-state task scheduler capable of executing up to 128 tasks in a preemptive, prioritized, round-robin manner.  Implement binary and counting semaphores and schedule your shell as its first task with pseudo-interrupt driven character input.  Add timer semaphores and tasks to validate your implementation.

·        Lab 3: Jurassic Park.  Jurassic Park is an inter-process communication and synchronization problem between multiple tasks.  Visitors to the park purchase a ticket, wait to take a ride on a park tour car to see the dinosaurs, and then visit the museum and gift shops before leaving the park.  Since the park is on a limited budget, drivers must perform double duty when not sleeping by selling tickets and driving the tour cars.  Visitors, drivers, and cars are represented by concurrent tasks while an additional task is used to display the park status every second.

·        Lab 4: Virtual Memory.  Add a Memory Management Unit to your OS that translates virtual addresses to physical addresses in a restricted memory space such that 16 LC-3 crawler and/or memory test programs execute concurrently in 2 frames of physical memory (128 words).

·        Lab 5: FSS Scheduling.  Add a Fair Share Scheduler (FFS) to your OS scheduler to maximize overall CPU utilization while also maximizing interactive performance.  Instead of using run queues, implement a “fair” timeline of future task execution.

·        Lab 6: FAT.  Add a MS-DOS® FAT-12 file manager to your OS that is able to traverse file directories, view file data, and load/execute LC-3 programs from files.  In addition, use system buffering, file descriptors, and file pointers to modify file allocation tables (FAT), directory structures and cluster chains.

 

Please pay careful attention to the following programming guidelines:

 

·        Programming assignments can be found under "Projects" on the on the CS 345 Website (http://students.cs.byu.edu/~cs345ta/).

·        Programming assignments must be completed and passed off with a “Date Modified” timestamp dated on or before the due date to receive full credit.  Timestamps cannot be used for extra credit points and no older than one week.

·        Any programming assignment completed and passed off after the due date will lose 10% per school day, with a maximum of 50% off late penalty.

·        Programming assignments will be passed off on-line with personal laptops and Zoom with the course TA and web submitted at the end of the term.

·        As an incentive to get your programming assignments completed early and to motivate you to thoroughly check your work, assignments completed and passed off during the current semester and at least one day before the due date (timestamps do not count) with a TA will receive 10% extra credit.

·        All six programming assignments must be completed (functional) to receive an ‘A’ grade.

·        All programming assignments and homework MUST BE COMPLETED, PASSED OFF AND SUBMITTED on or before the final day of class.

 

Programming Environments

 

The choice of the software tools and programming environment is left up to the student’s discretion.  The C programming language will be used for the programming assignments.

 

Homework / Reading Quizzes

 

Homework and reading quizzes are designed to reinforce class material, help in exam preparation, and to encourage students to stay current with reading assignments.  In-class participation is strongly correlated with a student’s understanding of the subject matter. Students may be randomly selected to present their homework solutions to the class. 

·        Homework assignments can be found under "Homework" on the CS345 Website.

·        Homework will be submitted on Learning Suite.

·        Any homework submitted after the due date will lose 50%.

You are welcome and encouraged to discuss the homework with your classmates and others.  However, you are to do and submit your own work.  Submitting someone's work is considered cheating for which you will receive an E grade for the class and be reported to the Honor Code Office.  No grade is worth the consequences of dishonesty!

               

Class Presentations

 

At the end of the semester, each student (in a small group setting) is given the opportunity to present a specific OS topic with respect to an assigned contemporary operating system.  Your presentation will be peer graded and should be complete (ie., self-contained, concise, relevant, adequately addressed topic), insightful (ie., researched, thoughtful, shows effort), and presented well (ie., materials, slides, handouts, examples, stage presence, well organized, intro/summary).  Your presentation/peer reviews along with your source code submission will be the final exam for the course.

 

Exams

 

Two midterms will be administered during the term via Learning Suite per the course schedule.  The course final is your presentation and submission of source code. Post your OS zipped C source code to Learning Suite on or before BYU finals begin.

 

Grades

 

Your grade will be based on programming assignments (55%), homework (10%), exams (20%), and final (presentation / source code) (15%) as follows:

·        Programming assignments (55%)

o  Lab 1: Shell - 7%

o  Lab 2: Tasking - 10%

o  Lab 3: Jurassic Park - 10%

o  Lab 4: Virtual Memory - 10%

o  Lab 5: Scheduling - 6%

o  Lab 6: FAT - 12%

§  FAT 1 – 4%

§  FAT 2 – 8%

·        Homework / Quizzes - 10%

·        Midterm 1 - 10%

·        Midterm 2 - 10%

·        Final (presentation / source code) - 15%

 

Grades are assigned on the following absolute scale from the composite total of above areas:

 

100-93

A

82-80

B-

69-67

D+

92-90

A-

79-77

C+

66-63

D

89-87

B+

76-73

C

62-60

D-

86-83

B

72-70

C-

59-0

E

 

Note:   1)   To receive an A grade for the course, a student must complete all six programming assignments.

2)   Any student who completes all six programming assignments (passes all lab requirements irrespective of late and bonus points) and passes the final exam (10 points or better), will receive at least a passing grade (C-).

 

The university policies on 'UW' and 'I' grades will strictly be followed.

 

Grading Verification and Appeal Policy

 

It is the student’s responsibility to verify that lab, homework, and exam scores have been correctly recorded in Gradebook before the last day of class.

Academic Honesty

 

 

The Honor Code includes a statement of standards regarding academic honesty.  Academic honesty includes completing your own homework, programming assignments, midterms, and final.  Students should work together to help each other understand material but should always turn in their own work.  Examples of academic dishonesty include sharing code for assignments with other students, turning in someone else’s code as your own, sharing exam material with other students, and cheating on an exam.  Any violation of academic honesty standards will result in failing the class.  All violations of academic honesty are documented and reported to the Honor Code office.

 

Posting, downloading, or viewing any classwork on a public repository such as GitHub is considered cheating. This policy applies even after this class ends – grades can be changed at any time!

Preventing Sexual Harassment and Discrimination

 

Title IX of the Education Amendments of 1972 prohibits sex discrimination against any participant in an educational program or activity that receives federal funds.  The act is intended to eliminate sex discrimination in education.  Title IX covers discrimination in programs, admissions, activities, and student-to-student sexual harassment.  The BYU policy against sexual harassment extends not only to employees of the university but to students as well.  If you encounter unlawful sexual harassment or gender based discrimination, please talk to your professor; contact the Equal Employment Office at 378-5895 or 367-5689 (24-hours); or contact the Honor Code Office at 378-2847.

Students with Disabilities

 

Brigham Young University is committed to providing a working and learning atmosphere which reasonably accommodates qualified persons with disabilities.  If you have any disability which may impair your ability to complete this course successfully, please contact the Services for Students with Disabilities Office (378-2767).  Reasonable academic accommodations are reviewed for all students who have qualified documented disabilities.  Services are coordinated with the student and instructor by the SSD Office.  If you need assistance or if you feel you have been unlawfully discriminated against on the basis of disability, you may seek resolution through established grievance policy and procedures.  You should contact the Equal Employment Office at 378-5895, D-282 ASB.

Disclaimer

 

This syllabus is subject to change during the semester in favor of the student as deemed necessary by the instructor.  It is the student’s responsibility to stay current with class policies and check the class website, Learning Suite, and their email often during the week.

Incomplete Grade

 

A grade of incomplete will be given only if you have serious (usually medical) problems that prevent you from completing the course, can produce documentation, and are passing the course with most of it complete. Should you get a grade of incomplete, together with the instructor, you will agree on a plan to complete the course in a reasonable period of time. The scores that you acquired up until the event which prevents you from completing the course will be included in the computation of your grade. Never will an incomplete be given to avoid a bad grade!  NO EXCEPTIONS!.