Date: August 30, 2024
Topic: Operating Systems Organization
Recall
Monolithic OS already provide all functionalities from the start, but makes customization hard and has large memory footprint
Notes
Monolithic OS

All functionalities already part of the OS
- Every possible service that any of the applications can require or any hardware can demand is already part of the OS
- Operating system can end up being very large
Benefits:
- Everything is included
- Inlining, compile-time optimizations
Drawbacks:
- Hard to customize, less portable and hard to manage
- Memory footprint due to large size of OS
- Performance is impacted due to above
Modular OS extend their functionality through installing modules optimized for certain operations.
This makes it lightweight and is what modern OS are using
Modular OS

Add additional functionalities through modules
- Modern approach, comes with a basic set of features in the OS and everything else can be added as a module
- Can customize which file system or scheduler the OS uses
- OS specifies required interfaces that an application must implement in order to be part of OS
- Can dynamically install the module that makes sense for certain workloads
- E.g., one module may be optimized for random file access while another is optimized for sequential access
Benefits:
- Easier to maintain and upgrade
- Smaller memory footprint
- Less resources needed (more memory can be used for applications)
Drawbacks:
- Indirection can impact performance since we need to go through interfaces
- Maintenance can still be an issue as modules can come from completely different places
- However, this approach still delivers significant improvements over the monolithic approach
Microkernels are very lightweight OS that are usually specifically designed for certain hardware, making it hard to customize
A lot of IPC is done as well, which is expensive due to frequent user/kernel crossings
Microkernel
- Only requires the most basic primitives at OS level
- Support basic services such as to represent an executing application, its address space and its context (thread)
- Everything else (applications like DB, FS, Disk Drivers) runs outside of the OS kernel at user/unprivileged level
- This means a lot of inter-process interactions are needed
- Microkernel itself will support inter-process communications (IPC) as one of the core abstractions and mechanisms
Benefits:
- Very small size (lower overheads and better performance)
- Is easy to verify to test that the code behaves exactly as it should
- Useful for environments where it is critical for the OS to behave properly (embedded devices / certain control systems)
Drawbacks:
- May not be very portable as these kernels are very customized to specific hardware
- Complex to develop software for these kernels (hard to find common components)
- Frequent costly user/kernel crossings due to IPC
<aside>
📌 SUMMARY: We can have monolithic kernels, where everything is included; modular kernels, where functions are extended through modules and microkernels which are usually specific to certain hardware
</aside>
Date: August 30, 2024
Topic: Popular OS
<aside>
📌 SUMMARY: Overview of the Linux and MacOS architectures
</aside>