Muutke küpsiste eelistusi

Principles of Operating Systems [Pehme köide]

(Professor and Chairman, Department of Computer Engineering, YMCA University of Science & Technology, Faridabad)
  • Formaat: Paperback / softback, 784 pages, kõrgus x laius x paksus: 239x184x27 mm, kaal: 888 g, 318 illustrations
  • Ilmumisaeg: 03-Jul-2014
  • Kirjastus: OUP India
  • ISBN-10: 0198082878
  • ISBN-13: 9780198082873
Teised raamatud teemal:
  • Pehme köide
  • Hind: 75,33 €*
  • * saadame teile pakkumise kasutatud raamatule, mille hind võib erineda kodulehel olevast hinnast
  • See raamat on trükist otsas, kuid me saadame teile pakkumise kasutatud raamatule.
  • Kogus:
  • Lisa ostukorvi
  • Tasuta tarne
  • Lisa soovinimekirja
  • Formaat: Paperback / softback, 784 pages, kõrgus x laius x paksus: 239x184x27 mm, kaal: 888 g, 318 illustrations
  • Ilmumisaeg: 03-Jul-2014
  • Kirjastus: OUP India
  • ISBN-10: 0198082878
  • ISBN-13: 9780198082873
Teised raamatud teemal:
Divided into eight parts, the book tries to provide a comprehensive coverage of topics, beginning with OS architectures and then moving on to process scheduling, inter-process communication and synchronization, deadlocks, and multi-threading. Under the part on memory management, basic memory management and virtual memory are discussed. These are followed by chapters on file management and I/O management. Security and protection of operating systems are also discussed in detail. Further, advanced OSs such as distributed, multi-processor, real-time, mobile, and multimedia OSs are presented. Android OS, being one of the most popular, is discussed under mobile operating systems.

The last part of the book discusses shell programming, which will help students perform the lab experiments for this course. The first six parts contain case studies on UNIX, Solaris, Linux, and Windows.
Features of the Book iv
Preface vi
Part I Introduction 1(100)
1 Introduction to Operating Systems
3(32)
1.1 Introduction
3(1)
1.2 The Need for Operating Systems
4(2)
1.3 Evolution of Operating Systems
6(8)
1.3.1 First Generation
6(1)
1.3.2 Second Generation
7(2)
1.3.3 Third Generation
9(2)
1.3.4 Fourth Generation
11(3)
1.4 Types of Operating Systems
14(11)
1.4.1 Batch Processing Systems
15(1)
1.4.2 Multi-programming Systems
15(1)
1.4.3 Multi-user Time-sharing Systems
16(2)
1.4.4 Multi-tasking Systems
18(1)
1.4.5 Network Operating Systems
19(1)
1.4.6 Multi-processor Operating Systems
20(1)
1.4.7 Distributed Operating Systems
20(1)
1.4.8 Real-time Operating Systems
21(1)
1.4.9 Embedded Operating Systems
22(3)
1.5 Goals of an Operating System
25(2)
1.6 Functions of Operating System
27(3)
1.6.1 User View
27(1)
1.6.2 System View
28(2)
1.7 Operating System's Generic Components
30(5)
2 Hardware Support for Operating Systems
35(21)
2.1 Introduction
35(1)
2.2 Interrupt-driven Operation for Operating System
35(3)
2.2.1 Types of Interrupts
37(1)
2.2.2 Multiple Interrupts Handling
38(1)
2.3 Input-Output Devices
38(2)
2.3.1 Timers or Clocks
39(1)
2.4 Device Controllers
40(1)
2.5 Device Driver
41(1)
2.6 Problems in the Design of Modern OSs
42(1)
2.7 Need for Protection
43(1)
2.8 Hardware Protection for Multi-programming/Multi-tasking
43(4)
2.8.1 Multiple Modes of Operation
43(2)
2.8.2 Input-Output Protection
45(1)
2.8.3 Memory Protection
45(2)
2.8.4 CPU Protection
47(1)
2.9 Input-Output Communication Techniques
47(2)
2.9.1 Programmed I/O
48(1)
2.9.2 Interrupt-driven I/O
48(1)
2.9.3 Input/Output Using DMA
49(1)
2.10 Magnetic Disks
49(7)
2.10.1 Disk Formatting
51(1)
2.10.2 Disk Partitioning
52(4)
3 Resource Management
56(12)
3.1 Introduction
56(1)
3.2 Functions of a Resource Manager
56(2)
3.2.1 Resource Abstraction/Transformation
56(1)
3.2.2 Resource Sharing/Multiplexing
57(1)
3.2.3 Resource Scheduling
57(1)
3.3 Resource Types
58(2)
3.3.1 Nature of Resources
59(1)
3.4 Goals of Resource Management
60(1)
3.5 How Resource Manager Works?
61(1)
3.6 Components of Resource Management
62(6)
3.6.1 Process/task Management
62(1)
3.6.2 Memory Management
63(1)
3.6.3 Secondary Storage Management
64(1)
3.6.4 File Management
64(1)
3.6.5 Input-Output Management
65(1)
3.6.6 Security and Protection
65(3)
4 Operating System Architectures
68(21)
4.1 Introduction
68(1)
4.2 General Working of an Operating System
68(3)
4.2.1 BIOS
68(1)
4.2.2 Booting/Bootstrapping
69(1)
4.2.3 Boot Software/Boot Loader/Bootstrap Loader
69(1)
4.2.4 Boot Device
69(1)
4.2.5 Privileged Instructions
69(1)
4.2.6 System Call
69(2)
4.3 System Calls
71(5)
4.3.1 Making a System Call
72(1)
4.3.2 Executing the System Call
72(2)
4.3.3 Types of System Calls
74(2)
4.4 System Programs
76(1)
4.5 System Generation Programs
76(1)
4.6 General Structure of OS
77(1)
4.7 Monolithic Architecture
78(1)
4.8 Layered Architecture
79(2)
4.8.1 Grouping of Functions in a Layer
79(1)
4.8.2 Hierarchy of Layers
80(1)
4.9 Virtual Machine OS
81(2)
4.10 Client-Server or Microkernel-based OS
83(1)
4.11 ExoKernel
84(2)
4.12 Hybrid Kernel-based OS
86(3)
Case Study I: History and Architecture of Operating Systems
89(12)
Part II Process Management 101(188)
5 Fundamentals of Process Management
103(30)
5.1 Introduction
103(1)
5.2 Terminology
103(2)
5.3 Implicit/System and Non-implicit/User Processes
105(1)
5.4 Relationship Between Processes
106(1)
5.5 Life Cycle of a Process
106(8)
5.5.1 Process States and State Transitions
107(4)
5.5.2 Suspended Processes and Their State Transitions
111(3)
5.6 Process Control Block
114(1)
5.7 Implementation of Processes
115(3)
5.8 Context Switching
118(1)
5.9 Process Switching
119(4)
5.10 Schedulers
123(1)
5.10.1 Long-term Scheduler
123(1)
5.10.2 Short-term Scheduler
123(1)
5.10.3 Medium-term Scheduler
124(1)
5.11 Process Operations
124(9)
5.11.1 Creation
125(1)
5.11.2 Dispatching
126(1)
5.11.3 Blocking/Wakeup
126(1)
5.11.4 Termination
126(7)
6 Process Scheduling
133(45)
6.1 Introduction
133(1)
6.2 Process Behaviour for Scheduling
133(1)
6.3 Scheduling Decision
134(2)
6.4 Scheduling Levels
136(3)
6.4.1 Long-term Scheduling
136(1)
6.4.2 Medium-term Scheduling
137(1)
6.4.3 Short-term Scheduling
138(1)
6.5 Scheduling Types
139(1)
6.6 Process-scheduling Goals
140(3)
6.6.1 User-based Scheduling Goals
141(1)
6.6.2 System-based Scheduling Goals
142(1)
6.7 Scheduling Algorithms
143(35)
6.7.1 First Come First Served (FCFS)
143(2)
6.7.2 Priority Scheduling
145(7)
6.7.3 Round Robin Scheduling
152(4)
6.7.4 Improved Round Robin Scheduling
156(2)
6.7.5 Highest Response Ratio Next (HRRN) Scheduling
158(5)
6.7.6 Virtual Round Robin Scheduling
163(3)
6.7.7 Multi-level Queue Scheduling
166(2)
6.7.8 Multi-level Feedback/Adaptive Queue Scheduling
168(1)
6.7.9 Fair-share Scheduling
169(2)
6.7.10 Lottery Scheduling
171(7)
7 Process Communication and Synchronization
178(46)
7.1 Introduction
178(1)
7.2 Concurrent Processes
178(6)
7.2.1 Data Access Synchronization
178(2)
7.2.2 Control Synchronization
180(2)
7.2.3 Process Communication
182(1)
7.2.4 Deadlocks
183(1)
7.3 Critical Section (CS)
184(2)
7.4 Algorithmic Approach to CS Implementation
186(4)
7.4.1 Two-process Solution
186(2)
7.4.2 Dekker's Solution
188(1)
7.4.3 Peterson's Solution
189(1)
7.5 Semaphores
190(4)
7.6 Solution of Classic Synchronization Problems Using Semaphores
194(14)
7.6.1 Solution of Producer-Consumer Problem Using Semaphore
194(2)
7.6.2 Solution of Reader-Writer Problem Using Semaphores
196(4)
7.6.3 Solution of Dining-philosopher Problem Using Semaphores
200(4)
7.6.4 Cigarette Smokers' Problem
204(2)
7.6.5 Sleeping Barber Problem
206(2)
7.7 Critical Regions
208(1)
7.7.1 Producer-Consumer Problem's Solution with CCR
209(1)
7.8 Monitors
209(2)
7.8.1 Producer-Consumer Problem's Solution with Monitor
210(1)
7.9 Protected Objects
211(1)
7.10 Synchronized Methods
212(1)
7.11 Message Passing System
213(2)
7.11.1 Direct Addressing
213(1)
7.11.2 Indirect Addressing
214(1)
7.11.3 Mailbox
214(1)
7.11.4 Synchronization Protocols
215(1)
7.12 Signals
215(2)
7.13 Hardware Support for Process Synchronization
217(7)
8 Deadlocks
224(27)
8.1 Introduction
224(1)
8.2 Defining Deadlocks
224(3)
8.3 Modelling of Deadlock
227(1)
8.4 Conditions for Deadlock
228(2)
8.4.1 Mutual Exclusion
228(1)
8.4.2 Hold and Wait
228(1)
8.4.3 No Pre-emption
228(1)
8.4.4 Circular Wait
229(1)
8.5 Dealing with Deadlock
230(1)
8.6 Deadlock Prevention
230(3)
8.6.1 Preventing Mutual Exclusion Condition
230(1)
8.6.2 Preventing Hold and Wait Condition
231(1)
8.6.3 Preventing No Pre-emption Condition
231(1)
8.6.4 Preventing Circular Wait
232(1)
8.7 Deadlock Avoidance
233(6)
8.7.1 Deadlock Avoidance for Single Instance of Resources
234(1)
8.7.2 Dijkstra's Banker's Algorithm for Deadlock Avoidance in Multiple Instances of Resources
235(4)
8.8 Deadlock Detection
239(4)
8.8.1 Deadlock Detection in Multiple Instances of Resource Types
240(3)
8.9 Recovery from Deadlock
243(2)
8.9.1 Resource Pre-emption
243(1)
8.9.2 Rollback
244(1)
8.9.3 Abort the process
244(1)
8.10 Practical Approach for Deadlock Handling
245(1)
8.11 Two-phase Locking
246(1)
8.12 Starvation
246(5)
9 Multi-threading
251(16)
9.1 Introduction
251(1)
9.2 Process and Thread
251(2)
9.3 Multi-tasking vs Multi-threading
253(1)
9.4 Thread Control Block
254(1)
9.5 Usage of Multi-threading
255(1)
9.6 Types of Threads
256(5)
9.6.1 User Threads
257(3)
9.6.2 Kernel Threads
260(1)
9.7 Hybrid Threads
261(2)
9.8 Thread Operations and Other Issues in Thread Implementation
263(28)
9.8.1 Signal-handling Issues
263(1)
9.8.2 Thread Pooling
263(1)
9.8.3 Thread Scheduling
263(4)
Case Study II: Process Management in UNIX/Solaris/Linux/Windows
267(22)
Part III Memory Management 289(106)
10 Basic Memory Management
291(42)
10.1 Introduction
291(1)
10.2 Basic Concepts
291(6)
10.2.1 Static and Dynamic Allocation
291(1)
10.2.2 Logical and Physical Addresses
292(1)
10.2.3 Swapping
292(2)
10.2.4 Relocation
294(1)
10.2.5 Protection and Sharing
295(1)
10.2.6 Fixed and Variable Memory Partitioning
296(1)
10.2.7 Fragmentation
296(1)
10.3 Contiguous Memory Allocation
297(9)
10.3.1 Contiguous Allocation with Fixed Partitioning
298(3)
10.3.2 Contiguous Allocation with Dynamic/Variable Partitioning
301(1)
10.3.3 Compaction
301(2)
10.3.4 Memory Allocation Techniques
303(3)
10.4 Buddy System
306(1)
10.5 Non-contiguous Memory Allocation
307(1)
10.6 Paging Concept
307(11)
10.6.1 Paging Implementation and Hardware Requirements
313(3)
10.6.2 Protection in Pages
316(1)
10.6.3 Shared Pages
317(1)
10.6.4 Fragmentation
318(1)
10.7 Page Table Structures
318(5)
10.7.1 Hierarchical/Multi-level Page Table Structure
318(4)
10.7.2 Inverted Page Table Structure
322(1)
10.7.3 flashed Page Table Structure
322(1)
10.8 Segmentation
323(10)
10.8.1 Segmentation Implementation and Hardware Requirements
326(1)
10.8.2 Protection and Sharing
327(6)
11 Virtual Memory
333(49)
11.1 Introduction
333(1)
11.2 Need for Virtual Memory
333(1)
11.3 Principle of Locality
334(1)
11.4 Virtual Memory System
335(2)
11.4.1 Demand Loading of Process Components
335(2)
11.5 Demand Paging
337(3)
11.6 Virtual Memory System with Translation Look-Aside Buffer
340(3)
11.7 Page-replacement Algorithms
343(13)
11.7.1 FIFO Page-replacement Algorithm
345(1)
11.7.2 Optimal Page-replacement Algorithm
346(1)
11.7.3 Least Recently Used Page- replacement Algorithm
347(3)
11.7.4 Second Chance Page- replacement Algorithm
350(1)
11.7.5 Clock Page-replacement Algorithm
351(1)
11.7.6 Modified Clock Page or Not Recently Used Page-replacement Algorithm
352(3)
11.7.7 Not Frequently Used Page-replacement Algorithm
355(1)
11.8 Stack Property of Page-replacement Algorithms
356(4)
11.9 Thrashing
360(8)
11.9.1 Dealing with Thrashing
362(1)
11.9.2 Working-set-based Page- replacement Algorithm
363(2)
11.9.3 WSClock Page-replacement Algorithm
365(2)
11.9.4 Page Fault Frequency
367(1)
11.10 Virtual Memory Using Segmentation
368(1)
11.11 Combined Paging and segmentation
368(1)
11.12 Design and Implementation Issues
369(28)
11.12.1 Paging Hardware
370(2)
11.12.2 Virtual Memory Handler
372(10)
Case Study Memory Management in UNIX/Solaris/Linux/Windows
382(13)
Part IV File Management 395(58)
12 File Systems
397(18)
12.1 Introduction
397(1)
12.2 Files and File System
397(1)
12.3 File Structure
398(2)
12.3.1 Internal Structure and Record Blocking
399(1)
12.4 File Naming and File Types
400(1)
12.5 File Attributes
401(1)
12.6 File Operations
402(1)
12.6.1 Implementation of File Operations
403(1)
12.7 File Access
403(2)
12.8 Directories
405(6)
12.8.1 Single Level
406(1)
12.8.2 Two Level
407(1)
12.8.3 Hierarchical or Tree Structure
407(3)
12.8.4 Acyclic Graph Structure and File Sharing
410(1)
12.9 File Protection
411(1)
12.10 File System Mounting
412(3)
13 File System Implementation
415(23)
13.1 Introduction
415(1)
13.2 File System Structure
415(2)
13.2.1 Logical File System
415(1)
13.2.2 File Organization Module
415(1)
13.2.3 Basic File System/Physical Input-Output Level
416(1)
13.2.4 Input-Output Control
416(1)
13.3 Implementation of Data Structures
417(1)
13.4 File Mapping Through FCB
418(3)
13.4.1 Extents
420(1)
13.5 Implementation of File Operations
421(2)
13.5.1 Create a File
421(1)
13.5.2 Open a file
421(1)
13.5.3 Read a File
422(1)
13.5.4 Write a File
422(1)
13.5.5 Close a File
422(1)
13.6 File Allocation Methods
423(4)
13.6.1 Contiguous File Allocation
423(1)
13.6.2 Linked/Chained File Allocation
424(2)
13.6.3 Indexed File Allocation
426(1)
13.7 Free Space Management
427(2)
13.8 Directory Implementation
429(1)
13.9 Backup and Recovery
429(1)
13.9.1 Physical Backup
429(1)
13.9.2 Logical Backup
429(1)
13.9.3 Incremental Backup
429(1)
13.10 File System Inconsistency
430(1)
13.10.1 Superblock Check
430(1)
13.10.2 File Control Block Check
431(1)
13.11 File System Performance Issues
431(2)
13.11.1 Block Size
431(1)
13.11.2 Input-Output Transfer Time
432(1)
13.12 Loq-structured File System
433(5)
Case Study IV: File Management in UNIX/Solaris/Linux/Windows
438(15)
Part V Input-Output Management
14 Basics of I/O Management
453(16)
14.1 Introduction
453(1)
14.2 Types of Devices
453(1)
14.3 Types of I/O
454(2)
14.3.1 Programmed I/O
454(1)
14.3.2 Interrupt-driven I/O
455(1)
14.3.3 Input-Output Using DMA
455(1)
14.4 Input-Output Management Issues
456(1)
14.5 Input-Output Software
457(3)
14.5.1 User-level Input-Output Software
457(1)
14.5.2 Kernel Input-Output Sub-system
457(2)
14.5.3 Device Driver
459(1)
14.5.4 Interrupt Handling
459(1)
14.6 Kernel I/O Sub-system
460(4)
14.6.1 Uniform Interface
460(1)
14.6.2 Input-Output Scheduling
461(1)
14.6.3 Buffering
461(2)
14.6.4 Caching
463(1)
14.6.5 Spooling
463(1)
14.6.6 Error Handling
464(1)
14.7 Life Cycle of I/O Request
464(5)
15 Disk Management
469(30)
15.1 Introduction
469(1)
15.2 Disk Scheduling
469(1)
15.3 Disk-scheduling Criteria
470(1)
15.4 Disk-scheduling Algorithms
471(11)
15.4.1 FCFS
471(1)
15.4.2 SSTF
472(2)
15.4.3 SCAN
474(2)
15.4.4 C-SCAN
476(1)
15.4.5 F-SCAN and N-step SCAN
476(5)
15.4.6 LOOK and C-LOOK
481(1)
15.5 Rotational Optimization
482(1)
15.5.1 SLTF-scheduling Algorithm
483(1)
15.5.2 SPTF-scheduling Algorithm
483(1)
15.5.3 SATF-scheduling Algorithm
483(1)
15.6 Disk Formatting
483(1)
15.7 Bad Sectors
484(1)
15.8 Swap-space/Paging-space Management
485(2)
15.9 RAID Structure
487(22)
15.9.1 RAID Levels
489(10)
Case Study V. Input/Output Management in UNIX/Solaris/Linux/Windows
499(8)
Part VI Security and Protection 507(44)
16 Security Issues
509(15)
16.1 Introduction
509(1)
16.2 Security Objectives
509(1)
16.3 Security Problem
510(1)
16.3.1 Unauthorized Disclosure
510(1)
16.3.2 Deception
510(1)
16.3.3 Disruption
510(1)
16.4 Intruders
510(1)
16.5 Some Standard Security Attacks
511(2)
16.5.1 Denial-of-Service
512(1)
16.5.2 Spoofing
512(1)
16.5.3 Session Hijacking
512(1)
16.5.4 Man-in-the-Middle Attack
513(1)
16.5.5 Replay Attack
513(1)
16.6 Security Levels
513(1)
16.7 Inside System Attacks
514(2)
16.7.1 Trap Door/Back Door
514(1)
16.7.2 Logic Bomb
515(1)
16.7.3 Trojan Horse
515(1)
16.7.4 Login Spoofing
515(1)
16.7.5 Buffer Overflow
515(1)
16.8 Outside System Attacks
516(8)
16.8.1 Viruses
516(1)
16.8.2 Types of Viruses
517(2)
16.8.3 Worms
519(1)
16.8.4 Bots
519(1)
16.8.5 Mobile Code
520(1)
16.8.6 Rootkit
520(4)
17 Protection Mechanisms
524(23)
17.1 Introduction
524(1)
17.2 Protection Domains
524(2)
17.3 Access Control
526(1)
17.3.1 Discretionary Access Control
526(1)
17.3.2 Mandatory Access Control
526(1)
17.3.3 Role-based Access Control
526(1)
17.4 Access Matrix
527(4)
17.5 Access Control Lists
531(1)
17.6 Capability Lists
531(2)
17.7 Cryptography as a Security Tool
533(1)
17.7.1 Private Key Encryption
533(1)
17.7.2 Public Key Encryption
534(1)
17.8 Authentication
534(3)
17.8.1 Authentication Using Passwords
535(2)
17.8.2 Token-based Authentication
537(1)
17.8.3 Authentication Using Biometrics
537(1)
17.9 Intrusion Detection System
537(1)
17.9.1 Host-based Intrusion Detection System
538(1)
17.9.2 Network-based IDS
538(1)
17.10 Worm/Bot/Rootkit Counter Measures
538(1)
17.11 Dealing with Buffer Overflow Attacks
539(1)
17.11.1 Writing Correct Code
539(1)
17.11.2 Safe Libraries
539(1)
17.11.3 Use of Type-safe Programming Language
539(1)
17.11.4 Non-executable Buffers
539(1)
17.11.5 Address Space Randomization
539(1)
17.12 Dealing with Mobile Code
540(1)
17.12.1 Code Blocking Approach
540(1)
17.12.2 Authentication Using Code Signing
540(1)
17.12.3 Safe Interpreters
540(1)
17.12.4 Code Inspection
540(1)
17.12.5 Sandboxing
540(1)
17.12.6 Proof-carrying Code
541(1)
17.13 Security Patches
541(1)
17.14 Secure File Systems
541(1)
17.15 Trusted Operating Systems
542(11)
17.15.1 Multi-level Security Models
544(3)
Case Study VI: Protection Mechanisms in UNIX/Solaris/Linux/Windows
547(4)
Part VII Advanced Operating Systems 551(86)
18 Distributed Operating Systems
553(30)
18.1 Introduction
553(1)
18.2 Characteristics of Distributed Systems
553(1)
18.3 Network Operating Systems
554(1)
18.4 Distributed Operating Systems
555(1)
18.5 Issues in Distributed Operating Systems
556(2)
18.5.1 Transparency
556(1)
18.5.2 Global Knowledge
557(1)
18.5.3 Performance
557(1)
18.5.4 Reliability
558(1)
18.5.5 Process Synchronization
558(1)
18.6 Communication in Distributed Systems
558(4)
18.6.1 Message-passing Model
559(1)
18.6.2 Remote Procedure Calls
560(2)
18.7 Clock Synchronization in Distributed Systems
562(2)
18.7.1 Synchronizing Logical Clocks
562(2)
18.8 Global State
564(2)
18.8.1 Chandy-Lamport Consistent State Recording Algorithm
564(2)
18.9 Mutual Exclusion
566(4)
18.9.1 Centralized Algorithm
566(2)
18.9.2 Ricart-Agarwala Algorithm
568(1)
18.9.3 Token Ring Algorithm
569(1)
18.10 Deadlock Detection
570(3)
18.10.1 Centralized Deadlock Detection
570(2)
18.10.2 Distributed Deadlock Detection
572(1)
18.10.3 Correctness Criteria for Deadlock Detection Algorithms
572(1)
18.11 Deadlock Prevention
573(1)
18.12 Distributed Process Scheduling
574(4)
18.12.1 Sender-initiated Algorithms
576(1)
18.12.2 Receiver-initiated Algorithms
577(1)
18.12.3 Symmetrically Initiated Algorithms
577(1)
18.13 Distributed File Systems
578(5)
18.13.1 File-sharing Semantics
579(1)
18.14 Distributed Shared Memory
580(3)
19 Multi-processor Operating Systems
583(11)
19.1 Introduction
583(1)
19.2 Multi-processor Systems
583(1)
19.2.1 Multi-processor System Architecture
583(1)
19.3 Structure of Multi-processor OSs
584(2)
19.3.1 Separate Kernel Configuration
584(1)
19.3.2 Master-Slave Configuration
585(1)
19.3.3 Symmetric Configuration
585(1)
19.4 Process Synchronization
586(1)
19.4.1 Spinlocks
586(1)
19.4.2 Queued Locks
587(1)
19.4.3 Special Hardware for Process Synchronization
587(1)
19.5 Processor Scheduling
587(3)
19.5.1 Job-blind Scheduling Algorithms
586(1)
19.5.2 Job-aware Scheduling Algorithms
586(4)
19.6 Memory Sharing
590(1)
19.7 Process Migration
591(1)
19.8 Fault Tolerance
591(3)
19.8.1 Fault Detection
592(1)
19.8.2 Fault Recovery
592(2)
20 Real-time Operating Systems
594(20)
20.1 Introduction
594(1)
20.2 Real-time Systems
594(3)
20.2.1 Characteristics of a Real-time System
595(1)
20.2.2 Structure of a Real-time System
596(1)
20.3 Real-time OS
597(1)
20.4 Real-time Scheduling
598(6)
20.4.1 Rate Monotonic Scheduling Algorithm
599(3)
20.4.2 Earliest Deadline First Scheduling Algorithm
602(1)
20.4.3 Precedence Constraints
603(1)
20.5 Mutual Exclusion
604(1)
20.6 Priority Inheritance Protocol
605(2)
20.7 Priority Ceiling Protocol
607(1)
20.8 Case Studies
608(6)
20.8.1 VxWorks
608(1)
20.8.2 QNX
609(5)
21 Mobile Operating Systems
614(16)
21.1 Introduction
614(1)
21.2 Introduction to Mobile Devices
614(1)
21.2.1 Personal Digital Assistant
614(1)
21.2.2 Smartphones
615(1)
21.2.3 Tablet PC
615(1)
21.3 Characteristics of Mobile Devices
615(1)
21.4 Mobile OS
616(6)
21.4.1 Power Management
616(1)
21.4.2 Battery Management
617(1)
21.4.3 Thermal Management
618(1)
21.4.4 Memory Management
618(1)
21.4.5 Shortening Boot-up Time
618(1)
21.4.6 Scheduling
618(2)
21.4.7 File System
620(1)
21.4.8 Security
621(1)
21.5 Android OS
622(8)
21.5.1 Power Management
623(2)
21.5.2 Memory Management
625(1)
21.5.3 Scheduling
626(1)
21.5.4 Inter-process Communication
626(1)
21.5.5 File Management
626(1)
21.5.6 Security
627(3)
22 Multimedia Operating Systems
630(7)
22.1 Introduction
630(1)
22.2 Multimedia
630(1)
22.3 Multimedia OSs
631(1)
22.4 Process Scheduling
631(1)
22.5 File System
632(1)
22.5.1 Partitioned File Systems
632(1)
22.5.2 Integrated File Systems
632(1)
22.6 File Allocation
632(1)
22.6.1 Scattered Allocation
632(1)
22.6.2 Contiguous Allocation
632(1)
22.6.3 Locally Contiguous Allocation
633(1)
22.6.4 Constrained Allocation
633(1)
22.6.5 Distributed Allocation
633(1)
22.7 Disk Scheduling
633(1)
22.7.1 EDF Scheduling
633(1)
22.7.2 SCAN-EDF
634(1)
22.7.3 Group Sweeping Strategy
634(1)
22.8 Memory Management
634(5)
22.8.1 Batching
634(1)
22.8.2 Buffering/Bridging
634(1)
22.8.3 Stream Merging
634(1)
22.8.4 Prefetching
635(2)
Part VIII Shell Programming 637(20)
23 Shell Programming and UNIX Shells
639(18)
23.1 Introduction
639(1)
23.2 Role of Shell
639(1)
23.3 Types of Shells
639(1)
23.4 File and Directory-related Commands
640(2)
23.5 Filters
642(2)
23.6 Input/Output Redirection Commands
644(1)
23.7 Communication in UNIX
644(1)
23.8 Shell Meta-characters
644(1)
23.9 Vi Editor
645(3)
23.9.1 Starting the Vi Editor
645(1)
23.9.2 Navigating within a File
645(1)
23.9.3 Editing Files
646(1)
23.9.4 Deleting Characters
647(1)
23.9.5 Copy and Paste Commands
647(1)
23.9.6 Quitting Vi Editor
647(1)
23.10 Shell Scripts
648(1)
23.10.1 Shell Variables and Keywords
648(1)
23.11 Programmimg Constructs in Shell
649(3)
23.12 Shell Script Examples
652(5)
Bibliography 657(8)
Index 665
Naresh Chauhan is currently working as Professor and Chairman at the Department of Computer Engineering at YMCA University of Science and Technology, Faridabad. A PhD in Internet and Web Technology, Prof. Chauhan has a total work experience of about 22 years, including teaching. Other than teaching, he has also worked for several years in organizations such as Bharat Electronics Ltd and Motorola.

Prof. Chauhan has published/presented several research papers in both national and international journals and conferences in the area of Search Engines, Focused Web Crawlers, Test Case Prioritization, and Agile Software Estimation and Agile Testing. His key interest areas are Internet and Web Technology, Software Testing, Operating Systems, and Embedded and Real-time Systems. He is also the author of Software Testing: Principles and Practices [ OUP, 2010].