第Ⅰ部分 什么是UNIX V6 1
第1章UNIX V6的全貌 2
1.1什么是UNIX V6 2
1.2 UNIX的历史 2
1.3 UNIX V6内核 4
1.4构成UNIX V6运行环境的硬件 4
PDP-11 5
1.5代码 9
1.6手册 9
1.7小结 10
第Ⅱ部分 进程 11
第2章 进程 12
2.1进程的概要 12
什么是进程 12
进程的并行执行 12
进程的执行状态 14
用户模式和内核模式 14
交换处理 15
2.2 proc结构体和user结构体 15
proc结构体 16
user结构体 17
2.3为进程分配的内存 21
代码段 21
数据段 21
虚拟地址空间 22
变换地址 24
2.4小结 26
第3章 进程的管理Ⅰ 27
3.1进程的生命周期 27
3.2创建进程 28
进程的复制 28
父进程和子进程 29
系统调用fork 29
newproc() 32
panic() 36
3.3切换执行进程 37
中断执行进程 37
进程的执行状态 37
选择执行进程的算法 38
上下文切换 39
系统调用wait 39
sleep() 39
swtch() 41
swtch()的返回位置 44
setpri() 51
wakeup() 51
setrun() 52
3.4执行程序 53
程序执行文件的格式 53
系统调用exec 54
estabur() 62
sureg() 65
expand() 66
3.5进程的终止 68
系统调用exit 69
系统调用wait 71
3.6数据区域的扩展 73
系统调用break 73
3.7管理内存和交换空间 76
map结构体 76
获取未使用区域 77
释放区域 79
3.8小结 81
第4章 交换处理 82
4.1什么是交换处理 82
代码段和数据段 82
sched() 83
xswap() 87
4.2共享代码段的处理 88
xalloc() 90
xfree() 93
xccdec() 93
4.3小结 94
第Ⅲ部分 中断 95
第5章 中断与陷入 96
5.1什么是中断与陷入 96
什么是中断 96
什么是陷入 97
5.2优先级与向量(Vector) 98
中断优先级和处理器优先级 98
中断和陷入向量 100
5.3中断和陷入的处理流程 100
发生中断或陷入 101
执行call和trap 104
5.4时钟中断处理函数 107
时钟设备的规格 107
时钟中断处理函数的内容 108
clock() 113
5.5陷入处理函数 117
trap() 117
g row() 122
5.6系统调用的处理流程 123
传递参数的方法 123
sysent结构体 124
trap() 126
5.7小结 128
第6章 信号 129
6.1什么是信号 129
信号的发送方法 129
确认接收信号 129
信号的种类 130
ssig() 131
kill() 132
signal() 133
psignal() 133
issig() 134
psig() 134
core() 136
在系统调用处理中处理信号 136
6.2跟踪功能 137
什么是跟踪 137
ipc结构体 138
跟踪的处理流程 138
stop() 139
ptrace() 140
procxmt() 142
wait() 143
6.3小结 144
第Ⅳ部分 块I/O系统 145
第7章 块设备子系统 146
7.1设备的基础 146
设备的种类 146
设备驱动 146
类别和设备编号 147
特殊文件 147
7.2块设备子系统 148
缓冲区 148
b-list和av-list 150
RAW输入输出 151
7.3缓冲区的初始化 152
binit() 152
clrbuf() 153
7.4缓冲区的获取和释放 154
getblk() 154
notavail() 156
brelse() 157
7.5读取 158
读取的种类 158
bread() 159
iowait() 160
iodone() 160
geterror() 161
breada() 161
incore() 162
7.6写入 163
写入的种类 163
bwrite() 164
bawrite() 165
bdwrite() 165
bflush () 166
7.7 RAW输入输出 167
physio() 167
swap() 169
7.8小结 171
第8章 块设备驱动 172
8.1什么是块设备驱动 172
块设备驱动表 172
设备处理队列 173
处理流程 173
8.2 RK-11磁盘驱动 174
RK11-D 175
特殊文件 175
设定bdevsw[] 176
中断处理函数 176
RK11-D的寄存器 177
rkstrategy() 179
rkstart() 180
rkaddr() 180
devstart() 181
rkintr() 182
RAW输入输出 184
8.3小结 184
第Ⅴ部分 文件系统 185
第9章 文件系统 186
9.1什么是文件系统 186
inode 186
树状结构的命名空间 187
挂载 187
访问权限 188
根磁盘 189
9.2块设备的区域 189
用于启动的区域 190
超级块 190
inode区域 191
存储区域 193
9.3挂载 193
mount结构体 193
系统调用mount 194
getmdev() 196
系统调用umount 197
9.4 inode的获取和释放 198
inode[] 198
iget() 201
iput() 203
iupdat() 204
9.5 inode与存储区域的对应关系 205
bmap() 208
itrunc() 211
9.6分配块设备中的块 213
ialloc() 213
ifree() 216
alloc() 217
free() 220
getfs() 222
badblock() 222
9.7将路径变为inode 223
目录的内容 223
namei() 224
access() 230
9.8初始化与同步 232
iinit() 232
update() 232
9.9小结 234
第10章 文件处理 235
10.1用户程序对文件的处理 235
10.2 3个结构体 235
标准输入输出 237
10.3文件的生成和打开处理 237
系统调用creat 238
maknode() 238
wdir() 239
系统调用open 240
open1() 241
falloc() 242
ufalloc() 243
open i() 243
10.4文件的读取和写入 244
系统调用read、 write 244
rdwr() 245
readi() 246
writei() 248
iomove() 250
getf() 252
10.5指定文件的读写位置 252
系统调用seek 252
10.6关闭文件 254
系统调用close 254
closef() 254
closei() 255
10.7目录的生成 255
系统调用mknod 255
10.8文件的链接 256
系统调用link 257
suser() 258
10.9删除文件 258
系统调用unlink 258
10.10小结 260
第 11章管道 261
11.1什么是管道 261
使用管道的优点 262
11.2开始管道通信 262
系统调用pipe 262
11.3收发数据 264
writep() 264
readp() 266
plock() 267
prele() 267
11.4结束管道通信 268
closef() 268
11.5建立管道通信的流程 268
建立父子进程间的通信 268
系统调用dup 272
11.6小结 273
第Ⅵ部分 字符I/O系统 275
第12章 字符设备 276
12.1字符设备驱动 276
字符设备缓冲区 277
对缓冲区的操作 278
初始化缓冲区池 280
12.2 LP11设备驱动 281
什么是LP11 281
LP11设备驱动的功能 282
Ipopen() 284
Ipwrite() 285
Ipcanon() 285
Ipoutput() 287
Ipstart() 288
Ipint() 288
Ipclose() 289
12.3小结 289
第13章 电传终端 290
13.1什么是电传终端 290
电传终端的接口 290
特殊文件 291
tty结构体 292
maptab[] 295
partab[] 295
KL11/DL11 296
KL11/DL11设备驱动的规格 297
KL11/DL11设备驱动函数 298
13.2终端的开启和关闭 298
klopen() 298
klclose() 300
wflushtty() 300
flushtty() 301
13.3终端的设定 302
gtty() 302
stty() 302
sgtty() 303
klsgtty() 304
ttystty() 304
13.4从终端输入文字 305
klrint() 306
ttyinput() 306
13.5读取输入的数据 308
klread() 309
read() 309
canon() 310
13.6向终端输出数据 313
klwrite() 314
write() 315
ttyoutput() 316
ttstart() 318
ttrstrt() 319
klxint() 320
13.7小结 320
第Ⅶ部分 启动系统 321
第14章 启动系统 322
14.1启动的流程 322
start 323
main() 326
/etc/init 329
14.2小结 330
附 录 参考资料等 331
A.1参考文献、网站 331
A.2 pre K&R C 335
后记 337
索引 338