Journal of Computing Sciences in Colleges
RP '09 Proceedings of the 3rd International Workshop on Reachability Problems
A short unit to introduce multi-threaded programming
Journal of Computing Sciences in Colleges
MinDeg: a performance-guided replacement policy for run-time reconfigurable accelerators
CODES+ISSS '09 Proceedings of the 7th IEEE/ACM international conference on Hardware/software codesign and system synthesis
A microdriver architecture for error correcting codes inside the Linux kernel
Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis
Teaching operating systems: windows kernel projects
Proceedings of the 41st ACM technical symposium on Computer science education
Difference engine: harnessing memory redundancy in virtual machines
Communications of the ACM
Difference engine: harnessing memory redundancy in virtual machines
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
VIREOS: an integrated, bottom-up, educational operating systems project with FPGA support
Proceedings of the 42nd ACM technical symposium on Computer science education
Dynamic hinting: Collaborative real-time resource management for reactive embedded systems
Journal of Systems Architecture: the EUROMICRO Journal
A Virtual Time System for OpenVZ-Based Network Emulations
PADS '11 Proceedings of the 2011 IEEE Workshop on Principles of Advanced and Distributed Simulation
Performance evaluation of a reservoir simulator on a multi-core cluster
ICCSA'10 Proceedings of the 2010 international conference on Computational Science and Its Applications - Volume Part IV
An online scalable algorithm for minimizing lk-norms of weighted flow time on unrelated machines
Proceedings of the twenty-second annual ACM-SIAM symposium on Discrete Algorithms
Online scalable scheduling for the lk-norms of flow time without conservation of work
Proceedings of the twenty-second annual ACM-SIAM symposium on Discrete Algorithms
Function flow: making synchronization easier in task parallelism
Proceedings of the 2012 International Workshop on Programming Models and Applications for Multicores and Manycores
A uniform classification of common concurrency errors
EUROCAST'11 Proceedings of the 13th international conference on Computer Aided Systems Theory - Volume Part I
Research of an architecture of operating system kernel based on modularity concept
Mathematical and Computer Modelling: An International Journal
Node-based memory management for scalable NUMA architectures
Proceedings of the 2nd International Workshop on Runtime and Operating Systems for Supercomputers
Concurrency and Computation: Practice & Experience
Distributed memory virtualization with the use of SDDSfL
PPAM'11 Proceedings of the 9th international conference on Parallel Processing and Applied Mathematics - Volume Part II
Softshell: dynamic scheduling on GPUs
ACM Transactions on Graphics (TOG) - Proceedings of ACM SIGGRAPH Asia 2012
Engineering efficient paging algorithms
SEA'12 Proceedings of the 11th international conference on Experimental Algorithms
Editorial: Recent developments in high performance computing and security: An editorial
Future Generation Computer Systems
Smooth inequalities and equilibrium inefficiency in scheduling games
WINE'12 Proceedings of the 8th international conference on Internet and Network Economics
Algorithm 928: A general, parallel implementation of Dantzig--Wolfe decomposition
ACM Transactions on Mathematical Software (TOMS)
Fast dynamic memory allocator for massively parallel architectures
Proceedings of the 6th Workshop on General Purpose Processor Using Graphics Processing Units
Firmware verification and simulation in IBM zEnterprise 196
IBM Journal of Research and Development
Parallel efficient aligner of pyrosequencing reads
Proceedings of the 20th European MPI Users' Group Meeting
Efficient, distributed coordination of multiple mobile chargers in sensor networks
Proceedings of the 16th ACM international conference on Modeling, analysis & simulation of wireless and mobile systems
QoS-Aware scheduling in heterogeneous datacenters with paragon
ACM Transactions on Computer Systems (TOCS)
WCET analysis with MRU cache: Challenging LRU for predictability
ACM Transactions on Embedded Computing Systems (TECS)
KV-Cache: A Scalable High-Performance Web-Object Cache for Manycore
UCC '13 Proceedings of the 2013 IEEE/ACM 6th International Conference on Utility and Cloud Computing
Proceedings of the 9th Central & Eastern European Software Engineering Conference in Russia
Porting an AUTOSAR-compliant operating system to a high performance embedded platform
ACM SIGBED Review - Special Issue on the 3rd Embedded Operating System Workshop (EWiLi 2013)
Hi-index | 0.02 |
For software development professionals and computer science students, Modern Operating Systems gives a solid conceptual overview of operating system design, including detailed case studies of Unix/Linux and Windows 2000. What makes an operating system modern? According to author Andrew Tanenbaum, it is the awareness of high-demand computer applications--primarily in the areas of multimedia, parallel and distributed computing, and security. The development of faster and more advanced hardware has driven progress in software, including enhancements to the operating system. It is one thing to run an old operating system on current hardware, and another to effectively leverage current hardware to best serve modern software applications. If you don't believe it, install Windows 3.0 on a modern PC and try surfing the Internet or burning a CD. Readers familiar with Tanenbaum's previous text, Operating Systems, know the author is a great proponent of simple design and hands-on experimentation. His earlier book came bundled with the source code for an operating system called Minux, a simple variant of Unix and the platform used by Linus Torvalds to develop Linux. Although this book does not come with any source code, he illustrates many of his points with code fragments (C, usually with Unix system calls). The first half of Modern Operating Systems focuses on traditional operating systems concepts: processes, deadlocks, memory management, I/O, and file systems. There is nothing groundbreaking in these early chapters, but all topics are well covered, each including sections on current research and a set of student problems. It is enlightening to read Tanenbaum's explanations of the design decisions made by past operating systems gurus, including his view that additional research on the problem of deadlocks is impractical except for "keeping otherwise unemployed graph theorists off the streets." It is the second half of the book that differentiates itself from older operating systems texts. Here, each chapter describes an element of what constitutes a modern operating system--awareness of multimedia applications, multiple processors, computer networks, and a high level of security. The chapter on multimedia functionality focuses on such features as handling massive files and providing video-on-demand. Included in the discussion on multiprocessor platforms are clustered computers and distributed computing. Finally, the importance of security is discussed--a lively enumeration of the scores of ways operating systems can be vulnerable to attack, from password security to computer viruses and Internet worms. Included at the end of the book are case studies of two popular operating systems: Unix/Linux and Windows 2000. There is a bias toward the Unix/Linux approach, not surprising given the author's experience and academic bent, but this bias does not detract from Tanenbaum's analysis. Both operating systems are dissected, describing how each implements processes, file systems, memory management, and other operating system fundamentals. Tanenbaum's mantra is simple, accessible operating system design. Given that modern operating systems have extensive features, he is forced to reconcile physical size with simplicity. Toward this end, he makes frequent references to the Frederick Brooks classic The Mythical Man-Month for wisdom on managing large, complex software development projects. He finds both Windows 2000 and Unix/Linux guilty of being too complicated--with a particular skewering of Windows 2000 and its "mammoth Win32 API." A primary culprit is the attempt to make operating systems more "user-friendly," which Tanenbaum views as an excuse for bloated code. The solution is to have smart people, the smallest possible team, and well-defined interactions between various operating systems components. Future operating system design will benefit if the advice in this book is taken to heart. --Pete Ostenson