ISBN-10:
1118063333
ISBN-13:
2901118063339
Pub. Date:
12/17/2012
Publisher:
Wiley
Operating System Concepts / Edition 9

Operating System Concepts / Edition 9

by Abraham Silberschatz
Current price is , Original price is $196.75. You

Temporarily Out of Stock Online

Please check back later for updated availability.

This Item is Not Available

Overview

TAKE THE NEXT STEP IN THE EVOLUTION OF OPERATING SYSTEMS

For the past two decades, dinosaurs have roamed the cover of Silberschatz, Galvin, and Gagne's OPERATING SYSTEMS CONCPETS. The product of a long process of evolutionary adaptations, this best-selling text has continually evolved to address the latest trends in operating system design. With its strong emphasis underlying concepts and rich selection of examples and case studies, no other text provides such a solid theoretical foundation for understanding operating systems.

Now in a fully revised and updated Sixth Edition, OPERATING SYSTEM CONCEPTS offers new chapters on Threads and Windows 2000, as well as new and expanded coverage of the client-server model and NFS, small footprint operating systems for PDAs, real-time operating systems, and more.

Product Details

ISBN-13: 2901118063339
Publisher: Wiley
Publication date: 12/17/2012
Edition description: New Edition
Pages: 976
Product dimensions: 6.50(w) x 1.50(h) x 9.50(d)

About the Author


Abraham Silberichatz is the director of the Information Sciences Research Center at Bell Laboratories in Murray Hill, New Jersey. Prior to joining Bell Labs, he held a chaired professorship in the Department of Computer Sciences at the University of Texas at Austin. Dr. Silberschatz is a Fellow of the ACM. He is recognized as a leading researcher, educator, and author in operating systems, database systems, and distributed systems. His writings have appeared in numerous ACM and IEEE publications, as well as in other journals and proceedings of professional conferences. He is the coauthor of the textbook Database System Concepts (Third Edition, McGraw-Hill, 1997).

Peter Baer Galvin is the Chief Technologist for Corporate Technologies, a systems-integration and consulting company. He is also Adjunct Systems Planner for Brown University's Computer Science Department. Mr. Galvin is on the Board of Directors for the Sun User Group and has presented talks and tutorials worldwide on the topics of system management, security, and performance. He is the security columnist for SunWorld Magazine.

Read an Excerpt


Chapter 3: Operating-System Structures

3.6.1 Implementation

Although the virtual machine concept is useful, it is difficult to implement. Much effort is required to provide an exact duplicate of the underlying machine. Remember that the underlying machine has two modes: user mode and monitor mode. The virtual-machine software can run in monitor mode, since it is the operating system. The virtual machine itself can execute in only user mode. Just as the physical machine has two modes, however, so must the virtual machine. Consequently, we must have a virtual user mode and a virtual monitor mode, both of which run in a physical user mode. Those actions that cause a transfer from user mode to monitor mode on a real machine (such as a system call or an attempt to execute a privileged instruction) must also cause a transfer from virtual user mode to virtual monitor mode on a virtual machine.

This transfer can generally be done fairly easily. When a system call, for example, is made by a program running on a virtual machine, in virtual user mode, it will cause a transfer to the virtual-machine monitor in the real machine. When the virtual-machine monitor gains control, it can change the register contents and program counter for the virtual machine to simulate the effect of the system call. It can then restart the virtual machine, noting that it is now in virtual monitor mode. If the virtual machine then tries, for example, to read from its virtual card reader, it will execute a privileged I/O instruction. Because the virtual machine is running in physical user mode, this instruction will trap to the virtual-machine monitor. The virtual-machine monitor must then simulate the effect of the I/O instruction. First, it finds the spooled file that implements the virtual card reader. Then, it translates the read of the virtual card reader into a read on the spooled disk file, and transfers the next virtual "card image" into the virtual memory of the virtual machine. Finally, it can restart the virtual machine. The state of the virtual machine has been modified exactly as though the I/O instruction had been executed with a real card reader for a real machine executing in a real monitor mode.

The major difference is, of course, time. Whereas the real I/O might have taken 100 milliseconds, the virtual I/O might take less time (because it is spooled) or more (because it is interpreted). In addition, the CPU is being multiprogrammed among many virtual machines, further slowing down the virtual machines in unpredictable ways. In the extreme case, it may be necessary to simulate all instructions to provide a true virtual machine. VM works for IBM machines because normal instructions for the virtual machines can execute directly on the hardware. Only the privileged instructions (needed mainly for I/O) must be simulated and hence execute more slowly.

3.6.2 Benefits

The virtual-machine concept has several advantages. Notice that in this environment there is complete protection of the various system resources. Each virtual machine is completely isolated from all other virtual machines, so there are no security problems. On the other hand, there is no direct sharing of resources. To provide sharing, two approaches have been implemented. First, it is possible to share a minidisk. This scheme is modeled after a physical shared disk, but is implemented by software. With this technique, files can be shared. Second, it is possible to define a network of virtual machines, each of which can send information over the virtual communications network. Again, the network is modeled after physical communication networks, but is implemented in software.

Such a virtual-machine system is a perfect vehicle for operating-systems research and development. Normally, changing an operating system is a difficult task. Because operating systems are large and complex programs, it is difficult to be sure that a change in one point will not cause obscure bugs in some other part. This situation can be particularly dangerous because of the power of the operating system. Because the operating system executes in monitor mode, a wrong change in a pointer could cause an error that would destroy the entire file system. Thus, it is necessary to test all changes to the operating system carefully.

The operating system, however, runs on and controls the entire machine. Therefore, the current system must be stopped and taken out of use while changes are made and tested. This period is commonly called system-development time. Since it makes the system unavailable to users, system-development time is often scheduled late at night or on weekends, when system load is low.

A virtual-machine system can eliminate much of this problem. System programmers are given their own virtual machine, and system development is done on the virtual machine, instead of on a physical machine. Normal system operation seldom needs to be disrupted for system development.

Virtual machines are coming back into fashion as a means of solving system compatibility problems. For instance, there are thousands of programs available for MS-DOS on Intel CPU-based systems. Computer vendors like Sun Microsystems and Digital Equipment Corporation (DEC) use other, faster processors, but would like their customers to be able to run these MS-DOS programs. The solution is to create a virtual Intel machine on top of the native processor. An MS-DOS program is run in this environment, and its Intel instructions are translated into the native instruction set. MS-DOS is also run in this virtual machine, so the program can make its system calls as usual. The net result is a program which appears to be running on an Intel-based system but is really executing on a very different processor. If the processor is sufficiently fast, the MS-DOS program will run quickly even though every instruction is being translated into several native instructions for execution. Similarly, the PowerPC-based Apple Macintosh includes a Motorola 68000 virtual machine to allow execution of binaries that were written for the older 68000-based Macintosh.

3.6.3 Java

Another example of the continued utility of virtual machines involves the Java language. Java is a very popular language designed by Sun Microsystems. Java is implemented by a compiler that generates bytecode output. These bytecodes are the instructions that run on the Java Virtual Machine (JVM). For Java programs to run on a platform, that platform must have a JVM running on it. The JVM runs on many types of computer, including IBM-Compatible PC, Macintosh, Unix workstation and server, and IBM minicomputer and mainframe. The JVM is also implemented within web browsers such as Microsoft Internet Explorer and Netscape Communicator. These browsers, in turn, run on top of varying hardware and operating systems. The JVM is also implemented on the small JavaOS, which implements the JVM directly on hardware to avoid the overhead imposed by running Java on general-purpose operating systems. Finally, single-purpose devices such as cellular phones can be implemented via Java through the use of microprocessors that execute Java bytecodes as native instructions.

The Java Virtual Machine implements a stack-based instruction set that includes the expected arithmetic, logical, data movement, and flow control instructions. Because it is a virtual machine, it can also implement instructions that are too complex to be built in hardware, including object creation, manipulation, and method invocation instructions. Java compilers can simply emit these bytecode instructions, and the JVM must implement the necessary functionality on each platform.

The design of Java takes advantage of the complete environment that a virtual machine implements. For instance, the bytecodes are checked for instructions that could compromise the security or reliability of the underlying machine. The Java program is not allowed to run if it fails this check. Through the implementation of Java as a language that executes on a virtual machine, Sun has created an efficient, dynamic, secure, and portable object-oriented facility. Although Java programs are not as fast as programs that compile to the native hardware instruction set, they nevertheless are more efficient than interpreted programs and have several advantages over native-compilation languages such as C.

3.7.0 System Design and Implementation

In this section, we discuss the problems of designing and implementing a system. There are, of course, no complete solutions to the design problems, but there are approaches that have been successful.

3.7.1 Design Goals

The first Problem in designing a system is to define the goals and specifications of the system. At the highest level, the design of the system will be affected.....

Table of Contents

Part 1Overview
Chapter 1Introduction
1.1What Is an Operating System?3
1.2Simple Batch Systems6
1.3Multiprogrammed Batched Systems8
1.4Time-Sharing Systems9
1.5Personal-Computer Systems12
1.6Parallel Systems14
1.7Distributed Systems16
1.8Real-Time Systems18
1.9Summary19
Exercises20
Bibliographical Notes21
Chapter 2Computer-System Structures
2.1Computer-System Operation23
2.2I/O Structure26
2.3Storage Structure30
2.4Storage Hierarchy35
2.5Hardware Protection37
2.6General System Architecture43
2.7Summary45
Exercises45
Bibliographical Notes47
Chapter 3Operating-System Structures
3.1System Components49
3.2Operating-System Services55
3.3System Calls57
3.4System Programs66
3.5System Structure68
3.6Virtual Machines74
3.7System Design and Implementation78
3.8System Generation81
3.9Summary83
Exercises83
Bibliographical Notes84
Part 2Process Management
Chapter 4Processes
4.1Process Concept89
4.2Process Scheduling93
4.3Operation on Processes97
4.4Cooperating Processes100
4.5Threads102
4.6Interprocess Communication108
4.7Summary119
Exercises120
Bibliographical Notes121
Chapter 5CPU Scheduling
5.1Basic Concepts123
5.2Scheduling Criteria127
5.3Scheduling Algorithms129
5.4Multiple-Processor Scheduling141
5.5Real-Time Scheduling141
5.6Algorithm Evaluation144
5.7Summary149
Exercises150
Bibliographical Notes152
Chapter 6Process Synchronization
6.1Background155
6.2The Critical-Section Problem157
6.3Synchronization Hardware164
6.4Semaphores167
6.5Classical Problems of Synchronization172
6.6Critical Regions177
6.7Monitors181
6.8Synchronization in Solaris 2189
6.9Atomic Transactions190
6.10Summary199
Exercises200
Bibliographical Notes204
Chapter 7Deadlocks
7.1System Model207
7.2Deadlock Characterization209
7.3Methods for Handling Deadlocks212
7.4Deadlock Prevention214
7.5Deadlock Avoidance217
7.6Deadlock Detection223
7.7Recovery from Deadlock227
7.8Combined Approach to Deadlock Handling229
7.9Summary230
Exercises231
Bibliographical Notes235
Part 3Storage Management
Chapter 8Memory Management
8.1Background239
8.2Logical versus Physical Address Space245
8.3Swapping246
8.4Contiguous Allocation249
8.5Paging257
8.6Segmentation272
8.7Segmentation with Paging278
8.8Summary282
Exercises284
Bibliographical Notes287
Chapter 9Virtual Memory
9.1Background289
9.2Demand Paging291
9.3Performance of Demand Paging297
9.4Page Replacement300
9.5Page-Replacement Algorithms303
9.6Allocation of Frames313
9.7Thrashing317
9.8Other Considerations322
9.9Demand Segmentation328
9.10Summary329
Exercises331
Bibliographical Notes335
Chapter 10File-System Interface
10.1File Concept337
10.2Access Methods346
10.3Directory Structure349
10.4Protection360
10.5Consistency Semantics364
10.6Summary365
Exercises366
Bibliographical Notes368
Chapter 11File-System Implementation
11.1File-System Structure369
11.2Allocation Methods373
11.3Free-Space Management382
11.4Directory Implementation385
11.5Efficiency and Performance386
11.6Recovery389
11.7Summary391
Exercises392
Bibliographical Notes393
Part 4I/O Systems
Chapter 12I/O Systems
12.1Overview397
12.2I/O Hardware398
12.3Application I/O Interface408
12.4Kernel I/O Subsystem414
12.5Transforming I/O Requests to Hardware Operations420
12.6Performance423
12.7Summary427
Exercises428
Bibliographical Notes429
Chapter 13Secondary-Storage Structure
13.1Disk Structure431
13.2Disk Scheduling432
13.3Disk Management438
13.4Swap-Space Management442
13.5Disk Reliability444
13.6Stable-Storage Implementation446
13.7Summary447
Exercises447
Bibliographical Notes452
Chapter 14Tertiary-Storage Structure
14.1Tertiary-Storage Devices455
14.2Operating-System Jobs458
14.3Performance Issues461
14.4Summary466
Exercises466
Bibliographical Notes469
Part 5Distributed Systems
Chapter 15Network Structures
15.1Background473
15.2Motivation475
15.3Topology476
15.4Network Types481
15.5Communication484
15.6Design Strategies491
15.7Networking Example495
15.8Summary497
Exercises498
Bibliographical Notes499
Chapter 16Distributed System Structures
16.1Network Operating Systems501
16.2Distributed Operating Systems503
16.3Remote Services506
16.4Robustness511
16.5Design Issues512
16.6Summary515
Exercises516
Bibliographical Notes516
Chapter 17Distributed File Systems
17.1Background519
17.2Naming and Transparency521
17.3Remote File Access525
17.4Stateful versus Stateless Service530
17.5File Replication531
17.6Example Systems532
17.7Summary559
Exercises560
Bibliographical Notes561
Chapter 18Distributed Coordination
18.1Event Ordering563
18.2Mutual Exclusion566
18.3Atomicity569
18.4Concurrency Control573
18.5Deadlock Handling578
18.6Election Algorithms586
18.7Reaching Agreement588
18.8Summary591
Exercises592
Bibliographical Notes593
Part 6Protection and Security
Chapter 19Protection
19.1Goals of Protection597
19.2Domain of Protection598
19.3Access Matrix604
19.4Implementation of Access Matrix608
19.5Revocation of Access Rights611
19.6Capability-Based Systems613
19.7Language-Based Protection616
19.8Summary620
Exercises620
Bibliographical Notes621
Chapter 20Security
20.1The Security Problem623
20.2Authentication625
20.3One-Time Passwords628
20.4Program Threats629
20.5System Threats630
20.6Threat Monitoring634
20.7Encryption637
20.8Computer-Security Classifications639
20.9An Example Security Model: Windows NT640
20.10Summary642
Exercises643
Bibliographical Notes644
Part 7Case Studies
Chapter 21The UNIX System
21.1History647
21.2Design Principles653
21.3Programmer Interface654
21.4User Interface663
21.5Process Management666
21.6Memory Management671
21.7File System675
21.8I/O System683
21.9Interprocess Communication687
21.10Summary692
Exercises693
Bibliographical Notes694
Chapter 22The Linux System
22.1History697
22.2Design Principles702
22.3Kernel Modules705
22.4Process Management709
22.5Scheduling713
22.6Memory Management717
22.7File Systems725
22.8Input and Output730
22.9Interprocess Communication734
22.10Network Structure736
22.11Security738
22.12Summary741
Exercises742
Bibliographical Notes743
Chapter 23Windows NT
23.1History745
23.2Design Principles746
23.3System Components747
23.4Environmental Subsystems763
23.5File System766
23.6Networking773
23.7Programmer Interface779
23.8Summary786
Exercises786
Bibliographical Notes787
Chapter 24Historical Perspective
24.1Early Systems789
24.2Atlas795
24.3XDS-940796
24.4THE797
24.5RC 4000798
24.6CTSS799
24.7MULTICS799
24.8OS/360800
24.9Mach802
24.10Other Systems803
Bibliography805
Credits839
Index841

Customer Reviews

Most Helpful Customer Reviews

See All Customer Reviews