4.4BSD操作系统设计与实现(英文版)
分類: 图书,计算机/网络,操作系统/系统开发,其他,
作者: Marshall Kirk McKusi
出 版 社: 人民邮电出版社
出版时间: 2002-9-1字数: 703000版次: 1页数: 580印刷时间: 2002/09/01开本:印次:纸张: 胶版纸I S B N : 9787115103482包装: 平装编辑推荐
内容简介
本书是对4.4BSD操作系统的设计和实现的全面描述,在讨论设计理论的同时,也注重介绍实现的细节。
全书分为五个部分,共有14章。第一部分介绍了BSD的历史,简单介绍了操作系统设计的几个基本方面,还介绍了内核服务的基本内容。第二部分介绍了进程管理和内存管理的内容。第三部分介绍I/O系统,包括本地和网络文件系统以及终端处理。第四部分介绍了进程间通信、网络通信以及网络协议。第五部分介绍了系统操作知识。
本书适合作为高等院校计算机专业操作系统课程教材,也适合开放系统下的管理人员和开发人员阅读参考。
作者简介
目录
Part 1Overview1
Chapter 1History and Goals3
1.1History of the UNIX System3
Origins3
Research UNIX4
AT&T UNIX System Ⅲ and System V7
Other Organizations8
Berkeley Software Distributions8
UNIX in the World10
1.2BSD and Other Systems10
The Influence of the User Community11
1.3Design Goals of 4BSD12
4.2BSD Design Goals13
4.3BSD Design Goals14
4.4BSD Design Goals15
1.4Release Engineering16
References17
Chapter 2Design Overview of 4.4BSD21
2.14.4BSD Facilities and the Kernel21
The Kernel22
2.2Kernel Organization23
2.3Kernel Services25
2.4Process Management26
Signals27
Process Groups and Sessions28
2.5Memory Management29
BSD Memory-Management Design Decisions29
Memory Management Inside the Kernel31
2.6I/O System31
Descriptors and I/O32
Descriptor Management33
Devices34
Socket IPC35
Scatter/Gather I/O35
Multiple Filesystem Support36
2.7Filesystems36
2.8Filestores40
2.9Network Filesystem41
2.10Terminals42
2.11Interprocess Communication43
2.12Network Communication44
2.13Network Implementation44
2.14System Operation45
Exercises45
Reference46
Chapter 3Kernel Services49
3.1Kernel Organization49
System Processes49
System Entry50
Run-Time Organization50
Entry to the Kernel52
Return from the Kernel53
3.2System Calls53
Result Handing54
Returning from a System Call54
3.3Traps and Interrupts55
Traps55
I/O Device Interrupts55
Software Interrupts56
3.4Clock Interrupts57
Statistics and Process Scheduling58
Timeouts58
3.5Memory-Management Services60
3.6Timing Services63
Real Time63
Adjustment of the Time63
External Representation64
Interval Time64
3.7User, Group, and Other Identifiers65
Host Identifiers67
Process Groups and Sessions68
3.8Resource Services68
Process Priorities69
Resource Utilization69
Resource Limits70
Filesystem Quotas70
3.9System-Operation Services71
Accounting71
Exercises72
References73
Part 2Processes75
Chapter 4Process Management77
4.1Introduction to Process Management77
Multiprogramming78
Scheduling79
4.2Process State80
The Process Structure81
The User Structure85
4.3Context Switching87
Process State87
Low-Level Context Switching88
Voluntary Context Switching88
Synchronization91
4.4Process Scheduling92
Calculations of Process Priority93
Process-Priority Routines95
Process Run Queues and Context Switching96
4.5Process Creation98
4.6Process Termination99
4.7Signals100
Comparison with POSIX Signals103
Posting of a Signal104
Delivering a Signal106
4.8Process Groups and Sessions107
Sessions109
Job Control110
4.9Process Debugging112
Exercises114
References116
Chapter 5Memory Management117
5.1Terminology117
Processes and Memory118
Paging119
Replacement Algorithms120
Working-Set Model121
Swapping121
Advantages of Virtual Memory122
Hardware Requirements for Virtual Memory122
5.2Overview of the 4.4 BSD Virtual-Memory System123
5.3Kernel Memory Management126
Kernel Maps and Submaps127
Kernel Address-Space Allocation128
Kernel Malloc129
5.4Per-Process Resources132
4.4BSD Process Virtual-Address Space132
Page-Fault Dispatch134
Mapping to Objects134
Objects136
Objects to Pages137
5.5Shared Memory137
Mmap Model139
Shared Mapping141
Private Mapping142
Collapsing of Shadow Chains144
Private Snapshots145
5.6Creation of a New Process146
Reserving Kernel Resources147
Duplication of the User Address Space148
Creation of a New Process Without Copying149
5.7Execution of a File150
5.8Process Manipulation of Its Address Space151
Change of Process Size151
File Mapping152
Change of Protection154
5.9Termination of a Process154
5.10The Pager Interface156
Vnode Pager157
Device Pager159
Swap Pager160
5.11Paging162
5.12Page Replacement166
Paging Parameters168
The Pageout Daemon169
Swapping171
The Swap-In Process172
5.13Portability173
The Role of the pmap Module176
Initialization and Startup179
Mapping Allocation and Deallocation181
Change of Access and Wiring Attributes for Mappings184
Management of Page-Usage Information185
Initialization of Physical Pages186
Management of Internal Data Structures186
Exercises187
References188
Part 3I/O System191
Chapter 6I/O System Overview193
6.1I/O Mapping from User to Device193
Device Drivers195
I/O Queuing195
Interrupt Handing196
6.2Block Devices196
Entry Points for Block-Device Drivers197
Sorting of Disk I/O Requests198
Disk Labels199
6.3Character Devices200
Raw Devices and Physical I/O201
Character-Oriented Devices202
Entry Points for Character-Device Drivers203
6.4Descriptor Management and Services205
Open File Entries205
Management of Descriptors207
File-Descriptor Locking209
Multiplexing I/O on Descriptors211
Implementation of Select213
Movement of Data Inside the Kernel216
6.5The Virtual-Filesystem Interface218
Contents of a Vnode219
Vnode Operations220
Pathname Translation222
Exported Filesystem Services222
6.6Filesystem-Independent Services223
The Name Cache225
Buffer Management226
Implementation of Buffer Management229
6.7Stackable Filesystems231
Simple Filesystem Layers234
The Union Mount Filesystem235
Other Filesystems237
Exercises238
References240
Chapter 7Local Filesytems241
7.1Hierarchical Filesystem Management241
7.2Structure of an Inode243
Inode Management245
7.3Naming247
Directories247
Finding of Names in Directories249
Pathname Translation249
Links251
7.4Quotas253
7.5File Locking257
7.6Other Filesystem Semantics262
Large File Sizes262
File Flags263
Exercises264
References264
Chapter 8Local Filestores265
8.1Overview of the Filestore265
8.2The Berkeley Fast Filesystem269
Organization of the Berkeley Fast Filesystem269
Optimization of Storage Utilization271
Reading and Writing to a File273
Filesystem Parameterization275
Layout Policies276
Allocation Mechanisms277
Block Clustering281
Synchronous Operations284
8.3The Log-Structured Filesystem285
Organization of the Log-Structure Filesystem286
Index File288
Reading of the Log290
Writing to the Log291
Block Accounting292
The Buffer Cache294
Directory Operations295
Creation of a File296
Reading and Writing to a File297
Filesystem Cleaning297
Filesystem Parameterization300
Filesystem-Crash Recovery300
8.4The Memory-Based Filesystem302
Organization of the Memory-Based Filesystem303
Filesystem Performance305
Future Work305
Exercises306
References307
Chapter 9The Network Filesystem311
9.1History and Overview311
9.2NFS Structure and Operation314
The NFS Protocol316
The 4.4BSD NFS Implementation318
Client-Server Interactions321
RPC Transport Issues322
Security Issues324
9.3Techniques for Improving Performance325
Leases328
Crash Recovery332
Exercises333
References334
Chapter 10Terminal Handing337
10.1Terminal-Processing Modes338
10.2Line Disciplines339
10.3User Interface340
10.4The tty Structure342
10.5Process Group, Sessions, and Terminal Control343
10.6C-lists344
10.7RS-232 and Modem Control346
10.8Terminal Operations347
Open347
Output Line Discipline347
Output Top Half349
Output Bottom Half350
Input Bottom Half351
Input Top Half352
The stop Routine353
The ioctl Routine353
Modem Transitions354
Closing of Terminal Devices355
10.9Other Line Disciplines355
Serial Line IP Disciplines356
Graphics Tablet Discipline356
Exercises357
References357
Part 4Interprocess Communication359
Chapter 11Interprocess Communication361
11.1Interprocess-Communication Model362
Use of Sockets364
11.2Implementation Structure and Overview368
11.3Memory Management369
Mbufs369
Storage-Management Algorithms372
Mbuf Utility Routines373
11.4Data Structures374
Communication Domains375
Sockets376
Socket Addresses378
11.5Connection Setup380
11.6Data Transfer382
Transmitting Data383
Receiving Data385
Passing Access Rights388
Passing Access Rights in the Local Domain389
11.7Socket Shutdown390
Exercises391
References393
Chapter 12Network Communication395
12.1Internal Structure396
Data Flow397
Communication Protocols398
Network Interfaces400
12.2Socket-to-Protocol Interface405
Protocol User-Request Routine405
Internal Requests409
Protocol Control-Output Routine409
12.3Protocol-Protocol Interface410
pr-output411
pr-input411
pr-ctlinput411
12.4Interface Between Protocol and Network Interface412
Packet Transmission412
Packet Reception413
12.5Routing416
Kernel Routing Tables417
Routing Lookup420
Routing Redirects423
Routing-Table Interface424
User-Level Routing Policies425
User-Level Routing Interface: Routing Socket425
12.6Buffering and Congestion Control426
Protocol Buffering Policies427
Queue Limiting427
12.7Raw Sockets428
Control Blocks428
Input Processing429
Output Processing429
12.8Additional Network-Subsystem Topics429
Out-of-Band Data430
Address Resolution Protocol430
Exercises432
References433
Chapter 13Network Protocols435
13.1Internet Network Protocols436
Internet Addresses437
Subnets438
Broadcast Addresses441
Internet Multicast441
Internet Ports and Associations442
Protocol Control Blocks442
13.2User Datagram Protocol(UDP)443
Initialization443
Output444
Input445
Control Operations446
13.3Internet Protocol(IP)446
Output447
Input448
Forwarding449
13.4Transmission Control Protocol(TCP)451
TCP Connection States453
Timers459
Estimation of Round-Trip Time460
Connection Establishment461
Connection Shutdown463
13.6TCP Input Processing468
Sending of Data468
Avoidance of the Silly-Window Syndrome469
Avoidance of Small Packets470
Delayed Acknowledgments and Window Updates471
Retransmit State472
Slow Start472
Source-Quench Processing474
Buffer and Window Sizing474
Avoidance of Congestion with Slow Start475
Fast Retransmission476
13.8Internet Control Message Protocol(ICMP)477
13.9OSI Implementation Issues478
13.10Summary of Networking and Interprocess Communication480
Creation of a Communication Channel481
Sending and Receiving of Data482
Termination of Data Transmission or Reception483
Exercises484
References486
Part 5System Operation489
Chapter 14System Startup491
14.1Overview491
14.2Bootstrapping492
The Boot Program492
14.3Kernel Initialization493
Assembly-Language Startup494
Machine-Dependent Initialization495
Message Buffer495
System Data Structures496
14.4Autoconfiguration496
Device Probing498
Device Attachment499
New Autoconfiguration Data Structures499
New Autoconfiguration Functions501
Device Naming501
14.5Machine-Independent Initialization502
14.6User-Level Initialization505
/sbin/init505
/etc/rc505
/usr/libexec/getty506
/usr/bin/login506
14.7System-Startup Topics507
Kernel Configuration507
System Shutdown and Autoreboot507
System Debugging508
Passage of Information To and From the Kernel509
Exercises511
References511
Glossary513
Index551
媒体评论