| Features of the Book |
|
iv | |
| Preface |
|
vi | |
| Part I Introduction |
|
1 | (100) |
|
1 Introduction to Operating Systems |
|
|
3 | (32) |
|
|
|
3 | (1) |
|
1.2 The Need for Operating Systems |
|
|
4 | (2) |
|
1.3 Evolution of Operating Systems |
|
|
6 | (8) |
|
|
|
6 | (1) |
|
|
|
7 | (2) |
|
|
|
9 | (2) |
|
|
|
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) |
|
|
|
27 | (1) |
|
|
|
28 | (2) |
|
1.7 Operating System's Generic Components |
|
|
30 | (5) |
|
2 Hardware Support for Operating Systems |
|
|
35 | (21) |
|
|
|
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) |
|
|
|
38 | (2) |
|
|
|
39 | (1) |
|
|
|
40 | (1) |
|
|
|
41 | (1) |
|
2.6 Problems in the Design of Modern OSs |
|
|
42 | (1) |
|
|
|
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) |
|
|
|
45 | (2) |
|
|
|
47 | (1) |
|
2.9 Input-Output Communication Techniques |
|
|
47 | (2) |
|
|
|
48 | (1) |
|
2.9.2 Interrupt-driven I/O |
|
|
48 | (1) |
|
2.9.3 Input/Output Using DMA |
|
|
49 | (1) |
|
|
|
49 | (7) |
|
|
|
51 | (1) |
|
|
|
52 | (4) |
|
|
|
56 | (12) |
|
|
|
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) |
|
|
|
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) |
|
|
|
63 | (1) |
|
3.6.3 Secondary Storage Management |
|
|
64 | (1) |
|
|
|
64 | (1) |
|
3.6.5 Input-Output Management |
|
|
65 | (1) |
|
3.6.6 Security and Protection |
|
|
65 | (3) |
|
4 Operating System Architectures |
|
|
68 | (21) |
|
|
|
68 | (1) |
|
4.2 General Working of an Operating System |
|
|
68 | (3) |
|
|
|
68 | (1) |
|
4.2.2 Booting/Bootstrapping |
|
|
69 | (1) |
|
4.2.3 Boot Software/Boot Loader/Bootstrap Loader |
|
|
69 | (1) |
|
|
|
69 | (1) |
|
4.2.5 Privileged Instructions |
|
|
69 | (1) |
|
|
|
69 | (2) |
|
|
|
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) |
|
|
|
76 | (1) |
|
4.5 System Generation Programs |
|
|
76 | (1) |
|
4.6 General Structure of OS |
|
|
77 | (1) |
|
4.7 Monolithic Architecture |
|
|
78 | (1) |
|
|
|
79 | (2) |
|
4.8.1 Grouping of Functions in a Layer |
|
|
79 | (1) |
|
4.8.2 Hierarchy of Layers |
|
|
80 | (1) |
|
|
|
81 | (2) |
|
4.10 Client-Server or Microkernel-based OS |
|
|
83 | (1) |
|
|
|
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) |
|
|
|
103 | (1) |
|
|
|
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) |
|
|
|
118 | (1) |
|
|
|
119 | (4) |
|
|
|
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) |
|
|
|
124 | (9) |
|
|
|
125 | (1) |
|
|
|
126 | (1) |
|
|
|
126 | (1) |
|
|
|
126 | (7) |
|
|
|
133 | (45) |
|
|
|
133 | (1) |
|
6.2 Process Behaviour for Scheduling |
|
|
133 | (1) |
|
|
|
134 | (2) |
|
|
|
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) |
|
|
|
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) |
|
|
|
178 | (1) |
|
|
|
178 | (6) |
|
7.2.1 Data Access Synchronization |
|
|
178 | (2) |
|
7.2.2 Control Synchronization |
|
|
180 | (2) |
|
7.2.3 Process Communication |
|
|
182 | (1) |
|
|
|
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) |
|
|
|
188 | (1) |
|
7.4.3 Peterson's Solution |
|
|
189 | (1) |
|
|
|
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) |
|
|
|
208 | (1) |
|
7.7.1 Producer-Consumer Problem's Solution with CCR |
|
|
209 | (1) |
|
|
|
209 | (2) |
|
7.8.1 Producer-Consumer Problem's Solution with Monitor |
|
|
210 | (1) |
|
|
|
211 | (1) |
|
7.10 Synchronized Methods |
|
|
212 | (1) |
|
7.11 Message Passing System |
|
|
213 | (2) |
|
|
|
213 | (1) |
|
7.11.2 Indirect Addressing |
|
|
214 | (1) |
|
|
|
214 | (1) |
|
7.11.4 Synchronization Protocols |
|
|
215 | (1) |
|
|
|
215 | (2) |
|
7.13 Hardware Support for Process Synchronization |
|
|
217 | (7) |
|
|
|
224 | (27) |
|
|
|
224 | (1) |
|
|
|
224 | (3) |
|
8.3 Modelling of Deadlock |
|
|
227 | (1) |
|
8.4 Conditions for Deadlock |
|
|
228 | (2) |
|
|
|
228 | (1) |
|
|
|
228 | (1) |
|
|
|
228 | (1) |
|
|
|
229 | (1) |
|
8.5 Dealing with Deadlock |
|
|
230 | (1) |
|
|
|
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) |
|
|
|
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) |
|
|
|
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) |
|
|
|
244 | (1) |
|
|
|
244 | (1) |
|
8.10 Practical Approach for Deadlock Handling |
|
|
245 | (1) |
|
|
|
246 | (1) |
|
|
|
246 | (5) |
|
|
|
251 | (16) |
|
|
|
251 | (1) |
|
|
|
251 | (2) |
|
9.3 Multi-tasking vs Multi-threading |
|
|
253 | (1) |
|
|
|
254 | (1) |
|
9.5 Usage of Multi-threading |
|
|
255 | (1) |
|
|
|
256 | (5) |
|
|
|
257 | (3) |
|
|
|
260 | (1) |
|
|
|
261 | (2) |
|
9.8 Thread Operations and Other Issues in Thread Implementation |
|
|
263 | (28) |
|
9.8.1 Signal-handling Issues |
|
|
263 | (1) |
|
|
|
263 | (1) |
|
|
|
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) |
|
|
|
291 | (1) |
|
|
|
291 | (6) |
|
10.2.1 Static and Dynamic Allocation |
|
|
291 | (1) |
|
10.2.2 Logical and Physical Addresses |
|
|
292 | (1) |
|
|
|
292 | (2) |
|
|
|
294 | (1) |
|
10.2.5 Protection and Sharing |
|
|
295 | (1) |
|
10.2.6 Fixed and Variable Memory Partitioning |
|
|
296 | (1) |
|
|
|
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) |
|
|
|
301 | (2) |
|
10.3.4 Memory Allocation Techniques |
|
|
303 | (3) |
|
|
|
306 | (1) |
|
10.5 Non-contiguous Memory Allocation |
|
|
307 | (1) |
|
|
|
307 | (11) |
|
10.6.1 Paging Implementation and Hardware Requirements |
|
|
313 | (3) |
|
10.6.2 Protection in Pages |
|
|
316 | (1) |
|
|
|
317 | (1) |
|
|
|
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) |
|
|
|
323 | (10) |
|
10.8.1 Segmentation Implementation and Hardware Requirements |
|
|
326 | (1) |
|
10.8.2 Protection and Sharing |
|
|
327 | (6) |
|
|
|
333 | (49) |
|
|
|
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) |
|
|
|
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) |
|
|
|
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) |
|
|
|
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) |
|
|
|
397 | (18) |
|
|
|
397 | (1) |
|
12.2 Files and File System |
|
|
397 | (1) |
|
|
|
398 | (2) |
|
12.3.1 Internal Structure and Record Blocking |
|
|
399 | (1) |
|
12.4 File Naming and File Types |
|
|
400 | (1) |
|
|
|
401 | (1) |
|
|
|
402 | (1) |
|
12.6.1 Implementation of File Operations |
|
|
403 | (1) |
|
|
|
403 | (2) |
|
|
|
405 | (6) |
|
|
|
406 | (1) |
|
|
|
407 | (1) |
|
12.8.3 Hierarchical or Tree Structure |
|
|
407 | (3) |
|
12.8.4 Acyclic Graph Structure and File Sharing |
|
|
410 | (1) |
|
|
|
411 | (1) |
|
12.10 File System Mounting |
|
|
412 | (3) |
|
13 File System Implementation |
|
|
415 | (23) |
|
|
|
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) |
|
|
|
420 | (1) |
|
13.5 Implementation of File Operations |
|
|
421 | (2) |
|
|
|
421 | (1) |
|
|
|
421 | (1) |
|
|
|
422 | (1) |
|
|
|
422 | (1) |
|
|
|
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) |
|
|
|
429 | (1) |
|
|
|
429 | (1) |
|
|
|
429 | (1) |
|
13.9.3 Incremental Backup |
|
|
429 | (1) |
|
13.10 File System Inconsistency |
|
|
430 | (1) |
|
|
|
430 | (1) |
|
13.10.2 File Control Block Check |
|
|
431 | (1) |
|
13.11 File System Performance Issues |
|
|
431 | (2) |
|
|
|
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) |
|
|
|
453 | (1) |
|
|
|
453 | (1) |
|
|
|
454 | (2) |
|
|
|
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) |
|
|
|
459 | (1) |
|
14.5.4 Interrupt Handling |
|
|
459 | (1) |
|
14.6 Kernel I/O Sub-system |
|
|
460 | (4) |
|
|
|
460 | (1) |
|
14.6.2 Input-Output Scheduling |
|
|
461 | (1) |
|
|
|
461 | (2) |
|
|
|
463 | (1) |
|
|
|
463 | (1) |
|
|
|
464 | (1) |
|
14.7 Life Cycle of I/O Request |
|
|
464 | (5) |
|
|
|
469 | (30) |
|
|
|
469 | (1) |
|
|
|
469 | (1) |
|
15.3 Disk-scheduling Criteria |
|
|
470 | (1) |
|
15.4 Disk-scheduling Algorithms |
|
|
471 | (11) |
|
|
|
471 | (1) |
|
|
|
472 | (2) |
|
|
|
474 | (2) |
|
|
|
476 | (1) |
|
15.4.5 F-SCAN and N-step SCAN |
|
|
476 | (5) |
|
|
|
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) |
|
|
|
483 | (1) |
|
|
|
484 | (1) |
|
15.8 Swap-space/Paging-space Management |
|
|
485 | (2) |
|
|
|
487 | (22) |
|
|
|
489 | (10) |
|
Case Study V. Input/Output Management in UNIX/Solaris/Linux/Windows |
|
|
499 | (8) |
| Part VI Security and Protection |
|
507 | (44) |
|
|
|
509 | (15) |
|
|
|
509 | (1) |
|
|
|
509 | (1) |
|
|
|
510 | (1) |
|
16.3.1 Unauthorized Disclosure |
|
|
510 | (1) |
|
|
|
510 | (1) |
|
|
|
510 | (1) |
|
|
|
510 | (1) |
|
16.5 Some Standard Security Attacks |
|
|
511 | (2) |
|
|
|
512 | (1) |
|
|
|
512 | (1) |
|
|
|
512 | (1) |
|
16.5.4 Man-in-the-Middle Attack |
|
|
513 | (1) |
|
|
|
513 | (1) |
|
|
|
513 | (1) |
|
16.7 Inside System Attacks |
|
|
514 | (2) |
|
16.7.1 Trap Door/Back Door |
|
|
514 | (1) |
|
|
|
515 | (1) |
|
|
|
515 | (1) |
|
|
|
515 | (1) |
|
|
|
515 | (1) |
|
16.8 Outside System Attacks |
|
|
516 | (8) |
|
|
|
516 | (1) |
|
|
|
517 | (2) |
|
|
|
519 | (1) |
|
|
|
519 | (1) |
|
|
|
520 | (1) |
|
|
|
520 | (4) |
|
|
|
524 | (23) |
|
|
|
524 | (1) |
|
|
|
524 | (2) |
|
|
|
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) |
|
|
|
527 | (4) |
|
17.5 Access Control Lists |
|
|
531 | (1) |
|
|
|
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) |
|
|
|
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) |
|
|
|
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) |
|
|
|
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) |
|
|
|
540 | (1) |
|
|
|
540 | (1) |
|
17.12.6 Proof-carrying Code |
|
|
541 | (1) |
|
|
|
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) |
|
|
|
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) |
|
|
|
556 | (1) |
|
|
|
557 | (1) |
|
|
|
557 | (1) |
|
|
|
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) |
|
|
|
564 | (2) |
|
18.8.1 Chandy-Lamport Consistent State Recording Algorithm |
|
|
564 | (2) |
|
|
|
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) |
|
|
|
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) |
|
|
|
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) |
|
|
|
586 | (1) |
|
|
|
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) |
|
|
|
590 | (1) |
|
|
|
591 | (1) |
|
|
|
591 | (3) |
|
|
|
592 | (1) |
|
|
|
592 | (2) |
|
20 Real-time Operating Systems |
|
|
594 | (20) |
|
|
|
594 | (1) |
|
|
|
594 | (3) |
|
20.2.1 Characteristics of a Real-time System |
|
|
595 | (1) |
|
20.2.2 Structure of a Real-time System |
|
|
596 | (1) |
|
|
|
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) |
|
|
|
604 | (1) |
|
20.6 Priority Inheritance Protocol |
|
|
605 | (2) |
|
20.7 Priority Ceiling Protocol |
|
|
607 | (1) |
|
|
|
608 | (6) |
|
|
|
608 | (1) |
|
|
|
609 | (5) |
|
21 Mobile Operating Systems |
|
|
614 | (16) |
|
|
|
614 | (1) |
|
21.2 Introduction to Mobile Devices |
|
|
614 | (1) |
|
21.2.1 Personal Digital Assistant |
|
|
614 | (1) |
|
|
|
615 | (1) |
|
|
|
615 | (1) |
|
21.3 Characteristics of Mobile Devices |
|
|
615 | (1) |
|
|
|
616 | (6) |
|
|
|
616 | (1) |
|
21.4.2 Battery Management |
|
|
617 | (1) |
|
21.4.3 Thermal Management |
|
|
618 | (1) |
|
|
|
618 | (1) |
|
21.4.5 Shortening Boot-up Time |
|
|
618 | (1) |
|
|
|
618 | (2) |
|
|
|
620 | (1) |
|
|
|
621 | (1) |
|
|
|
622 | (8) |
|
|
|
623 | (2) |
|
|
|
625 | (1) |
|
|
|
626 | (1) |
|
21.5.4 Inter-process Communication |
|
|
626 | (1) |
|
|
|
626 | (1) |
|
|
|
627 | (3) |
|
22 Multimedia Operating Systems |
|
|
630 | (7) |
|
|
|
630 | (1) |
|
|
|
630 | (1) |
|
|
|
631 | (1) |
|
|
|
631 | (1) |
|
|
|
632 | (1) |
|
22.5.1 Partitioned File Systems |
|
|
632 | (1) |
|
22.5.2 Integrated File Systems |
|
|
632 | (1) |
|
|
|
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) |
|
|
|
633 | (1) |
|
|
|
633 | (1) |
|
|
|
634 | (1) |
|
22.7.3 Group Sweeping Strategy |
|
|
634 | (1) |
|
|
|
634 | (5) |
|
|
|
634 | (1) |
|
22.8.2 Buffering/Bridging |
|
|
634 | (1) |
|
|
|
634 | (1) |
|
|
|
635 | (2) |
| Part VIII Shell Programming |
|
637 | (20) |
|
23 Shell Programming and UNIX Shells |
|
|
639 | (18) |
|
|
|
639 | (1) |
|
|
|
639 | (1) |
|
|
|
639 | (1) |
|
23.4 File and Directory-related Commands |
|
|
640 | (2) |
|
|
|
642 | (2) |
|
23.6 Input/Output Redirection Commands |
|
|
644 | (1) |
|
23.7 Communication in UNIX |
|
|
644 | (1) |
|
23.8 Shell Meta-characters |
|
|
644 | (1) |
|
|
|
645 | (3) |
|
23.9.1 Starting the Vi Editor |
|
|
645 | (1) |
|
23.9.2 Navigating within a File |
|
|
645 | (1) |
|
|
|
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) |
|
|
|
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 | |