CMSI 387: Class Notes by Week
The following outline presents the topics that are covered, in the approximate order and time frame
in which they will be discussed.
- Week 01 — Introduction, Syllabus, Getting Started
- Monday
- Introduction and Syllabus
- Tools you will use during the semester
- Initial roll call and other sundries
- Assignment Submissions - GitHub
- Wednesday
- Announcements
- More on tools
- Development environments
- Compiler installation
- Basics of the
C
programming language
- In-class Exercise: Compiler installation and checkout
- Friday
- Announcements
- In-class Exercise: Compiler installation and checkout
- Week 02 — Project, Tools, and Let's Get Under Way
- Monday
- Announcements
- Semester project description
- Virtual Machines – download and installation
- Linux download and installation
- Starting the
meat
: what *IS* an Operating System?
- What is
Middleware
?
- Multiple Computations on One Computer
- Wednesday
- Announcements
- Controlling the Interactions Between Computations
- Supporting Interaction Across Time
- Supporting Interaction Across Space
- Security Issues
- More about
C
- Friday
- Announcements
- In-class Exercise: Practice with
C
- Week 03 — Threaded Execution
- Monday
- Announcements
- Threads of Execution
- Example of Multithreaded Programs
- Reasons for Using Concurrent Threads
- Switching Between Threads
- Wednesday
- Announcements
- Preemptive Multitasking
- Security and Threads
- Finish with Threads
- Friday
- Announcements
- In-class Exercise: Pointers, Sums, Averages, and
Go Fish
- Week 04 — Scheduling, Synchronizing, and Deadlock
- Monday
- Announcements: Homework #1 due Friday!
- Scheduling introduction
- Thread States
- Scheduling Goals
- Throughput
- Response Time
- Urgency, Importance, and Resource Allocation
- Fixed-priority scheduling
- Wednesday
- Announcements
- Dynamic-Priority Scheduling
- Earliest Deadline First Scheduling
- Decay Usage Scheduling
- Proportional-Share Scheduling
- Security and Scheduling
- Friday
- Announcements
- In-class Exercise: Scheduler Simulation
- Week 05 — Scheduling, Synchronizing, and Deadlock
- Monday
- Announcements
- Synchronization and Deadlocks
- Races and the Need for Mutual Exclusion
- Mutexes and Monitors
- The Mutex Application Programing Interface
- Monitors: A More Structured Interface to Mutexes
- Underlying Mechanisms for Mutexes
- Counting Mutexes
- Wednesday
- Announcements
- Other Synchronization Patterns
- Bounded Buffers
- Readers/Writers Locks
- Barriers
- Condition Variables
- Semaphores
- Friday
- Announcements
- In-class Exercise: Producer/Consumer Thread Simulation
- Week 06 — Scheduling completed, Virtual Memory
- Monday
- Announcements
- The Deadlock Problem
- Deadlock Prevention Through Resource Ordering
- Ex Post Facto Deadlock Detection
- Immediate Deadlock Detection
- Interaction of Synchronization with Scheduling
- Priority Inversion
- The Convoy Phenomenon
- Nonblocking Synchronization
- Security and Synchronization
- NEW TOPIC: Kernel Internal
- What's actually IN Linux/Mac OS?
- What's actually IN Windows OS?
- Wednesday
- Announcements
- ANOTHER NEW TOPIC: Virtual Memory
- What *IS*
Virtual
Memory?
- Uses for Virtual Memory
- Private Storage
- Controlled Sharing
- Flexible Allocation
- Sparse Address Spaces
- Persistence
- Demand-driven Program Loading
- Efficient Zero Filling
- Substituting Disk Storage for RAM
- Friday
- Announcements
- In-class Exercise: Virtual Memory Access Timing Simulation
- Week 07 — Virtual Memory
- Monday
- Announcements
- Mechanisms for Virtual Memory
- Software/Hardware Interface
- Linear Page Tables
- Multilevel Page Tables
- Hashed Page Tables
- Segmentation
- Wednesday
- Announcements
- Policies for Virtual Memory
- Fetch Policy
- Placement Policy
- Replacement Policy
- Security and Virtual Memory
- Friday
- Announcements
- In-class Exercise: Virtual Memory Page Access Simulation
- Week 08 — NO CLASS – SPRING BREAK
- ALL WEEK — you've worked hard, take the full week!
- No in-class exercise this week, obviously…
- Week 09 — Processes and Protection
- Monday
- Announcements: Homework #2 due Friday!
- Why Protect Processes?
- POSIX Process Management API
- Protecting Memory
- Foundations: Two Processor Modes
- Mainstream: Multiple Address Space Systems
- Alternative: Single Address Space Systems
- Access Rights
- Fundamentals
- Capabilities
- Wednesday
- Announcements
- Access Control Lists
- Credentials
- Alternative Granularities of Protection
- Protection Within a Process
- Protection of Entire Simulated Machines
- Security and Protection
- SCRUM: Status updates
- Friday
- Announcements
- In-class Exercise: Command Line Process Spawning
- Week 10 — File Systems 1
- Monday
- Announcements
- What is a
file system
?
- Disk Storage Technology .
- POSIX File API
- File Descriptors
- Mapping Files Into Virtual Memory
- Reading and Writing Files at Specified Positions
- Sequential Reading and Writing
- Wednesday
- Announcements
- Disk Space Allocation
- Fragmentation
- Locality
- Allocation Policies and Mechanisms
- Friday
- Announcements
- MetaData
- Data Location Metadata
- Access Control Metadata
- Other Metadata types
- Week 11 — Directories and Indexing
- Monday
- Announcements
- Finish Week 10
- Wednesday
- Announcements
- Directories and Indexing
- File Directories Versus Database Indexes
- Using Indexes to Locate Files
- File Linking
- Directory and Index Data Structures
- Friday
- Announcements
- In-class Exercise: Project Work Day
- Week 12 — Kernel Stuff & Easter Break
- Monday
- Announcements
- Kernel Mods and Additions
- Kernel do's and don'ts
- Google and other file systems
- Wednesday
- Cesar Chavez Day: No Class
- Friday
- Week 13 — Security & Networking
- Monday
- Announcements
- Networks and Internets
- Protocol Layers
- OSI 7-layer model
- Internet 3- or 4-layer model
- What part does what?
- Packetizing
- Wednesday
- Announcements
- Network Security Overview
- Securing Networks
- Virtual Private Networks [VPNs]
- Types of Attacks
- Buffer Overflow Example
- Friday
- Announcements
- In-class Exercise: Knock-Knock Client/Server
- Week 14 — Project Group Work Week
- MONDAY & WEDNESDAY
- Announcements: Homework #3 due Friday!
- Work in your project teams to polish off your kernel mod
- You'll be in breakout rooms with your group members
- No in-class exercise this week, obviously…
- FRIDAY ~ Presentations of Projects: First Four
- Week 15 — Project Presentations/Demonstrations
- ALL WEEK
- Announcements — course evaluations!
- Monday ~ Presentations of Projects: Second Four
- Wednesday ~ Presentations of Projects: Third Four
- Friday ~ Presentations of Projects: Fourth Four
- Week 16 — Project Presentations/Demonstrations
- MONDAY & WEDNESDAY
- Announcements — course evaluations!
- Monday ~ Presentations of Projects: Fifth Four
- Wednesday ~ Presentations of Projects: Final Group and Any Overflow
- WEDNESDAY
- Wednesday ~ Begin Review for Final Exam
- FRIDAY
- Friday ~ Review for Final Exam Continues
- Week 17 — Final Exam
- Monday
- Wednesday
- Friday
- The final exam will be on Friday, May 7th, 2021 at 08:00.