Fundamentals of Operating Systems
What you'll learn
- Learn how operating systems work
- Understand how applications run within the OS
- Write efficient applications leveraging the understanding OS works
- Understand the cost of system calls
- Understand how CPU executes processes
- The role of the kernel
- CPU Architecture and Caches
- Virtual Memory
- Socket Programming
- Storage and File system management
Requirements
- Recommended to have a programming experience
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.
Who this course is for:
- Software Engineers who want truly understand the OS
Instructor
Early in my career 20 years ago I built database applications without fully grasping their inner mechanics. Facing performance issues, racing conditions bug and even corruption often left me helpless.
I resolved to truly understand the workings of database systems, ensuring I knew every query from my app and its execution in the db and what I choose to make as a transaction and what I make into an atomic query.
From that day I have fascinated by pursuing deep understanding of what is happening behind the scenes in software. If you follow me here you would see deep dive posts about backend, databases and operating systems.
If you enjoy pursing the internals, I think you may like my courses.