Skip to main content

Fundamentals of Operating Systems

21h 41m 1s
English
Paid

Course description

Operating systems orchestrate many processes, allow access to memory, disk and network and execute the process by scheduling them to the CPU. Sounds simple when we put it this way but this task is vast. So vast indeed that writing programs that are efficient really depends on how much understanding the engineer has in operating systems.

I have been fascinated by revealing and demystifying anything that is hidden from me, mainly because by treating black boxes as black boxes that takes input and produces output, I feel that I am at the mercy of this black box. Databases were a black box for me a decade ago, I was at completely lost when a query that I wrote was originally running fast but after few month it had gone slow. The reason is I didn't really have any understanding of database systems and how their internals work.

The same thing is true for operation systems, we run our program which turns into a process that uses bit of memory and access disk and network but we really don't know how this is done and as a result we as engineers are bound to write inefficient code.

I built this course to demystify what I believe are the fundamentals operating systems to software engineers. Like all my courses, I recommend the student having some programming experience to take this course, it just makes the course relatable. I will be using multiple operating systems like Linux, Windows and Mac in this course.

I hope you enjoy it.

Watch Online

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 50 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: Welcome

All Course Lessons (50)

#Lesson TitleDurationAccess
1
Welcome Demo
03:02
2
Who is this course for?
05:10
3
Course Overview and Outline (must watch)
20:41
4
Course Downloadable Content
01:02
5
Section Intro Why an OS
05:55
6
Why do we need an Operating System?
27:36
7
System Architecture Overview
51:51
8
Anatomy of a Process Section Intro
06:44
9
Program vs Process
53:00
10
Simple Process Execution
23:57
11
The Stack
28:28
12
Process Execution with Stack
37:20
13
Data section
21:03
14
The Heap
47:46
15
Process Section Demo
10:35
16
Memory Management Section Intro
08:12
17
The Anatomy of Memory
44:11
18
Reading and Writing from and to Memory
24:26
19
Virtual Memory
51:52
20
DMA
16:53
21
Memory Section Demo
13:39
22
Inside the CPU Section Intro
04:22
23
CPU Components and Architecture
01:05:44
24
Instruction Life Cycle
19:11
25
Pipelining and Parallelism
20:03
26
Inside the CPU Demo (CPU wait times)
21:31
27
Process Management Section Intro
11:42
28
Process vs Thread
01:00:00
29
Context Switching
37:24
30
Concurrency
28:39
31
Demo Process Management
14:38
32
Storage Management Section Intro
08:45
33
Persistent Storage
48:10
34
File Systems
01:10:17
35
What really happens in a file IO?
11:03
36
Storage management Demo
25:37
37
Socket Management Section Intro
05:51
38
Network fundamentals
01:42:34
39
Sockets, Connections and Kernel Queues
33:53
40
Sending and Receiving Data
24:02
41
Socket Programming Patterns
15:04
42
Asynchronous IO
28:37
43
Socket Management Demo
40:14
44
OS Concepts Section Intro
03:05
45
Compilers and Linkers
36:45
46
Kernel vs User Mode switching
11:02
47
Virtualization and Containerization
24:44
48
Course Summary
02:16
49
How Google Improved Linux TCP/IP Stack by 40%
12:03
50
How TikTok's Bytedance improved Linux reboot
10:22

Unlock unlimited learning

Get instant access to all 49 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Comments

0 comments

Want to join the conversation?

Sign in to comment

Similar courses

Intermediate Software Engineering  Fundamentals

Intermediate Software Engineering Fundamentals

Sources: Caleb Curry
The course "Fundamental Principles of Software Development for Middle Developers" is a logical continuation of the beginner program. If in the first stage we...
5 hours 2 minutes 52 seconds
Team Dynamics and Soft Skills for Developers | Don’t Imitate

Team Dynamics and Soft Skills for Developers | Don’t Imitate

Sources: Anthony Alicea
Whether you've learned software development at a school, bootcamp, online, or are entirely self-taught, there is one key aspect to being a developer that you we
5 hours 8 minutes 46 seconds
Bug Bounty - An Advanced Guide to Finding Good Bugs

Bug Bounty - An Advanced Guide to Finding Good Bugs

Sources: udemy
Bug bounties are evolving year after year and thousands of infosec enthuasiasts are looking to join the boat. Having a great place on that boat requires dedicat
10 hours 26 seconds
The Networking Bootcamp (CompTIA Network+ Certification)

The Networking Bootcamp (CompTIA Network+ Certification)

Sources: zerotomastery.io
Go from complete beginner to passing the CompTIA Network+ certification exam. You'll learn networking fundamentals, the latest best practices, and everything...
8 hours 39 minutes 57 seconds
Building an Interpreter from scratch

Building an Interpreter from scratch

Sources: udemy, Dmitry Soshnikov
How programming languages work under the hood? What’s the difference between compiler and interpreter? What is a virtual machine, and JIT-compiler? And what abo
2 hours 59 minutes 53 seconds