Information for UCLA CS111, Spring 2015 --- 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. The textbook is Principles of Computer System Design, by Jerome Saltzer and Frans Kaashoek. Assigned readings are from this book, unless otherwise indicated. Some chapters of this textbook are not in the hard copy version, but are only available on-line. For these readings, I will provide a URL.

I will be lecturing on these subjects during the class.

The slides used in the lectures are available via links below for the particular week in which the lecture was given. Slides are available in both Powerpoint and PDF form. For slides that used animation, the PDF versions may be hard to deal with.

TA and Labs

The TAs for the course are:

Tuan Le --

Mohammad Mehdi --

They will be responsible for all issues related to the lab projects and design problems. Questions on these should be directed to them.

Final Exam

The final exam will be held at the scheduled period (Friday June 12, 8-11 AM) in the usual lecture hall, Boelter 3400.

The final exam will be substantially harder than the midterm. The questions on the final exam will require you to do more than remember and recite the definitions of terms or simply repeat basic procedures we discussed in class. They will involve application of knowledge from the class to new problems we have not explicitly discussed, either in the readings or in class.

There will be seven questions on the test, but you will only be required to answer any four of them, of your own choosing. The material covered by the final exam will span the entire ten weeks of the class. The test will cover both the lectures and the readings. The test will be open book, open notes, but you are not allowed to consult Internet resources other than the online book chapters.

Here is a set of sample final exam questions, taken from past final exams given for this class. Suitable answers are included.

Week 10 (May 29 - June 4)

Lecture 17: Operating System Security

Assigned readings:

Chapter 11, Overview and section 11.1, pages 11-4 to 11-28.

These readings are part of the online textbook and can be found here.


Lecture 17.

Lecture 17, PDF version.

Lecture 11: Security for Operating Systems: Cryptography, Authentication, and Protecting OS Resources

Assigned readings:

Chapter 11, section 11.2, pages 11-28 to 11-36.

Chapter 11, section 11.4, pages 11-49 to 11-54.

Chapter 11, section 11.6, pages 11-72 to 11-80.

These readings are part of the online textbook and can be found here.


Lecture 18.

Lecture 18, PDF version.

Week 9 (May 22 - May 28)

Lecture 15: Networking for Operating Systems

Assigned readings:

Chapter 7, section 7.1, pages 7-1 through 7-20. Here is a link to the PDF online version of Chapter 7.

Fallacies of Distributed Computing Explained, Amon Rotem-Gai-Oz.

Chapter 9, section 9.6.3. Here is a link to the PDF online version of Chapter 9.


Lecture 15.

Lecture 15, PDF version.

Lecture 16: Distributed Systems

Assigned readings:

Chapter 4, section 4.5, pages 184-195.

What Cloud Computing Really Means, Eric Knorr, Galen Gruman, Infoworld.


Lecture 16.

Lecture 16, PDF version.

Week 8 (May 15 - May 21)

Because I've fallen one full lecture behind, I am only assigning one lecture and set of readings for this week.

Lecture 14: File Systems: Naming and Performance

Assigned readings:

Chapter 2, section 2.5. (pages 91-112)

Chapter 8, Sections 8.1.1 (pages 8-3 to 8-6), 8.2.1 (pages 8-8 to 8-13), and 8.5.4 (pages 8-40 to 8-51). Here is a link to the PDF online version of Chapter 8. This chapter discusses reliability issues, a subject I will not have time to cover in class, so I recommend you read this material carefully.


Lecture 14.

Lecture 14, PDF version.

Week 7 (May 8 - May 14)

Lecture 12: Devices and Device Drivers

Assigned readings:

An Introduction to Device Drivers," Chapter 1 of "Linux Device Drivers," by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman, published by O'Reilly, 2005..

Understanding Modern Device Drivers, Asim Kadaf and Michael M. Swift, Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems. 2012.


Lecture 12.

Lecture 12, PDF version.

Lecture 13: File Systems

Assigned readings:

Chapter 6, section 6.1 (pages 300-321), section 6.3.4 (pages 360-362)


Lecture 13.

Lecture 13, PDF version.

Week 6 (May 1 - May 7)

Lecture 10: Memory Management

Assigned readings:

Chapter 6, Sections 6.2-6.2.1 (pages 321-323).

Dynamic Storage Allocation: A Survey and Critical Review, by Paul Wilson, Mark Johnstone, Michael Neely, and David Boles. This is a very long paper. You are only required to read the following sections of it:

Sections 1.1-1.3 and section 2-21 (pages 6-13) and sections 3.3 and 3.4 (pages 42-45).


Lecture 10.

Lecture 10 in PDF.

Lecture 11: Virtual Memory and Paging


Lecture 11.

Lecture 11 in PDF.

Assigned readings:

Chapter 5, Section 5.4 (pages 242-255).

Chapter 6, section 6.2.2-6.2.9 (pages 323-347).

Week 5 (April 24 - April 30)

The midterm will be on Thursday, April 30, so there is only one lecture for this week.

Lecture 9: Synchronization and Deadlock

Assigned readings:

Chapter 5, Section 5.2.5 (pages 221-222), Chapter 5, Section 5.6 (pages 273-284)


Lecture 9.

Week 4 (April 17 - April 23)


Lecture 7: Process Communications and Concurrency

Assigned readings:

Chapter 5, Section 5.2 (pages 210-230), Chapter 4, Section 4.2 (pages 167-173)


Lecture 7.

A note on these (and other) slides: depending on how you look at them, you may see some hidden slides that I did not lecture on. For example, lecture 7 contains several hidden slides on signals. You are not responsible on the tests for the content of these hidden slides. If the same material was also covered in the assigned readings, of course, you are responsible for what was said there. The slides are hidden because I have determined, from previous offerings of the class, that I would not have time to cover them, and I regarded them as less important than the other material in the lecture. However, the material they discuss is still useful, and it's worth looking at them, if you have an interest in the subject of operating systems that extends beyond merely taking this class.

Lecture 8: Synchronization, Critical Sections, and Concurrency

Assigned readings:

Chapter 9, Section 9.1-9.1.7 (pages 9-1 through 9-20). Note: This is one of the chapters that is not included in the print version of the book, but is only available on line. Here is a link to the PDF online version.


Lecture 8.

Week 3 (April 10 - April 16)

NOTE: I will be out of town again on Thursday, April 15. I have taped the lecture for that day and will post links to the taped version as soon as they are available. I will be here for the Tuesday class, as usual.

Lecture 5: Processes

Assigned readings:

Chapter 5, Section 5.5 (pages 255-272).


Lecture 5.

Lecture 6: Scheduling

Assigned readings:

Chapter 6, Section 6.3 (pages 347-362).

As noted in class and in an email sent to all enrolled students, I will not be on campus for this lecture. Below, in addition to the usual Powerpoint version of the slides for the lecture, are links to a taped version of this lecture, which you should view at your convenience. It is possible that the links to the taped version will only work from within UCLA or when using the UCLA VPN.


Lecture 6.

Taped lecture

Part 1.

Part 2.

Part 3.

Week 2 (April 3 - April 9)

Lecture 3: Hardware Issues for Operating Systems

As mentioned in class, I will be out of town on Tuesday, April 7, so we will not hold a class in our normal period. Instead, I have taped lecture 3. You should try to view it early in week 2, at your convenience. These should be viewable through most web browsers, though I would recommend using a device with a reasonably sized screen for the purpose.

I have divided the taped version into three pieces, for your convenience. I recommend viewing them in order.

Taped version of lecture 3, Part 1.

Taped version of lecture 3, Part 2.

Taped version of lecture 3, Part 3.

Assigned readings:

Chapter 2, Section 2.1 (pages 43-60)


Lecture 3.

Lecture 3, PDF version.

Lecture 4: Modularity and Virtualization

Assigned readings:

Chapter 4, Section 4.1-4.1.2 (pages 147-162), Chapter 5, Section 5.1 (pages 199-210), Section 5.3-5.3.4 (pages 230-237)


Lecture 4.

Lecture 4, PDF version.

Week 1 (March 31 - April 2)

Lecture 1: Introduction

Assigned readings:

No readings assigned for lecture 1.


Lecture 1.

Lecture 1, PDF version.

Lecture 2: Basic Operating Systems Concepts

Assigned readings:

Chapter 1 (pages 1-40).


Lecture 2.

Lecture 2, PDF version.