欢迎来到天天文库
浏览记录
ID:40975472
大小:333.50 KB
页数:61页
时间:2019-08-12
《多任务和多线程windows 程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、多任务和多线程多任务是一个操作系统可以同时执行多个程序的能力。基本上,操作系统使用一个硬件时钟为同时执行的每个程序配置「时间片段」。如果时间片段够小,并且机器也没有由于太多的程序而超出负荷时,那么在使用者看来,所有的这些程序似乎在同时执行着。多任务并不是什么新的东西。在大型计算机上,多任务是必然的。这些大型主机通常有几十甚至几百个终端机和它连结,而每个终端机使用者都应该感觉到他或者她独占了整个计算机。另外,大型主机的操作系统通常允许使用者「提交工作到背景」,这些背景作业可以在使用者进行其它工作时,由机器执行完成。个人计算机上的多任务花了更长的时间才普及化。但是现在
2、PC多任务也被认为是很正常的了。我马上就会讨论到,MicrosoftWindows的16位版本支持有限度的多任务,Windows的32位版本支持真正的多任务,而且,还多了一种额外的优点,多线程。多线程是在一个程序内部实作多任务的能力。程序可以把它自己分隔为各自独立的「线程」,这些线程似乎也同时在执行着。这一概念初看起来似乎没有什么用处,但是它可以让程序使用多执行绪在背景执行冗长作业,从而让使用者不必长时间地无法使用其计算机进行其它工作(有时这也许不是人们所希望的,不过这种时候去冲冲凉或者到冰箱去看看总是很不错的)!但是,即使在计算机繁忙的时候,使用者也应该能够使用
3、它。多任务的各种模式在PC的早期,有人曾经提倡未来应该朝多任务的方向前进,但是大多数的人还是很迷惑:在一个单使用者的个人计算机上,多任务有什么用呢?好了,最后事实表示即使是不知道这一概念的使用者也都需要多任务的。DOS下的多任务在最初PC上的Intel8088微处理器并不是为多任务而设计的。部分原因(我在上一章中讨论过)是内存管理不够强。当启动和结束多个程序时,多任务的操作系统通常需要移动内存块以收集空闲内存。在8088上是不可能透明于应用系统来做到这一点的。DOS本身对多任务没有太大的帮助,它的设计目的是尽可能小巧,并且与独立于应用程序之外,因此,除了加载程序以
4、及对程序提供文件系统的存取功能,它几乎没有提供任何支持。不过,有创意的程序写作者仍然在DOS的早期就找到了一种克服这些缺陷的方法,大多数是使用常驻(TSR:terminate-and-stay-resident)程序。有些TSR,比如背景打印队列程序等,透过拦截硬件时钟中断来执行真正的背景处理。其它的TSR,诸如SideKick等弹出式工具,可以执行某种型态的工作切换-暂停目前的应用程序,执行弹出式工具。DOS也逐渐有所增强以便提供对TSR的支持。一些软件厂商试图在DOS之上架构出工作切换或者多任务的外壳程序(shell)(诸如Quarterdeck的DesqVi
5、ew),但是在这些环境中,仅有其中一个占据了大部分市场,当然,这就是Windows。非优先权式的多任务当Microsoft在1985年发表Windows1.0时,它是最成熟的解决方案,目的是突破DOS的局限。Windows在实际模式下执行。但是即使这样,它已可以在物理内存中移动内存块。这是多任务的前提,虽然移动的方法尚未完全透明于应用程序,但是几乎可以忍受了。在图形窗口环境中,多任务比在一种命令列单使用者操作系统中显得更有意义。例如,在传统的命令列UNIX中,可以在命令列之外执行程序,让它们在背景执行。然而,程序的所有显示输出必须被重新转向到一个文件中,否则输出将
6、和使用者正在做的事情混在一起。窗口环境允许多个程序在相同屏幕上一起执行,前后切换非常容易,并且还可以快速地将数据从一个程序移动到另一个程序中。例如,将绘图程序中建立的图片嵌入由文书处理程序编辑的文本文件中。在Windows中,以多种方式支持数据转移,首先是使用剪贴簿,后来又使用动态数据交换(DDE),而现在则是透过对象连结和嵌入(OLE)。不过,早期Windows的多任务实作还不是多使用者操作系统中传统的优先权式的分时多任务。这些操作系统使用系统时钟周期性地中断一个工作并开始另一个工作。Windows的这些16位版本支持一种被称为「非优先权式的多任务」,由于Win
7、dows消息驱动的架构而使这种型态的多任务成为可能。通常情况下,一个Windows程序将在内存中睡眠,直到它收到一个消息为止。这些消息通常是使用者的键盘或鼠标输入的直接或间接结果。当处理完消息之后,程序将控制权返回给Windows。Windows的16位版本不会绝对地依据一个timertick将控制权从一个Windows程序切换到另一个,任何的工作切换都发生在当程序完成对消息的处理后将控制权返回给Windows时。这种非优先权式的多任务也被称为「合作式的多任务」,因为它要求来自应用程序方面的一些合作。一个Windows程序可以占用整个系统,如果它要花很长一段时间来
8、处理消息的
此文档下载收益归作者所有