Understanding Operating Systems (6th Edition)
Ann Mclver McHoes and Ida M Flynn
Course Technology, Cengage Learning
‘Understanding Operating Systems’ is for everyone, the uninitiated (like me) who have been using computers for years but never quite knew what makes this machine tick and the technical ones who already know it and want to brush up their knowledge. It presents a very technical subject in a not-so-technical manner which is not only relatable but creates a lasting impression on the readers mind. The authors present the concepts with a fun attitude while maintaining a constant flow to things such that the next topic is but an obvious consequence to its preceding topic. A good book and thoroughly enjoyable read.
The book is divided into two main parts. The first part is Operating System agnostic which demonstrates the common fibres which should constitute any operating system. The four major limbs of an operating system – Memory Management, Processor Management, File Management and Device Management (okay a fifth auxiliary limb too, Network Management) are the major chapters where concepts are discussed. The philosophy behind keeping the Network Management stems from the old philosophy of computer being essentially a computing machine, though the author also debunks this same notion by elaborating that now, Network Management is just as essential (it is just that it isn’t a very essential part of a logical operating system and can be developed on top of the rest).
The author starts with the very primitives, how the concept originally began; for example, memory management which started with a single user single program usage where the program could not be as larger than the available physical memory (RAM). While illustrating this memory management technique, the authors directs our attention towards the good and the bad of the technique. The good thing about doing that is, we could put on our thinking caps and deduce a mitigation plan. Now, if one can think logically, one will arrive at a more or less similar technique that evolved in the past. The author should get due credit here for doing such a fine job that a layman like me could think of what next, because the moment the author stopped telling these points, my imagination also flustered and balked.
Another good point of the book apart from its gradual and easy learning curve is the way the author has explained the concepts, the ideas that were brought into Computer design from other, (considered) non-scientific areas of study, though everything is science. For example, the Dining Philosophers problem which might lead to starvation of few philosophers (should they agree to eat like that), the Bankers Algorithm to hand out loans to customers within their credit range as long as the bank has funds to satisfy at least the smallest maximum request for loan (for efficient resource allocation without deadlocks), the Consumer and Producers problem for efficient synchronization between entities competing for the same set of resources, these are problems from Banking, Economics, and Mathematics, but have been used in solving problems of computer’s bottlenecks.
To mull over this concept further, operating system is about creating economy in computation and the convergence of concepts from erstwhile diverse fields into a unified economic and profitable system called Operating System should come as no surprise. The stratification of jobs and other things in a computer to make it more efficient and the entertaining and thought provoking questions asked in the discussion make it a light hearted read. Incidentally, many paragraphs in the book made me draw parallelism between computers and humans, which led me to write a post previously. (Here)
The second part of the book has each chapter dedicated to different popular Operating Systems which are currently prevalent or are there for historical reasons. Having read and understood the underlying concepts, the focus in these chapters is on the design objectives of each OS and how and what methods which we learnt previously have been used to achieve the mentioned goals.
Overall, a beautiful read. I cannot compare its technical exhaustiveness with respect to other books. My CSE pals tell me Galvin’s is the most comprehensive introductory text into Operating Systems, but they haven’t read this book in the first place. To me, it was satisfying because now, I am more informed of what and how things have evolved, which is often a stepping stone to creating what has never been. I appreciate how locality of reference in user design can help the code run faster in the system and what trade-offs might be needed.
Above all, I’ve realized that ‘Everything is a matter of time and space’ complexities and Big Oh! ;-)