Operating Systems: Virtualization, Concurrency & Persistence

Explore operating systems through virtualization, concurrency, and persistence, covering CPU scheduling, process virtualization, locks, semaphores, and hands-on work with I/O devices and file systems.

Intermediate

477 Lessons

40h

Certificate of Completion

Explore operating systems through virtualization, concurrency, and persistence, covering CPU scheduling, process virtualization, locks, semaphores, and hands-on work with I/O devices and file systems.

AI-POWERED

Explanations
Adaptive Learning

AI-POWERED

Explanations
Adaptive Learning

This course includes

116 Playgrounds
39 Quizzes

This course includes

116 Playgrounds
39 Quizzes

Course Overview

When it comes to operating systems, there are three main concepts: virtualization, concurrency, and persistence. These concepts lay the foundation for understanding how an operating system works. In this extensive course, you'll cover each of those in its entirety. You'll start by covering the basics of CPU virtualization and memory such as: CPU scheduling, process virtualization, and API virtualization. You will then move on to concurrency concepts where you’ll focus heavily on locks, semaphores, and how ...Show More

TAKEAWAY SKILLS

C

Operating Systems

Virtualization

Concurrency

Course Content

1.

Introduction

Get familiar with OS fundamentals including CPU, memory virtualization, concurrency, and persistence.
2.

Virtualization: Processes

Unpack the core of process virtualization, state transitions, and management within operating systems.
3.

Virtualization: Process API

Go hands-on with UNIX process APIs: fork(), exec(), wait(), and practical control tools.
4.

Virtualization: Direct Execution

Apply your skills to virtualize CPUs, manage concurrency, and measure OS performance efficiently.
5.

Virtualization: CPU Scheduling

Map out the steps for CPU scheduling, including FIFO, SJF, STCF, RR, and I/O integration.
6.

Virtualization: Multi-Level Feedback

10 Lessons

See how it works to adapt scheduling with Multi-Level Feedback Queue for optimal performance.
7.

Virtualization: Lottery Scheduling

13 Lessons

Build on lottery scheduling, its probabilistic fairness, implementation, and comparison to deterministic and fair schedulers.
8.

Virtualization: Multi-CPU Scheduling

12 Lessons

Step through multi-CPU scheduling techniques, addressing performance, cache affinity, and load balancing.
9.

Virtualization: Address Space

8 Lessons

Explore the evolution of operating systems, focusing on memory management and virtualization.
10.

Virtualization: Memory API

10 Lessons

Master the steps to manage and allocate memory efficiently using UNIX/C memory APIs.
11.

Virtualization: Address Translation

10 Lessons

Grasp the fundamentals of address translation, memory management, and hardware support.
12.

Virtualization: Segmentation

11 Lessons

Map out the steps for efficient memory management using segmentation and address translation.
13.

Virtualization: Free Space Management

9 Lessons

Investigate free space management, allocation strategies, memory allocators, and practical simulations.
14.

Virtualization: Introduction to Paging

10 Lessons

Build on paging as a memory management technique addressing fragmentation and exploring translation challenges.
15.

Virtualization: Translation Lookaside Buffers

11 Lessons

Learn how to use Translation Lookaside Buffers (TLBs) for efficient virtual memory management.
16.

Virtualization: Advanced Page Tables

10 Lessons

Get started with advanced page tables to enhance memory management and optimize usage.
17.

Virtualization: Swapping: Mechanisms

11 Lessons

Master the steps to efficient memory management using virtual memory and swapping.
18.

Virtualization: Swapping: Policies

16 Lessons

Grasp the fundamentals of virtual memory management policies, optimization, and performance trade-offs.
19.

Virtualization: Complete VM Systems

14 Lessons

Deepen your knowledge of virtual memory systems, focusing on VAX/VMS and Linux architectures.
20.

Concurrency: Concurrency and Threads

12 Lessons

Simplify complex topics of concurrency, threads, race conditions, mutual exclusion, and atomicity.
21.

Concurrency: Thread API

10 Lessons

Master the steps to create and manage threads using POSIX Thread API and synchronization methods.
22.

Concurrency: Locks

20 Lessons

Step through locks and synchronization techniques for efficient concurrency in programming.
23.

Concurrency: Locked Data Structures

8 Lessons

Get started with concurrent data structures, lock management, and performance optimization techniques.
24.

Concurrency: Conditional Variables

10 Lessons

Break apart the implementation and challenges of conditional variables for effective synchronization.
25.

Concurrency: Semaphores

13 Lessons

Explore semaphores for synchronization, event ordering, and solving classic concurrency problems.
26.

Concurrency: Concurrency Bugs

11 Lessons

Map out the steps for understanding and handling concurrency bugs, focusing on deadlocks and prevention.
27.

Concurrency: Event-Based Concurrency

12 Lessons

Focus on event-based concurrency, event loops, select() API, asynchronous I/O, and state management.
28.

Persistence: I/O Devices

13 Lessons

Build on efficient interaction between operating systems and I/O devices for optimal performance.
29.

Persistence: Hard Disk Drives

13 Lessons

Learn how to use HDDs for data storage, including operations, interfaces, and scheduling.
30.

Persistence: Redundant Disk Arrays (RAID)

14 Lessons

Unpack the core of RAID technology, including performance, reliability, and best RAID levels.
31.

Persistence: Files and Directories

19 Lessons

Examine persistent storage management, file system interfaces, and key UNIX operations for data reliability and access.
32.

Persistence: File System Implementation

12 Lessons

Find out about implementing and managing file systems through data structures and access methods.
33.

Persistence: Fast File System

11 Lessons

Take a closer look at optimizing file system performance through the Fast File System.
34.

Persistence: FSCK and Journaling

10 Lessons

Follow the process of ensuring file system crash consistency through fsck, journaling, and other techniques.
35.

Persistence: Log-Structured File System

17 Lessons

Master the steps to improve disk performance through log-structured write optimization and garbage collection.
36.

Persistence: Flash-based SSDs

16 Lessons

Step through SSD technology fundamentals, performance, reliability, and optimization techniques for efficient flash storage.
37.

Persistence: Data Integrity and Protection

14 Lessons

Ensure data integrity with checksum techniques to handle errors, corruption, and failures effectively.
38.

Distribution: Distributed Systems

10 Lessons

Work your way through distributed systems communication, focusing on reliability, RPC, and handling failures.
39.

Distribution: Network File System (NFS)

14 Lessons

Grasp the fundamentals of NFS, focusing on stateless protocols, caching, and efficient crash recovery.
40.

Distribution: Andrew File System (AFS)

13 Lessons

Take a look at the Andrew File System's scalability, caching, consistency, performance, and simulations.

Trusted by 1.4 million developers working at companies

Anthony Walker

@_webarchitect_

Emma Bostian 🐞

@EmmaBostian

Evan Dunbar

ML Engineer

Carlos Matias La Borde

Software Developer

Souvik Kundu

Front-end Developer

Vinay Krishnaiah

Software Developer

Eric Downs

Musician/Entrepeneur

Kenan Eyvazov

DevOps Engineer

Anthony Walker

@_webarchitect_

Emma Bostian 🐞

@EmmaBostian

Hands-on Learning Powered by AI

See how Educative uses AI to make your learning more immersive than ever before.

Instant Code Feedback

Evaluate and debug your code with the click of a button. Get real-time feedback on test cases, including time and space complexity of your solutions.

AI-Powered Mock Interviews

Adaptive Learning

Explain with AI

AI Code Mentor