I had Remzi for two courses at UW, one of them being Operating Systems. He's the best professor I've ever had, and this book is an amazing tool for learning the basics of an Operating System. It's a quick read, and I would recommend it to anyone looking for a free Intro to OS resource.
Same, easily my favorite professor. We were one of the first classes to use the book (he was still writing it), and it's been a godsend. I've nailed every OS-related interview question and use a bunch of the concepts daily.
4 years after I took the course I ran into him at an event at Google, and he remembered me without pause. Really a great guy.
Remzi gets bashful hearing this kind of praise, but I'll pile on. He's had a profound effect on me in the classroom and as a mentor. A lot of you probably use techniques Andrea and Remzi were directly involved in advancing -- MapReduce, in-FS checksumming, etc etc.
This book was already the the core of the intro OS class when I took it several years ago; it's only gotten better and more complete since then.
Sadly, I didn't have Remzi at UW although I heard he was a great professor. Our OS class used his book and I'd vouch for it in a heartbeat. Worth a read if you want digestible CS. I remember being most interested in the 'free' part as a broke college kid, but it turned out to be one of my favorite CS books.
I'm in the Operating System class right now for my CS degree and thought I might look into some alternative resources to supplement the class material. This looks super useful, thanks for the recommendation!
I've learned/taught from the "dinosaur book" [1] and for the price tag it's pretty bad. It's a nice overview but it has several problems. First of all the section on CPU scheduling is pretty sparse and confusing. I skimmed through this book and it seems on par. But the one thing this book skips is Rate monotonic and Earliest deadline first - which I found to be rather difficult algorithms. This is because whenever you would research it - I would find other professors using screenshots from the dinosaur book that doesn't help explain it at all. I would be happy to give you my notes on it.
I really wish that was a an open source project that took developers and/or students from start to finish of an operating system. I should preface that and say that it should be easy to understand and use. I know about xv6 and I feel like that's too complex. I've found MikeOS [2] but I will have to study/extract it into pieces.
In any case - I really think this practice should be more widespread. Unfortunately, I've found many people to offer "lazy criticism" they point out something is wrong but don't want to offer any help to make it better. The Rooks Guide to C++ is a perfect example of this - yeah it's not perfect and doesn't contain all C++ knowledge you could ever know about (there have been a lot of negative criticism about the book). But that's not the point - it's designed for people who know nothing about programming to learn about C++ in a 16 week course. It's goal isn't to replace the Stroustrup expert C++ book.
The Arpaci-Dusseaus are some of my favorite professors at the UW - they're not only first-rate researchers but fantastic teachers.
Remzi in particular has a very dry but hilarious sense of humor. His exams are a hoot (but are also great questions to see if you really know your material)
Most useful thing I have picked up from this is the notion of interposablity. It captures the basic idea behind both LD_PRELOAD hacks on unix and the way servers can be stacked in Plan 9. Very useful new term.
So, what are the pre-reqs for studying operating systems? I'm guessing C and Architecture? Or would it be better to study architecture after an OS course/book?
After searching online for common paths into studying operating systems I've come to the conclusion that you should be fairly comfortable with C and probably read 'Computer Systems: A Programmer's Perspective' before an OS or Architecture book. ~ At least that's what I am going to do.
I found the book very accessible because a lot of the concepts are high level abstractions. So I'd say it's worth reading without worrying about prerequisites. Since the PDF is free, it's just a matter of time.
I pretty much learned C in this class. I had written a single, very simple C program in a prereq class (write a C program, then rewrite it in assembly was the gist of the class).
Apples and oranges. APUE is an application development book, i.e. it takes the Operating System calls mostly for granted. Operating Systems books explain how the syscalls and internal services are created/managed and what the trade-offs are.
Just a heads up- I purchased the ebook sometime ago (v0.6.1 I think) and as new versions came out lulu.com declined to offer me the updated versions without making a new purchase.
Maybe the policy has changed- I don't know. Just thought I'd let others know, as I've been spoiled by O'Reilly
Do you know how Andrea and Remzi feel about that? They've generously made the book free overall, so I'd guess (without real evidence) that they'd prefer for people to get version updates if they do choose to purchase this format.
but... they did buy it... he got something not being offered for free: the combined ebook, which is in a different file format and contains extra material