Operating Systems: Evolutionary Concepts and Modern Design Principles

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

This text demystifies the subject of operating systems by using a simple step-by-step approach, from fundamentals to modern concepts of traditional uniprocessor operating systems, in addition to advanced operating systems on various multiple-processor platforms and also real-time operating systems (RTOSs). While giving insight into the generic operating systems of today, its primary objective is to integrate concepts, techniques, and case studies into cohesive chapters that provide a reasonable balance between theoretical design issues and practical implementation details. It addresses most of the issues that need to be resolved in the design and development of continuously evolving, rich, diversified modern operating systems and describes successful implementation approaches in the form of abstract models and algorithms. This book is primarily intended for use in undergraduate courses in any discipline and also for a substantial portion of postgraduate courses that include the subject of operating systems. It can also be used for self-study. Key Features • Exhaustive discussions on traditional uniprocessor-based generic operating systems with figures, tables, and also real-life implementations of Windows, UNIX, Linux, and to some extent Sun Solaris. • Separate chapter on security and protection: a grand challenge in the domain of today’s operating systems, describing many different issues, including implementation in modern operating systems like UNIX, Linux, and Windows. • Separate chapter on advanced operating systems detailing major design issues and salient features of multiple-processor-based operating systems, including distributed operating systems. Cluster architecture; a low-cost base substitute for true distributed systems is explained including its classification, merits, and drawbacks. • Separate chapter on real-time operating systems containing fundamental topics, useful concepts, and major issues, as well as a few different types of real-life implementations. • Online Support Material is provided to negotiate acute page constraint which is exclusively a part and parcel of the text delivered in this book containing the chapter-wise/topic-wise detail explanation with representative figures of many important areas for the completeness of the narratives.

Author(s): Pranabananda Chakraborty
Publisher: CRC Press
Year: 20232

Language: English
Pages: 641

Cover
Half Title
Title
Copyright
Contents
Preface
Author Bio
Chapter 1 Computers and Software
1.1 Introduction
1.2 Computer Software: System Software
1.3 Operating Systems
1.4 Hardware Structure Terminology
1.5 Programming Terminology
1.6 Evolution of Operating Systems and Their Role
1.6.1 The First-Generation System and Zero-Generation OS (1945–1954)
1.6.2 The Second-Generation System and First-Generation OS (1955–1964)
1.6.3 The Third-Generation System and Third-Generation OS (1965–1980)
1.6.4 Modern Operating Systems
1.6.5 Distributed Operating Systems
1.6.6 Clusters: A Distributed Computer System Design
1.6.7 Real-Time Operating Systems
1.6.8 Genesis of Modern Operating Systems and Grand Challenges
Summary
Exercises
Suggested References and Websites
Websites
Chapter 2 Operating Systems: Concepts and Issues
2.1 Operating Systems: Objectives and Functions
2.1.1 Operating Systems: Resource Manager
2.2 Process: Concepts and Views
2.2.1 Process Types
2.3 Operating Systems: Design Issues
2.3.1 Event: A Fundamental Concept
2.3.2 Interrupts and Traps
2.3.3 Resource Sharing and Protection
2.3.4 Scheduling and Its Role
2.4 Operating System: Supports and Services
2.4.1 System Calls
2.4.2 Procedure Calls
2.4.3 Processor Modes: Mode Bit
2.4.4 Software Interrupt
2.4.5 Message Passing
2.4.6 Signals
2.4.7 Locks
2.4.8 Pipes
2.4.9 Command Language Users
2.5 Design Factors and Related Issues
Summary
Exercises
Chapter 3 Operating System: Structures and Designs
3.1 Evolution of System Structure
3.1.1 Monolithic Systems
3.1.2 Hierarchical and Extended Machines
3.1.3 Layered Systems—Modular Hierarchical Design
3.1.4 Virtual Machine Operating Systems—A Revolutionary Approach
3.1.5 Networks of Computers: Client–Server Model: A New Direction
3.1.6 Comparing MVS and UNIX: Concepts and Terms
3.1.7 Monolithic Kernel
3.1.8 Case Study: Monolithic Kernel-Based Operating System
3.1.9 Microkernel: The Extensible Nucleus
3.1.10 Hybrid Kernel
3.1.11 Exokernel
3.2 Modern Operating Systems: Design Issues and Salient Features
Summary
Exercises
Suggested References and Websites
Chapter 4 Processor Management
4.1 Introduction
4.2 The Concept and Implementation of Process Model
4.3 Processor Management Functions
4.4 Structure of Processor Management
4.5 Process–States Model
4.5.1 Additional Process States: Suspended State
4.5.2 Suspended Processes: Their Characteristics and Importance
4.6 Process Description
4.7 Process Image: Process Totality
4.7.1 Process Data Block and Process Control Block
4.8 Process Creation
4.9 Process Creation Methods
4.10 Process Hierarchy and Daemon Processes
4.11 Process Switch: Change of Process
4.12 Context Switch: Change of Context
4.13 Process-Based Operating Systems
4.14 Threads: An Alternative Approach
4.14.1 Introduction to Threads
4.14.2 Conventional Thread States
4.14.3 Single-Shot Threads
4.14.4 Types of Threads
4.14.5 Threads: Priority
4.14.6 Multithreading
4.14.7 Threads and Processes: A Comparative Overview
4.14.8 Thread Implementations
4.14.9 Case Study: Solaris Threads Implementations
4.15 Objects: Object-Oriented Concept
4.15.1 Case Study: Windows NT Implementation
4.16 Process Scheduling (Uniprocessor): Time Management
4.16.1 Scheduling Criteria: Short-Term Scheduler
4.16.2 Scheduler Design
4.16.3 Scheduling Mechanisms
4.16.4 Process Schedulers: Different Kinds
4.16.5 Process Scheduler Organization
4.16.6 System Performance
4.16.7 Scheduling Strategies
4.16.8 Nonpreemptive Strategies
4.16.9 Preemptive Strategies
4.16.10 Classification of Scheduling Policies
4.16.11 Fair-Share Scheduling
4.16.12 Hybrid Methods
4.16.13 State-Dependent Priority Methods
4.16.14 External Priority Methods
4.16.15 Other Scheduling Systems
4.16.16 Evaluating Policies
4.16.17 Scheduling Levels
4.16.18 Performance Comparison
4.16.19 Guiding Principles
4.16.20 Case Study: UNIX, Linux, Windows NT
4.17 Interprocess Synchronization
4.17.1 Introduction
4.17.2 Concurrency: Forms and Issues
4.17.3 Race Condition
4.17.4 Mutual Exclusion: Requirements
4.17.5 Mutual Exclusion Implementation
4.18 Interprocess Communication and Synchronization
4.18.1 Messages
4.18.2 Message Format
4.18.3 Message Implementation: Different Issues
4.18.4 Message Exchange: Synchronous versus Asynchronous
4.18.5 Design Issues: Message-Passing Systems
4.18.6 Messages: For Interprocess Synchronization and Communication
4.18.7 Message Usage: A Possibility in Interrupt Signaling
4.18.8 Equivalence of Primitives
4.18.9 Implementation: Interprocess Communication and Synchronization
4.19 Deadlock and Starvation
4.19.1 Resources: Different Types
4.19.2 General Resource Systems
4.19.3 Deadlocks and Resources
4.19.4 The Conditions for Deadlocks
4.19.5 Deadlock Modeling: Graphical Representation
4.19.6 Deadlock Detection and Subsequent Recovery
4.19.7 Deadlock Prevention
4.19.8 Deadlock Avoidance
4.19.9 The Banker’s Algorithm
4.19.10 Hybrid Strategy: A Combined Approach
4.19.11 Case Study: Deadlock Handling in UNIX
4.19.12 Discussions: Various Strategies and Their Impacts
4.19.13 Starvation
Summary
Exercises
Suggested References and Websites
Chapter 5 Memory Management
5.1 Introduction
5.2 Key Characteristics of Memory Systems
5.3 Primary Memory: Essential Requirements
5.4 Memory Hierarchies: Access-Time Reduction
5.5 Memory Management: Some Basic Requirements
5.5.1 Separation and Sharing: Importance and Different Approaches
5.5.2 Protection: Importance and Implementation
5.5.3 Relocation: Address Translation
5.5.4 Swapping: Impact and Implementation
5.5.5 Logical Addresses and Logical Organization
5.5.6 Physical Addresses and Physical Organization
5.6 Memory Management: Functions and Responsibilities
5.7 Different Memory-Management Schemes: Comparison Parameters
5.8 Memory Management Schemes
5.8.1 Contiguous Memory Allocation
5.8.2 Noncontiguous Memory Allocation
5.8.3 Memory Allocation Strategy: For OS Kernel Usage
5.9 Virtual Memory
5.9.1 Background and History
5.9.2 Virtual Memory and Locality
5.9.3 Basic Concepts
5.9.4 Virtual Memory Implementation
5.9.5 Virtual Memory Management: Design Issues
5.10 Case Study: Memory Management in UNIX and Solaris
5.11 Case Study: Memory Management in Linux
5.12 Case Study: Memory Management in Windows
5.13 Cache Memory
Summary
Exercises
Suggested References and Websites
Chapter 6 Device Management
6.1 Introduction
6.2 I/O Devices: General Characteristics
6.3 Types of I/O Devices
6.4 I/O Controllers: Device Controllers
6.5 I/O Systems: I/O Modules
6.6 I/O System Organization: Types of I/O Operation
6.7 Physical I/O Operation: Device-Level I/O
6.8 Device Management: Objectives
6.9 Device Management: Functions
6.9.1 Dedicated, Shared, and Virtual Devices
6.10 Physical I/O Function Organization: Logical Structuring
6.11 Device Manager: Its Constituents and Design Principles
6.11.1 Scheduler and Interrupt Handler
6.11.2 Device Drivers
6.11.3 Device-Independent Software
6.11.4 User-Level I/O Software
6.12 I/O Buffering
6.13 Clock
6.13.1 Clock Hardware
6.13.2 Clock Software (Clock Device Drivers)
6.14 Magnetic Disk I/O
6.14.1 Physical Characteristics
6.14.2 Disk Components and Organization
6.15 Disk I/O Operation: Parameters
6.16 Disk Management: Data Organization and Formatting
6.17 Disk Access Time Management: Disk Arm Scheduling Policies
6.17.1 Random Scheduling
6.17.2 First-In-First-Out/First-Come-First-Serve
6.17.3 Priority
6.17.4 Last-In-First-Out
6.17.5 Shortest-Seek (Service)-Time-First
6.17.6 SCAN
6.17.7 LOOK or Elevator Algorithm
6.17.8 Circular SCAN or C-SCAN
6.17.9 C-LOOK
6.17.10 N-step-SCAN
6.17.11 FSCAN
6.17.12 Deadline Scheduling
6.17.13 Anticipatory Scheduling
6.18 Raid
6.19 Disk Cache
6.19.1 Design Considerations
6.20 Page Cache
6.21 Unified Disk Cache
6.22 Case Study: Device Management in UNIX
6.23 Case Study: Device Management in Linux
6.24 Case Study: Device (I/O) Management in Windows
Summary
Exercises
Suggested References and Websites
Chapter 7 File Management
7.1 Introduction
7.2 Files
7.3 File Systems
7.3.1 File Naming
7.3.2 File Structure
7.3.3 File Types
7.3.4 File Attributes
7.3.5 File Operations: System Calls
7.3.6 File Access
7.4 File Service: File Servers
7.5 File Control Blocks
7.6 File Management Systems: Requirements
7.7 File Management Systems: Functions and Design Issues
7.8 File Management Systems: Design Principles
7.9 File Organization and Access: Structured Files
7.9.1 The Pile
7.9.2 The Sequential File
7.9.3 Indexed Sequential Files
7.9.4 Indexed Files: Inverted Files
7.9.5 The Direct (or Hashed) File
7.9.6 Access Methods
7.10 File Directories
7.10.1 Structure
7.11 Graph Directory Structure: File Sharing
7.12 Blocking of Records: Logical to Physical
7.12.1 Fixed-Length Blocking
7.12.2 Variable-Length Spanned Blocking
7.12.3 Variable-Length Unspanned Blocking
7.12.4 Choice of Blocking Factor
7.13 Management of Secondary Storage
7.14 File Allocation: Different Issues and Approaches
7.14.1 Static (Pre-Allocation) and Dynamic Allocation
7.15 File Allocation: Different Methods
7.15.1 Contiguous Allocation
7.15.2 Noncontiguous Allocation: Linked (or Chained) Allocation
7.15.3 Indexed Allocation
7.16 Free Space Management: Different Techniques
7.16.1 Disk Status Map or Bit Tables
7.16.2 Chained Free Blocks and Groups of Blocks
7.16.3 Indexing
7.16.4 Free List of Blocks
7.17 File Organization: Physical Representation
7.18 File System Reliability
7.18.1 File System Integrity: Importance
7.18.2 Reliability Implementation: Different Techniques
7.19 Virtual File Systems
7.20 Pipes
7.21 File System Performance
7.22 Log-Structured File Systems
7.23 Case Study: File Management Systems in UNIX
7.24 Case Study: File Management Systems in Linux
7.25 Case Study: File Management Systems in Windows
Summary
Exercises
Suggested References and Websites
Chapter 8 Security and Protection
8.1 Introduction
8.2 Security and Protection: An Overview
8.3 Goals of Security and Protection: Security Threats
8.4 Security: Types of Threats
8.5 Security Attacks: Penetration Attempts on Computer System Assets
8.5.1 Passive Attacks
8.5.2 Active Attacks
8.6 Security Policies and Mechanisms: Design Issues
8.7 Protection
8.8 Protection of Memory
8.9 Protection Structure: Access Control
8.9.1 User-Oriented
8.9.2 Data-Oriented
8.10 Intruders
8.11 User Authentication
8.11.1 Passwords
8.11.2 Artifact-Based Authentication
8.11.3 Biometrics
8.12 Malicious Programs
8.12.1 Trap Door
8.12.2 Logic Bomb
8.12.3 Trojan Horse
8.12.4 Viruses
8.12.5 Worms
8.12.6 Zombies
8.13 Encryption
8.13.1 Encryption Techniques
8.14 Case Study: UNIX Security
8.15 Case Study: Linux Security
8.16 Case Study: Windows Security
Summary
Exercises
Suggested References and Websites
Recommended Websites
Chapter 9 Distributed Systems—An Introduction
9.1 Distributed Computing Systems: Evolution
9.2 Characteristics of Distributed Computing Systems: Advantages
9.3 Distributed Computing Systems: Disadvantages
9.4 Distributed Computing Systems: Hardware Concepts
9.5 Distributed Computing Systems: Different Forms
9.5.1 Systems Consisting of Minicomputers
9.5.2 Systems Containing Workstations
9.5.3 Workstation–Server Model: Client–Server Model
9.5.4 Systems with Processor Pools
9.5.5 Hybrid Systems
9.6 Distributed Computing Systems: Software Concepts
9.7 Network Operating Systems and NFS
9.8 Distributed Operating Systems
9.9 Distributed Operating Systems: Design Issues
9.9.1 Transparency and Its Different Aspects
9.9.2 Reliability
9.9.3 Flexibility
9.9.4 Scalability
9.9.5 Performance
9.9.6 Security
9.9.7 Heterogeneity
9.10 Multiprocessor Operating Systems
9.10.1 Multiprocessor Architecture
9.10.2 Operating System Considerations
9.10.3 Case Study: Linux in Multiprocessors
9.10.4 Priorities and Time Slices
9.10.5 Case Study: Windows in Multiprocessors (SMP)
9.11 Multicomputer Operating Systems
9.11.1 Multicomputer Architecture
9.11.2 Operating System Considerations
9.11.3 Middleware
9.12 Comparison between Various Types of Operating Systems
9.13 Distributed Systems: Network of Computers
9.13.1 Networking: Concepts and Issues
9.13.2 Communication Protocols for Distributed Systems: Essential Requirements
9.13.3 Standard Communication Protocols
9.13.4 Sockets
9.13.5 A Traditional Distributed Operating System: Amoeba
9.13.6 Internetworking: Concepts and Issues
9.14 Distributed Operating Systems: Workstation–Server Model
9.14.1 Naming
9.14.2 Process Migration
9.14.3 Communication in Distributed Systems: Distributed Message Passing
9.14.4 Remote Procedure Calls
9.14.5 Distributed Shared Memory
9.14.6 Distributed File Systems
9.14.7 Fault Tolerance
9.14.8 Client and Server Node Failures
9.14.9 Operation of Distributed File Systems: An Overview
9.14.10 Case Study: Windows
9.14.11 Case Study: Sun NFS
9.14.12 Case Study: Linux General Parallel File System
9.15 Clusters: A Distributed Computer System Design
9.15.1 Distinct Advantages
9.15.2 Classification of Clusters
9.15.3 Different Clustering Methods
9.15.4 General Architecture
9.15.5 Operating System Considerations
9.15.6 Case Study: Windows Clusters
9.15.7 Case Study: Sun Clusters
Summary
Exercises
Suggested References and Websites
Websites
Chapter 10 Real-Time Operating Systems
10.1 Background: Real-Time Systems
10.2 Real-Time Tasks: An Overview
10.2.1 Real-Time Tasks: Parameters
10.3 Real-Time Systems: Different Issues
10.4 Real-Time Operating Systems: Evolution
10.5 Real-Time Operating Systems: Design Philosophies
10.6 Real-Time Operating Systems: Characteristics and Requirements
10.7 Real-Time Operating Systems: Features
10.8 Real-Time Operating Systems: Basic Components
10.8.1 Threads and Tasks
10.8.2 The Kernel
10.8.3 Scheduling Mechanisms
10.8.4 Time Services: Clocks and Timers
10.8.5 Communication and Synchronization
10.8.6 Memory Management
10.9 Case Studies
10.9.1 Linux: Real-Time Extensions
10.9.2 LynxOS
10.9.3 pSOSystem
10.9.4 VxWorks: The Mars Pathfinder
Summary
Exercises
Suggested References and Websites
Websites
Additional Reading
Index