In this blog, we are going to look at ten best free books for learning about Operating System. First, let us familiarize ourselves with what Operating system is.
What is an Operating System?
An Operating System (OS) is a software that enables various programs to run through communication with the underlying hardware. Every electronic device has an operating system which provides the system basic functionality. Common operating systems for current computers include:
- Windows Operating Systems
- OS X
While these Operating Systems are different and from different vendors, they all achieve the same goal of being able to manage files and folders. They are provide a graphical interface where users interact with the system applications and utilities. Linux OS provide minimal installations that do not have a graphical interface and user only work from the command line. OS X is developed to be used in Apple systems while Windows and Linux can be used in any standard PC hardware. Mobile devices also come specific operating systems depending on the vendors. Common mobile OSes include Android, iOS, and Windows Phone, which are developed specifically for portable devices.
The books described below should help learners learn more about Operating Systems and some of them actually teach how to develop an operating for interested developers.
1. A short introduction to Operating Systems (2001) – Mark Burgess (PDF)
The book is suitable for beginners who are getting their hands into computing. It begins from the simple introduction of an operating system which touches the key concepts and also explains the software and hardware parts of the operating system. The learner will be able to understand operating system tasks, processes and threads, memory and storage, network services and protocols, TCP/IP networks as well as security design considerations, each topic giving detailed information of what it is explaining, some of which with examples.
Link: A short introduction to operating systems (2001) – Mark Burgess
2. Computer Science from Bottom Up
As the name suggests, Computer Science from Bottom up, begins from the fundamentals of an operating system and how the applications are compiled and executed. The book make use of (Linux) open source operating systems to teach about operating system. It also used diagram illustrations and examples to explain concepts which makes it easy for the learners to understand. Abstraction concepts are explained with C language example. Some of the major topics included:
- General Unix and Advanced C
- Binary and Number representation
- Computer Architecture
- The Operating System
- The Process
- Virtual Memory
3. How to Make a Computer Operating System
In you are an enthusiast developer who wishes to learn how to create an Operating System, this is suitable guide for you. This is an online book that explains how to write a computer operating system in C/C++ from scratch. The aim of the book is to build a simple UNIX-based operating system in C++ and the OS should be able to boot, start a shell, and be extensible.
4. How to Write a Simple Operating System in Assembly Language
This is another guide for developers who want to get into knowing how to create an operating system. The guide focuses on using x86 assembly language, aiming at developing a simple operating system with a few features, just for a starter. It explains everything needed and the fundamentals of the PC boot process and assembly language. The book requires that the learners understand and have worked with programming languages, and especially low-level language like C.
Link: How to write a simple operating system in assembly language – Mike Saunders
5. Operating Systems and Middlewire (PDF and LaTeX)
The book presents an introduction to Operating Systems, and Middleware, defining them and explains how they are used to achieve computational operations. With examples from Windows and Unix (mostly Linux and Mac OS) operating systems, the book helps the user to understand the structure of operating systems and how low-level and high-level applications are build. The major topics of the book are:
- Synchronization and deadlocks
- Atomic transactions
- Virtual memory
- Processes and protection
- Messaging, RPC and Web services
6. Operating Systems: Three Easy Pieces (PDF)
The free online book focuses on three major factors critical to operating systems: Virtualization, concurrency and persistence. The three concepts are crucial in understanding how operating systems does things such as schedule the CPU, manage memory and store files persistently.
7. Practical Filesystem Design: The Be Filesystem – Dominic Giampaolo (PDF)
The book covers information about filesystems, from the low-level to the high-level and includes other related topics such as e disk cache, the file system interface to the kernel, and the user-level APIs that use the features of the file system. It aims at giving the learner a thorough understanding of filesystems, how the Be File System (BFS) works as well as the issues involved in designing and implementing a file system. Major topics include:
- What is a File System?
- Other file systems
- The Data Structures of BFS
- Attributes, Indexing, and Queries
- Allocation Policies
- The Disk Block Cache
- File System Performance
8. Project Oberon: The Design of an Operating System, a Compiler, and a Computer – Niklaus Wirth & Jürg Gutknecht (PDF)
The book not only gives advice on how the Operating Systems are built but also practically illustrates how to built one. With a focus on Oberon , the book describes Oberon operating system, covering storage, file, display, text, and viewer managers. It also goes ahead to describe in detail the compiler for Oberon language. The topics covered include:
- Basic concepts and structure of the system
- The tasking system
- The display system
- The text system
- The module loader
- Device drivers
- The network
- The compiler
- A graphics editor
- Building and maintenance tools
9. Think OS: A Brief Introduction to Operating Systems – Allen B. Downey (PDF)
The book introduces Operating System to programmers. It introduces students to C language and help them learn how to write applications, without assuming that the students have already learned computer architecture. The books is useful to both those who want to learn how to write simple C applications and advanced learners who are curious to develop operating systems. The major topics include:
- Virtual Memory
- Files and file systems
- Memory management
- Condition Variables
10. Writing a Simple Operating System from Scratch – Nick Blundell (PDF)
his is another book for developers who want to learn to develop an operating system. It starts from the very basics of operating systems covering computer architecture and advances to what is needed to come up with a simple operating system. The topics focused on include:
- Computer Architecture and the Boot Process
- Boot Sector Programming
- Entering 32-bit Protected Mode
- Writing, Building and Loading your Kernel
- Developing Essential Device Drivers and a Filesystem
- Implementing Processes
These are just among the best books on Operating systems. I hope the books will be useful to you as you get into learning about operating systems. All the best to you!