|
Description: Revised and updated, the second edition of Principles of Modern Operating Systems presents a practical introduction to operating systems and illustrates these principles through a hands-on approach using accompanying simulation models developed in Java and C++. Written for upper-level undergraduate courses in computer science, it provides case studies throughout featuring the implementation of Java and C++ simulation models, giving students a thorough look at both the theoretical and practical concepts discussed in modern OS courses. This pedagogical approach is designed to present a clearer, more realistic look at OS concepts, techniques, and methods without sacrificing the theoretical rigor that is necessary at this level. The Second Edition is the ideal text for those interested in gaining comprehensive, hands-on experience using the modern techniques and methods necessary for working with these complex systems.
New and Key Features of the Second Edition:
• Includes a new Chapter 13, Virtual Machines
• Chapter 11 (Security and Protection), has been revised to include the most up-to- date information in this quickly changing field
• Chapter 12 (Networking and Distributed Systems) has been completely rewritten to provide a clearer description of networking and now includes material on grid systems
• Updated to include information on Windows® 7 and Macintosh® OS x throughout the text
• Contains new material on basic hardware architecture that operating systems depend on
• Includes new material on handling multi-core CPUs
Contents: Preface
Chapter 1: Basic Concepts of Operating Systems • Introduction • Software Components • Operating Systems • Operating System Interfaces • Multi-Level Views of an Operating System • Categories of Operating Systems • Small and Specialized Operating Systems • Brief History of Operating Systems • Contemporary Operating Systems • Unix • Microsoft Windows • Mac OS • 64-bit Operating Systems • Microsoft 64-bit Windows 7 • Mac OS X • Summary • Exercises and QuestionsChapter 2: Processes and Threads • Introduction • Processes • Process States • Process Descriptor • Threads • Multithreading • User-Level Threads • Kernel-Level Threads • Java Threads • POSIX Threads • Creating POSIX Threads • Basic Synchronization of Pthreads • Scheduling and Priorities of POSIX Threads • Multiprogramming • CPU and I/O Requests • Interrupting Processes • Context Switch • Summary • Exercises and Questions
Chapter 3: System Performance and Models • Introduction • General Concepts of Modeling • Simple Models of Computer Systems • Performance of Computer Systems • Performance Metrics • Workload and System Parameters • Simulation Models • Types of Simulation Models • Discrete-Event Models • Stochastic Models • A Model of the Simple Batch System • Description of the Model • Implementations of the Model • Simulation Output of the Console Implementation • Output of the GUI Implementation • System Capacity and Bottleneck • Summary • Exercises and Questions
Chapter 4: Systems with Multiprogramming • Introduction • Systems with Multiple Stations • CPU and I/O Bursts • Overlapping of CPU and I/O Processing • Context Switches • Studying Systems with Multiprogramming • Model of a System with Multiprogramming • Model of a System Without Multiprogramming • Comparison of the Two Models • Models with GUI and Graphical Animation • Summary • Exercises and Questions
Chapter 5: Processor Scheduling • Introduction • General Types of Scheduling • Processor Scheduling Concepts • The CPU Scheduler • Scheduling Multiple Classes of Processes • CPU Scheduling Policies • First-Come-First-Served • Shortest Process Next • Round Robin Scheduling • Shortest Remaining Time • Brief Comparison of the Four Scheduling Policies • Dynamic Priority Scheduling • Other Scheduling Policies • Multiprocessor Systems • Summary • Exercises and Questions
Chapter 6: Synchronization Principles • Introduction • Basic Synchronization Principles • No Synchronization • Mutual Exclusion • Critical Sections • Approaches for Implementing Synchronization • Semaphores • Synchronization with Semaphores • Critical Section Problem • Event Ordering • Synchronization Case Studies • The Bounded-Buffer Problem • Synchronization with Semaphores in Java • Simulation Models of the Bounded-Buffer Problem • The Readers-Writers Problem • Simulation Models of the Readers-Writers Problem • POSIX Threads • Creating POSIX Threads • Basic Synchronization of Pthreads • Mutual Exclusion • Semaphores • Monitors • Synchronization with Monitors • The Producer-Consumer Problem with a Monitor • Monitor Synchronization with Java • Simulation Models Using Monitors • Interprocess Communication • Asynchronous Communication • Simulation Model for Asynchronous Communication • Synchronous Communication • Simulation Model for Synchronous Communication • Atomic Transactions • Summary • Exercises and QuestionsChapter 7: Deadlocks • Introduction • Basic Principles of Deadlock • Resource Allocation Graph • Conditions for the Existence of Deadlock • The Dining Philosophers • Modeling Deadlock • Informal Solution to Deadlock • Methods for Handling Deadlock • Deadlock Prevention • Disallowing Hold and Wait • Disallowing Circular Wait • Model with Graphical Animation • Deadlock A voidance • Banker’s Algorithm • Applying the Banker’s Algorithm • Deadlock Detection and Recovery • Deadlock Detection • Recovery • Summary • Exercises and Questions
Chapter 8: File Management • Introduction • Files • File Attributes • Folders • Pathnames • Access Methods • Open • Close • Read • Write • Sequential Access • Streams, Pipes, and I/O Redirection • Other I/O System Calls • Directory Functions • File Space Allocation • Cluster Allocation • Calculating Read/Write Addresses • Free Space Management • Disk Fragmentation • Reliability of Disk Space Management • Real- World Systems • Microsoft FAT System • Microsoft NTFS System • Linux Ext2 and Ext3 Systems • Mac OS X HFS+ Systems • Other File Systems • Virtual File System • Removable Media • Seeing the Future Now • Summary • Exercises and Questions
Chapter 9: The I/O System • Introduction • I/O Hardware • Direct Memory Access • Hard Disk Drives • Solid State Disks • Device I/O Structure • Intelligent Buses • Handling Multiple Devices Simultaneously • I/O Performance Optimization • Reducing the Number of I/O Requests • Buffering and Caching • I/O Scheduling • Hard Disk I/O Scheduling • First-Come First-Served Algorithm • Shortest Seek Time First Algorithm • Elevator (SCAN) Algorithm • Circular Scan Algorithm • Optimizing Rotational Latency • Interaction of Disk Scheduling and Other System Functions • System Configuration • Hard Disk Scheduling Simulation Model • Summary • Exercises and Questions
Chapter 10: Memory Management • Introduction • Process Address Space • Binding • Static and Dynamic Loading • Static and Dynamic Linking • Contiguous Memory Allocation • Fixed Partitions • Dynamic Partitions • Swapping • Noncontiguous Memory Allocation • Paging • Segmentation • Virtual Memory • Basic Concepts • Process Locality • Using Segments • Memory Protection • Shared Memory • Address Translation • Page Size Considerations • Paging with Virtual Memory • Paging Policies • Frame Allocation • Page Faults and Performance Issues • Paging Algorithms • Static Paging Algorithms • Dynamic Paging Algorithms • Thrashing • Combining Paging with Segmentation • Summary • Exercises and Questions
Chapter 11: Security and Protection • Introduction • Problems of Security • Security and Protection Components • Physical Security • User Authentication • Protection • Secure Communications • Digital Certificates • People • System Vulnerabilities • Social Engineering • Trojan Horse Programs • Spyware • Trap Doors • Database Access Vulnerabilities • Buffer and Stack Overflow • Invasive and Malicious Software • Defending the System and the User • Intrusion Detection Management • Security and Privacy • Secure Systems Versus Systems Security • Summary • Exercises and QuestionsChapter 12: Networking and Distributed Systems • Introduction • Ethernet • Internetworking and TCP/IP • Connection Oriented Versus Connectionless • Streaming Data • World Wide Web • DNS and DHCP • DNS Caching • DHCP • Parallel Computing • Simple Model of Parallel Speedup • Limitations of Parallel Speedup • Multiple Levels of Parallelism • Cluster and Grid Computing • Distributed Application Technologies • Distributed Software Architectures • Software Interface: ODBC • Exercises and Questions
Chapter 13: Virtual Machines • Introduction • Overall Virtual Machine Structure • Hardware Interface • Instruction Execution • Software Trap Handling • Device Input/Output • Memory Management • Hardware Enhancements • Additional Execution Modes • Memory Mapping Enhancements • Mapping Devices to Host OS Structures • Unmapped Devices • Virtual Machine Integration • Summary • Exercises and Questions
Appendix A: Introduction to Using Linux • Introduction • Command-Line Interface • Files and Directories • Specifying Paths • Wildcards • Basic Commands • The passwd Command • The man Command • The Is Command • The cp Command • The mv Command • The rm Command • The cd Command • The mkdir Command • The rmdir Command • I/O Redirection and Pipe Operators • Shell Variables • The pwd Command • The more Command • The exit Command • Text Editing • File Access Permissions • The cat Command • Commands for Process Control • Foreground and Background Processes • Script Files • Comments in Scripts • Positional Parameters • Command Substitution • The test Command • The if and the test Commands • The set Command • Mutibranch with the if Command • Repetition with the for Command • Repetition with the while Command • Searching Data in Files • Evaluating Expressions • Connecting to a Remote Linux Server • The Putty Program • SSH Client • X-Window and Graphical Desktops • Using the K Desktop Environment
Appendix B: Java and POSIX Threads • Introduction • Threads • Object-Oriented Concepts and Threads in Java • Inheritance • Abstract Classes • Polymorphism • Classes and Interfaces • Exceptions • Java Threads • POSIX Threads • Creating POSIX Threads • Basic Synchronization of Pthreads • Mutual Exclusion • Semaphores • Condition Variables • Scheduling and Priorities of POSIX Threads
Appendix C: The Java Modeling Framework • Introduction • Basic Structure of a Model • Simulation Model • Input Parameters • Class Input • Class UI • Processes • The Request Processor • Request • Schedular • The IncomingRequestGenerator Class • O ResourceManager • The Output Class • Simulation Display • The Plotter Class • The QPlotter Subclass • Animation • The QGraphic Abstract Class • The SchedularGraphic Concrete Subclass • Random Number Generator Classes • The Statistic Class • Java Coding Recommendations • The Simulation Package on CD-ROM • Files on the CD-ROM • Compiling with Java and the PsimJ Library • Example ProgramAppendix D: Psim3 • The Psim3 Library • The Time Dimension • Defining Active Objects • Running a Simulation • Features in Class process • Scheduling a Process • Suspending a Process • Interrupting a Process • Terminating a Process • The Queue Library • General Description • Features of Class squeue • Features of Class pqueue • The Resource Library • General Description • Relevant Features of the res Class • Features in Class bin • The waitq Class • The condq Class • Random Numbers • Class randint • Class erand • Class normal • Class poisson • Class urand • The Simulation Package on CD-ROM • Files on the CD-ROM • Brief Instructions for Compiling and Linking
Appendix E: Overview of Probability Theory • Introduction • Basic Concepts • Probability of an Event • Random Numbers • Probability Distribution Functions • The Geometric Distribution • The Binomial Distribution • The Exponential Distribution • The Poisson Distribution • The Uniform Distribution • The Normal Distribution • Statistics • Analyzing Sample Data • State-Dependent Models • State Dependence • Stochastic Matrices
Appendix F: Using the C++ Models • Using Linux • Using Unix (Sun Solaris) • Using Microsoft Windows
Appendix G: The Computer System: An Overview • Computer System Components • The Central Processing Unit (CPU) • Computer Instructions • Fetch/Decode/Execute/Interrupt Cycle • Simple Computer Instructions • Computer Architecture Layers • Operating Systems • Manage the Resources of the Computer System • Provide a User Interface • Provide a Programming Interface • Process Execution Mode • Provide a Networking Interface • Language Translation • Assembly Language • High-Level Languages • Byte Code and the Virtual Machine • CPU Internal Structure • Adding the System Bus Interface • Supporting the Instruction Fetch • Detailed Program Execution • CPU Performance Enhancement: Pipeline • System Performance Enhancement: Cache • The Need for Cache • Cache Performance • Fully Associative Cache • Exercises and Questions • Bibliography • Index
About the Authors: Jose Garrido-Kennesaw State University Jose Garrido is an Associate Professor of Computer Science at Kennesaw State University in Georgia. He holds a Ph.D. in Information Technology from George Mason University, and has written numerous books and papers on using object-oriented programming in discrete-event simulation.
Richard Schlesinger-Kennesaw State University Richard Schlesinger teaches computer science at Kennesaw State University. His primary emphasis is on exploring new pedagogical methods in college level courses, as well as introducing computer programming to high school students. Prior to teaching at KSU, he received a Master’s degree in Computer Science from Illinois Institute of Technology and then spent 30 years in industry. During that time, he worked on the internals of six different operating systems, as well as the design of several computers. He also developed various communication subsystems, several transaction processors, and cryptographic systems. He was one of the principal designers of the first working data flow computer.ISBN - 9789380853505
|
|
Pages : 584
|