Courses/Computer Science/CPSC 457.W2012/Lecture Notes

= January 10: Introduction = Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/Overview

= January 12: From Programs to Processes =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/Prog2Proc

= January 17: System Architecture and System Calls =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/SysArch

= January 19: Process Creation =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/Creation

= January 24: System Startup =

The boot process, and how to create concurrency out of sequential execution.

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/Startup

= January 26: Process Scheduling =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/Scheduling

= January 31: Scheduling and Timing =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/Timing

= February 2: Concurrency, Communication, and Synchronization =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/Concurrency

= February 7: Threads =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/Threads

= February 9: Deadlock =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/Deadlock

= February 14: Kernel Control Flow =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/KernCtrlFlow

= February 16: Kernel Synchronization =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/KernSync

= February 21: No lecture (Reading week) =

No class, tutorials, or office hours. Study for the midterm and work on HW3.

Remember that the university is closed on Feb 20th.

= February 23: No lecture (Reading week) =

No class, tutorials, or office hours. Study for the midterm and work on HW3.

= February 28: Midterm Review =

In this session, we will enumerate some of the topics that are likely to be on the midterm.

After this brief enumeration, this session will run as a Q&A.

Up to this point in the semester we have covered the following topics (in bold) out of the "syllabus" list above, through a combination of lectures, readings, and the homework assignments.


 * synchronization primitives; threads and concurrent execution; critical sections; locking; deadlock, livelock
 * Basic operating system designs and structures, OS history
 * IDT; interrupts; system initialization; privilege levels; segment descriptors
 * hardware support for segmentation and paging; page permissions
 * traps and interrupts; call gates
 * System calls
 * process supervision; ptrace; debugging
 * binary file format; ELF
 * Process creation, meta-data, management, and scheduling
 * Thread management from the kernel viewpoint
 * Memory hierarchy, Memory management, virtual memory, DMA; page faults, page replacement
 * Device I/O; disk scheduling algorithms
 * Files and file systems; attributes, VFS; file system case study
 * File locking
 * Network stack, filtering architecture
 * kernel instrumentation; kprobes; SystemTap

= March 1: Midterm Exam =

You should consider studying the things that are pointed out on this wiki with an exclamation point.

You have 1 hour and 15 minutes for this individual written exercise.

The TA will proctor the exam. Prof. Locasto will not be present. If you have a question, the TA can offer clarification of a term or concept, but will not offer explanation. Students may use both course textbooks (MOS, ULK) and 1 page of notes (this may be single or double sided and of any font size of your choice). You may not use a calculator, phone, computer, or other digital device. Leave these devices at home or in your bag.

The questions appear in no particular order of difficulty. Skip questions if you feel unsure and come back to them. Please write your name and email address on the test sheet. Answers may be provided directly on the test sheet. Answers should be terse, succinct, and otherwise concise. Diagrams and lists are welcomed and encouraged. Very long prose answers are likely to represent long, rambling, and incorrect answers.

= March 6: Signals =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/Signals

= March 8: Memory Addressing =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/MemAddr

= March 13: The Process Address Space =

Here we consider the general abstraction as well as how the Linux kernel supports "memory regions" (vm areas).

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/ProcAddrSpace

= March 15: Virtual Memory =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/VirtualMemory

= March 20: Page Replacement =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/PageReplacement

= March 22: Kernel Memory Management =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/KernMem

= March 27: File I/O =

File. File input-ouput. Permissions. Attributes. Functions (open/read/write/close/lseek/stat). Threads, processes, and file locking.

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/FileIO

= March 29: Filesystems =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/Filesystems

= April 3: VFS and Ext3 =

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/VFS

= April 5: Extended Attributes =

USRI for the first 15 minutes of class.

Support for extended attributes, labels, and ACLs.

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/XAttr

= April 10: Disk Scheduling =

A consideration of low-level I/O and how to schedule rotational media requests.

Courses/Computer_Science/CPSC_457.W2012/Lecture Notes/DiskScheduling

= 12 April: Final Exam Review =

Today's topic will be dynamically determined by popular vote on a Piazza poll.

Today is CPSC Industry Day and the Undergraduate Showcase. I encourage you to attend after class.

Final Exam Review
Up to this point in the semester we have covered the following topics (in bold) out of the "syllabus" list, through a combination of lectures, tutorials, readings, and the homework assignments.


 * synchronization primitives; threads and concurrent execution; critical sections; locking; deadlock, livelock
 * Basic operating system designs and structures, OS history
 * IDT; interrupts; system initialization; privilege levels; segment descriptors
 * hardware support for segmentation and paging; page permissions
 * traps and interrupts; call gates
 * System calls
 * process supervision; ptrace; debugging
 * binary file format; ELF
 * Process creation, meta-data, management, and scheduling
 * Thread management from the kernel viewpoint
 * Memory hierarchy, Memory management, virtual memory, DMA; page faults, page replacement
 * Device I/O; disk scheduling algorithms
 * Files and file systems; attributes, VFS; file system case study
 * File locking
 * Network stack, filtering architecture
 * kernel instrumentation; kprobes; SystemTap

= 19 April: Final Exam =

The exam will take place from noon to 2pm.

The final exam will test your knowledge of most of the major topics we discussed this semester.

This test will take the form of an individual written exercise.