| |
| |
Preface | |
| |
| |
About the Author | |
| |
| |
| |
Reader's and Instructor's Guide | |
| |
| |
| |
Outline of the Book | |
| |
| |
| |
A Roadmap for Readers and Instructors | |
| |
| |
| |
Internet and Web Resources | |
| |
| |
| |
Background | |
| |
| |
| |
Computer System Overview | |
| |
| |
| |
Basic Elements | |
| |
| |
| |
Evolution of the Microprocessor | |
| |
| |
| |
Instruction Execution | |
| |
| |
| |
Interrupts | |
| |
| |
| |
The Memory Hierarchy | |
| |
| |
| |
Cache Memory | |
| |
| |
| |
Direct Memory Access | |
| |
| |
| |
Multiprocessor and Multicore Organization | |
| |
| |
| |
Recommended Reading and Web Sites | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Performance Characteristics of Two-Level Memory | |
| |
| |
| |
Procedure Control | |
| |
| |
| |
Operating System Overview | |
| |
| |
| |
Operating System Objectives and Functions | |
| |
| |
| |
The Evolution of Operating Systems | |
| |
| |
| |
Major Achievements | |
| |
| |
| |
Developments Leading to Modern Operating Systems | |
| |
| |
| |
Virtual Machines | |
| |
| |
| |
OS Design Considerations for Multiprocessor and Multicore | |
| |
| |
| |
Microsoft Windows Overview | |
| |
| |
| |
Traditional UNIX Systems | |
| |
| |
| |
Modern UNIX Systems | |
| |
| |
| |
Linux | |
| |
| |
| |
Recommended Reading and Web Sites | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Processes | |
| |
| |
| |
Process Description and Control | |
| |
| |
| |
What is a Process? | |
| |
| |
| |
Process States | |
| |
| |
| |
Process Description | |
| |
| |
| |
Process Control | |
| |
| |
| |
Execution of the Operating System | |
| |
| |
| |
Security Issues | |
| |
| |
| |
UNIX SVR4 Process Management | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Threads | |
| |
| |
| |
Processes and Threads | |
| |
| |
| |
Types of Threads | |
| |
| |
| |
Multicore and Multithreading | |
| |
| |
| |
Windows 7 Thread and SMP Management | |
| |
| |
| |
Solaris Thread and SMP Management | |
| |
| |
| |
Linux Process and Thread Management | |
| |
| |
| |
Mac OS X Grand Central Dispatch | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Concurrency: Mutual Exclusion and Synchronization | |
| |
| |
| |
Principles of Concurrency | |
| |
| |
| |
Mutual Exclusion: Hardware Support | |
| |
| |
| |
Semaphores | |
| |
| |
| |
Monitors | |
| |
| |
| |
Message Passing | |
| |
| |
| |
Readers/Writers Problem | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Concurrency: Deadlock and Starvation | |
| |
| |
| |
Principles of Deadlock | |
| |
| |
| |
Deadlock Prevention | |
| |
| |
| |
Deadlock Avoidance | |
| |
| |
| |
Deadlock Detection | |
| |
| |
| |
An Integrated Deadlock Strategy | |
| |
| |
| |
Dining Philosophers Problem | |
| |
| |
| |
UNIX Concurrency Mechanisms | |
| |
| |
| |
Linux Kernel Concurrency Mechanisms | |
| |
| |
| |
Solaris Thread Synchronization Primitives | |
| |
| |
| |
Windows 7 Concurrency Mechanisms | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Memory | |
| |
| |
| |
Memory Management | |
| |
| |
| |
Memory Management Requirements | |
| |
| |
| |
Memory Partitioning | |
| |
| |
| |
Paging | |
| |
| |
| |
Segmentation | |
| |
| |
| |
Security Issues | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Loading and Linking | |
| |
| |
| |
Virtual Memory | |
| |
| |
| |
Hardware and Control Structures | |
| |
| |
| |
Operating System Software | |
| |
| |
| |
UNIX and Solaris Memory Management | |
| |
| |
| |
Linux Memory Management | |
| |
| |
| |
Windows 7 Memory Management | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading and Web Sites | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Scheduling | |
| |
| |
| |
Uniprocessor Scheduling | |
| |
| |
| |
Types of Scheduling | |
| |
| |
| |
Scheduling Algorithms | |
| |
| |
| |
Traditional UNIX Scheduling | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Response Time | |
| |
| |
| |
Queuing Systems | |
| |
| |
| |
Multiprocessor and Real-Time Scheduling | |
| |
| |
| |
Multiprocessor Scheduling | |
| |
| |
| |
Real-Time Scheduling | |
| |
| |
| |
Linux Scheduling | |
| |
| |
| |
UNIX FreeBSD Scheduling | |
| |
| |
| |
Windows 7 Scheduling | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Input/Output and Files | |
| |
| |
| |
I/O Management and Disk Scheduling | |
| |
| |
| |
I/O Devices | |
| |
| |
| |
Organization of the I/O Function | |
| |
| |
| |
Operating System Design Issues | |
| |
| |
| |
I/O Buffering | |
| |
| |
| |
Disk Scheduling | |
| |
| |
| |
RAID | |
| |
| |
| |
Disk Cache | |
| |
| |
| |
UNIX FreeBSD I/O | |
| |
| |
| |
Linux I/O | |
| |
| |
| |
Windows 7 I/O | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Disk Storage Devices | |
| |
| |
| |
File Management | |
| |
| |
| |
Overview | |
| |
| |
| |
File Organization and Access | |
| |
| |
| |
File Directories | |
| |
| |
| |
File Sharing | |
| |
| |
| |
Record Blocking | |
| |
| |
| |
Secondary Storage Management | |
| |
| |
| |
File System Security | |
| |
| |
| |
UNIX File Management | |
| |
| |
| |
Linux File Management | |
| |
| |
| |
Windows 7 File System | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Embedded Systems | |
| |
| |
| |
Embedded Operating Systems | |
| |
| |
| |
Embedded Systems | |
| |
| |
| |
Characteristics of Embedded Operating Systems | |
| |
| |
| |
ECOS | |
| |
| |
| |
TinyOS | |
| |
| |
| |
Recommended Reading and Web Sites | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Security | |
| |
| |
| |
Computer Security Threats | |
| |
| |
| |
Computer Security Concepts | |
| |
| |
| |
Threats, Attacks, and Assets | |
| |
| |
| |
Intruders | |
| |
| |
| |
Malicious Software Overview | |
| |
| |
| |
Viruses, Worms, and Bots | |
| |
| |
| |
Rootkits | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Computer Security Techniques | |
| |
| |
| |
Authentication | |
| |
| |
| |
Access Control | |
| |
| |
| |
Intrusion Detection | |
| |
| |
| |
Malware Defense | |
| |
| |
| |
Dealing with Buffer Overflow Attacks | |
| |
| |
| |
Windows 7 Security | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Distributed Systems | |
| |
| |
| |
Distributed Processing, Client/Server, and Clusters | |
| |
| |
| |
Client/Server Computing | |
| |
| |
| |
Distributed Message Passing | |
| |
| |
| |
Remote Procedure Calls | |
| |
| |
| |
Clusters | |
| |
| |
| |
Windows 7 Cluster Server | |
| |
| |
| |
Sun Cluster | |
| |
| |
| |
Beowulf and Linux Clusters | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
Appendices | |
| |
| |
| |
Topics in Concurrency | |
| |
| |
| |
Mutual Exclusion: Software Approaches | |
| |
| |
| |
Race Conditions and Semaphores | |
| |
| |
| |
A Barbershop Problem | |
| |
| |
| |
Problems | |
| |
| |
| |
| |
| |
| |
Animations and Animation Projects | |
| |
| |
| |
Simulations | |
| |
| |
| |
Programming Projects | |
| |
| |
| |
Research Projects | |
| |
| |
| |
Reading/Report Assignments | |
| |
| |
| |
Writing Assignments | |
| |
| |
| |
Documentation Projects | |
| |
| |
| |
BACI and Nachos | |
| |
| |
References | |
| |
| |
Index | |
| |
| |
Online Chapters and Appendices | |
| |
| |
| |
Networking | |
| |
| |
| |
The Need for a Protocol Architecture | |
| |
| |
| |
The TCP/IP Protocol Architecture | |
| |
| |
| |
Sockets | |
| |
| |
| |
Linux Networking | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading and Web Sites | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
The Trivial File Transfer Protocol | |
| |
| |
| |
Distributed Process Management | |
| |
| |
| |
Process Migration | |
| |
| |
| |
Distributed Global States | |
| |
| |
| |
Distributed Mutual Exclusion | |
| |
| |
| |
Distributed Deadlock | |
| |
| |
| |
Summary | |
| |
| |
| |
Recommended Reading | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Overview of Probability and Stochastic Processes | |
| |
| |
| |
Probability | |
| |
| |
| |
Random Variables | |
| |
| |
| |
Elementary Concepts of Stochastic Processes | |
| |
| |
| |
Recommended Reading and Web Sites | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
| |
Queuing Analysis | |
| |
| |
| |
How Queues Behave���A Simple Example | |
| |
| |
| |
Why Queuing Analysis? | |
| |
| |
| |
Queuing Models | |
| |
| |
| |
Single-Server Queues | |
| |
| |
| |
Multiserver Queues | |
| |
| |
| |
Examples | |
| |
| |
| |
Queues with Priorities | |
| |
| |
| |
Networks of Queues | |
| |
| |
| |
Other Queuing Models | |
| |
| |
| |
Estimating Model Parameters | |
| |
| |
| |
Recommended Reading and Web Sites | |
| |
| |
| |
Key Terms, Review Questions, and Problems | |
| |
| |
Programming Project One: Developing a Shell | |
| |
| |
Programming Project Two: the HOST Dispatcher Shell | |
| |
| |
| |
Topics in Computer Organization | |
| |
| |
| |
Processor Registers | |
| |
| |
| |
Instruction Execution | |
| |
| |
| |
I/O Communication Techniques | |
| |
| |
| |
Hardware Performance Issues and Multicore Organization | |
| |
| |
| |
Object-Oriented Design | |
| |
| |
| |
Motivation | |
| |
| |
| |
Object-Oriented Concepts | |
| |
| |
| |
Benefits of Object-Oriented Design | |
| |
| |
| |
CORBA | |
| |
| |
| |
Recommended Reading and Web Sites | |
| |
| |
| |
Amdahl's Law | |
| |
| |
| |
Hash Tables | |
| |
| |
| |
Response Time | |
| |
| |
| |
Queuing System Concepts | |
| |
| |
| |
The Single-Server Queue | |
| |
| |
| |
The Multiserver Queue | |
| |
| |
| |
Poisson Arrival Rate | |
| |
| |
| |
The Complexity of Algorithms | |
| |
| |
| |
Standards Organizations | |
| |
| |
| |
The Importance of Standards | |
| |
| |
| |
Standards and Regulation | |
| |
| |
| |
Standards-Setting Organizations | |
| |
| |
| |
Cryptographic Algorithms | |
| |
| |
| |
Symmetric Encryption | |
| |
| |
| |
Public-Key Cryptography | |
| |
| |
| |
Secure Hash Functions | |
| |
| |
| |
The International Reference Alphabet | |
| |
| |
| |
BACI: the Ben-Ari Concurrent Programming System | |
| |
| |
| |
Introduction | |
| |
| |
| |
BACI | |
| |
| |
| |
Examples of BACI Programs | |
| |
| |
| |
BACI Projects | |
| |
| |
| |
Enhancements to the BACK System | |
| |
| |
| |
Sockets: A Programmer's Introduction | |
| |
| |
| |
Versions of Sockets | |
| |
| |
| |
Sockets, Socket Descriptors, Ports, and Connections | |
| |
| |
| |
The Client/Server Model of Communication | |
| |
| |
| |
Sockets Elements | |
| |
| |
| |
Stream and Datagram Sockets | |
| |
| |
| |
Run-Time Program Control | |
| |
| |
| |
Remote Execution of a Windows Console Application | |