有没有办法在DOS下实现多任务

black2000 2001-06-16 11:23:00
在DOS在有没有办法通过编程实现多任务的程序,就是有一个前台和一个后台,两个程序可以同时进行,而且互不影响。
等于编出一个像WIN3.2的功能一样,不过不用那么复杂!
例如:可以听CD又可以写文件。
...全文
485 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
类库 2001-10-07
  • 打赏
  • 举报
回复
dos是不能实现多任务的,但可以用一些多线程开发包自己写一个程序,由用户程序自己管理多个线程,windows3.0大概就是用这种方法的。
不过要后台放CD,好象可以用DMA嘛。
chenm001 2001-09-07
  • 打赏
  • 举报
回复
关于DOS重入的问题,我建议你去找一本《未公开的DOS核心技术》书来看,其中对SDA(DOS可对换数据区)讲解比较详细!
Tice 2001-09-02
  • 打赏
  • 举报
回复
SCUM(人渣)说得很对
我来说两句:
1.以前的PRINT.COM,APPEND.EXE,SideKick等是有名的几个TSR程序
2.dos是可以重入的,dos的内核-INT21h中断例程属于不可重入代码,因为例程使用了不少变
量和标值单元,以及自己内部设立的堆栈,dos的重入会导致系统工作混乱,所以要解决dos的重入问题有两种方法,一,是在中断例程发出调用之前和之后,保存和恢复dos的所有变量,标志和堆栈,这些所有信息保存在dos的一个数据结构SDA(可交换分区),windows的多任务这是采用这种发法来实现的,SDA结构时未公开的,调用的方法,我忘了,以后帮你查查,二采用INDOS标志来避开系统调用,可以用int 34h得到indos标志
starwalker 2001-08-30
  • 打赏
  • 举报
回复
DOS5.0-6.2有DOSSHELL
superzxf 2001-08-28
  • 打赏
  • 举报
回复
dos的内核(即int 21中断)是不可重入的。但可以通过其他的方法使之可以重入(分重入避免和安全的重入)有点象抢占式多任务和协作式多任务。重入避免是当系统运行到不可重入的代码部分(如正在进行一个系统调用)时禁止其他程序同时运行该段代码。安全重入对不可重入的代码部分使用的数据段进行保存,当多个程序同时运行该段代码时,可以安全的返回。在windows 3.2中就使用了安全的重入,重入避免一般在小型的tsr程序中使用。
有些程序使用intel cpu保护模式中的virtual86方式进行工作(如windows 3.2和emm386.exe),该方式可以同时运行多个8086程序,又可以使用32位保护模式下的虚拟地址。
hotfan 2001-08-14
  • 打赏
  • 举报
回复
别吵啦!!!!网络猩猩的办法最简单
安装新的 1cH 号中断就可以了别弄得那么复杂.
cryy 2001-08-14
  • 打赏
  • 举报
回复
如果要实现DOS下的多任务,可参考“未公开的DOS秘密”一书。
liubingqian 2001-08-13
  • 打赏
  • 举报
回复
to gzlucky(Lucky):
为什么管Windows 3.x叫操作系统?因为人们就愿意这么叫。事实上Windows 3.x根本不是完全意义上的操作系统。你说“它已脱离了DOS而运行”,那你怎么启动Windows 3.x?是一开机就直接进入了,还是先启动DOS,再win?
gzlucky 2001-08-13
  • 打赏
  • 举报
回复
windows 3.x只是一个过渡。在windows 3.1及以后版本中,都有两种模式,一种是基于8086/8088和80286运行的;另一种是基于80386运行的386增强模式,当使用386增强模式时,再安装win32s就是变成一个32位的操作系统,脱离DOS。当然其间还有不少16位操作系统的痕迹,这个问题直到windows95还存在,主要是为了兼容性。这时的windows已经是脱离DOS运行,已经不可以对DOS进行调用。
起动时使用什么操作系统不重要,关健是使用时脱离DOS,并不是说不需要DOS起动,只是在运行时已经不再需要DOS的支持。

Windows 3.x是操作系统并不是说人们随意加上去的,操作系统的定义不是以起动为依据。
gzlucky 2001-08-11
  • 打赏
  • 举报
回复
Windows 3.x 众所周知并不是所有的版本都支持多任务方式。而且当初Windows 3.x的SDK都被指为假多任务。

只有安装了Win32s的Windows 3.x才勉强可以实现多任务。但此时的Windows 3.x已经脱胎换骨,基本不再支持DOS调用。它已脱离了DOS而运行。

如果你说Windows 3.x是基于DOS上的一个应用,为什么还有人把Windows叫做操作系统。

装了Win32s的Windows 3.x对多任务的支持还不如SCO UNIX好。
gzlucky 2001-08-11
  • 打赏
  • 举报
回复
DOS是不可以重入的,但有办法解决。
DOS是不支持多任务,但可以通过工具实现。工具的实际是使用386的增强模式。
最有名的工具:DOS4GW
当初C&C的DOS版就是使用DOS4GW。
mjm_d 2001-07-28
  • 打赏
  • 举报
回复


可以
不过
你要
有SHELL核
liubingqian 2001-07-28
  • 打赏
  • 举报
回复
用DOSSHELL
black2000 2001-07-09
  • 打赏
  • 举报
回复
为什么给不到分,是不是要全部给完才行。
black2000 2001-07-09
  • 打赏
  • 举报
回复
to cnviolet(世路而今已惯,此心到处悠然):
我想要,是什么程序,在程序里说明详细一点,行吗,谢谢了。
我的email是 abd@cmmail.com

to SCUM(人渣):
你说的很好,你有什么联系方法没有,我的email在上面了,可以的话我们聊聊。
cnviolet 2001-07-09
  • 打赏
  • 举报
回复
我倒是有个源程序,不知道你要不要。
SCUM 2001-07-09
  • 打赏
  • 举报
回复
当然可以,我的意思仅仅是基于 DOS 来构建多任务环境。Windows 3.2 正是在 DOS 上搭建起来的。不过它更复杂些,涉及到保护模式及更多的内容。这此,DOS 只起到启动系统,载入程序的作用。

如果只是一些简单的应用,就像你所说的放着CD写文件,可以通过 TSR 程序实现。很容易,但要写得短而精就难了。

还有,DOS 的内核其实是可以重入的,但需要你自己构建一对现场,DOS 本身不可能重入。

另外:如果只是放 CD,就完全不需要 TSR,因为那是由硬件完成的。


----------------------------------------------------------------
另复:

granthill(Grant)  错
enterzhuang(老庄) 错,是TSR不是STR
apeman(网络猩猩) 错,病毒代码和宿主代码是顺序执行的。
Kelvin9230() 错,DOS 内核可以重入


结论:我老了,记得的都是以前的知识,可惜。
dotnba 2001-06-28
  • 打赏
  • 举报
回复
可以实现多任务。要不病毒怎么运行。呵呵
而DOS下的病毒之多,我想大家也是见识过了的吧
Kelvin9230 2001-06-28
  • 打赏
  • 举报
回复
DOS 内核是不可重入的, 即它一次只能服务于一个系统调用请求,并且它对用户程序空间采用单一连续分区的内存管理方式而未提供任何保护,并且对设备I/O缺乏全面控制.所以DOS本身不能提供多任务机制.但是如果使用内核安全重入法的话,也可实现DOS多任务.如Windows3.0.如果使用内核重入避免法的话,也可实现DOS多任务.如TSR.
apeman 2001-06-21
  • 打赏
  • 举报
回复
简单啦!重新设置1CH号中断(新中断中最好调用原中断,虽然它实质并不做什么).
我以前做过一个背景音乐播放程序.就是利用这个原理(源程序?被病毒黑了,不好意思,我很
懒得再编一个.
加载更多回复(12)

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧