HomeCoursesOperating Systems: Virtualization, Concurrency & Persistence
4.6

Intermediate

40h

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.
Join 2.7M developers at
Overview
Content
Reviews
Related
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.
When it comes to operating systems, there are three main concepts: virtualization, concurrency, and persistence. These concepts ...Show More

TAKEAWAY SKILLS

C

Operating Systems

Virtualization

Concurrency

Content

1.

Introduction

9 Lessons

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

2.

Virtualization: Processes

11 Lessons

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

3.

Virtualization: Process API

10 Lessons

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

4.

Virtualization: Direct Execution

8 Lessons

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

5.

Virtualization: CPU Scheduling

12 Lessons

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.
Certificate of Completion
Showcase your accomplishment by sharing your certificate of completion.
Developed by MAANG Engineers
Every Educative lesson is designed by a team of ex-MAANG software engineers and PhD computer science educators, and developed in consultation with developers and data scientists working at Meta, Google, and more. Our mission is to get you hands-on with the necessary skills to stay ahead in a constantly changing industry. No video, no fluff. Just interactive, project-based learning with personalized feedback that adapts to your goals and experience.

Trusted by 2.7 million developers working at companies

Hands-on Learning Powered by AI

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

AI Prompt

Build prompt engineering skills. Practice implementing AI-informed solutions.

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.

Explain with AI

Select any text within any Educative course, and get an instant explanation — without ever leaving your browser.

AI Code Mentor

AI Code Mentor helps you quickly identify errors in your code, learn from your mistakes, and nudge you in the right direction — just like a 1:1 tutor!

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