Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

CS343 - Operating Systems

Fall 2022

A Short Plea

This is still a challenging time to take or design a course.  I’m going to try to be flexible in   what I expect from you.  I hope you’ ll grant me a degree of flexibility as well! That is to say, the following syllabus may change as the semester progresses as we see what works and what doesn’t. The goal is to help you learn, not to overwhelm you!

Schedule and Location Information

Class meetings are in Clapp 206 from 3:15 to 4:30 on Monday and Wednesday, and 3:15 to 4:05 on Friday. Class will likely not meet on all Fridays; be sure to check Moodle.

Course Overview

The computer’s operating system is some of the lowest-level software running on your        computer. It coordinates the use of the computer's resources (such as its CPU, memory and I/O devices), and it offers other useful services to applications.  It also provides isolation     which helps to protect users from other (potentially malicious) users, and to protect             software from other (potentially buggy) software.  In this course, we study a variety of          techniques used in operating systems to perform these services, focusing on the sharing    (and isolating) of two of the computer’s most important resources: CPU and memory.

This course is programming intensive.

Learning Objectives

An operating system underlies almost everything you’ ll ever do on a computer.  Even if you  never intend to do operating system work”, understanding operating systems can help you understand issues like why a program is running slowly (and possibly how to speed it up)   and whether a program is secure (and possibly how to make it moreso).  In this course, you should start to develop such an understanding. We will also investigate common problems that occur when software gets more sophisticated and is doing multiple things at once --    concurrency problems. Along the way, you will sharpen your skills with the C programming language and some of its related tools, as well as with Unix-like operating systems (such    skills dovetail nicely with the subject matter and are so powerful and common that they are a worthy addition to any computer scientist’s or programmer’s toolbox). To spell it out in    bullet form, you will work to:

●   Understand common OS abstractions (e.g., processes, threads, virtual memory) and their underlying mechanisms

●   Understand issues of concurrency (e.g., race conditions and deadlock) and some of the tools for resolving them

●   Strengthen familiarity with the C programming language

●   Strengthen familiarity with Unix-like operating systems (especially Linux)

●   Become an expert on a particular aspect of operating systems of your own choosing (via the project)

Class Format

●   The class will meet in person on Monday and Wednesday and some Fridays (be sure to check Moodle!)

●   Lectures will not be recorded, but slides will be made available.  You may want to take notes anyway.

●   Associated with many meetings is a reading. You can do it either before the associated lecture or before the next lecture.

●   We may spend some class time in small group activities.  For this to work well, it is important that you come to class prepared (which is to say: please be up to date on the reading!).

●   Rather than exams, you will have several quizzes. They will generally be announced at least a week ahead of time.

●   There will be non-programming homework assignments as well as several               programming assignments, plus a big nal project. The former are concentrated     toward the beginning of the semester so that you can focus on the latter toward the end of the semester.

High-level Schedule

Here is a guess at the timeline for topics we’ll be covering (please note that this is subject to change):

●   Weeks 1 and 2:

Intro, getting started with Linux and C

   Weeks 3, 4, and 5:

Intro to memory management in C; OS basics

   Weeks 6, 7, and 8:

Managing the CPU

●   Weeks 9, and 10:

Managing memory

●   Weeks 11, 12, 13:

Memory paging mechanisms and policies

●   Weeks 14 and 15:

Concurrency; project presentations

As mentioned, there are readings associated with many lectures, which you should do before the following lecture at the latest. They’ ll all be linked to or downloadable from Moodle. The primary text is:

Operating Systems: Three Easy Pieces by Arpaci-Dusseau and Arpaci-Dusseau.

This book is available online in its entirety at: http://pages.cs.wisc.edu/~remzi/OSTEP/

We will be focusing on the rst two of the three pieces mentioned in the title (and the book actually has more like three and a half or four!).

The authors provide many exercises and demonstrations to help you learn the material, and we will use a number of these in class. You can dig into others on your own!

Grading

Note: This information is subject to change; it represents a best guess.

Your grade will be based on the sum of the points you earn in three main categories:

●   Study of core OS concepts: 40 points

○   Take-Home Quizzes (25 points max)

  Worksheets and reections (15 points max)

●   Hands-on learning / skill development: 40 points

  Programming assignments (35 points max)

   Homeworks (5 points max)

●   Self-directed investigation (the project): 20 points

○   See Projectsection; more details to follow later in the semester.

In the first two categories, there may be more points available than actually count toward   your grade.  For example, I may offer 35 total points of quiz questions. Since you only need 25 to max out the subcategory, it's possible that you could, for example, skip some quizzes and still get a "perfect" final score. The extra points are not transferable between                categories/subcategories (e.g., getting all the programming assignment points doesn’t      mean you can skip a homework assignment!).

For some assignments (particularly programming assignments), I will likely allow you to     make revisions to improve your grade -- as long as there was a legitimate attempt to do the assignment in the rst place.

The Project

The readings and lectures cover some of the most essential aspects of operating systems, but there is far more to learn than can be covered in a single course.  Rather than just try to cram in as much as possible with little depth, you will spend a considerable amount of time in the second half of the semester working on an OS-related project of your own choosing. This project is meant to be quite exible so that you can explore something that seems      interesting to you in a way that is meaningful to you.

The project will have several components; the biggest of them are a progress report, a  presentation, and the nal product. These and the other components will be discussed further around the middle of the semester.