- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
维普资讯
孪
。
第 14卷第 6期 微 计 算 机 应 用 V01.14,No.6
1993年 11月 M ICROCOM PUTER APPLICATIONS Nov..1993
I一I
实现 DOS重人的有效途径
蕈 晓芝
(安庚石油化工 总厂计算机站 , 安庆 246001)
摘要: 讨论一种利用。。 可交换数据区 实现Do 重人的新方法,介绍了实现该方法的
具体技术 以硬相应的程序框架结掏,并给出了一个程序实例。
关键词:DOS重人 SDA 未分开 DOS功能 TSR程序
DOS是一个严格的单任务操作系统,在执行系统功能调用时,不能被中断而执行其他的
DOS任务,并在 中断结束后恢复原调用的功能。通常,我们称DOS的这种特性为不可重入性,
这就使得在开发 TSR程序时,无法直接使用 DOS的系统功能调用 (INT21H),给程序编制
带来了很大难度 笔者利用DOS可交换数据区SDA(SwappableDataArea)和未公开的DOS
功能 .很好地解决了DO S重入 问题,实践证 明这种方法实用方便,安全可靠。
1 基本思想 .
一 般来讲 ,DOs是不可重入的,究其原因主要有 以下几点
1.1 DOS内部堆栈的切换
DO S系统功能调用时,系统堆栈将被切换到 I/O堆栈、磁盘堆栈或辅助堆栈这三个 内部
堆栈中,并且栈指针 SP指向栈的顶部。正 由于存在这种堆栈切换操作 ,当DOS重入时,系
统会把当前进程的数据调入堆栈中,从而破坏被中断进程的原栈 内数据,导致系统崩溃
1.2 程序段前缀 PSP的继承
DOs为每个程序分配一个程序段前缀PSP,但它一次只能识别一个 PSP,往往最后执行
程序的PSP是当前有效的。若 TSR程序要中断-个正在运行的程序而执行时,DO S仍将使
用被中断程序的PSP资源。这样,一旦TSR程序涉及到PSP修改操作时,如打开文件 (INT
21H 的 3DH功能),就将前后台进程联系在一起 ,有可能造成系统混乱 。
1.3 磁盘传送区DTA 的共用
磁盘传送区DTA是DOS用于FCB功能传送文件数据的内存缓冲区,也用匹配文件查找
功能调用 (INT21H的4EH和4FH功能)。但DO S内部只维护一个DTA 的内存地址,若不
采取措施,前后台进程有可能同时使用一个DTA,而使前台系统DTA数据丢失,影响系统
正确运行
由此可见,如果我们能够在插入的中断进程前后设法保存和恢复包括三个 内部堆栈、PSP
以及 DTA在 内的DO S所有 内部数据,那就可 在 中断进程 中执行DOS系统功能调用,而不
一 12 —
维普资讯
破坏前台内部数据,并能恢复前台系统调用的功能。
DOS可交换数据区SDA正好满足上述保存和恢复D0s内部数据的需要。SDA是DOS
的数据段,它是一块包含当前 DOS所有 内容的数据空间.其中包括当前 PSP、DTA 以及三个
内部堆栈等 DOS内部数据信息。这样 ,就可以在进入 中断进程后 .首先保存当前SDA,然后
再安全重入 DOS,中断返回前恢复原先的SDA,从而不必担心破坏DOS的内部数据 .也不
必检查 DOS的安全标志,几乎可 以在任何 时候调用DOs系统功能。因此 .保存与恢复 DOS
的SDA是实现 DOS重入 的关键所在 。
2 实现方法
2I SDA的保存与恢复
要实现DOS重入 ,必需能够保存和恢复DOSSDA,如何得到SDA呢?DOS提供了未公
开的INT21H功能5D06H可以读取DOS的SDA,它返回DOS可交换数据区SDA 的地址和
大小 。
INT 21H功能 5D06H 的调用格式
输入 : AX一5D0
您可能关注的文档
最近下载
- 岛津原子吸收AA6800说明书.pdf
- 2025湘美版美术八年级上册第一单元第1课《假期视觉笔记》课件.ppt
- 体例格式4:工学一体化课程《小型网络安装与调试》工学一体化课程考核方案.docx VIP
- 党课培训课件.ppt VIP
- 2025年江西省辅警招聘考试试题带解析及完整答案【历年真题】.docx VIP
- 拉法基瑞安水泥健康与安全管理.pdf VIP
- 学堂在线人像摄影(2025秋)考试答案.docx VIP
- 日立扶梯HE15控制装置维保手册.doc
- 地表注浆施工方案施工组织.docx VIP
- 2025-2026学年高中信息技术粤教版2019选修2 网络基础-粤教版2019教学设计合集.docx
文档评论(0)