Operating System Concepts

Abraham Silberschatz, Peter B. Galvin, Greg Gagne

Mentioned 6

Another defining moment in the evolution of operating systems Small footprint operating systems, such as those driving the handheld devices that the baby dinosaurs are using on the cover, are just one of the cutting-edge applications you’ll find in Silberschatz, Galvin, and Gagne’s Operating System Concepts, Seventh Edition. By staying current, remaining relevant, and adapting to emerging course needs, this market-leading text has continued to define the operating systems course. This Seventh Edition not only presents the latest and most relevant systems, it also digs deeper to uncover those fundamental concepts that have remained constant throughout the evolution of today’s operation systems. With this strong conceptual foundation in place, students can more easily understand the details related to specific systems. New Adaptations Increased coverage of user perspective in Chapter 1. Increased coverage of OS design throughout. A new chapter on real-time and embedded systems (Chapter 19). A new chapter on multimedia (Chapter 20). Additional coverage of security and protection. Additional coverage of distributed programming. New exercises at the end of each chapter. New programming exercises and projects at the end of each chapter. New student-focused pedagogy and a new two-color design to enhance the learning process.

More on Amazon.com

Mentioned in questions and answers.

I'm planning to write an operating system and I don't know very much about operating systems. Are there any good resources or books to read in order for me to learn? What are your recommendations?

Operating System Concepts is the book we used at University. It's quite ugly BUT the information inside are well explain (from basic memory management, to how to OS decide what to execute or how to avoid deadlock). Pretty wide.

alt text

While old, these books are very good:

Operating System Design with Xinu

alt text

Operating System Design-Internetworking With XINU, Vol. II

alt text

3: http://Operating System Design-Internetworking With XINU, Vol. II

Operating Systems Implementation Prentice Software

alt text

This book is written by Tanenbaum, the main guy behind Minix, which is what Linux was based on. It provides good overviews for basic OS concepts like memory management, file systems, processes, etc. The concepts in this book book are intimately tied to examples of the Minix OS, which is a good thing.

I think you should start by something like that.

We used Andrew Tannenbaum's Modern Operating Systems at the university I attended. I highly recommend it for it's clear explanations of the tradeoffs inherent in many of the design decisions that you'll run up against. This book is a little bit more "fair and balanced" than the Minix book.

alt text

I also recommend this book because, despite his net-famous flame war with Linus Torvalds, few of his biases come through in the book. Also, he's a pretty decent writer, and the book is actually entertaining.

I've always been a largely independent learner gleaning what I can from Wikipedia and various books. However, I fear that I may have biased my self-education by inadvertent omission of topics and concepts. My goal is to teach myself the equivalent of an undergraduate degree in Computer Science from a top university (doesn't matter which one).

To that end, I've purchased and started reading a few academic textbooks:

As well as a few textbooks I have left over from classes I've taken at a mediocre-at-best state university:

My questions are:

  • What topics aren't covered by this collection?
  • Are there any books that are more rigorous or thorough (or even easier to read) than a book listed here?
  • Are there any books that are a waste of my time?
  • In what order should I read the books?
  • What does an MIT or Stanford (or UCB or CMU ...) undergrad learn that I might miss?

Software engineering books are welcome, but in the context of academic study only please. I'm aware of Code Complete and the Pragmatic Programmer, but I'm looking for a more theoretical approach. Thanks!

I think you can use most of the other books for reference and just absorb Programming Pearls in its entirety. Doing so would make you better than 90% of the programmers I've ever met.

The "Gang of Four" Design Patterns book. The Design Patterns course I took in college was probably the most beneficial class I've ever taken.

First, I wouldn't worry about it. But if you'd like a book to learn some of the abstract CS ideas, I'd recommend The Turing Omnibus or Theoretical Introduction to Programming.

If I were deciding between hiring two programmers and neither had much experience, but one had a CS degree and the other didn't, I'd hire the one with the CS degree. But when you get to comparing two programmers with a dozen years of experience, the degree hardly matters.

Even i'm in the same plane: studying computer science in my free time after work; These are some of the books i have in my shelf right now

  1. Applying UML and patterns - Larman
  2. Introduction to algorithms - Cormen
  3. Discrete mathematics and its applications - Rosen
  4. Software Engineering
  5. Advanced Programming in the UNIX Environment

Will udpate this list further as soon as i finish them... :-)

File Structures: An object oriented approach with C++

A lot of good info about block devices and file structuring which you won't find in any of the books you listed. It got a few critical reviews on Amazon because people didn't like his code examples, but the point of the book is to teach the concepts, not give cut and paste code examples.

Also make sure to get a book on compilers

Biggest two omissions I see:

For operating systems I prefer the Tanenbaum instead of the Silberschatz but both are good:

And about the order, that would depend on your interests. There aren't many prerequisites, automata for compilers is the most obvious one. First read the automata book and then the dragon one.

I don't know all the books you have, but the ones I know are good enough so that may mean the others are decent as well.

You are missing some logic and discrete math books as well.

And let's not forget some database theory books!

I'm a bit confused about pure segmentation due to in my head always existed the idea of virtual memory.

But as I understand pure segmentation is also imagining a virtual address space, divided in segments that are ALL loaded in RAM.

The difference with virtual memory with segmentation, is that possibly there's some segment that it's not in RAM.

Is this correct?

I ADD A QUESTION: Is there a practical difference between segmentation combined with paging, and a two-level paging?, it's the same except for the "limit" protection of the segment method. Or there's another difference?

If you're serious about understanding memory management at this level, an excellent explanation can be found by reading Operating System Concepts by Silberschatz, Galvin, and Gagne. You should be able to find an inexpensive, older edition.

Want to write a paper on Scheduling Algorithms (Operating System)!!!

Need suggestions on books to read, where to start from , which programming language to prefer.....

The Operating System is to be Linux

My answer is Linux point of view.
1. Very Basic knowledge can be gathered from the book http://www.amazon.com/Operating-System-Concepts-Seventh-Edition/dp/0471694665
2. Go through the Linux kernel source for how exactly the scheduling is implemented. Linux kernel is full of C codes only.
/usr/src/linux-3.4.2/kernel/sched folder of 3.4.2 kernel has source codes for scheduler implementations.

i need good book for basics of networking and about os. I am first year cse student, I want to get into hacking world so need to get knowledge of networking and working of os. right now I have no knowledge of this, so can u please suggest some good book for starting on these topics. thaks.

I think that "Operating System Concepts" (silberschatz, galvin and gagne) is a very good book for beginners to understand the basics of the operating systems


I'm studying operating systems with this book and following some exercise guides from the university: scheduling, synchronization, memory, file system, I/O...

It's an interesting topic, but I've to take the exam in a month so I've a short amount of time to deeply learn it. I tried reading a linux scheduler for example, but I couldn't understand it very well because of my limited C knowledge.

I'm looking for comprehensive material(interactive at best), I've found this about semaphores(synchronization) that seems really nice and I'm about to start looking at it.

My suggestion is, in addition to search for some interactive learning solutions, to read some chapters of Modern Operating Systems book by A. S. Tanenbaum

I studied it for Operating Systems and Architecture course (@ university - Computer Science, 2nd year) and it's very good as the author makes concepts simple to understand!