文件名称:多工和多执行绪-c嵌入式编程设计模式
文件大小:7.29MB
文件格式:PDF
更新时间:2024-07-14 15:01:04
windows 程序 窗口程序 c++
第二十章 多工和多执行绪 多工是一个作业系统可以同时执行多个程式的能力。基本上,作业系统使 用一个硬体时钟为同时执行的每个程序配置「时间片段」。如果时间片段够小, 并且机器也没有由於太多的程式而超出负荷时,那么在使用者看来,所有的这 些程式似乎在同时执行著。 多工并不是什么新的东西。在大型电脑上,多工是必然的。这些大型主机 通常有几十甚至几百个终端机和它连结,而每个终端机使用者都应该感觉到他 或者她独占了整个电脑。另外,大型主机的作业系统通常允许使用者「提交工 作到背景」,这些背景作业可以在使用者进行其他工作时,由机器执行完成。 个人电脑上的多工花了更长的时间才普及化。但是现在 PC多工也被认为是 很正常的了。我马上就会讨论到,Microsoft Windows 的 16 位元版本支援有限 度的多工,Windows 的 32 位元版本支援真正的多工,而且,还多了一种额外的 优点,多执行绪。 多执行绪是在一个程式内部实作多工的能力。程式可以把它自己分隔为各 自独立的「执行绪」,这些执行绪似乎也同时在执行著。这一概念初看起来似 乎没有什么用处,但是它可以让程式使用多执行绪在背景执行冗长作业,从而 让使用者不必长时间地无法使用其电脑进行其他工作(有时这也许不是人们所 希望的,不过这种时候去冲冲凉或者到冰箱去看看总是很不错的)!但是,即 使在电脑繁忙的时候,使用者也应该能够使用它。 多工的各种模式 在 PC的早期,有人曾经提倡未来应该朝多工的方向前进,但是大多数的人 还是很迷惑:在一个单使用者的个人电脑上,多工有什么用呢?好了,最後事 实表示即使是不知道这一概念的使用者也都需要多工的。 DOS下的多工 在最初 PC上的 Intel 8088微处理器并不是为多工而设计的。部分原因(我 在上一章中讨论过)是记忆体管理不够强。当启动和结束多个程式时,多工的 作业系统通常需要移动记忆体块以收集空闲记忆体。在 8088上是不可能透明於 应用系统来做到这一点的。 DOS本身对多工没有太大的帮助,它的设计目的是尽可能小巧,并且与独立 於应用程式之外,因此,除了载入程式以及对程式提供档案系统的存取功能,