CSCI 320 - Operating Systems and Concurrency

Spring 2019

Course Overview:

In this course, we will study the three main concepts of modern operating systems design: Virtualization, Concurrency, and Persistence. We will also study how they are implemented in practice. We will use the Rust programming language as a tool for investigating these concepts.

At the end of this course, you will be expected to be able to:

Instructor:
Dr. Gabriel Ferrer
M.C. Reynolds 312

Office Hours:
By appointment. To make an appointment with me, visit http://drferrer.youcanbook.me. From there, you can see my availability and select an appointment time.

Also, please feel free to stop by whenever my door is open.

Class Web Page: http://ozark.hendrix.edu/~ferrer/courses/os/

Lecture Time: A2 (9:10-10:00, MWF)

Final Exam Period: Tuesday, May 7, 8:30-11:30 am

Texts:
All texts for this course are freely available online. Each reading assignment is directly linked on the schedule. Grading:
There are a total of 1,000 points available over the course of the semester. The thresholds for earning each letter grade are as follows:
Letter gradePoints to achieve
A900
B800
C700
D600

Here are the semester's assignments and the associated points for each:
Assignment CategoryTotal Value
Programming Assignments (10)300
Redox Presentations (2)100
Midterm Exam150
Final Project200
Final Exam250
Programming Assignments: There will be ten programming assignments. You may optionally work on each assignment with one other student. Both students should submit a solution, identifying the other student with whom they worked in the comments. Grading criteria will be given for each assignment.

Revisions: After assignments are graded, you are welcome to revise and resubmit your work. I will grade anew each submitted revision, and average the original and revised grades together to produce a new grade for that assignment. Revisions may be submitted anytime until the start of the final exam.

No late work will be accepted. Any work not submitted on time is a zero. However, you may submit a solution after the deadline to qualify under the revision policy above. In effect, this means that late work can earn up to half credit.

Redox Presentations: After Spring Break, groups of two or three students will give 50-minute presentations discussing how the operating systems concepts we have explored in the course are implemented in the Redox operating system. Each student will participate in two presentations, each of which is worth 50 points.

Final Project: Each student will undertake a final project that explores a concept from this course in depth. Final projects may be undertaken by teams. Possible topics include: Exams: There will be a midterm exam in class on Monday, February 25, worth 150 points. There will be a cumulative final exam on Tuesday, May 7, from 8:30-11:30 am, worth 250 points.

Accommodations: It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Students should contact Julie Brown in the Office of Academic Success (505-2954; brownj@hendrix.edu) to begin the accommodation process. Any student seeking accommodation in relation to a recognized disability should inform the instructor at the beginning of the course.

Schedule

DateDayTopic/ActivityReadingAssignment OutAssignment Due
1/16WednesdayOverview
Three Pieces of OS
Command Line
Introduction to Operating SystemsShell Assignment #1None
1/18FridayCommand-Line Shell
Processes
Pipes
I/O Redirection
Virtualization
Processes
Shell Assignment #2Shell Assignment #1
1/21MondayMartin Luther King, Jr. DayNoneNoneNone
1/23WednesdayRust
Command-Line Arguments
Rust Example
Rust: Common Programming Concepts (3.1-3.5)
Rust Programming #1Shell Assignment #2
1/25FridayOwnership, Lifetimes, Borrowing
File Systems
Ownership (4.1-4.3)
Files and Directories
NoneNone
1/28MondayStructs, EnumsStructs (5.1-5.3)
Enums (6.1-6.3)
Packages, Crates, Modules (7.1-7.2)
Rust Programming #2Rust Programming #1
1/30WednesdayNetworking, Collections, Error HandlingTcpStream
Common Collections (8.1-8.3)
Error Handling (9.1-9.3)
NoneNone
2/1FridayGenerics, PointersGenerics (10.1-10.3)
Pointers (15.1-15.6)
NoneNone
2/4MondayProcesses
Threads
Concurrency and Threads
Fearless Concurrency (16.1-16.4)
Web Server #1Rust Programming #2
2/6WednesdayServer-side sockets
Unit Testing
TcpListener
Unit Testing (11.1-11.3)
NoneNone
2/8FridayAddress SpacesAddress SpacesNoneNone
2/11MondayCreating ProcessesProcesses in Rust
Process API
Rust Shell Implementation #1Web Server #1
2/13WednesdayFile DescriptorsStdio
Pipes
nix crate
NoneNone
2/15FridayMore RustIterators and Closures (13.1-13.4)
Object-Oriented Programming (17.1-17.3)
Advanced Pattern-Matching (18.1-18.3)
Rust Shell Implementation #2Rust Shell Implementation #1
2/18MondayExecuting ProcessesDirect ExecutionNoneNone
2/20WednesdayFile System ImplementationFile System ImplementationNoneNone
2/22FridayReview for MidtermNoneNoneRust Shell Implementation #2
2/25MondayMidterm ExamNoneNoneNone
2/27WednesdayPerformance AnalysisNoneWeb Server #2None
3/1FridayProgramming to the Bare MetalFreestanding Rust Binary
A Minimal Rust Kernel
VGA Text Mode
Unit Testing
NoneNone
3/4MondayExceptions and InterruptsIntegration Tests
CPU Exceptions
Double Faults
Hardware Interrupts
NoneNone
3/6WednesdayMemory Hierarchy
Caching
Address Translation
Hierarchy of Memory and Caches
Address Translation
NoneNone
3/8FridaySegmentation
Paging
Rust: The Stack and the Heap
Segmentation
Paging
Bare Metal Programming #1Web Server #2
3/11MondayTranslation Lookaside Buffers
Implementing Paging
TLBs
Implementation of Paging
NoneNone
3/13WednesdaySwappingSwapping Mechanisms
Swapping Policies
NoneNone
3/15FridayFree Space ManagementFree Space ManagementNoneBare Metal Programming #1
3/18MondaySpring BreakNoneNoneNone
3/20WednesdaySpring BreakNoneNoneNone
3/22FridaySpring BreakNoneNoneNone
3/25MondayRedoxRedox Book, Chapters 1 and 2Bare Metal Programming #2None
3/27WednesdayRedoxRedox Book, Chapters 4, 5, 6NoneNone
3/29FridayFinal Project Overview
Flash Drives
Flash-based SSDsFinal Project ProposalsNone
4/1MondayRedox Presentation #1NoneNoneBare Metal Programming #2
4/3WednesdayRedox Presentation #2NoneNoneNone
4/5FridayFinal Project Topic PresentationsNoneNoneFinal Project Topic Documents
4/8MondayRedox Presentation #3NoneNoneNone
4/10WednesdayRedox Presentation #4NoneNoneNone
4/12FridayProgress ReportsNoneNoneFinal Project Progress Report #1
4/15MondayRedox Presentation #5NoneNoneNone
4/17WednesdayRedox Presentation #6NoneNoneNone
4/19FridayProgress ReportsNoneNoneFinal Project Progress Report #2
4/22MondayRedox Presentation #7NoneNoneNone
4/24WednesdayRedox Presentation #8NoneNoneNone
4/26FridayReview for Final ExamNoneNoneNone
4/29MondayProject PresentationsNoneNoneFinal Project
5/7TuesdayFinal Exam Period (8:30-11:30 am)NoneNoneFinal Exam