HomeCoursesOperating Systems: Virtualization, Concurrency & Persistence
AI-powered learning
Save

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.

4.7
477 Lessons
40h
Join 2.9 million developers at
Join 2.9 million developers at

Learning Roadmap

477 Lessons39 Quizzes

1.

Introduction

Introduction

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

2.

Virtualization: Processes

Virtualization: Processes

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

3.

Virtualization: Process API

Virtualization: Process API

10 Lessons

10 Lessons

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

4.

Virtualization: Direct Execution

Virtualization: Direct Execution

8 Lessons

8 Lessons

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

5.

Virtualization: CPU Scheduling

Virtualization: CPU Scheduling

12 Lessons

12 Lessons

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

6.

Virtualization: Multi-Level Feedback

Virtualization: Multi-Level Feedback

10 Lessons

10 Lessons

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

7.

Virtualization: Lottery Scheduling

Virtualization: Lottery Scheduling

13 Lessons

13 Lessons

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

8.

Virtualization: Multi-CPU Scheduling

Virtualization: Multi-CPU Scheduling

12 Lessons

12 Lessons

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

9.

Virtualization: Address Space

Virtualization: Address Space

8 Lessons

8 Lessons

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

10.

Virtualization: Memory API

Virtualization: Memory API

10 Lessons

10 Lessons

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

11.

Virtualization: Address Translation

Virtualization: Address Translation

10 Lessons

10 Lessons

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

12.

Virtualization: Segmentation

Virtualization: Segmentation

11 Lessons

11 Lessons

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

13.

Virtualization: Free Space Management

Virtualization: Free Space Management

9 Lessons

9 Lessons

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

14.

Virtualization: Introduction to Paging

Virtualization: Introduction to Paging

10 Lessons

10 Lessons

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

15.

Virtualization: Translation Lookaside Buffers

Virtualization: Translation Lookaside Buffers

11 Lessons

11 Lessons

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

16.

Virtualization: Advanced Page Tables

Virtualization: Advanced Page Tables

10 Lessons

10 Lessons

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

17.

Virtualization: Swapping: Mechanisms

Virtualization: Swapping: Mechanisms

11 Lessons

11 Lessons

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

18.

Virtualization: Swapping: Policies

Virtualization: Swapping: Policies

16 Lessons

16 Lessons

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

19.

Virtualization: Complete VM Systems

Virtualization: Complete VM Systems

14 Lessons

14 Lessons

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

20.

Concurrency: Concurrency and Threads

Concurrency: Concurrency and Threads

12 Lessons

12 Lessons

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

21.

Concurrency: Thread API

Concurrency: Thread API

10 Lessons

10 Lessons

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

22.

Concurrency: Locks

Concurrency: Locks

20 Lessons

20 Lessons

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

23.

Concurrency: Locked Data Structures

Concurrency: Locked Data Structures

8 Lessons

8 Lessons

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

24.

Concurrency: Conditional Variables

Concurrency: Conditional Variables

10 Lessons

10 Lessons

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

25.

Concurrency: Semaphores

Concurrency: Semaphores

13 Lessons

13 Lessons

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

26.

Concurrency: Concurrency Bugs

Concurrency: Concurrency Bugs

11 Lessons

11 Lessons

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

27.

Concurrency: Event-Based Concurrency

Concurrency: Event-Based Concurrency

12 Lessons

12 Lessons

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

28.

Persistence: I/O Devices

Persistence: I/O Devices

13 Lessons

13 Lessons

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

29.

Persistence: Hard Disk Drives

Persistence: Hard Disk Drives

13 Lessons

13 Lessons

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

30.

Persistence: Redundant Disk Arrays (RAID)

Persistence: Redundant Disk Arrays (RAID)

14 Lessons

14 Lessons

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

31.

Persistence: Files and Directories

Persistence: Files and Directories

19 Lessons

19 Lessons

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

32.

Persistence: File System Implementation

Persistence: File System Implementation

12 Lessons

12 Lessons

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

33.

Persistence: Fast File System

Persistence: Fast File System

11 Lessons

11 Lessons

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

34.

Persistence: FSCK and Journaling

Persistence: FSCK and Journaling

10 Lessons

10 Lessons

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

35.

Persistence: Log-Structured File System

Persistence: Log-Structured File System

17 Lessons

17 Lessons

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

36.

Persistence: Flash-based SSDs

Persistence: Flash-based SSDs

16 Lessons

16 Lessons

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

37.

Persistence: Data Integrity and Protection

Persistence: Data Integrity and Protection

14 Lessons

14 Lessons

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

38.

Distribution: Distributed Systems

Distribution: Distributed Systems

10 Lessons

10 Lessons

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

39.

Distribution: Network File System (NFS)

Distribution: Network File System (NFS)

14 Lessons

14 Lessons

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

40.

Distribution: Andrew File System (AFS)

Distribution: Andrew File System (AFS)

13 Lessons

13 Lessons

Take a look at the Andrew File System's scalability, caching, consistency, performance, and simulations.
Certificate of Completion
Showcase your accomplishment by sharing your certificate of completion.
Author NameOperating Systems: Virtualization, Concurrency& Persistence
Developed by MAANG Engineers
ABOUT THIS COURSE
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 to triage concurrency bugs like deadlocks. Towards the end, you'll get plenty of hands-on practice with persistence via I/O devices and file systems. By the time you're done, you'll have mastered everything there is to know about operating systems.
ABOUT THE AUTHOR

Remzi Arpaci-Dusseau

Every Educative resource is designed by our team of ex-MAANG software engineers and PhD computer science educators — subject matter experts who've shipped production code at scale and taught the theory behind it. No videos, no fluff.

Learn more about Remzi

Trusted by 2.9 million developers working at companies

These are high-quality courses. Trust me the price is worth it for the content quality. Educative came at the right time in my career. I'm understanding topics better than with any book or online video tutorial I've done. Truly made for developers. Thanks

A

Anthony Walker

@_webarchitect_

Just finished my first full #ML course: Machine learning for Software Engineers from Educative, Inc. ... Highly recommend!

E

Evan Dunbar

ML Engineer

You guys are the gold standard of crash-courses... Narrow enough that it doesn't need years of study or a full blown book to get the gist, but broad enough that an afternoon of Googling doesn't cut it.

S

Software Developer

Carlos Matias La Borde

I spend my days and nights on Educative. It is indispensable. It is such a unique and reader-friendly site

S

Souvik Kundu

Front-end Developer

Your courses are simply awesome, the depth they go into and the breadth of coverage is so good that I don't have to refer to 10 different websites looking for interview topics and content.

V

Vinay Krishnaiah

Software Developer

Built for 10x Developers

No Passive Learning
Learn by building with project-based lessons and in-browser code editor
Learn by Doing
Personalized Roadmaps
The platform adapts to your strengths & skills gaps as you go
Learn by Doing
Future-proof Your Career
Get hands-on with in-demand skills
Learn by Doing
AI Code Mentor
Write better code with AI feedback, smart debugging, and "Ask AI"
Learn by Doing
Learn by Doing
MAANG+ Interview Prep
AI Mock Interviews simulate every technical loop at top companies
Learn by Doing

Free Resources

FOR TEAMS

Interested in this course for your business or team?

Unlock this course (and 1,000+ more) for your entire org with DevPath