opsys-sp24

Operating Systems Spring 2024

View the Project on GitHub

CSE 30341-01 Operating Systems Principles Spring 2024

Overview

An operating system (OS) is a critical layer of software that manages hardware resources and that provides user programs with a simple and consistent interface to the machine. In this course, we will examine the services and abstractions commonly provided by operating systems, and we will study the underlying mechanisms used to implement them. Topics include processes and threads, synchronization, cpu scheduling, deadlocks, memory management, segmentation and paging systems, storage and file systems, distributed systems, and virtualization.

A good understanding of OS internals offers several benefits, whether you intend to work in computer hardware or computer software. First, by understanding how an OS works, you will be able to write better software applications by making efficient use of OS abstractions such as filesystems and memory allocators. Second, the traditional problems that occur in operating systems (like scheduling, synchronization, and resource management) also occur in all sorts of other systems, ranging from small embedded computers to large scale cloud computing systems. The techniques that you learn here will have applications in every kind of computer system.

The concepts presented in class will be explored through a series of six intensive programming assignments. The assignments will make use of the C programming language, which the universal language for implementing and accessing operating systems at the lowest level. The projects will give students ample practice in manipulating pointers, managing memory, invoking system services, and dealing with error conditions. Although we will offer some technical guidance on these matters, students should expect to spend significant time debugging, consulting reference materials, and revising the projects until they work properly.

The goals for each student in this course are:

The course materials will test each student’s achievement of these goals at several levels. For each topic in the course, students must be able to:

Course Communications

The course web page contains the schedule, assignments, and other critical information:

http://dthain.github.io/opsys-sp24

Canvas will be used for distributing grades:

https://canvas.nd.edu/courses/82688

Textbooks

Reading Assignments

The textbook provides the foundation of the course, and it will be important for you to absorb it thoroughly. To encourage regular reading and preparation for class, you will turn in summary notes on the assigned readings via Canvas each Monday by 11:59PM. The easiest way to do this is just take notes on paper, and then snap a few photos for upload. If you prefer to type them out, then attach a PDF instead.

Your notes can be organized in whatever way is appropriate to that chapter and is useful for you. Good things to include may be an outline of the chapter, definition of key terms, a sketch of the systems or data structures being discussed, that sort of thing. Along with your notes, you should submit one thoughtful question you would like to discuss that week. I will try to answer a few highlighted questions each week, and steer the lecture to address them.

Grading on notes will be very simple: either one, one-half, or zero points. There will be fourteen opportunities to earn a total of twelve points, so you may miss two without penalty. The first round of notes are due on Friday, January 19th, and then every Every Monday at 11:59PM thereafter.

Homeworks and Projects

Each week will have either a written homework or a programming project due on Friday at 5:00PM.

Homeworks will typically involve short answers, sketches, and hand computations that follow from the class discussion of that week. These are best done with paper and pencil – take a picture and then upload to Canvas.

Programming projects will be more challenging. Each will explore a specific topic in operating systems, and will generally require that you spend some time researching system calls, troubleshooting problems, taking measurements, and refining your work in order to reach a quality results. Don’t expect to complete these projects in one sitting! It will work best if you can start the project well before the deadline. and then take a break to reflect, ask questions, or come to office hours. The projects increase in scope and difficulty through the semester – expect that the final two projects will take about three weeks of effort each. These will be submitted to a dropbox directory on the student machines.

Attendance

To succeed in this class, you should attend and actively participate in all the scheduled lectures, however, attendance is not taken. You will get the most out of class if you have done the required readings in advance and actively take notes during class. I typically work by diagramming key structures of the OS on the chalkboard, and then work through examples and take questions.

Please refrain from using your laptops for non-class activities, since this tends to distract others as well as yourself. Let’s use this time to work together instead.

The class will not be recorded, so plan accordingly.

Grading

The course grade will be based on six programming projects, four homeworks, a midterm, and a final exam. For each assignment, a numeric grade will be assigned. Grades will be made available in Canvas. The grade breakdown is projects (50%), homeworks (10%), reading notes (10%), midterm (15%) and final exam (15%). At the end of the semester, number grades will be converted to letter grades: 90/80/70 are the usual cutoffs for A/B/C grades, respectively. The instructor will exercise discretion on borderline grades, or to account for a trend of increasing/decreasing grades throughout the semester.

If you believe an error has been made in grading an item, please bring it to the attention of the TA who graded it within seven days of receiving it. (The TA who graded it knows the details best, and so can give you the best explanation.) Factual and clerical errors will of course be cheerfully corrected. If you are unsatisfied with the TA’s explanation, you may appeal to the instructor. After seven days, graded items are final and will not be revisited.

Late assignments are not accepted. Plan accordingly and start work well before each deadline. You may submit partially complete code at multiple points prior to the deadline, so there is no reason not to turn in something for each deadline. If you happen to fall behind and miss a deadline, then let it go and focus your efforts on the next assignment.

Exceptions will be made only for the circumstances given in section 3.1.3 of the undergraduate academic code, such as major illness, death in the family, or participation in an authorized university event. In those cases, the student should confer with the instructor as soon as the conflict is known.

Academic Code of Honor

As a student at Notre Dame, you are bound by the Academic Code of Honor (http://honorcode.nd.edu), which states:

As a member of the Notre Dame community, I acknowledge that it is my responsibility to learn and abide by principles of intellectual honesty and academic integrity, and therefore I will not participate in or tolerate academic dishonesty.

The purpose of the homeworks and assignments in this course is for each student to gain the discipline and skills in design, programming, and analysis, so that they will be able to work independently in a professional setting. To that end, all exams, homeworks, and programming assignments are to be completed individually. Each student must write their own code from scratch with their own hands based on their own understanding of the course material.

You may consult with other students and outside resources in order to better understand concepts and techniques, or to debug localized problems. You may not copy code from another student or resource, excepting any starter code provided by the instructor.

In a similar way, you may not use AI assistants (ChatGPT, Copilot, etc) to generate material for the code or assignments, since this does not serve to develop or demonstrate your own understanding of the material.

Some Campus Resources

If you require an accommodation for a disability, please first contact the Sara Bea Center (sarabeadisabilityservices.nd.edu) for a consultation, and we will be happy to work together on a solution. If you encounter a difficult life situation and don’t know what to do, the University Counseling Center (ucc.nd.edu) or the Care and Wellness Consultants (care.nd.edu) can help and also connect you with other campus resources.