注册 登录 进入教材巡展
#

出版时间:2014年3月

出版社:人民邮电

以下为《Unix内核源码剖析》的配套数字资源,这些资源在您购买图书后将免费附送给您:
  • 人民邮电
  • 9787115345219
  • 178694
  • 2014年3月
  • 未分类
  • 未分类
  • TP316.81
内容简介

  青柳隆宏著的《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(