当前位置:
首页 > 学习 > 莱昂氏UNIX源代码分析

莱昂氏UNIX源代码分析

莱昂氏UNIX源代码分析

莱昂氏UNIX源代码分析

简介

莱昂氏UNIX源代码分析,是学习UNIX系统入门教材的必读经典,Linux、BSD、Windows系统等等都借鉴了相应的方法和实现。本书由上、下两篇组成。上篇为UNIXV6的源代码,下篇是莱昂先生对UNIX操作系统版本6源代码的详细分析。

该书最早于1976年在作者当时所在的澳大利亚新南威尔士大学内部流通,但是由于有关公司希望保守在UNIX内核方面的商业机密,该书多年来从未正式出版。但本书一直受到UNIX黑客的关注,私下广为流传于世,是一部杰出、经典之作。在各方有识之士的努力下,该书终于于1996年正式出版,此次中文版的推出在国内计算机图书出版界尚属首次。

全书语言简洁、透彻;作为一本自学UNIX的教材,二十多年来一直鼓舞和激励着计算机和高级操作系统方面的专业人员和学生。

目录

献辞
致谢
序(一)
序(二)
历史注记
上篇 UNIX操作系统版本6源代码

UNIX操作系统过程分类索引
UNIX操作系统文件及过程
UNIX操作系统定义的符号列表
UNIX操作系统源代码交叉引用列表第一部 分初始化、进程初始化
第二部 分陷入、中断、系统调用和进程管理
第三部 分程序交换、基本输入l输出、块设备
第四部 分文件和目录、文件系统、管道
第五部 分面向字符的特殊文件

下篇莱昂氏UNIX源代码分析

前言

第1章 绪论
1.1 UNIX操作系统
1.2 公用程序
1.3 其他文档
1.4 UNIX程序员手册
1.5 UNIX文档
l.6 UNIX操作系统源代码
1.7 源代码中各部分
1.8 源代码文件
1.9 分析的使用
1.10 对程序设计水平的一条注释

第2章 基础知识
2.l 处理机
2.2 处理机状态字
2.3 通用寄存器
2.4 指个集
2.5 寻址方式
2.5.1 寄存器方式
2.5.2 寄存器延迟方式..
2.5.3 自动增1方式
2.5.4 自动减1方式
2.5.5 变址方式
2.5.6 立即方式
2.5.7 相对方式
2.6 UNIX汇编程序
2.7 存储管理
2.8 段寄存器—
2.9 页说明寄存器
2.10 存储分配
2.11 状态寄存器—
2.12 i和d空间
21.3 启动条件
2.14 专用设备寄存器

第3章 阅读C程序
3.1 某些选出的例子
3.2 例1
3.3 例2
3.4 例3
3.5 例4
3.6 例5
3.7 例6
3.8 例7
3.9 例8
3.10 例9
3.11 例10
3.12 例11
3.13 例12
3.14 例13
3.15 例14
3.16 例15
3.17 例16
3.18 例17

第4章 概述
4.1 变量分配
4.2 全局变量
4.3 C预处理程序
4.4 第一部分
4.4.1 第1组h文件
4.4.2 汇编语言文件
4.4.3 在第一部分中的其他文件
4.5 第二部分
4.6 第三部分
4.7 第四部分
4.8 第五部分
第一部分初始化、进程初始化

第5章 两个文件
5.l 文件malloc.c
5.1.l 列表维护规则
5.1.2 malloC(252)
5.1.3 mfree(2556)
5.1.4 结论—
5.2 文件Prf.c
5.2.l printf(234)
5.2.2 printn(2369)
5.2.3 putchar(2386)
5.2.4 panic(2419)
5.2.5 prdev(2433)、deverror(2447)
5.3包含的文件

第6章 系统动启
6.1 操作员的动作
6.2 start(0612)
6.3 main(1550)
6.4 进程
6.5 Proct(0)的初始他
6.6 sched(1940)
6.7 sleep(2066)
6.8 SWtCh(2178)
6.9 再回到 main

第7章 进程
7.1 进程映像
7.2 proc结构(0358)
7.3 user结构(0413)
7.4 每个进程数据区
7.5 段
7.6 映像的执行
7.7 核心态执行
7.8 用户态执行
7.9 一个实例
7.10 设置段寄存器
7.11 estabur(1650)
7.12 sureg(1739)
7.13 newproc(1826)

第8章 进程管理
8.l 进程切换
8.2 中断
8.3 程序交换
8.4 作业
8.5 汇编语言过程
8.6 savu(072)
8.7 rein(074)
8.8 aretu(073)
8.9 SWtCh(2178)
8.10 setpri(2156)
8.11 sleep(206)
8.12 wakeup(2133)
8.13 setrun(2134)
8.14 expand(2268)
8.15 再回到 swtch
8.16 临界区
第二部分 陷入、中断、系统调用和进程管理

第9章 硬件中断和陷入
9.l 硬件中断
9.2 中断矢量
9.3 中断处理程序
9.4 优先级
9.5 中断优先级
9.6 中断处理程序的规则
9.7 陷入
9.8 汇编语言trap
9.9 返回

第10章 汇编语言 trap例程
10.l 陷入和中断源
10.2 fuibyte(0814)与fuiword(0844)
10.3 中断
10.4 call(077)
10.5 用户程序陷入
10.6 核心态栈

第11章 时钟中断
11.I clock(3725)
11.2 timeout(3845)

第12章 陷入与系统调用
12.l trap(269)
12.2 核心态陷入
12.3 用户态陷入
12.4 系统调用:..
12.5 系统调用处理程序
12.6 文件Sysl.C
12.6.1 exeC(302)
12.6.2 fork(3322)
12.6.3 sbreak(3354)
12.7 文件SyS2.C和SyS3.C
12.8 文件SyS4.C

第13章 软件中断
13.1 设置期望动作
13.2 对进程造成中断
13.3 作用
13.4 跟踪
13.5 过程
13.5.l 期望动作的设置
13.5.2 造成软件中断
13.13 作用
13.5.4 跟踪:
13.6 SSig(3614)
13.7 kill(3630)
13.8 signal(3949)
13.9 psignal(3963)
13.10 issig(3991)
13.11 psig(404刀
13.12 ocre(4094)
13.13 grow(4136)
13.14 exit(321)
13.15 rexit(3205)
13.16 wait(327)
13.17 跟踪
13.18 stop(4016)
13.19 wait(3270)(继续)
13.20 ptrace( 64)
13.21 procxmt(4204)
第三部分 程序变换、基本输入偷出、块设备

第14章 程序交换
14.l 正文段
14.2 sobed(1940)
14.3 xswap(4368)
14.4 xalloc(4433)
14.5 xfree(4398)

第15章 基本输入/输出介绍
15.l bUf.h文件
15.2 devtab(4551)
15.3 conf.h文件
15.4 conf.c文件
15.5 系统生成
15.6 swap(sl 96)
15.7 竞态条件
15.8 可重入
15.9 继续分析u.uss.v

第16章 RK磁盘驱动器
16.1 控制状态寄存器RKCS
16.2 字计数寄存器RKWC
16.3 磁盘地址寄存器RKDA
16.4 rk.c文件
16.5 rkstrategy(5389)
16.6 rkaddr(5420)
16.7 devstart(5096)
16.8 rkintr(5451)
16.9 iodone(5018)

第17章 缓存处理
17.l 标志
17.2 一个类超高速缓存存储
17.3 clrbuf(503)
17.4 incore(4899)
17.5 getulk(4921)
17.6 brelse(4869)
17.7 binit5055)
17.8 bread(4754
17.9 breada(4773)
17.10 bwrite(480)
17.11 bawrite(4856)
17.12 bdwritC(483)
17.13 bflush(5229)
17.14 physic(5259)
第四部分 文件和目录、文件系统、管道

第18章 文件存取和控制
18.l 源代码第四部分
18.2 文件特征
18.3 系统调用
18.4 控制表
18.4.l file(5507)
18.4.2 inode(5659)
18.5 要求专用的资源—
18.6 打开一个文件
18.7 creat(5781)
18.8 openl(5804)
18.9 oped(5763)
18.10 再回到 openl
18.11 close(5846)
18.12 closef(6643)
18.13 iput(7344)
18.14 删除文件
18.15 读和写文件
18.16 rdwr(5731)
18.17 readi(6221)
18.18 writei(6276)
18.19 iomove(6364)
18.20 bmap(6415)
18.21 剩余部分

第19章 文件目录和目录文件
19.1 文件名
19.2 目录数据结构
19.3 目录文件
19.4 namei(7518 )
19.5 一些注释
19.6 link(5909)
19.7 wdir(747)
19.8 maknode(7455)
19.9 unlink(351)
19.10 mknod(5952
19.11 access(6746)

第20章 文件系统
20.l 超级块(5561)
20.2 mount表(0272)
20.3 iinit(692)
20.4 安装
20.5 smount(6086)
20.6 注释
20.7 iget(727)
20.8 getfs(7167)
20.9 updatC(720)
20.10 sumount(6 144)
20.11资源分配
20.12 alloc(6956)
20.13 itrunc(7414)
20.14 free(7000)
20.15 iput(734)
20.16 ifree(71 34)
20.17 iupdat(737)

第21章 管道
21.l pipe(7723)
21.2 readp(7758
21.3 writep(780)
21.4 plOCk(786)
21.5 prele(788)
第五部分 面向字符的特殊文件

第22章 面向字符的特殊文件
22.1 LPll行式打印机驱动程序
22.2 lpopen(885)
223 注释
22.4 lpoutput(8986)
22.5 lpstart(8967)
22.6 lpint(8976)
22.7 lpwrite(887)
22.8 lpclose(886)
22.9 讨论
22.10 lpcanon(887)
22.11 对读者的建议
22.12 PCll纸带阅读机/穿孔机驱动程序

第23章 字符处理
23.I cinit(8234)
23.2 getc(093)
23.3 plltC(096)
23.4 字符集
23.5 图形字符、
23.6 UNIX惯例
23.7 maptab(sll7)
23.8 pariah(7947)

第24章 交互式终端
24.1 接口
24.2 tty结构(792)
24 3 注释
24.4 初始化
24.5 stty(sl 83)
24.6 sgtty(8201)
24.7 klsgtty(8090)
24.8 ttystty(8577)
24.9 DLll/KLll终端设备处理程序
24.10 设备寄存器
24.11 接收器状态寄存器
24.12 接收器数据缓存寄存器
24 13 发送器状态寄存器
24.14 发送器数据级存寄存器
24.15 单总线地址
24.16 软件方面的考虑
24.17 中断矢量地址
24.18 源代码
24.19 klopen(8023)
24.20 klclose(8055)
24.21 klxint(8070)
24.22 klrint(8078)

第25章 tty.c又件
25.l flushtty(8252)
25.2 Wflllshtty(821)
25.3 字符输入
25.3.l ttread(853)
25.3.2 canon(8274)
25.3.3 前一个字符不是外
25.3.4 前一个字符是“/”
25.3.5 字符准备
25.3.6 已得到1行
253.7 注释
25.3.8 ttyinput(8333)
25.4 字符输出
25.4.l ttwrite(8550)
25.4.2 ttstart(8505)
25.4.3 ttrstrt(8486)
25.4.4 ttyOUtpUt(8373)
25.4.5 具有受限字符集的终端
25.5 结束语

第26章 练习
罗斯跋
奥德尔跋
古德哈特跋
克林森跋
雷杰斯跋
作者小传

本文链接地址: 莱昂氏UNIX源代码分析


莱昂氏UNIX源代码分析:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!