How hard to build an OS?

Mohammad M Rahman
2 min readJun 28, 2022

--

By today’s standard of OS (operating system) and the requirements of applications, security, and laws it will be very difficult to build a good functioning securely, and evolving OS. This may be why we have only three major OS in the world today: Linux, Windows, and macOS. OS is a platform that involves hardware, software, and people so this requires a massive continuous collaboration to build, maintain and evolve the OS. An OS needs the collaboration of good designers and programmers as many different functionalities and services must be designed, coded, and integrated to work together such as bootloader, system calls, file system, ability to execute a file, a shell, and multiprocessing, etc. (Black, 2009).

The challenges and difficulties will also vary depending on the type of OS being built. For example, for Internetware OS “technical challenges still need to be resolved, including the architecture of Internetware OSs, performance and applicability issues, as well as security and privacy considerations” (Mei & Guo, 2018).

There are several aspects that will be difficult to build and evolve. For example, we know that OS should allow multiple computations to take place concurrently, divide the hardware’s time between the computations, keep track of where each one leaves off so that it can later correctly resume, control the interactions between the concurrent computations, forbid computations from modifying data structures, provide isolated areas of memory for private use by the different computations and provide support for controlled interaction of computations across time and space (Hailperin, 2019). These give rise to the issues of concurrency, deadlock, synchronization, virtual memory, and security. Any programmer of a complicated system requiring these functionalities is likely to introduce race bugs and security loopholes because concurrency and synchronization for example are hard to reason about (Hailperin, 2019).

Designing fast GUI for example can be difficult that does not crash or hang often or slows down. Also choosing a good shell interface and implementing it’s functionalities will require careful analysis of existing shells and perhaps backward compatibility. These issues also make designing and implementing OS very difficult.

An important but difficult aspect is how theory transitions to actual coding, if there is any use of assembly language or rather which programing languages may be used to implement some of these OS functionalities. Also there may be context or situation when concurrency fails and considering the implications and remedy for such a situation become difficult.

References

Black, M. D. (2009). Build an operating system from scratch. Proceedings of the 40th ACM Technical Symposium on Computer Science Education — SIGCSE ’09. Build an operating system from scratch: a project for an introductory operating systems course: ACM SIGCSE Bulletin: Vol 41, No 1

Hailperin, M. (2019). Operating systems and middleware : supporting controlled interaction. Thomson Learning, Inc.

Mei, H., & Guo, Y. (2018, July 1). Operating Systems for Internetware: Challenges and Future Directions. IEEE Xplore. Operating Systems for Internetware: Challenges and Future Directions

--

--

Mohammad M Rahman
Mohammad M Rahman

Written by Mohammad M Rahman

Research interest: Islam, Computer science, Psychology/Sociology. Please see my profile links for further info.

No responses yet