Modern Operating Systems, Fourth Edition, is intended for introductory courses in Operating Systems in Computer Science, Computer Engineering, and Electrical Engineering programs. It also serves as a useful reference for OS professionals
¿
The widely anticipated revision of this worldwide best-seller incorporates the latest developments in operating systems (OS) technologies. The Fourth Edition includes up-to-date materials on relevant¿OS. Tanenbaum also provides information on current research based on his experience as an operating systems researcher.
¿
Modern Operating Systems, Third Editionwas the recipient of the 2010 McGuffey Longevity Award. The McGuffey Longevity Award recognizes textbooks whose excellence has been demonstrated over time.¿http://taaonline.net/index.html
¿¿
Teaching and Learning Experience
This program will provide a better teaching and learning experience–for you and your students. It will help:
¿
- Provide Practical Detail on the Big Picture Concepts: A clear and entertaining writing style outlines the concepts every OS designer needs to master.
- Keep Your Course Current: This edition includes information on the latest OS technologies and developments
- Enhance Learning with Student and Instructor Resources: Students will gain hands-on experience using the simulation exercises and lab experiments.
Produktinformation
- Utgivningsdatum2014-09-25
- Mått10 x 10 x 10 mm
- Vikt1 490 g
- FormatInbunden
- SpråkEngelska
- Antal sidor1 136
- Upplaga4
- FörlagPearson Education
- ISBN9780133591620
Tillhör följande kategorier
Andrew S. Tanenbaum has an S.B. degree from M.I.T. and a Ph.D. from the University of California at Berkeley. He is currently a Professor of Computer Science at the Vrije Universiteit in Amsterdam, The Netherlands. He was formerly Dean of the Advanced School for Computing and Imaging, an interuniversity graduate school doing research on advanced parallel, distributed, and imaging systems. He was also an Academy Professor of the Royal Netherlands Academy of Arts and Sciences, which has saved him from turning into a bureaucrat. He also won a prestigious European Research Council Advanced Grant. In the past, he has done research on compilers, operating systems, networking, local-area distributed systems and wide-area distributed systems that scale to a billion users. His main focus now is doing research on reliable and secure operating systems. These research projects have led to over 140 refereed papers in journals and conferences. Prof. Tanenbaum has also authored or co-authored five books. The books have been translated into languages, ranging from Basque to Thai and are used at universities all over the world. Prof. Tanenbaum has also produced a considerable volume of software, notably MINIX, a small UNIX clone. It was the direct inspiration for Linux and the platform on which Linux was initially developed. The current version of MINIX, called MINIX 3, is now focused on being an extremely reliable and secure operating system. Prof. Tanenbaum will consider his work done when no computer is equipped with a reset button. and no user has any idea what an operating system crash is. MINIX 3 is an on-going open-source project to which you are invited to contribute. Go to www.minix3.org to download a free copy and find out what is happening. Prof. Tanenbaum’s Ph.D. students have gone on to greater glory after graduating. He is very proud of them. In this respect he resembles a mother hen. Tanenbaum is a Fellow of the ACM, a Fellow of the IEEE, and a member of the Royal Netherlands Academy of Arts and Sciences. He has also won numerous scientific prizes from ACM, IEEE, and USENIX. If you are really curious about them, see his page on Wikipedia. He also has two honorary doctorates. Herbert Bos obtained his master degree from Twente University and his Ph.D. from Cambridge University Computer Laboratory in the UK. Since then, he has worked extensively on dependable and efficient I/O architectures for operating systems like Linux, but also research systems based on MINIX 3. He currently a professor in Systems and Network Security in the department of Computer Science at the Vrije Universiteit in Amsterdam, the Netherlands. His main research field is that of system security. With his students, he works on novel ways to detect and stop attacks, to analyze and reverse engineer malware, and to take down botnets (malicious infrastructures that may span millions of computers). In 2011, he obtained an ERC Starting Grant for his research on reverse engineering. Several of his students have won the Roger Needham Ph.D. Award for best Ph.D. thesis in systems in Europe.
- Brief Contents CHAPTER 1 "INTRODUCTION" 1.1 WHAT IS AN OPERATING SYSTEM? 1.1.1 The Operating System as an Extended Machine1.1.2 The Operating System as a Resource Manager1.2 HISTORY OF OPERATING SYSTEMS 1.2.1 The First Generation (1945-55): Vacuum Tubes1.2.2 The Second Generation (1955-65): Transistors and Batch Systems1.2.3 The Third Generation (1965-1980): ICs and Multiprogramming1.2.4 The Fourth Generation (1980-Present): Personal Computers1.2.5 The Fifth Generation (1990-Present): Mobile Computers1.3 COMPUTER HARDWARE REVIEW 1.3.1 Processors1.3.2 Memory1.3.3 Disks1.3.4 I/O Devices1.3.5 Buses1.3.6 Booting the Computer1.4 THE OPERATING SYSTEM ZOO 1.4.1 Mainframe Operating Systems1.4.2 Server Operating Systems1.4.3 Multiprocessor Operating Systems1.4.4 Personal Computer Operating Systems1.4.5 Handheld Computer Operating Systems1.4.6 Embedded Operating Systems.1.4.7 Sensor-Node Operating Systems1.4.8 Real-Time Operating Systems1.4.9 Smart Card Operating Systems1.5 OPERATING SYSTEM CONCEPTS 1.5.1 Processes1.5.2 Address Spaces1.5.3 Files1.5.4 Input/Output1.5.5 Protection1.5.6 The Shell1.5.7 Ontogeny Recapitulates Phylogeny1.6 SYSTEM CALLS 1.6.1 System Calls for Process Management1.6.2 System Calls for File Management1.6.3 System Calls for Directory Management1.6.4 Miscellaneous System Calls1.6.5 The Windows Win32 API1.7 OPERATING SYSTEM STRUCTURE 1.7.1 Monolithic Systems1.7.2 Layered Systems1.7.3 Microkernels1.7.4 Client-Server Model1.7.5 Virtual Machines1.7.6 Exokernels1.8 THE WORLD ACCORDING TO C 1.8.1 The C Language1.8.2 Header Files1.8.3 Large Programming Projects1.8.4 The Model of Run Time1.9 RESEARCH ON OPERATING SYSTEMS1.10 OUTLINE OF THE REST OF THIS BOOK1.11 METRIC UNITS1.12 SUMMARYCHAPTER 2 "PROCESSES AND THREADS" 2.1 PROCESSES 2.1.1 The Process Model2.1.2 Process Creation2.1.3 Process Termination2.1.4 Process Hierarchies2.1.5 Process States2.1.6 Implementation of Processes2.1.7 Modeling Multiprogramming2.2 THREADS 2.2.1 Thread Usage2.2.2 The Classical Thread Model2.2.3 POSIX Threads2.2.4 Implementing Threads in User Space2.2.5 Implementing Threads in the Kernel2.2.6 Hybrid Implementations2.2.7 Scheduler Activations2.2.8 Pop-Up Threads2.2.9 Making Single-Threaded Code Multithreaded2.3 INTERPROCESS COMMUNICATION 2.3.1 Race Conditions2.3.2 Critical Regions2.3.3 Mutual Exclusion with Busy Waiting2.3.4 Sleep and Wakeup2.3.5 Semaphores2.3.6 Mutexes2.3.7 Monitors2.3.8 Message Passing2.3.9 Barriers2.3.10 Avoiding Locks: Read-Copy-Update2.4 SCHEDULING 2.4.1 Introduction to Scheduling2.4.2 Scheduling in Batch Systems2.4.3 Scheduling in Interactive Systems2.4.4 Scheduling in Real-Time Systems2.4.5 Policy Versus Mechanism2.4.6 Thread Scheduling2.5 CLASSICAL IPC PROBLEMS 2.5.1 The Dining Philosophers Problem2.5.2 The Readers and Writers Problem2.6 RESEARCH ON PROCESSES AND THREADS2.7 SUMMARYCHAPTER 3 "MEMORY MANAGEMENT" 3.1 NO MEMORY ABSTRACTION3.2 A MEMORY ABSTRACTION: ADDRESS SPACES 3.2.1 The Notion of an Address Space3.2.2 Swapping3.2.3 Managing Free Memory3.3 VIRTUAL MEMORY 3.3.1 Paging3.3.2 Page Tables3.3.3 Speeding Up Paging3.3.4 Page Tables for Large Memories3.4 PAGE REPLACEMENT ALGORITHMS 3.4.1 The Optimal Page Replacement Algorithm3.4.2 The Not Recently Used Page Replacement Algorithm3.4.3 The First-In, First-Out (FIFO) Page Replacement Algorithm3.4.4 The Second-Chance Page Replacement Algorithm3.4.5 The Clock Page Replacement Algorithm3.4.6 The Least Recently Used (LRU) Page Replacement Algorithm3.4.7 Simulating LRU in Software3.4.8 The Working Set Page Replacement Algorithm3.4.9 The WSClock Page Replacement Algorithm3.4.10 Summary of Page Replacement Algorithms3.5 DESIGN ISSUES FOR PAGING SYSTEMS 3.5.1 Local versus Global Allocation Policies3.5.2 Load Control3.5.3 Page Size3.5.4 Separate Instruction and Data Spaces3.5.5 Shared Pages3.5.6 Shared Libraries3.5.7 Mapped Files3.5.8 Cleaning Policy3.5.9 Virtual Memory Interface3.6 IMPLEMENTATION ISSUES 3.6.1 Operating System Involvement with Paging3.6.2 Page Fault Handling3.6.3 Instruction Backup3.6.4 Locking Pages in Memory3.6.5 Backing Store3.6.6 Separation of Policy and Mechanism3.7 SEGMENTATION 3.7.1 Implementation of Pure Segmentation3.7.2 Segmentation with Paging: MULTICS3.7.3 Segmentation with Paging: The Intel x863.8 RESEARCH ON MEMORY MANAGEMENT3.9 SUMMARYCHAPTER 4 "FILE SYSTEMS" 4.1 FILES 4.1.1 File Naming4.1.2 File Structure4.1.3 File Types4.1.4 File Access4.1.5 File Attributes4.1.6 File Operations4.1.7 An Example Program Using File-System Calls4.2 DIRECTORIES 4.2.1 Single-Level Directory Systems4.2.2 Hierarchical Directory Systems4.2.3 Path Names4.2.4 Directory Operations4.3 FILE SYSTEM IMPLEMENTATION 4.3.1 File-System Layout4.3.2 Implementing Files4.3.3 Implementing Directories4.3.4 Shared Files4.3.5 Log-Structured File Systems4.3.6 Journaling File Systems4.3.7 Virtual File Systems4.4 FILE-SYSTEM MANAGEMENT AND OPTIMIZATION 4.4.1 Disk-Space Management4.4.2 File-System Backups4.4.3 File-System Consistency4.4.4 File-System Performance4.4.5 Defragmenting Disks4.5 EXAMPLE FILE SYSTEMS 4.5.1 The MS-DOS File System4.5.2 The UNIX V7 File System4.5.3 CD-ROM File Systems4.6 RESEARCH ON FILE SYSTEMS4.7 SUMMARYCHAPTER 5 "INPUT/OUTPUT" 5.1 PRINCIPLES OF I/O HARDWARE 5.1.1 I/O Devices5.1.2 Device Controllers5.1.3 Memory-Mapped I/O5.1.4 Direct Memory Access5.1.5 Interrupts Revisited5.2 PRINCIPLES OF I/O SOFTWARE 5.2.1 Goals of the I/O Software5.2.2 Programmed I/O5.2.3 Interrupt-Driven I/O5.2.4 I/O Using DMA5.3 I/O SOFTWARE LAYERS 5.3.1 Interrupt Handlers5.3.2 Device Drivers5.3.3 Device-Independent I/O Software5.3.4 User-Space I/O Software5.4 DISKS 5.4.1 Disk Hardware5.4.2 Disk Formatting5.4.3 Disk Arm Scheduling Algorithms5.4.4 Error Handling5.4.5 Stable Storage5.5 CLOCKS 5.5.1 Clock Hardware5.5.2 Clock Software5.5.3 Soft Timers5.6 USER INTERFACES: KEYBOARD, MOUSE, MONITOR 5.6.1 Input Software5.6.2 Output Software5.7 THIN CLIENTS5.8 POWER MANAGEMENT 5.8.1 Hardware Issues5.8.2 Operating System Issues5.8.3 Application Program Issues5.9 RESEARCH ON INPUT/OUTPUT5.10 SUMMARYCHAPTER 6 "DEADLOCKS" 6.1 RESOURCES 6.1.1 Preemptable and Nonpreemptable Resources6.1.2 Resource Acquisition6.2 INTRODUCTION TO DEADLOCKS 6.2.1 Conditions for Resource Deadlocks6.2.2 Deadlock Modeling6.3 THE OSTRICH ALGORITHM6.4 DEADLOCK DETECTION AND RECOVERY 6.4.1 Deadlock Detection with One Resource of Each Type6.4.2 Deadlock Detection with Multiple Resources of Each Type6.4.3 Recovery from Deadlock6.5 DEADLOCK AVOIDANCE 6.5.1 Resource Trajectories6.5.2 Safe and Unsafe States6.5.3 The Banker's Algorithm for a Single Resource6.5.4 The Banker's Algorithm for Multiple Resources6.6 DEADLOCK PREVENTION 6.6.1 Attacking the Mutual Exclusion Condition6.6.2 Attacking the Hold and Wait Condition6.6.3 Attacking the No Preemption Condition6.6.4 Attacking the Circular Wait Condition6.7 OTHER ISSUES 6.7.1 Two-Phase Locking6.7.2 Communication Deadlocks6.7.3 Livelock6.7.4 Starvation6.8 RESEARCH ON DEADLOCKS6.9 SUMMARYCHAPTER 7 "VIRTUALIZATION AND THE CLOUD" 7.1 HISTORY7.2 REQUIREMENTS FOR VIRTUALIZATION7.3 TYPE 1 AND TYPE 2 HYPERVISORS7.4 TECHNIQUES FOR EFFICIENT VIRTUALIZATION 7.4.1 Virtualizing the Unvirtualizable7.4.2 The Cost of Virtualization7.5 ARE HYPERVISORS MICROKERNELS DONE RIGHT?7.6 MEMORY VIRTUALIZATION7.7 I/O VIRTUALIZATION7.8 VIRTUAL APPLIANCES7.9 VIRTUAL MACHINES ON MULTICORE CPUS7.10 LICENSING ISSUES7.11 CLOUDS 7.11.1 Clouds as a Service7.11.2 Virtual Machine Migration7.11.3 Checkpointing7.12 CASE STUDY: VMWARE 7.12.1 The early history of VMware7.12.2 VMware Workstation7.12.3 Challenges in Bringing Virtualization to the x867.12.4 VMware Workstation: Solution Overview7.12.5 The Evolution of VMware Workstation7.12.6 ESX Server: VMware's type-1 hypervisor7.13 RESEARCH ON VIRTUALIZATION AND THE CLOUDCHAPTER 8 "MULTIPLE PROCESSOR SYSTEMS" 8.1 MULTIPROCESSORS 8.1.1 Multiprocessor Hardware8.1.2 Multiprocessor Operating System Types8.1.3 Multiprocessor Synchronization8.1.4 Multiprocessor Scheduling8.2 MULTICOMPUTERS 8.2.1 Multicomputer Hardware8.2.2 Low-Level Communication Software8.2.3 User-Level Communication Software8.2.4 Remote Procedure Call8.2.5 Distributed Shared Memory8.2.6 Multicomputer Scheduling8.2.7 Load Balancing8.3 DISTRIBUTED SYSTEMS 8.3.1 Network Hardware8.3.2 Network Services and Protocols8.3.3 Document-Based Middleware8.3.4 File-System-Based Middleware8.3.5 Object-Based Middleware8.3.6 Coordination-Based Middleware8.4 RESEARCH ON MULTIPLE PROCESSOR SYSTEMS8.5 SUMMARYCHAPTER 9 "SECURITY" 9.1 THE SECURITY ENVIRONMENT 9.1.1 Threats9.1.2 Attackers9.2 OPERATING SYSTEMS SECURITY 9.2.1 Can We Build Secure Systems?9.2.2 Trusted Computing Base9.3 CONTROLLING ACCESS TO RESOURCES 9.3.1 Protection Domains9.3.2 Access Control Lists9.3.3 Capabilities9.4 FORMAL MODELS OF SECURE SYSTEMS 9.4.1 Multilevel Security9.4.2 Covert Channels9.5 BASICS OF CRYPTOGRAPHY 9.5.1 Secret-Key Cryptography9.5.2 Public-Key Cryptography9.5.3 One-Way Functions9.5.4 Digital Signatures9.5.5 Trusted Platform Module9.6 AUTHENTICATION 9.6.1 Authentication Using a Physical Object9.6.2 Authentication Using Biometrics9.7 EXPLOITING SOFTWARE 9.7.1 Buffer Overflow Attacks9.7.2 Format String Attacks9.7.3 Dangling Pointers9.7.4 Null Pointer Dereference Attacks9.7.5 Integer Overflow Attacks9.7.6 Command Injection Attacks9.7.7 Time of Check to Time of Use (TOCTOU) Attacks9.8 INSIDER ATTACKS 9.8.1 Logic Bombs9.8.2 Back Doors9.8.3 Login Spoofing9.9 MALWARE 9.9.1 Trojan Horses9.9.2 Viruses9.9.3 Worms9.9.4 Spyware9.9.5 Rootkits9.10 DEFENSES 9.10.1 Firewalls9.10.2 Antivirus and Anti-Antivirus Techniques9.10.3 Code Signing9.10.4 Jailing9.10.5 Model-Based Intrusion Detection9.10.6 Encapsulating Mobile Code9.10.7 Java Security9.11 RESEARCH ON SECURITY9.12 SUMMARYCHAPTER 10 "CASE STUDY 1: UNIX, LINUX, AND ANDROID" 10.1 HISTORY OF UNIX AND LINUX 10.1.1 UNICS10.1.2 PDP-11 UNIX10.1.3 Portable UNIX10.1.4 Berkeley UNIX10.1.5 Standard UNIX10.1.6 MINIX10.1.7 Linux10.2 OVERVIEW OF LINUX 10.2.1 Linux Goals10.2.2 Interfaces to Linux10.2.3 The Shell10.2.4 Linux Utility Programs10.2.5 Kernel Structure10.3 PROCESSES IN LINUX 10.3.1 Fundamental Concepts10.3.2 Process Management System Calls in Linux10.3.3 Implementation of Processes and Threads in Linux10.3.4 Scheduling in Linux10.3.5 Booting Linux10.4 MEMORY MANAGEMENT IN LINUX 10.4.1 Fundamental Concepts10.4.2 Memory Management System Calls in Linux10.4.3 Implementation of Memory Management in Linux10.4.4 Paging in Linux10.5 INPUT/OUTPUT IN LINUX 10.5.1 Fundamental Concepts10.5.2 Networking10.5.3 Input/Output System Calls in Linux10.5.4 Implementation of Input/Output in Linux10.5.5 Modules in Linux10.6 THE LINUX FILE SYSTEM 10.6.1 Fundamental Concepts10.6.2 File System Calls in Linux10.6.3 Implementation of the Linux File System10.6.4 NFS: The Network File System10.7 SECURITY IN LINUX 10.7.1 Fundamental Concepts10.7.2 Security System Calls in Linux10.7.3 Implementation of Security in Linux10.8 ANDROID10.9 SUMMARYCHAPTER 11 "CASE STUDY 2: WINDOWS 8" 11.1 HISTORY OF WINDOWS THROUGH WINDOWS 8.1 11.1.1 1980s: MS-DOS11.1.2 1990s: MS-DOS-based Windows11.1.3 2000s: NT-based Windows11.1.4 Windows Vista11.1.5 2010s: Modern Windows11.2 PROGRAMMING WINDOWS 11.2.1 The Native NT Application Programming Interface11.2.2 The Win32 Application Programming Interface11.2.3 The Windows Registry11.3 SYSTEM STRUCTURE 11.3.1 Operating System Structure11.3.2 Booting Windows11.3.3 Implementation of the Object Manager11.3.4 Subsystems, DLLs, and User-Mode Services11.4 PROCESSES AND THREADS IN WINDOWS 11.4.1 Fundamental Concepts11.4.2 Job, Process, Thread, and Fiber Management API Calls11.4.3 Implementation of Processes and Threads11.5 MEMORY MANAGEMENT 11.5.1 Fundamental Concepts11.5.2 Memory Management System Calls11.5.3 Implemen