Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

Unix内核源码剖析 PDF 下载


分享到:
时间:2019-09-24 15:50来源:http://www.jb51.net/(脚本之家 作者:转载  侵权举报
Unix内核源码剖析 PDF 下载
失效链接处理
Unix内核源码剖析 PDF 下载

转载自:https://www.jb51.net/books/694208.html
 
本站整理下载:
版权归出版社和原作者所有,链接已删除,请购买正版
 
 
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
http://product.dangdang.com/23420542.html
  
相关截图:
 
资料简介:
《Unix内核源码剖析》是一本UNIX V6内核源代码的阅读指南。作者结合UNIX V6已公开的相关文档,对UNIX V6的内核源码进行详细剖析,旨在让读者更深入地理解进程、中断、块I/O系统、文件系统、字符I/O系统、启动系统等操作系统的基本原理。
  《Unix内核源码剖析》适合操作系统的初中级学习者阅读,特别适合通过大学课程和其他入门书对操作系统有所了解,但是对具体细节缺乏深入理解的读者,以及那些对操作系统的具体实现有兴趣的读者。
 
资料目录:
第I部分 什么是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

第II部分 进程 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章 进程的管理I 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

第III部分 中断 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
 grow() 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

第IV部分 块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

第V部分 文件系统 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
 openi() 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

第VI部分 字符I/O系统 275

第12章 字符设备 276
12.1 字符设备驱动 276
 字符设备缓冲区 277
 对缓冲区的操作 278
 初始化缓冲区池 280
12.2 LP11设备驱动 281
 什么是LP11 281
 LP11设备驱动的功能 282
 lpopen() 284
 lpwrite() 285
 lpcanon() 285
 lpoutput() 287
 lpstart() 288
 lpint() 288
 lpclose() 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
 ttread() 309
 canon() 310
13.6 向终端输出数据 313
 klwrite() 314
 ttwrite() 315
 ttyoutput() 316
 ttstart() 318
 ttrstrt() 319
 klxint() 320
13.7 小结 320

第VII部分 启动系统 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


 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐