《Unix内核源码剖析》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:青柳隆宏著;殷中翔译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2014
  • ISBN:9787115345219
  • 页数:342 页
图书介绍:本书结合UNIX V6已公开的相关文档,对UNIX V6的内核源码进行详细剖析,旨在让读者更深入地理解进程、中断、块I/O、文件系统、字符I/O、系统启动等操作系统的基本原理。本书适合操作系统的初中级学习者阅读,特别适合通过大学课程和其他入门书对操作系统有所了解,但是对具体细节缺乏深入理解的读者,以及那些对操作系统的具体实现有兴趣的读者。

第Ⅰ部分 什么是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