Reddit mentions: The best computer operating systems theory books
We found 8 Reddit comments discussing the best computer operating systems theory books. We ran sentiment analysis on each of these comments to determine how redditors feel about different products. We found 6 products and ranked them based on the amount of positive reactions they received. Here are the top 20.
1. Starting Forth: An Introduction to the Forth Language and Operating System for Beginners and Professionals (Prentice-Hall Software Series)
- Used Book in Good Condition
Features:
Specs:
Height | 9.75 Inches |
Length | 7.5 Inches |
Number of items | 1 |
Weight | 1.31836432676 Pounds |
Width | 1 Inches |
2. Operating Systems: Internals and Design Principles, Global Edition by Stallings, William (2014) Paperback
Specs:
Height | 9.21258 Inches |
Length | 7.04723 Inches |
Weight | 2.37658318436 Pounds |
Width | 0.94488 Inches |
3. Solar Cells: Operating Principles, Technology, and System Applications (Prentice-Hall series in solid state physical electronics)
Specs:
Weight | 1.2 pounds |
4. Operating Systems Design and Implementat: Design and Implementation
- Special flatlock construction
- Tucano Anit-Slip System
- Rugged 3mm neoprene
Features:
Specs:
Height | 1.85039 Inches |
Length | 7.99211 Inches |
Weight | 2.7116856455267 Pounds |
Width | 9.99998 Inches |
5. Operating System Principles (Prentice-Hall Series in Automatic Computation)
Specs:
Number of items | 1 |
Weight | 1.88 Pounds |
🎓 Reddit experts on computer operating systems theory books
The comments and opinions expressed on this page are written exclusively by redditors. To provide you with the most relevant data, we sourced opinions from the most knowledgeable Reddit users based the total number of upvotes and downvotes received across comments on subreddits where computer operating systems theory books are discussed. For your reference and for the sake of transparency, here are the specialists whose opinions mattered the most in our ranking.
Senior Level Software Engineer Reading List
Read This First
Fundamentals
Development Theory
Philosophy of Programming
Mentality
Software Engineering Skill Sets
Design
History
Specialist Skills
DevOps Reading List
> Thanks for your time, my god this was longer than expected.
I suppose in the age of twitter that was a bit of a novel. For us old fogies, that's just a bit more than a post card :)
Introduction to Algorithms is the book for learning everything about algorithms. You'll learn all the standards; how to analyze them (space/time efficiency, Big-O, Big-Theta); and how to prove them; etc.
If you want to learn a great low-level language, the typical things to learn are assembly and C, but I would highly suggest learning Forth. There's tons on the web about it, but the seminal book was Starting Forth. You get all of the low-level detail of assembly, a bit of scaffolding, and you learn to build your higher level language structures as you need them. Great fun, and it's turned out to be very useful through the years, even though I never get to use it in production/release.
In short, the answer is virtual memory and the protected mode flat model that the past generations of CPU architecture and operating systems have been using.
As you may know, programs are never given full, direct access to the RAM banks; the operating system abstracts this layer away from them in the form of virtual memory. Virtual memory is basically a system whereby you can map physical memory addresses to non-physical ones the OS controls and can readily re-arrange. Thanks to virtual memory the OS can trick an application into thinking it has way more RAM than it actually has and this also enables swapping processes out to disk when the system is running out of memory because there are too many processes being run at the same time. As I pointed out before, since virtual memory is fully managed by the kernel, it can move out chunks of a program's address space to disk, a process known as "paging".
Now, back in the DOS era, virtual memory followed the real mode segmented model, which, in very simple terms meant that, even though processes could be shuffled back and forth between RAM and disk, there were no safeguards in place to prevent a process from messing up another process' memory space via a dodgy pointer pointing to a memory address beyond the scope of the faulty process.
One of the major goals of the successor to this virtual memory model, "protected mode flat model" was to allow the kernel to create a completely isolated address space for the processes it spawns and stopping a rogue program from altering other processes like before. Whenever such an attempt is made, a "segmentation fault" (SIGSEV) or "general protection fault" is raised by the kernel, which in the case of Linux, will prompt the kernel to swiftly kill the offending process.
In practical terms, this means your application won't be able to reach beyond the virtual memory address space it has been allocated (unless it's a kernel-space process, like a kernel subsystem or device driver) and can in no way communicate with other processes by reading or writing memory that belongs to them. In order to accomplish that, you'll need to make use of inter-process communication (IPC) techniques like Unix sockets, pipes, RPC, etc.
This is by no means an in-depth or 100% accurate explanation though. If you've got any follow-up questions I'm more than happy to answer them.
As for the literature, pretty much any textbook about operating system architecture will cover virtual memory to a great extent. I can recommend Operating Systems: Internals and Design Principles and Modern Operating Systems.
Here are a few more books that touch upon the topic of virtual memory:
Assembly Language Step-by-Step: Programming with Linux covers the topic of virtual memory and the different models that have evolved over time over its first few chapters.
The Linux Programming Interface: A Linux and UNIX System Programming Handbook covers this subject (and many, many more) from a Linux systems programmer perspective.
What Makes It Page?: The Windows 7 (x64) Virtual Memory Manager, in case you're interested in learning how Windows does it.
EDIT: added IPC info
Sure!
The Physics of Solar Cells by Jenny Nelson is a nice book. Very dense, a little mathy, and assumes some prior knowledege.
This book by Martin Green is the gold standard, though it is probably less accessible than Nelson's and harder to find.
It's probably necessary to have a good grasp of freshman physics, and it would certainly be helpful to understand classical electrodynamics and some solid state physics, which itself requires a little bit of quantum mechanics.
Necessary math for all of this is some calculus, some differential equations, and some linear algebra.
There may be a much friendlier resource out there; I understand if this is a formidable stack.
According to the CP/M wikipedia page, you need the following to run it:
So with the parts list above along with the UART should be enough to meet the requirements. You will need to use banked memory or a similar mechanism (since you need the bootstrap code at address 0, but CP/M needs RAM at address 0 as well). Only problem is the floppy drive, which you should be able to overcome with a Compact Flash card, an CF to IDE converter, and a IDE interface. I haven't tried this myself but I think something like this would work.
If you were interested in writing your own OS, Operating Systems by Woodhull Tanenbaum is a good book on the topic.
Some books on my wishlist (not sure if you're okay with math):
TAOCP
Operating System Principles
Computer and the Brain
Path to the Quantum Computer
Hey now - Slackware 96 is still the Internet's Favorite 32-bit Operating System