- Series: The Morgan Kaufmann Series in Computer Architecture and Design
- Hardcover: 656 pages
- Publisher: Morgan Kaufmann; 1 edition (June 17, 2005)
- Language: English
- ISBN-10: 1558609105
- ISBN-13: 978-1558609105
- Product Dimensions: 7.5 x 1.5 x 9.2 inches
- Shipping Weight: 3.2 pounds (View shipping rates and policies)
- Average Customer Review: 7 customer reviews
- Amazon Best Sellers Rank: #660,691 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Virtual Machines: Versatile Platforms for Systems and Processes (The Morgan Kaufmann Series in Computer Architecture and Design) 1st Edition
Use the Amazon App to scan ISBNs and compare prices.
The Amazon Book Review
Author interviews, book reviews, editors picks, and more. Read it now
Frequently bought together
Customers who bought this item also bought
Examines and unifies the entire field of virtual machine technology.
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
This is not a book for those wanting to deploy VMs, but is a book for those who want to understand issues related to their theory and implementation.
Many of the "new tricks" of virtualization are thoroughly explored in this book. The authors get "under the hood" of many VMs and go through the details of how they work. Also, they present the many types of virtualization in a well organized, unified framework. The book is also a good history lesson; various forms of virtualization have been around for decades, and the authors go through many case studies to show how many "modern" VM concepts are actually not as modern as you might think.
The first few chapters focus on emulators. They go into great detail about the realities of mapping register sets, memory, interrupts, etc in an emulator, as well as other nits such as how to deal with self-modifying code. Binary-to-binary translation is covered, as well as how the translation can rewrite sections that are hard to virtualize. Dynamic binary optimizers are also covered, as well as how they can profile running code & reorder it to improve locality & speed. The HP Dynamo project is then reviewed to demonstrate the performance gains that are possible using dynamic optimization.
Virtual machines for programming languages are covered next. The typical description of the Java VM is covered here, as well as the Microsoft CLR. However, the section about Pascal P-code from the late 1970's is a nice reminder that the use of VMs for programming languages is not new.
Whole-system VMs are also covered next (e.g. VMWare, Xen...). The discussion builds on the concepts in the early chapters, and describe how memory is mapped, critical instructions are patched & rewritten, system calls are caught, etc. And of course VMWare is one of the case studies.
Finally, I thought one of the more interesting chapters is about "codesigned" VMs; these use low-level 'firmware' (not microcode) running in a minimal processor to effectively emulate another processors instruction set (though at hardware speeds). The processor firmware performs the functions that more complex processors do in silicon, such as instruction reordering, branch prediction, etc. The recent Transmeta Crusoe processor (designed in the late 90's) is reviewed as a recent example of this technique. But another case study -- of the IBM AS/400 designed in the late 80's -- shows that the codesigned VM concept is not new, either.
Overall, this textbook is a nice overview of VMs in multiple forms (that is, for systems, for languages, for emulators, etc). It takes a high-level, computer-science perspective, so it's not product specific. I thought it went into sufficient detail so that it didn't seem too impractical or watered down. My only complaint is that it was a bit wordy in spots, as textbooks sometimes are. But if you're interested in the broad topic of VMs, it'll be a good addition to your library.
One thing I could do w/o though is a fair amount of hype about how VMs are great and so on. First, there's nothing new about them, they've been in existence for decades (it's just at the time MS believed that the future belongs to DDE); second, it can be argued that their current entry into the mainstream is due more to commercial interest and accompanying marketing hype than technical merit; third and last -- I'm tired of pretense excitement about this or that nine-days wonder's being a silver bullet, the Final Great Thing That Solves All Problems. I've seen too many of them appear in blasts of glory and be gone w/o trace within a couple of years despite all MS (or, in our case, Sun) self-serving clairvoyantry. We'll see, says I; meantime, less propaganda would be nice.
But overall, the book's OK though, a good place to start if curious. Btw, there's another one, by Iain Craig, that, I think is even better.
PS. As always, I warn the reader about the below reviewer, W.Boudville. Check his reviews page: he posts like a dozen exclusively positive reviews per day, every day, going back to the beginning of time: he cannot possibly have read one tenth of the books he's reviewed. Probably a "hired hand"; I smell a rat.
If you are just interested in virtualization of your current hardware to support multiple operating systems using virtualization software such as VMWare, Xen or Microsoft Virtual Server, then this defenitely is NOT the book for you! If your main interest is on the Java Virtual Machine, then you should consider purchasing Java VM specific book such as Java Virtual Machine Specification.