Opersting System By Peter Galvin, Thesis of Operating Systems

This is most famous book for understanding the concept of operating system.

Typology: Thesis

2017/2018

Uploaded on 04/21/2018

manish-singh-9
manish-singh-9 🇮🇳

4.5

(3)

5 documents

1 / 982

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Partial preview of the text

Download Opersting System By Peter Galvin and more Thesis Operating Systems in PDF only on Docsity!

Abraham Silberschatz is the Sidney J. Weinberg Professor & Chair of Com- puter Science at Yale University. Prior to joining Yale, he was the Vice President of the Information Sciences Research Center at Bell Laboratories. Prior to that, he held a chaired professorship in the Department of Computer Sciences at the University of Texas at Austin. Professor Silberschatz is an ACM Fellow and an IEEE Fellow. He received the 2002 IEEE Taylor L. Booth Education Award, the 1998 ACM Karl V. Karl- strom Outstanding Educator Award, and the 1997 ACM SIGMOD Contribution Award. In recognition of his outstanding level of innovation and technical excellence, he was awarded the Bell Laboratories President's Award for three different projects-the QTM Project (1998), the DataBlitz Project (1999), and the Netlnventory Project (2004). Professor Silberschatz' writings have appeared in numerous ACM and IEEE publications and other professional conferences and journals. He is a

coauthor of the textbook Database System Concepts. He has also written Op-Ed

articles for the New York Times, the Boston Globe, and the Hartford Courant, among others.

Peter Baer Galvin is the chief technologist for Corporate Technologies (www.cptech.com), a computer facility reseller and integrator. Before that, Mr. Galvin was the systems manager for Brown University's Computer Science

Department. He is also Sun columnist for ;login: magazine. Mr. Galvin has

written articles for Byte and other magazines, and has written columns for

Sun World and SysAdmin magazines. As a consultant and trainer, he has given

talks and taught tutorials on security and system administration worldwide.

Greg Gagne is chair of the Computer Science department at Westminster College in Salt Lake City where he has been teaching since 1990. In addition to teaching operating systems, he also teaches computer networks, distributed systems, and software engineering. He also provides workshops to computer science educators and industry professionals.

Operating systems are an essential part of any computer system. Similarly, a course on operating systems is an essential part of any computer-science education. This field is undergoing rapid change, as computers are now prevalent in virtually every application, from games for children through the most sophisticated planning tools for governments and multinational firms. Yet the fundamental concepts remain fairly clear, and it is on these that we base this book. We wrote this book as a text for an introductory course in operating systems at the junior or senior undergraduate level or at the first-year graduate level. We hope that practitioners will also find it useful. It provides a clear description

of the concepts that underlie operating systems. As prerequisites, we assume

that the reader is familiar with basic data struchues, computer organization, and a high-level language, such as C or Java. The hardware topics required for an understanding of operating systems are included in Chapter 1. For code examples, we use predominantly C, with some Java, but the reader can still understand the algorithms without a thorough knowledge of these languages. Concepts are presented using intuitive descriptions. Important theoretical results are covered, but formal proofs are omitted. The bibliographical notes at the end of each chapter contain pointers to research papers in which results were first presented and proved, as well as references to material for further reading. In place of proofs, figures and examples are used to suggest why we should expect the result in question to be true. The fundamental concepts and algorithms covered in the book are often based on those used in existing conunercial operating systems. Our aim is to present these concepts and algorithms in a general setting that is not tied to one particular operating system. We present a large number of examples that pertain to the most popular and the most im1.ovative operating systems, including Sun Microsystems' Solaris; Linux; Microsoft Windows Vista, Windows 2000, and Windows XP; and Apple Mac OS X. When we refer to Windows XP as an example operating system, we are implying Windows

Vista, Windows XP, and Windows 2000. If a feature exists in a specific release,

we state this explicitly.

vii

ix

management, and the effectiveness of a particular algorithm depends on the situation. Storage management. Chapters 10 through 13 describe how the file system, mass storage, and I/0 are handled in a modern computer system. The file system provides the mechanism for on-line storage of and access to both data and programs. We describe the classic internal algorithms and structures of storage management and provide a firm practical understanding of the algorithms used -their properties, advantages, and disadvantages. Our discussion of storage also includes matters related to secondary and tertiary storage. Since the I/0 devices that attach to a computer vary widely, the operating system needs to provide a wide range of functionality to applications to allow them to control all aspects of these devices. We discuss system I/O in depth, including I/O system design, interfaces, and internal system structures and functions. In many ways, I/O devices are the slowest major components of the computer. Because they represent a performance bottleneck, we also examine performance issues associated with I/0 devices. Protection and security. Chapters 14 and 15 discuss the mechanisms necessary for the protection and security of computer systems. The processes in an operating system must be protected from one another's activities, and to provide such protection, we must ensure that only processes that have gained proper authorization from the operating system can operate on the files, memory, CPU, and other resources of the system. Protection is a mechanism for controlling the access of programs, processes, or users to the resources defined by a computer system. This mechanism must provide a means of specifying the controls to be imposed, as well as a means of enforcement. Security protects the integrity of the information stored in the system (both data and code), as well as the physical resources of the system, from 1.mauthorized access, malicious destruction or alteration, and accidental introduction of inconsistency. Distributed systems. Chapters 16 through 18 deal with a collection of

processors that do not share memory or a clock-a distributed system. By

providing the user with access to the various resources that it maintains, a distributed system can improve computation speed and data availability and reliability. Such a system also provides the user with a distributed file system, which is a file-service system whose users, servers, and storage devices are dispersed among the sites of a distributed system. A distributed system must provide various mechanisms for process synchronization and communication, as well as for dealing with deadlock problems and a variety of failures that are not encountered in a centralized system.

Special-purpose systems. Chapters 19 and 20 deal with systems used for specific purposes, including real-time systems and multimedia systems. These systems have specific requirements that differ from those of the general-purpose systems that are the focus of the remainder of the text. Real-time systems may require not only that computed results be "correct" but also that the results be produced within a specified deadline period. Multimedia systems require quality-of-service guarantees ensuring that the multimedia data are delivered to clients within a specific time frame.

X

Case studies. Chapters 21 through 23 in the book, and Appendices A through C (which are available on www.wiley.comJ go I global/ silberschatz and in WileyPLUS), integrate the concepts described in the earlier chapters by describing real operating systems. These systems include Linux, Windows XP, FreeBSD, Mach, and Windows 2000. We chose Linux and FreeBSD because UNIX-at one time-was almost small enough to understand yet was not a "toy" operating system. Most of its

internal algorithms were selected for simplicity, rather than for speed

or sophistication. Both Linux and FreeBSD are readily available to computer-science departments, so many students have access to these systems. We chose Windows XP and Windows 2000 because they provide an opporhmity for us to study a modern operating system with a design and implementation drastically different from those of UNIX. Chapter 23 briefly describes a few other influential operating systems.

This book uses examples of many real-world operating systems to illustrate fundamental operating-system concepts. However, particular attention is paid to the Microsoft family of operating systems (including Windows Vista, Windows 2000, and Windows XP) and various versions of UNIX (including Solaris, BSD, and Mac OS X). We also provide a significant amount of coverage of the Linux operating system reflecting the most recent version of the kernel -Version 2.6-at the time this book was written. The text also provides several example programs written in C and Java. These programs are intended to run in. the following programming environments: Windows systems. The primary programming environment for Windows systems is the Win32 API (application programming interface), which pro- vides a comprehensive set of functions for managing processes, threads, memory, and peripheral devices. We provide several C programs illustrat- ing the use of the Win32 API. Example programs were tested on systems rum1.ing Windows Vista, Windows 2000, and Windows XP.

POSIX. POSIX (which stands for Portable Operating System Inte1jace) repre-

sents a set of standards implemented primarily for UNIX-based operating systems. Although Windows Vista, Windows XP, and Windows 2000 sys- tems can also run certain POSIX programs, our coverage of POSIX focuses primarily on UNIX and Linux systems. POSIX-compliant systems must implement the POSIX core standard (POSIX.1): Linux, Solaris, and Mac OS X are examples of POSIX-compliant systems. POSIX also defines several extensions to the standards, including real-time extensions (POSIXl.b) and an extension for a threads library (POSIX1.c, better known as Pthreads). We provide several programn1.ing examples written inC illustrating the POSIX base API, as well as Pthreads and the extensions for real-time programming. These example programs were tested on Debian Linux 2.4 and 2.6 systems, Mac OS X 10.5, and Solaris 10 using the gee 3.3 and 4.0 compilers. Java. Java is a widely used programming language with a rich API and built-in language support for thread creation and management. Java

xii

Chapter 9, Virtual-Memory Management, updates the Solaris example to include Solaris 10 memory managernent. Chapter 10, File System, is updated with current technologies and capacities. Chapter 11, Implementing File Systems, includes a full description of Sun's ZFS file system and expands the coverage of volumes and directories. Chapter 12, Secondary-Storage Structure, adds coverage of iSCSI, vol- umes, and ZFS pools. Chapter 13, I/0 Systems, adds coverage of PCIX PCI Express, and Hyper- Transport. Chapter 16, Distributed Operating Systems, adds coverage of 802. wireless networks. Chapter 21, The LimiX System, has been updated to cover the latest version of the LimiX kernel. Chapter 23, Influential Operating Systems, increases coverage of very early computers as well as TOPS-20, CP/M, MS-DOS, Windows, and the original Mac OS.

To emphasize the concepts presented in the text, we have added several programming problems and projects that use the POSIX and Win32 APis, as well as Java. We have added more than 15 new programming problems, which emphasize processes, threads, shared memory, process synchronization, and networking. In addition, we have added or modified several programming projects that are more involved than standard programming exercises. These projects include adding a system call to the Linux kernel, using pipes on both UNIX and Windows systems, using UNIX message queues, creating multithreaded applications, and solving the producer-consumer problem using shared memory. The Eighth Edition also incorporates a set of operating-system simulators designed by Steven Robbins of the University of Texas at San Antonio. The simulators are intended to model the behavior of an operating system as it performs various tasks, such as CPU and disk-head schedulil1.g, process creation and interprocess communication, starvation, and address translation. These simulators are written in Java and will run on any computer systern with Java 1.4. Students can download the simulators from WileyPLUS and observe the behavior of several operating system concepts in various scenarios. In addition, each simulator includes several exercises that ask students to set certain parameters of the simulator, observe how the system behaves, and then explain this behavior. These exercises can be assigned through WileyPLUS. The WileyPLUS course also includes algorithmic problems and tutorials developed by Scott M. Pike of Texas A&M University.

xiii

The following teaching supplencents are available in WileyPLUS and on www.wiley.coml go I global/ silberschatz: a set of slides to accompany the book, model course syllabi, all C and Java source code, up-to-date errata, three case study appendices and the Distributed Communication appendix. The WileyPLUS course also contains the simulators and associated exercises, additional practice exercises (with solutions) not found in the text, and a testbank of additional problems. Students are encouraged to solve the practice exercises on their own and then use the provided solutions to check their own answers. To obtain restricted supplements, such as the solution guide to the exercises in the text, contact your local Jorne Wiley & Sons sales representative. Note that these supplements are available only to faculty who use this text.

We use the mailman system for communication among the users of Operating

System Concepts. If you wish to use this facility, please visit the following URL

and follow the instructions there to subscribe: http: I I mailman.cs.yale.edul mailmanllistinfo I os-book The mailman mailing-list system provides many benefits, such as an archive of postings, as well as several subscription options, including digest and Web only. To send messages to the list, send e-mail to: [email protected] Depending on the message, we will either reply to you personally or forward the message to everyone on the mailing list. The list is moderated, so you will receive no inappropriate mail. Students who are using this book as a text for class should not use the list to ask for answers to the exercises. They will not be provided.

We have attempted to clean up every error in this new edition, but-as happens with operating systems-a few obscure bugs may remain. We would appreciate hearing from you about any textual errors or omissions that you identify. If you would like to suggest improvements or to contribute exercises, we would also be glad to hear from you. Please send correspondence to [email protected].

This book is derived from the previous editions, the first three of which were coauthored by James Peterson. Others who helped us with previous editions include Hamid Arabnia, Rida Bazzi, Randy Bentson, David Black,

PART ONE • OVERVIEW

PART TWO • PROCESS MANAGEMENT

xvi

PART THREE • PROCESS COORDINATION

PART FOUR • MEMORY MANAGEMENT

xviii

PART SIX • PROTECTION AND SECURITY

PART SEVEN • DISTRIBUTED SYSTEMS

PART EIGHT • SPECIAL PURPOSE SYSTEMS

PART NINE • CASE STUDIES

Part One

An operating system acts as an intermediary between the user of a computer and the computer hardware. The purpose of an operating system is to provide an environment in which a user can execute programs in a convenient and efficient manner. An operating system is software that manages the computer hard- ware. The hardware must provide appropriate mechanisms to ensure the correct operation of the computer system and to prevent user programs from interfering with the proper operation of the system. Internally, operating systems vary greatly in their makeup, since they are organized along many different lines. The design of a new operating system is a major task. It is impmtant that the goals of the system be well defined before the design begins. These goals form the basis for choices among various algorithms and strategies. Because an operating system is large and complex, it must be created piece by piece. Each of these pieces should be a well delineated portion of the system, with carefully defined inputs, outputs, and functions.