Class Lectures and Reading Assignments
CS 30200 / ECE 46810
Operating Systems
Spring, 2021

This page documents what we do in class. It contains C programs that we will discuss in class, reading assignments from our textbook, simple homework exercises that you can work on for practice and exam preparation (not for credit), links to other sources of information, etc.

The reading assignments and practice problems are listed by the date on which they were assigned. The sample program files are listed by the date on which they were used. When you are viewing a source code page, you can use your browser's "File -> Save As..." menu item to save a copy of the code on your computer. It is a good idea for you to "play" with these example programs; compile them, run them, make simple changes to them and compile and run them again.

The second exam is today. The exam can be downloaded from Brightspace at 11:00 a.m. The exam document is on the same page in Brightspace where you submit programming assignments. Your completed exam document is due back in Brightspace at 11:00 p.m. this evening. There are more detailed instructions about completing the exam on the first page of the exam document. If you have questions, please send me an email at any time during the exam.

Here is a link to today's video lecture.

The second exam is Monday, May 3 (according to the university's final exam schedule). Here are sample questions for the exam.

Here is some additional information about paging.

Here is the picture we used in class to explain page replacement policies.

Here is a link to today's video lecture.

The second exam is Monday, May 3 (according to the university's final exam schedule). Here are sample questions for the exam.

Read Chapter 22 from our operating systems textbook.

Here are the pictures we used in class to explain demand paging and page faults. Open the two pictures into two tabs and then switch between them to compare the differences.

Here is a link to today's video lecture.

Read Chapter 21 from our operating systems textbook.

Here are the pictures we used in class to explain paging pages and page tables.

Here is a link to today's video lecture.

See the homework assignment page for your fourth programming assignment.

Read Chapter 18 from our operating systems textbook.

Here is some additional information about segments.

Here are the pictures we used in class to explain relocation, shared memory and code overlays using segments.

Here is a link to today's video lecture.

Read Chapter 16 from our operating systems textbook.

Here is some additional information about base and bounds.

Here are the pictures we used in class to explain base and bounds.

Here is a link to today's video lecture.

Read Chapters 15 from our operating systems textbook.

Here are the pictures we used in class to start explaining virtual memory and address translation.

Here is a link to today's video lecture.

For next week, read Chapters 12 & 13 from our operating systems textbook.

Here are explanations, from Microsoft, of its multilevel feedback queue scheduler for Windows Vista and Windows 7.

Here is a link to today's video lecture.

Here are the pictures we used in class to explan and motivate the MLFQ.

Here is a link to today's video lecture.

The first midterm exam is today. The exam can be downloaded from Brightspace when class ends at 1:45. The exam document is on the same page in Brightspace where you submit programming assignments. Your completed exam document is due back in Brightspace at 11 p.m. this evening. There are more detailed instructions about completing the exam on the first page of the exam document.

Here is the code we did with the C visualizer.

Here is a link to today's video lecture.

Here are the pictures we worked with in class today and the transcript of the CMD session.

Here is a link to today's video lecture.

See the homework assignment page for your third programming assignment.

Remember that the first midterm exam is next Wednesday, March 31. Here is a file that contains review questions for the exam.

Here is a link to today's video lecture.

Read Chapter 8 from our operating systems textbook.

Here are the scheduling examples we did in class.

Spring Break - No class today.

Spring Break - No class today.

Here is a link to today's video lecture.

Today we will begin Chapter 7 from our operating systems textbook.

The following zip file contains sample code and information about Windows cpu scheduling.

Here, for easy access, is my outline of Chapter 7 taken from the above zip file.

Here is a link to today's video lecture.

I have updated the course syllabus to change the date of the first midterm exam to March 31 (from March 10). That will be well after spring break and give you time to study the exam review material.

Here is a file that contains review questions for the midterm exam.

Here are the two pictures we used in class to explain buffering and how it is related to kernel space and user space and system calls.

Here is a link to today's video lecture.

Here is the picture we used in class to explain kernel space and user space.

I updated the files in the "buffering & system calls" sub-folder of this zip file.

Here is a link to today's video lecture.

Read Chapter 7 from our operating systems textbook.

Here is a link to today's video lecture.

The following zip file contains sample code about system calls (see Section 6.2 from Mechanism: Limited Direct Execution).

Here is a link to today's video lecture.

Today we will go over the following code that demonstrates the idea of process states from Section 4.4 of The Abstraction: The Process.

Here is the picture we used in class to explain system calls and process states.

Here is a link to today's video lecture.

Today we will continue discussing Chapters 4 & 6.

Here is the picture we used in class to explain context switch vs. mode switch.

Here is a link to today's video lecture.

Here are the pictures we used in class to explain cooperative and preemtive multitasking.

Here is a link to today's video lecture.

Read Chapter 6 from our operating systems textbook.

Today we will start discussing Chapter 4.

Here is the picture we used in class to explain the cpu's fetch-decode-execute loop.

Here is a link to today's video lecture.

Here is a summary of the parts of C that are important for the homework assignments.

Here is a brief reminder of the kinds of variables we need to think about in each of Java and C.

Here is a link to today's video lecture.

The code in the following zip file demonstrates how Windows functions handle complex parameters (both in and out parameters). This code makes use of automatic, dynamic and static allocation, pointers and malloc. It is not simple code. Run and visualize this code using the C Tutor

Remember the connection we mentioned in class between assignment and parameter passing in function calls.

Here is a link to today's video lecture.

Read Section 12.1, about structures, from Programming in C.

Review Sections 6.2 and 6.2.1 about structures from The C Book.

Today we will run and visualize the following sample C code on the C Tutor - Visualizer.

Here is the simple Java example that we created using the Java Visualizer.

Here is a link to today's video lecture.

Read Chapter 7, about arrays, from Programming in C.

For practice, do these exercises at the end of Chapter 7.

Review the chapter about arrays and pointers from The C Book.

Today we will look at the C code in the following zip file which shows how to write code that creates Windows processes (which is what your second programming assignment is about).

Here is a link to today's video lecture.

See the homework assignment page for your second programming assignment.

Read Chapter 2, Sections 2.1 and 2.2 (pages 1-6) and Chapter 4, about processes, from our operating systems textbook.

Today we will look at the examples in the sub folder called "stdin, stdout, filters, examples" from the hw1 zip file.

Here is a link to today's video lecture.

Read Chapter 6, about pointers, from Programming in C.

For practice, do these exercises at the end of Chapter 6.

Here is the example code about in, in-out, and out function parameters in C.

Here is a Java version of the C code.

No class today, Martin Luther King Jr. Day.

Here is a link to today's video lecture.

Read Chapter 3 from Programming in C

Today we will look at the C code in the following zip file and some of the C examples in the sub-folders that accompany programming assignment 1.

If you want to add the "Open command window here" option to the right-click menu for Windows folders, then download the following zip file (which comes from this article) and double click on its included ".reg" file.

Here is a link to today's video lecture.

See the homework assignment page for your first programming assignment.

Read Chapter 1 and Chapter 2 from Programming in C

The following zip file contains code for examples very similar to your first programming assignment.

To help you prepare for the first homework assignment, read the following appendix from the course textbook.

Here is a link to a zip file that contains a C compiler that we will use in this course. Download this zip file and unzip it into the top level of your C:\ drive. We will go over in class how to use this compiler.

Here are links to two online, educational C compilers that we will use.