Readings "Passive" learning opportunities

This page collects together all of the “readings” associated with individual modules.

In this site, readings represent “passive” learning opportunities, as opposed to experiences, which represent “active” learning opportunities. In many courses, readings and experiences together constitute the “assignments”.

Module: Getting Started

Guided tour of Morea course websites

About Morea

Syllabus

Detailed syllabus for this course

Getting Started

Course objectives, logistics, administrivia

The Linux command-line

Module: Computer Architecture ([Over|Re]view)

Computer Architecture

Overview/Review of Fundamental Computer Architecture Concepts

The Memory Bottleneck

Overview/Review of the reasons for and solutions to the Memory Bottleneck

Module: OS Overview and Interfaces

What's an Operating Systems

Overview of the role of the OS

The Kernel

Overview of the booting process and of the kerne’s role

OS Interfaces

Overview of Operating System interfaces

OS History

A very brief history of Operating Systems

Module: Processes

The Process Abstraction

Introduction to the concept of a process

The Process API

Introduction to the process API (on Linux)

Process Mechanisms

Introduction to OS mechanisms for CPU virtualization

Inter-Process Communication (IPC)

Introduction to how processes can communicate with each others

Example source code

Sets of C programs discussed in the Process API lecture notes

Module: Threads

Threads

Introduction to Threads

Module: Scheduling

Scheduling Basics

Basic principles of OS scheduling

Advanced Scheduling

Overview of what modern OSes do w.r.t. scheduling

Module: Synchronization

Synchronization: Race Conditions

Introduction to Race Conditions: issues and solutions

Synchronization: Deadlocks

Introduction to Deadlocks: issues and solutions

Example source code

Java programs discussed in the Race Conditions lecture notes

Module: Review: Counting and Addressing

Counting and Addressing

Review of simple math concepts related to counting and addressing with powers of 2

[PRACTICE] Counting and Addressing

Practice questions for the Counting and Addressing lecture notes

Module: Main Memory

Main Memory: Address Virtualization

Introduction to the concept of address virtualization

Main Memory: Swapping

Introduction to the concept and challenge of Swapping when we don’t have enough space to run a program

Dynamic Linking and Loading

Descriptions of these two common techniques use to avoid wasting RAM

Example source code

Programs mentioned in the Main Memory lecture notes

Module: Virtual Memory: Paging

Paging I

Introduction to Virtual Memory and Paging

Paging II

Issues with Paging and Solutions

Paging III

Page Faults and Replacement

Paging IV

Page Faults and Replacement

Example source code

Programs mentioned in the Virtual Memory: Paging lecture notes

Module: I/O Devices

HDDs

Hard Disk Drives

SSDs

Solid State Drives

Python source code

Python programs to simulate HDDs and run experiments

Module: File Systems

File System Basics

Files, Directories, Links

File System Implementation

File system data structures, disk block allocation, journaling

Module: Virtual Machines and Containers

Virtual Machines and Containers

Main Concepts of Virtual Machines and Containers