Information for UCLA CS111, Summer 2017 --- Operating System Principles

This page is organized by the weeks of the quarter in which lectures were given. The weeks are in inverse order, on the assumption you will most often be looking for the most recent week.

This class will be taught by Peter Reiher.

All assigned readings will be made available by web links. The textbook is Operating Systems: Three Easy Pieces, by Remzi Arpaci-Dusseau and Andrea Arpaci-Dusseau. This is an on-line textbook, with links to the various chapters towards the bottom of the page, but the direct links to the assigned chapters will be provided on this page. You will not need to pay anything to use this textbook.

There wll be supplemental readings from Principles of Computer System Design, by Jerome Saltzer and Frans Kaashoek. All readings from this book will be available on-line, but only from UCLA IP addresses. Use the UCLA VLAN to connect into UCLA's network if you need to access them from another place. You do not need to pay for this textbook, either There will also be other web readings, also free.

I will be lecturing on these subjects during the class. Note that this syllabus is a statement of my intentions, NOT a guarantee that particular things will happen on particular dates. If you need to ensure that a vacation or business trip does not conflict with an important part of the class, speak to me. Don't just assume that the syllabus is absolutely correct.

The slides used in the lectures are posted in Powerpoint via links below for the particular week in which the lecture was given. Because some people have trouble with the Powerpoint versions of the slides, I am also posting PDF versions. The PDF versions do not support the animations, however.

Office Hours

My office hours are 1-2 Tuesdays and Thursday. They are held in 3532F Boelter Hall. If you need to see me but can't come to these office hours, send me email. I'm on campus a lot and we can probably work out another time.

TA and Labs

The TA for the course is Diyu Zhou (email address: zhoudiyupku@gmail.com). He will be responsible for all issues related to the lab projects and design problems. Questions on these should be directed to him.

I will make the basic project materials available on this site. Solutions will be handed in via the Summer Session CCLE site.

One note on covered material: some lectures include "hidden slides," which were not lectured on. Material that is found ONLY on these hidden slides (and not, for example, in assigned readings) will not appear on the final exam. The PDF versions of the lectures do not distinguish between regular slides and hidden slides, so if you want to avoid studying this material, look at them in the Powerpoint version.

I have previously sent out information on the Edison kits you need for lab 4. In case you didn't get it earlier, here it is. Sometimes people find that some of the links in this PDF don't seem to work. That's usually because their PDF reader has broken the line. Please check that you are trying to follow the entire link before complaining to me that it doesn't work.

Final Exam

The final exam for CS 111 will be held during the final regular class session on Thursday August 31. It is an open book, open notes exam. It will cover all material in assigned readings and lectures through the entire class, including material covered on the midterm. Material only presented in exercises, but not in lectures or readings, will not appear on the test. The test will contain 3 questions covering topics covered in class. These questions will require you to demonstrate depth of understanding of concepts in the class and the ability to apply those concepts to new problems in computer systems. Unlike the midterm, I expect answers to be extensive. You cannot provide adequate answers in two or three sentences.

Here is a sample final to give you a sense of what your test will be like. Here are example answers. Unlike the midterm, the questions on the final will not have cut-and-dried answers that are either correct or incorrect, but will require thinking. There are different approaches to the questions and you can get good scores on the test even if your answers are not the same as these example answers, provided they show understanding, insight, and creative use of concepts in the class.

Week 10 (August 27 - September 2)

Project 4C is due on Monday September 4. The project description is here, along with a check script. There is also information about the server to use and a certificate for the server.

Lecture 16: Distributed Systems

Slides:

Lecture 16.

Lecture 16, PDF version.

Assigned readings:

Arpaci-Dusseau Chapter 47

Distributed Systems: Goals and Challenges Distributed Systems Security

RESTful interfaces

Leases

Week 9 (August 20 - August 26)

Project 3B is due on Monday August 28. The project description is here, along with a check shell program for testing. Files used in Project 3A will also be used here.

Lecture 15: Operating System Security

Slides:

Lecture 15.

Lecture 15, PDF version.

Assigned readings:

Introduction to operating system security

Authentication for operating systems

Access Control

Cryptography

Lecture 16: Distributed Systems

Slides:

Lecture 16.

Lecture 16, PDF version.

Assigned readings:

Distributed Systems: Goals and Challenges

Arpaci-Dusseau Chapter 47

REST-ful interfaces

Leases

Distributed Consensus

Distributed Systems Security

Week 8 (August 13 - August 19)

Project 3A is due on Monday August 21. The project description is here, along with a trivial file system image for testing and the output you should produce for the trivial file system image. The test image that you are to work with is also here.

Lecture 13: File Systems

Slides:

Lecture 13.

Lecture 13, PDF version.

Assigned readings:

Arpaci-Dusseau, Chapter 39.

Arpaci-Dusseau, Chapter 40.

File types

Object storage (only history and architecture sections of page

Key-value stores (only Introduction and types sections of page)

FUSE (only Introduction, history, and uses sections of page)

The FAT file system

Lecture 14: File Systems: Naming, Performance, and Reliability

Slides:

Lecture 14.

Lecture 14, PDF version.

Assigned readings:

Arpaci-Dusseau, Chapter 41.

Arpaci-Dusseau, Chapter 42.

Arpaci-Dusseau, Chapter 43.

Arpaci-Dusseau, Chapter 44.

Arpaci-Dusseau, Chapter 45.

Arpaci-Dusseau, Appendix I.6-10.

Week 7 (August 6 - August 12)

Project 4B is due on Friday August 11. The project description is here, along with a checking script.

Lecture 11: Performance Measurement and Analysis

Slides:

Lecture 11.

Lecture 11, PDF version.

Assigned readings:

Measuring Operating System Performance

Load and Stress Testing

Lecture 12: Devices, Device Drivers, and I/O

Slides:

Lecture 12.

Lecture 12, PDF version.

Assigned readings:

Arpaci-Dusseau, Chapter 33-33.6.

Arpaci-Dusseau, Chapter 35.

Device Drivers Classes and Services

Arpaci-Dusseau, Chapter 36.

Arpaci-Dusseau, Chapter 37.

Arpaci-Dusseau, Chapter 38.

Dynamically Loadable Drivers

Week 6 (July 30 - August 5)

Midterm exam on Tuesday, August 1

Lecture 10: Deadlocks - Problems and Solutions

Slides:

Lecture 10.

Lecture 10, PDF version.

Assigned readings:

Arpaci-Dusseau, Chapter 32.

Deadlock avoidance

Health Monitoring

Java synchronization

Java intrinsic locks

Monitors

Week 5 (July 23 - July 29)

Lecture 9: Semaphores and Locks for Synchronization

Slides:

Lecture 9.

Lecture 9, PDF version.

Assigned readings:

Arpaci-Dusseau, Chapter 29.

Arpaci-Dusseau, Chapter 30, section 30.2 on.

Arpaci-Dusseau, Chapter 31.

flock(2)

lockf(3)

Lecture 8: Mutual Exclusion and Asynchronous Completion

Slides

Lecture 8.

Lecture 8, PDF version.

Assigned readings:

Arpaci-Dusseau, Chapter 28

Arpaci-Dusseau, Chapter 30, through section 30.1

Week 4 (July 16 - July 22)

Project 2A is due on Friday July 22. The project description is here, along with several files used in the project.

Tuesday, July 18 - Lecture 6: Memory Management - Swapping, Paging, and Virtual Memory

Slides

Lecture 6.

Lecture 6, PDF version.

Assigned readings:

Arpaci-Dusseau, Chapter 18

Arpaci-Dusseau, Chapter 19

Arpaci-Dusseau, Chapter 21

Arpaci-Dusseau, Chapter 22

Working-set replacement

Thursday, July 20 - Lecture 7: Threads, IPC, and Synchronization

Slides

Lecture 7.

Lecture 7, PDF version.

Assigned readings:

Arpaci-Dusseau, Chapter 17. This chapter should have been assigned with Lecture 5. The material in the chapter will not appear on the lecture 7 quiz, but may appear on the midterm and final exams.

Introduction to IPC

Named pipes. This is a web page with multiple links off it. You are to read the parts labeled 6.3.1 through 6.3.5.

send(2)

recv(2)

mmap(2)

Arpaci-Dusseau, Chapter 25

Arpaci-Dusseau, Chapter 26

Arpaci-Dusseau, Chapter 27

User-mode Threads

Week 3 (July 9 - July 15)

There will be no lecture meetings this week on Tuesday and Thursday, since I am out of town. I will post taped versions of the lectures on the CCLE site. The slides and readings are below.

Project 1B is due on Friday July 15. The project description is here, along with several files used in the project.

Tuesday, July 11 - Lecture 4: Scheduling

Slides

Lecture 4.

Lecture 4, PDF version.

Assigned readings:

Arpaci-Dusseau, Chapter 7

Arpaci-Dusseau, Chapter 8

Real time scheduling

Thursday, July 13 - Lecture 5: Memory Management

Slides:

Lecture 5.

Lecture 5, PDF version.

Assigned readings:

Arpaci-Dusseau, Chapter 12

Arpaci-Dusseau, Chapter 13

Arpaci-Dusseau, Chapter 14

Arpaci-Dusseau, Chapter 17

Garbage collection

Week 2 (July 2 - July 8)

Project 1A is due on Friday July 7. Here is the project description for project 1A. This project teaches you how to work with terminal I/O and how to perform interprocess communications. You should turn your answers in on the class CCLE page for week 2.

Tuesday is July 4, the Independence Day holiday, so there is no class, assigned readings, or slides for that day.

Thursday, July 6 - Lecture 3: Processes, Execution, and State

Assigned readings:

Linking and Libraries

Linkage Conventions

Arpaci-Dusseau, Chapter 3

Arpaci-Dusseau, Chapter 4

Arpaci-Dusseau, Chapter 5

Arpaci-Dusseau, Chapter 6

Linux man page on kill(2)

Linux man page on signal(2)

Slides:

Lecture 3.

Lecture 3, PDF version.

Week 1 (June 25 - July 1)

Project 0 is due on Friday June 30. Here is the project description for project 0. This project is intended to allow you to gauge if you have the skills required to complete the other projects in CS 111 with ordinary effort. If you do not find project 0 easy, or if you do not get a very high score on this project, you should rethink whether you are ready to take CS 111.

Tuesday, June 27 - Lecture 1: Introduction to CS 111

Assigned readings:

Arpaci-Dusseau, Chapter 1

Arpaci-Dusseau, Chapter 2

OS Principles

Slides

Introduction to the class.

Introduction to the class, PDF version.

Thursday, June 29 - Lecture 2: Operating System Principles: Services, Resources, and Interfaces

Assigned readings:

Interface stability

Software Interfaces

Slides:

Lecture 2.

Lecture 2, PDF version.