⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.txt

📁 上篇 UNIX操作系统版本6源代码 UNIX操作系统过程分类索引 UNIX操作系统文件及过程 UNIX操作系统定义的符号列表 UNIX操作系统源代码交叉引用列表 第一部分 初始化、进
💻 TXT
字号:
目      录

献辞

致谢

序(一)

序(二)

历史注记

上篇   UNIX操作系统版本6源代码

UNIX操作系统过程分类索引	3

UNIX操作系统文件及过程	5

UNIX操作系统定义的符号列表	7

UNIX操作系统源代码交叉引用列表	9

第一部分   初始化、进程初始化	25

第二部分   陷入、中断、系统调用和

                   进程管理	75

第三部分   程序交换、基本输入/输出、

                   块设备	109

第四部分   文件和目录、文件系统、管道	133

第五部分   面向字符的特殊文件	181

下篇   莱昂氏UNIX源代码分析

前言	207

第1章   绪论	209

1.1   UNIX操作系统	209

1.2   公用程序	209

1.3   其他文档	210

1.4   UNIX程序员手册	210

1.5   UNIX文档	211

1.6   UNIX操作系统源代码	211

1.7   源代码中各部分	212

1.8   源代码文件	212

1.9   分析的使用	212

1.10   对程序设计水平的一条注释	212

第2章   基础知识	214

2.1   处理机	214

2.2   处理机状态字	214

2.3   通用寄存器	214

2.4   指令集	215

2.5   寻址方式	216

2.5.1   寄存器方式	217

2.5.2   寄存器延迟方式	217

2.5.3   自动增1方式	217

2.5.4   自动减1方式	217

2.5.5   变址方式	217

2.5.6   立即方式	218

2.5.7   相对方式	218

2.6   UNIX汇编程序	219

2.7   存储管理	219

2.8   段寄存器	220

2.9   页说明寄存器	220

2.10   存储分配	220

2.11   状态寄存器	221

2.12   “i”和“d”空间	221

2.13   启动条件	221

2.14   专用设备寄存器	221

第3章   阅读“C”程序	222

3.1   某些选出的例子	222

3.2   例1	222

3.3   例2	223

3.4   例3	223

3.5   例4	225

3.6   例5	225

3.7   例6	227

3.8   例7	227

3.9   例8	228

3.10   例9	228

3.11   例10	229

3.12   例11	229

3.13   例12	230

3.14   例13	230

3.15   例14	231

3.16   例15	231

3.17   例16	232

3.18   例17	233

第4章   概述	235

4.1   变量分配	235

4.2   全局变量	235

4.3  “C”预处理程序	235

4.4   第一部分	236

4.4.1   第1组“.h”文件	236

4.4.2   汇编语言文件	237

4.4.3   在第一部分中的其他文件	237

4.5   第二部分	237

4.6   第三部分	238

4.7   第四部分	238

4.8   第五部分	239

第一部分   初始化、进程初始化

第5章   两个文件	241

5.1   文件malloc.c	241

5.1.1   列表维护规则	241

5.1.2   malloc(2528)	242

5.1.3   mfree(2556)	243

5.1.4   结论	244

5.2   文件prf.c	244

5.2.1   printf(2340)	244

5.2.2   printn(2369)	245

5.2.3   putchar(2386)	246

5.2.4   panic(2419)	247

5.2.5   prdev(2433)、deverror(2447)	247

5.3   包含的文件	247

第6章   系统初启	249

6.1   操作员的动作	249

6.2   start(0612)	249

6.3   main(1550)	251

6.4   进程	252

6.5   proc〔0〕的初始化	252

6.6   sched(1940)	253

6.7   sleep(2066)	253

6.8   swtch(2178)	253

6.9   再回到main	254

第7章   进程	256

7.1   进程映像	256

7.2   proc结构(0358)	257

7.3   user结构(0413)	257

7.4   每个进程数据区	258

7.5   段	258

7.6   映像的执行	258

7.7   核心态执行	259

7.8   用户态执行	259

7.9   一个实例	259

7.10   设置段寄存器	260

7.11   estabur(1650)	260

7.12   sureg(1739)	261

7.13   newproc(1826)	261

第8章   进程管理	263

8.1   进程切换	263

8.2   中断	263

8.3   程序交换	263

8.4   作业	264

8.5   汇编语言过程	264

8.6   savu(0725)	264

8.7   retu(0740)	264

8.8   aretu(0734)	264

8.9   swtch(2178)	265

8.10   setpri(2156)	265

8.11   sleep(2066)	266

8.12   wakeup(2133)	266

8.13   setrun(2134)	266

8.14   expand(2268)	267

8.15   再回到swtch	267

8.16   临界区	268

第二部分   陷入、中断、系统调用

和进程管理

第9章   硬件中断和陷入	269

9.1   硬件中断	269

9.2   中断矢量	270

9.3   中断处理程序	270

9.4   优先级	270

9.5   中断优先级	271

9.6   中断处理程序的规则	271

9.7   陷入	272

9.8   汇编语言trap	272

9.9   返回	273

第10章   汇编语言“trap”例程	274

10.1   陷入和中断源	274

10.2   fuibyte(0814)与fuiword(0844)	274

10.3   中断	275

10.4   call(0776)	275

10.5   用户程序陷入	 276

10.6   核心态栈	277

第11章   时钟中断	279

11.1   clock(3725)	279

11.2   timeout(3845)	281

第12章   陷入与系统调用	282

12.1   trap(2693)	282

12.2   核心态陷入	282

12.3   用户态陷入	283

12.4   系统调用	284

12.5   系统调用处理程序	285

12.6   文件sys1.c	285

12.6.1   exec(3020)	285

12.6.2   fork(3322)	286

12.6.3   sbreak(3354)	286

12.7   文件sys2.c和sys3.c	287

12.8   文件sys4.c	287

第13章   软件中断	288

13.1   设置期望动作	288

13.2   对进程造成中断	288

13.3   作用	289

13.4   跟踪	289

13.5   过程	289

13.5.1   期望动作的设置	289

13.5.2   造成软件中断	289

13.5.3   作用	289

13.5.4   跟踪	290

13.6   ssig(3614)	290

13.7   kill(3630)	290

13.8   signal(3949)	290

13.9   psignal(3963)	291

13.10   issig(3991)	291

13.11   psig(4043)	291

13.12   core(4094)	292

13.13   grow(4136)	292

13.14   exit(3219)	292

13.15   rexit(3205)	293

13.16   wait(3270)	293

13.17   跟踪	293

13.18   stop(4016)	294

13.19   wait(3270)(继续)	294

13.20   ptrace(4164)	295

13.21   procxmt(4204)	295

第三部分   程序交换、基本输入

/输出、块设备

第14章   程序交换	297

14.1   正文段	297

14.2   sched(1940)	298

14.3   xswap(4368)	299

14.4   xalloc(4433)	299

14.5   xfree(4398)	300

第15章   基本输入/输出介绍	301

15.1   buf.h文件	301

15.2   devtab(4551)	301

15.3   conf.h文件	301

15.4   conf.c文件	302

15.5   系统生成	302

15.6   swap(5196)	302

15.7   竞态条件	303

15.8   可重入	304

15.9   继续分析“u.u_ssav”	304

第16章   RK磁盘驱动器	305

16.1   控制状态寄存器RKCS	306

16.2   字计数寄存器RKWC	306

16.3   磁盘地址寄存器RKDA	306

16.4   rk.c文件	306

16.5   rkstrategy(5389)	306

16.6   rkaddr(5420)	307

16.7   devstart(5096)	307

16.8   rkintr(5451)	307

16.9   iodone(5018)	308

第17章   缓存处理	309

17.1   标志	309

17.2   一个类超高速缓存存储	309

17.3   clrbuf(5038)	309

17.4   incore(4899)	310

17.5   getblk(4921)	310

17.6   brelse(4869)	310

17.7   binit(5055)	311

17.8   bread(4754)	312

17.9   breada(4773)	312

17.10   bwrite(4809)	312

17.11   bawrite(4856)	313

17.12   bdwrite(4836)	313

17.13   bflush(5229)	313

17.14   physio(5259)	313

第四部分   文件和目录、文件

系统、管道

第18章   文件存取和控制	315

18.1   源代码第四部分	315

18.2   文件特征	315

18.3   系统调用	316

18.4   控制表	316

18.4.1   file(5507)	316

18.4.2   inode(5659)	316

18.5   要求专用的资源	317

18.6   打开一个文件	317

18.7   creat(5781)	317

18.8   open1(5804)	317

18.9   open(5763)	318

18.10   再回到open1	318

18.11   close(5846)	318

18.12   closef(6643)	319

18.13   iput(7344)	319

18.14   删除文件	319

18.15   读和写文件	319

18.16   rdwr(5731)	320

18.17   readi(6221)	321

18.18   writei(6276)	322

18.19   iomove(6364)	322

18.20   bmap(6415)	322

18.21   剩余部分	322

第19章   文件目录和目录文件	323

19.1   文件名	323

19.2   目录数据结构	323

19.3   目录文件	323

19.4   namei(7518)	324

19.5   一些注释	325

19.6   link(5909)	326

19.7   wdir(7477)	327

19.8   maknode(7455)	327

19.9   unlink(3510)	327

19.10   mknod(5952)	327

19.11   access(6746)	328

第20章   文件系统	329

20.1   超级块(5561)	329

20.2   mount表(0272)	329

20.3   iinit(6922)	330

20.4   安装	330

20.5   smount(6086)	330

20.6   注释	331

20.7   iget(7276)	331

20.8   getfs(7167)	332

20.9   update(7201)	332

20.10   sumount(6144)	333

20.11   资源分配	333

20.12   alloc(6956)	334

20.13   itrunc(7414)	334

20.14   free(7000)	335

20.15   iput(7344)	335

20.16   ifree(7134)	335

20.17   iupdat(7374)	335

第21章   管道	337

21.1   pipe(7723)	337

21.2   readp(7758)	337

21.3   writep(7805)	338

21.4   plock(7862)	338

21.5   prele(7882)	338

第五部分   面向字符的特殊文件

第22章   面向字符的特殊文件	339

22.1   LP11行式打印机驱动程序	339

22.2   lpopen(8850)	340

22.3   注释	340

22.4   lpoutput(8986)	340

22.5   lpstart(8967)	341

22.6   lpint(8976)	341

22.7   lpwrite(8870)	342

22.8   lpclose(8863)	342

22.9   讨论	342

22.10   lpcanon(8879)	342

22.11   对读者的建议	343

22.12   PC11纸带阅读机/穿孔机驱动

            程序	344

第23章   字符处理	345

23.1   cinit(8234)	346

23.2   getc(0930)	346

23.3   putc(0967)	347

23.4   字符集	347

23.5   图形字符	348

23.6   UNIX惯例	349

23.7   maptab(8117)	349

23.8   partab(7947)	349

第24章   交互式终端	351

24.1   接口	351

24.2   tty结构(7926)	351

24.3   注释	352

24.4   初始化	352

24.5   stty(8183)	352

24.6   sgtty(8201)	353

24.7   klsgtty(8090)	353

24.8  ttystty(8577)	353

24.9   DL11/KL11终端设备处理程序	353

24.10   设备寄存器	354

24.11   接收器状态寄存器	354

24.12   接收器数据缓存寄存器	354

24.13   发送器状态寄存器	354

24.14   发送器数据缓存寄存器	354

24.15   单总线地址	354

24.16   软件方面的考虑	355

24.17   中断矢量地址	355

24.18   源代码	355

24.19   klopen(8023)	355

24.20   klclose(8055)	356

24.21   klxint(8070)	356

24.22   klrint(8078)	356

第25章   tty.c文件	357

25.1   flushtty(8252)	357

25.2   wflushtty(8217)	357

25.3   字符输入	358

25.3.1   ttread(8535)	358



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -