- Backend Weekly
- Posts
- Demystifying Operating System for Backend Engineers
Demystifying Operating System for Backend Engineers
I covered the most important concepts to learn in operating systems as a backend engineer
Hello “👋”
Welcome to another week, another opportunity to become a Great Backend Engineer.
Today’s issue is brought to you by MasteringBackend—a great resource for backend engineers: Next-level Backend Engineering training and Exclusive resources.
I know today is not Saturday, and I’m sending a newsletter issue. Sorry for flooding your mailbox.
I wanted to complete my monthly streak of sending four free newsletter issues demystifying backend engineering concepts.
This is supposed to go out to premium subscribers, but here we are.
Before we get down to the business of today. Exploring Operating Systems for Backend Engineers.
I have a special announcement:
The pioneer product of this newsletter is launching its learning platform for backend engineers in the first week of February.
Read about all the features here -> Masteringbackend and Demo here.
We are offering a special discount and benefits to specific individuals (just 10 persons) called SuperFan.
Here are the benefits of a SuperFan:
Lifetime access to MasteringBackend Platform, including unlimited access to all courses(Text, Video), Projects, Roadmaps, Tasks, Backend Challenges, etc
Lifetime access to the Get Backend Jobs platform, including unlimited access to Backend-Only Jobs, Manage Job Applications, Create Job Streak, etc. (https://gbj.vzy.io)
Unlimited Access to our Backend Engineering Community (https://masteringbackend.com/community)
Unlimited Access to our Premium Newsletter (https://masteringbackend.beehiiv.com)
We are also releasing the following courses before ending of March this year.
You will have access to all these courses and more that will be released without paying a dime.
Subscribing to the Super Fan one-time plan gives you full benefit. As long as masteringbackend.com exists, you have paid in full.
Imagine having this opportunity to pay once and use it forever with Udemy, Coursera, Eductive, and Codecademy, to mention a few.
That’s exactly what Mastering Backend is offering now. It's a one-time thing, and it's ending today.
Now, back to the business of today.
The operating system is a broad topic; we can not finish it in just one newsletter issue, no matter how hard we try.
However, the plan here is not to turn you into an Operating System expert but to give you direction into what to learn in Operating Systems that will be useful in your career as a Great Backend Engineer.
Are you ready?
An operating system is the most important software in a computer. It is system software that manages the resources of a computer. It manages the memories, processes, and other software.
These resources include but are not limited to the central processing unit(CPU), computer memory, file storage, input/output (I/O) devices, and network connections.
Types of operating systems
If you’re starting, you’ll probably start using the operating system that comes pre-loaded with the system. However, updating, removing, and installing a new operating system on your machine is possible. For instance, you can remove the Windows operating system and install the Linux one.
Below are the three main types of operating systems:
Windows
Mac
Linux
Next, explore important concepts to learn as a backend engineer in operating systems.
The 10 Operating System Concepts for Backend Engineers
POSIX Basics
POSIX (Portable Operating System Interface) is a set of standards that define a common interface for compatibility between operating systems. It was developed to promote software portability and interoperability across UNIX-like operating systems.
Processes and Process Management
A process is a running program in an operating system, and these running programs are executed sequentially. For instance, when you write and execute a program, it becomes a process that executes all the instructions you specified in the program accordingly.
Threads and Concurrency
Threads A thread is the smallest unit of execution within a process. A process is an independent program with its own memory space, while threads within a process share the same memory space. Threads allow multiple tasks to be executed concurrently within a single process, enabling better resource utilization and responsiveness.
Concurrency refers to the ability of an operating system to manage multiple tasks and execute them seemingly simultaneously. In a concurrent system, multiple tasks progress independently, and the operating system switches between tasks to give the illusion of simultaneous execution. This allows efficient utilization of CPU time, especially when some tasks are waiting for input/output or other resources.
Scheduling
Scheduling in operating systems refers to determining which processes or threads should be allocated CPU time and in what order. The scheduler is a critical component of an operating system that manages the execution of processes or threads to achieve efficient and fair utilization of system resources.
Memory Management
Memory management in operating systems efficiently manages the computer's primary memory (RAM) to enable the execution of multiple processes or programs simultaneously. The main goals of memory management are to ensure that processes can coexist peacefully in memory, prevent conflicts, and optimize memory utilization.
Inter-Process Communication
Inter-process communication (IPC) in operating systems refers to the mechanisms and techniques that allow different processes to exchange data, share resources, and communicate. IPC is essential for coordinating activities, enabling cooperation between processes, and facilitating parallel execution of tasks.
I/O Management
I/O (Input/Output) Management in operating systems manages the communication and interaction between the computer's hardware devices and software processes.
Virtualization
Virtualization in operating systems refers to creating virtual resources or environments that abstract and mimic physical hardware or software components. It allows multiple virtual instances (e.g., virtual machines, virtual storage, virtual networks) to coexist on a single physical machine, providing isolation, flexibility, and resource optimization.
Distributed File Systems
A Distributed File System (DFS) in operating systems is a network-based file system that allows multiple computers or nodes in a distributed computing environment to access and share files and data stored on remote storage devices.
Distributed Shared Memory (DSM) in operating systems is a concept that allows multiple processes running on different nodes in a distributed computing environment to share a common memory space.
I have already created an article that explores the 10 concepts of operating system backend engineers should know. Click here to read more details about each of the concepts.
That will be all for this one. See you on Saturday.
Don’t forget to check out the Mastering Backend Super Fan plan. It comes with unmatched benefits.
Weekly Backend Engineering Resources
Backend Engineering Hub by Solomon Eseme
Docker: The Definitive Guide by Solomon Eseme
Golang Essentials for Backend Engineers by Solomon Eseme
The 10 Operating System Concepts for Backend Developers by Solomon Eseme
What is a Server? by Solomon Eseme
That's all for this letter. See you next time, and stay safe!
It will help if you forward or share this email with your friends and leave a comment to let me know what you think. Also, if you've not subscribed yet, kindly subscribe below.
I moved my newsletter from Substack to Beehiiv, and it's been an amazing journey. Start yours here.
Reply