《DOS的全面剖析与编程启示》求取 ⇩

目录1

关于DOS的100个问题的启示1

第一篇 BIOS层1

第一章 DOS环境的建立:系统初始化SYS—INIT流程1

1.1 ROM—BIOS开机自检过程概述1

第一篇 BIOS层2

图1.1 INT 19H流程2

图1.2 IO.SYS的初始化程序3

1.2 SYS—INIT过程概述3

图1.3 MSDOS.SYS的初始化程序3

图1.4 COMMAND初始化程序3

图1.5 主引导扇区布局4

1.3 第一阶段:硬盘主引导程序及BOOT4

图1.6 主引导程序的流程5

图1.7 B○○T执行时的内存布局8

1.4 第二阶段:IO.SYS重装入程序9

绪论10

图1.8 BOOT程序的流程10

图1.9 IO.SYS文件的结构11

图1.10 I○.SYS重装入程序的流程12

图1.11 执行SYS—INIT Ⅰ时的内存布局13

1.5 第三阶段:SYS—INITI的实现流程13

图1.12 供选择部份的构成17

图1.13 SYS—INIT Ⅰ的完整流程20

图1.14 SYS—INIT Ⅰ创建软驱DDTL的流程28

图1.15 SYS—INIT Ⅰ创建硬盘D○S分区DDTL的流程29

1.6 第四阶段:SYS—INIT Ⅱ与DOS—INIT30

图1.16 执行SYS—INIT Ⅱ时的内存布局31

图1.17 SYS—INIT Ⅱ前一部分的流程32

图1.18 执行D○S—INIT时的内存布局33

图1.19 DOS—INIT的完整流程34

图1.20 执行DOS—INIT后的内存布局37

图1.21 SYS INIT Ⅱ后一部分的流程38

图1.22 处理CONFIG.SYS时的内存布局40

图1.23 STACKS配置区的结构43

图1.24 处理CCNFIG.SYS后的内存布局44

1.7 第五阶段:COMMAND.COM的初始化流程44

图1.25 执行COMMAND.COM时的内存布局46

图1.26 COMMAND初始化程序的完整流程47

第二章 IO.SYS驻留部份50

2.1 DOS标准设备管理:5种常驻设备驱动程序分析50

图2.1 传送到字符设备的参数块格式62

图2.2 传送块设备的参数块格式64

图2.3 从字符设备返回的参数块格式64

图2.4 块设备返回的参数块格式65

图2.5 常驻设备中断过程的主流程67

图2.6 MS-DOS 3.30常驻设备支持的功能68

图2.7 CON设备功能的实现流程69

图2.8 AUX设备各功能的实现流程图72

图2.9 PRN设备各功能的实现流程图74

图2.10 CLOCK $设备各功能的实现流程图77

图2.11 块设备01功能的实现流程图80

图2.12 块设备02功能的实现流程图82

图2.13 块设备04,08,09功能的实现流程图84

图2.14 块设备的0DH,0EH功能的实现流程图87

图2.15 块设备0FH功能的实现流程图87

图2.16 块设备17H、18H功能的实现流程图90

2.2 IO.SYS驻留部份接管的中断91

图2.17 INT 13H功能主流程图(一)92

图2.18 INT 13H的流程图(二)93

第三章 可安装的设备驱动程序96

3.1 DOS是如何接纳可安装的设备驱动程序的96

图3.1 设备驱动程序安装后的内存片断97

图3.2 一个设备头链表实例97

图3.3 多设备头的设备驱动程序布局98

图3.4 设备驱动程序的安装过程99

3.2 可安装的设备驱动程序的编程原则及其模板101

3.3 介绍DOS所提供的几个设备驱动程序106

图3.5 换码序列的识别过程的有限自动机描述示例112

3.4 安装设备驱动程序的新途径113

图3.6 在命令行下装入设驱的程序流程121

第四章 中断驱动的字符设备驱动程序143

4.1 中断驱动的打印设备驱动程序143

图4.1 不同的打印机适配器所使用的端口地址143

图4.2 PRN设备的环形队列及扩大的环形队列示意图153

4.2 中断驱动的异步通信设备驱动程序157

图4.3 不同的异步通信口所使用的端口地址158

图4.4 两台微机通过串行口互连的最简单形式181

4.3 又一个中断驱动的字符设备:鼠标器驱动程序183

4.4 中断驱动的磁盘设备初探187

第二篇 DOS内核层194

1.1 DOS保留中断194

第一章 DOS总体布局194

1.2 INT21各子功能分类及在DOS3.3/DOS5.0中的人口地址195

1.3 内核数据区和数据结构199

图1.1 DOS内部数据结构关系图200

第二篇 DOS内核层200

2.1 INT21的调用方式202

第二章 DOS的公共处理例程202

图2.1 INT 21H的总入口、总出口流程图203

2.2 INT21H总人口及出口流程分析204

2.3 DOS错误处理的设计与实现205

图2.2 DOS错误处理总体思路图206

2.4 DOS的几个正常和错误出口207

2.5 DOS扩展错误、错误类型、错误位置、建议措施一览表208

第三章 DOS文件系统综述211

3.1 DOS文件系统的分类211

图3.1 FAT文件系统的功能层次图212

3.2 DOS文件系统的管理方法213

图3.2 DOS文件系统总体关系图214

3.3 DOS文件系统的总体构架214

3.4 INT25H和INT26H—绝对磁盘读和写215

图3.3 Enabledrive过程流程图215

图3.4 读写盘过程流程图216

图3.5 INT 25H/26H实现流程图216

第四章 应用程序接口层218

4.1 句柄处理218

图4.1 Chkhandle过程流程图219

图4.2 Gethandle-SFTptr过程流程图219

4.2 传统文件控制块—FCB的处理220

图4.3 FCB功能使用关系图222

图4.5 Set—FCB—SFT过程流程图224

图4.4 Apply—FCB—SFT过程流程图224

4.3 SFT:系统文件表225

图4.6 CHK—SFT过程流程图225

图4.7 SFT、句柄、FCB关系图228

4.4 当前目录结构—CDS229

图4.8 Init-CDS过程的流程图236

图4.9 Get-CDSptr过程的流程图237

图4.10 Get-CurrDirName过程的流程图238

4.5 字符串处理238

图4.11 Modify-name过程的流程图239

图4.12 Translatefilename过程的流程图241

图4.13 FCB translatefilename过程的流程图242

图4.14 FCB读写功能实现流程图243

4.6 DOS文件系统各功能实现简图244

图4.15 FCB打开及创建功能实现流程图245

图4.16 删除文件功能实现流程图246

图4.17 句柄文件打开功能实现流程图247

图4.18 句柄读写功能实现流程图248

图4.19 句柄文件关闭功能实现流程图248

图4.20 FCB文件关闭功能实现流程图249

图4.21 文件换名功能实现流程图249

图4.22 文件时间日期功能实现流程图250

图4.23 文件句柄复制功能实现流程图250

图4.24 移动文件指针功能实现流程图251

图4.25 取、置文件属性功能实现流程图252

图4.26 扩展文件句柄数功能实现流程图252

图4.27 分析FCB文件名功能实现流程图253

图4.28 FCB取文件大小功能实现流程图254

图4.29 查找文件功能实现流程图255

图4.30 目录功能实现流程图256

图4.31 取当前目录功能实现流程图257

图4.32 取置DPB功能实现流程图258

第五章 内核原语层259

5.1 驱动器,参数表——DPB的处理259

5.2 FAT、簇的处理264

图5.1 FAT项组合图265

图5.3 Get-Nextcluster过程流程图266

图5.2 Get-FATvalue过程流程图266

图5.4 Set-Nextcluster过程流程图267

图5.5 簇链分配过程的流程图268

图5.6 簇链释放过程流程图269

图5.7 释放文件簇链过程流程图269

5.3 目录项数处理270

图5.8 取文件读写指针所对应的簇号过程流程图270

图5.9 Read DIRsec流程图271

图5.10 ModifyDirindex过程的流程图272

图5.11 查找文件流程图274

图5.12 查找文件规范串文件名流程图275

图5.13 申请目录文件流程图277

图5.14 创建目录项流程图278

5.4 DOS文件系统的内部原语278

图5.15 文件打开原语实现流程图281

图5.16 文件创建原语实现流程图282

图5.17 文件改名原语流程图283

图5.18 取文件信息原语流程图284

图5.19 置文件属性原语流程图285

图5.20 文件闭原语流程图286

图5.21 提交文件原语流程图287

图5.22 删除文件原语流程图288

图5.23 写原语流程图290

图5.24 读原语流程图292

图5.25 关闭指定进程的所有打开文件原语的流程图293

图5.26 查找第一个匹配文件原语流程图294

图5.27 查找下一个文件原语流程图295

图5.28 创建子目录原语流程图296

图5.29 删除子目录原语流程图297

图5.30 检测子目录有效性原语流程图297

图5.31 磁盘复位原语流程图298

6.1 内核与BIOS的关系299

第六章 设备驱动程序接口层299

图6.2 DOS内核与设驱、RH头、DH头关系图299

图6.1 设备驱动程序调用过程流程图299

图6.3 开关设备过程流程图300

6.2 块设备读、块设备写的实现301

图6.4 读写区域划分示意图301

图6.5 计算区域划分参数过程的流程图302

图6.6 划分读写块实现流程图303

图6.7 块设备写的实现流程图304

图6.8 块设备读的实现流程图307

6.3 介质检查309

图6.9 介质检查各过程关系图309

图6.10 介质检查流程图310

图6.11 DOS严重错误处理总体思路图311

6.4 严重错误处理及INT24的实现及编程311

图6.12 块设备严重错误处理流程图314

6.5 磁盘缓冲区315

图6.13 DBUF的分配流程图319

图6.14 DBUF释放流程图320

图6.15 查找空闲DBUF流程图321

图6.16 申请DBUF流程图321

7.1 调用设驱的服务例程322

7.2 INT23及lNT28的由来322

第七章 实际I/O功能322

图7.1 字符设备的I/O操作流程图323

图7.2 ^C,^P处理流程图324

7.3 各功能的实现325

图7.3 0AH功能实现流程图326

图7.4 06H功能实现流程图328

图7.5 打印功能实现流程图329

第八章 DOS内存分配和进程管理功能335

8.1 DOS内存分配功能335

8.2 DOS内存管理功能的实现流程336

图8.1 申请内存分配功能的实现流程337

图8.2 释放内存分配块功能的实现流程339

图8.3 修改内存分配功能的实现流程340

8.3 DOS进程管理功能341

8.4 两个重要数据结构:EXE文件头和PSP详解343

图8.4 EXE文件的静态相对段址示意图344

8.5 DOS进程加载及装入功能的实现流程与程序清单349

图8.5 DOS进程加载功能的实现流程351

图8.6 DOS装入覆盖功能的实现流程353

图8.7 折半划分后的内存布局361

图8.8 EXE文件定位到内存块高段后的内存布局362

图8.9 EXE文件的二进制信息表实例368

8.6 DOS进程结束功能的实现流程与程序清单377

图8.10 DOS加载执行与进程结束功能之间的对比377

图8.11 DOS进程结束功能的实现流程378

8.7 DOS的PSP创建/取置功能的实现流程384

图8.12 DOS创建PSP功能的实现流程386

第九章 IOCTL功能、码页功能及DOS内部服务功能388

9.1 内核中的lOCTL功能及其重新认识388

图9.1 DOS内核INT 21H/AX=4400H功能的流程390

图9.2 DOS内核INT 21H/AX=4402H功能的流程393

9.2 利用IOCTL功能为中断驱动的字符设备编程405

9.3 码页功能与NLSFUNC410

9.4 DOS内部服务INT 2FH/AH=12H功能412

第十章 网络文件功能423

10.1 文件共享423

10.2 记录锁存427

图10.1 5CH功能实现流程429

10.3 检测局域网432

10.4 识别站点434

10.5 共享打印435

10.6 网络重定向437

10.7 五花八门的5DH调用440

10.8 提交文件442

10.9 小结442

第十一章 DOS扩展:FASTOPEN与SHARE的原理及实现443

11.1 FASTOPEN的作用与实现443

图11.1 fastopen服务程序示意框图445

11.2 SHARE的数据结构、功能及其实现450

图11.2 SHARE所使用的数据结构网454

图11.3 SHARE中“SCB创建或再次打开”子程序的流程459

图11.4 SHARE中“并闭共享文件的SFT”子程序的流程460

图11.5 SHARE中“关闭指定计算机的共享文件”子程序的流程461

图11.6 SHARE中“以文件名关闭共享文件”子程序的流程463

图11.7 两个锁定区域的六种相对位置464

图11.8 SHARE“检测文件读/写时的锁定冲突”子程序的流程466

图11.9 SHARE中“检查是否有打开模式等相同的句柄”子程序的流程470

第三篇 MS—NET与IFS473

第一章 问题的引入:Microsoft Network473

1.1 分层结构中与DOS内核文件系统平行的分支473

1.2 微机局域网的硬件特性474

第三篇 MS—NET与IFS475

图1.1 PC Network网络适配器硬件结构图475

1.3 MS—NET的组成及其总体结构477

图1.2 PC Network环境下的MS-NET总体结构478

1.4 在不同层次实现网络文件系统的对比分析478

图1.3 Novell Netware的总体结构480

第二章 MS—NET的重定向服务程序481

2.1 DOS内核与重定向接口481

2.2 MS—NET的基石:NETBIOS496

2.3 重定向服务程序的实现原理初探507

第三章 MS—NET的文件/打印服务程序511

3.1 文件服务程序概述511

3.2 INT 2AH与前后台调度511

3.3 文件服务程序所使用的数据结构514

3.4 SMB请求的解释执行515

第四章 可安装的文件系统IFS517

4.1 IF重定向接口的奇妙用途517

4.2 IFS的演示程序:Phantom驱动器介绍518

4.3 利用IFS编程的一些构想519

第四篇 DOS外壳层521

图1.1 稳定状态下的DOS内存布局521

第四篇 DOS外壳层521

第一章 COMMAND.COM驻留部分总介521

1.1 稳定状态下的DOS内存布局521

1.2 各部份的功能介绍522

第二章 COMMAND的暂驻部分525

2.1 暂驻部分的主流程525

图2.1 一般命令行的处理过程526

图2.2 PROMPT子命令表的表项结构527

图2.3 内部命令表的表项结构528

2.2 对重定向操作及管道命令的处理532

2.3 可安装命令的接口及其实现535

2.4 DIR命令的实现流程542

图2.4 DIR命令的显示过程流程543

2.5 COPY命令的完整格式及实现流程544

2.6 ERASE/DEL命令的实现流程548

图2.5 ERASE/DEL命令的实现流程549

2.7 其他内部命令的使用与实现550

图2.6 RENAME/REN命令的实现流程551

图2.7 cls命令的实现流程553

图2.8 CTTY命令的实现流程554

2.8 FOR命令的使用与实现558

2.9 批处理命令的使用与实现560

2.10 再论暂驻部份的完整流程567

图2.9 COMMAND暂驻部分的完整流程568

3.1 常驻部份的构成及其实现流程575

第三章 COMMAND的常驻部份575

图3.1 常驻部分加载执行子例程的流程575

图3.2 COMMAND中INT23H服务程序的流程576

图3.3 COMMAND中INT22H服务程序的流程578

3.2 保留的lNT 2EH中断582

4.2 批处理命令的增强584

4.1 增强目录操作能力584

第四章 COMMAND的改进方案584

4.6 与汉字系统的融合585

4.5 其他方面585

4.4 环境块变量的编辑585

4.3 命令行历史机制585

1.1 多种内存的概念及区别586

第一章 扩充内存和扩展内存586

第五篇 DOS 5.0与DOS 6.O的新特性586

图1.1 虚拟内存示意图588

第五篇 DOS5.0和DOS6.588

图1.2 DOS内存布局总图589

1.2 从DOS6对UMB的管理的实现谈UMB的使用589

图1.3 58H功能流程图592

1.3 先进的80386存储管理593

图1.4 48H功能流程图593

图1.5 80386模式关系图594

图1.6 80386和8086的物理地址形成对比图595

图1.7 物理地址寻址示意图596

图1.9 GDTR、LDTR示意图597

图1.8 改变段寄存器示意图597

图1.10 80386的段地址变换图598

图1.11 分布功能示意图599

图1.12 80386物理地址形成总图600

图1.13 TLB算法流程601

图1.14 TLB使用示意图601

图1.15 XMS功能总体关系图602

1.4 HIMEM.SYS与XMS602

图1.16 DOS=HIGH时HIMEX.SYS的入口流程605

1.5 EMS386.EXE与EMS610

图1.17 扩展内存原理图611

图1.18 55功能参数含义图613

图1.19 56H功能控制流原理图614

图1.20 56H功能参数含义图614

图1.21 EMS功能总体关系图615

1.6 虚拟控制程序接口VCPI626

第二章 MSDOS 5.0和MSDOS 6.0总体结构的变化及原因632

2.1 当DOS装入HMA中,DOS又是如何工作的632

图2.3 2NT21 H A20切换流程634

图2.2 4BDOH A20切换流程634

图2.1 INT 23H、INT 24H、INT 28H调用流程634

图2.5 DOS=HIGH时HMA中内存布局635

2.2 DOS系统的静态和动态布局635

图2.4 MS DOS.SYS的静态分布图635

图2.6 DOS=LOW时常规内存布局636

2.3 从DOS—INIT看DOS=HIGH的形成637

图2.7 DOS—2NIT流程分析638

图2.8 MSDOS模块安装流程639

3.1 32位文件系统641

第三章 DOS内核在功能和效率上的改进641

3.2 先行缓冲区的使用644

图3.1 使用先行缓冲器对256K字节的文件进行12800次顺序读写,所获得的性能改善图644

图3.2 先行缓冲区管理总图645

3.4 有趣的DOSKEY646

3.3 EXEC功能的校正码到底是怎么回事?646

第一章 C语言的高级应用648

1.1 程序代码定位——先从汇编语言讲起648

第六篇 DOS的高级编程启示与实例648

1.2 内存模式653

1.3 C语言启动代码654

1.4 C语言的命令行处理664

1.5 环境块的处理669

1.6 如何用C语言编写设备驱动程序671

1.7 用C语言编写中断驻留程序694

2.1 TSR程序的分类696

第二章 TSR编程696

2.2 TSR的安装696

2.3 TSR激活与弹出700

2.4 INT9H、INT8H、INT1CH、INT16H、INT28H的截获技术702

2.5 标准TSR识别技术706

2.6 图形模式下弹出TSR710

2.7 TSR的释放718

2.8 利用SDA切换技术的TSR724

第三章 调试器接口729

3.1 调试器环境的建立729

第六篇 高级应用篇733

图3.1 DEBUG环讲建立及主循环框图733

图3.2 INT22H流程图734

图3.3 INT24H流程图735

3.2 T、G、P命令的实现及用户态、管程态的互换原则735

图3.4 下命令流程图736

图3.5 P命令流程图737

图3.6 INT1、INT3流程图738

3.3 利用SDA技术扩展Debug功能739

4.1 DOS为实现各国语言支持的总体设计742

第四章 可翻译程序编程742

4.3 国家码功能的使用743

4.2 字符串翻译743

图4.1 国家码的国家信息框图744

4.4 怎样用国家信息745

4.5 大小写转换746

4.7 双字节引导字符集的使用747

4.6 排序747

4.8 小结748

图5.1 命令解释器的大循环框图749

第五章 命令解释器编程749

5.1 命令解释器的基本要求和改进设计749

5.2 其它命令解释器产品与COMMAND的比较753

5.3 利用、定位、访问主环境块754

5.4 批处理增强器758

5.5 中断过滤程序760

5.6 一个利用可安装的内部命令的实例761

第六章 病毒的实现技巧和预防措施775

6.1 计算机病毒的分类775

6.2 计算机病毒的机制775

6.3 计算机病毒的驻留方法及内存映象776

6.4 检查内存中病毒的方法777

6.5 病毒的截获技术778

6.6 病毒的传染方法和磁盘映象780

6.7 DIR_2病毒分析781

第七章 DOS监视器799

7.1 DOSSPY的设计799

7.2 DOS监视器的一些实现技术802

7.3 BIOSSPY的设计808

中英文名词对照表822

参考文献823

1993《DOS的全面剖析与编程启示》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由黄山,万玉丹编著 1993 北京:学苑出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。