
In this timely new book, Maurice J. Bach traces the popularity of the UNIX® System throughout the computer industry. The author describes the internal algorithms and structures that form the basis of the operating system (the kernel) and their relationship to the programmer interface. Among its key features, the book: • describes the outline of the kernel architecture • introduces the system buffer cache mechanism • includes data structures and algorithms used internally by the file system • covers the system calls that provide the user interface to the file system • defines the context of a process and investigates the internal kernel primitives that manipulate the process context • presents the system calls that control the process context • describes process scheduling discusses memory management, including swapping and paging systems • outlines general driver interfaces, with specific discussion of disk drivers and terminal drivers • presents an overview of streams • introduces inter-process communication and networking, including System V messages, shared memory, and semaphores • explains tightly coupled multiprocessor UNIX® systems • investigates distributed UNIX® systems
Because everything else is a rehash by someone less expert, with fewer resources, and weaker motivation...and because there has not been any important change to the core design since Bach wrote it, everything else muddles the core design with implementation details built on top of the design ideas (e.g. Linux).
https://archive.org/details/DesignUNIXOperatingSystem/page/n...
Operating Systems, Three Easy Pieces is a reasonable book about operating systems in general.
https://pages.cs.wisc.edu/~remzi/OSTEP/
If you are going to run Linux, I recommend Ubuntu as the easy path. There are good arguments for other distros. But you probably don’t need an argument.
¹ https://books.google.de/books/about/The_Design_of_the_UNIX_O...
* Take a course like Nand2Tetris (freely available online)
* Read a good OS book, e.g. The Design of the UNIX Operating System by Maurice Bach or any Andrew Tanenbaum book on the subject.
* Search for "unix systems programming" or "linux systems programming" and you will find some fantastic free books online.
* Read the free Linux Device Driver book. It is outdated but will still provide enough information to help you self navigate Linux driver code.
* Visit https://wiki.osdev.org/Expanded_Main_Page
* And as they say, "Read the source, Luke"; read the Linux source code. First you will have to identify which subsystem you are interested in, and then start browsing that.
https://archive.org/download/DesignOfTheUnixOperatingSystemB...
It is the high level bit for understanding Linux (and Unix).
Good luck.