网站大量收购独家精品文档,联系QQ:2885784924

第三章-part1-进程管理.ppt

  1. 1、本文档共130页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章-part1-进程管理

当用户关闭窗口时 WinMain 函数处理关闭窗口消息,结束; WinMain 函数返回后回到了C/C++运行期库函数 内存回收清理工作 退出进程,如果__crtCorExitProcess 函数没有成功,则后面的ExitProcess 保证成功调用。 * 进程的实现—进程表(PCB) 进程管理 内存管理 文件管理 Registers Program counter Program status word Stack pointer Process state Priority Scheduling parameters Pointer to text segment Pointer to data segment Pointer to stack segment Root directory Working directory File descriptors User ID Group ID Process ID Parent process Process group Signals Starting time CPU time used Children’s CPU time Time of next alarm 参考文献 操作系统(Gary Nutt) 现代操作系统(Andrew S.Tanenbaum) 操作系统概念(Abraham Silberschatz) 操作系统精髓与设计原理(William Stallings) 操作系统——设计与实现(Andrew S.Tanenbaum) Windows核心编程 深入解析Windows操作系统 深入理解计算机系统 Add your company slogan * 非分布式系统中的应用 * 非分布式系统中的应用 线程的应用实例——文档处理器 包含三个线程的文字处理器 单用户多处理系统中使用线程的例子 前后台操作:在电子表格程序中,一个线程可以显示菜单并读取用户输入,而另一个线程执行用户命令并更新电子表格。这种方案允许程序在前一条命令完成前提示输入下一条命令,会使用户感觉到应用程序的响应速度有所提高。 异步处理:程序中的异步部分可以用线程实现。例如,为避免掉电带来的损失,往往把字处理器设计成每隔一分钟将随机存取存储器(RAM)缓冲区中的数据写入磁盘一次。可以创建一个线程,其任务是周期性地进行备份,并且直接由操作系统调度该线程;这样,在主程序中就不需要特别的代码来提供时间检查或者协调输入和输出。 加速执行:一个多线程进程在计算这批数据的同时可以从设备读取下一批数据。即便一个线程在读取数据时由于I/O操作被阻塞,另外一个线程仍然可以继续运行。 模块化程序结构:涉及到多种活动、多种资源和多个输入输出目标的程序更易于用线程设计和实现。 Adobe PageMaker的线程结构 采用这种结构是为了优化该应用程序的响应性。 有三个线程总是活跃的: 事件处理线程 屏幕重画线程 服务线程。 Adobe PageMaker的线程结构 Adobe PageMaker的线程结构 一般地,如果输入信息需要过多的处理, OS/2 在管理窗口时几乎没有时间响应。OS/2 的指导策略是任何信息都不应该需要超过0.1 s 的处理时间。例如,在处理一条打印命令时,调用一个用于打印一页的子程序会使得系统不再给应用程序进一步分派任何信息,这降低了性能。为达到这个标准, PageMaker 中耗费时间的用户操作(打印、输入数据和通顺文本)都由服务线程执行。程序的大部分初始化工作也由服务线程执行,当用户调用对话框创建一个新文件或打开一个现有的文件时,服务线程会充分利用空闲时间。一个独立的线程等待新的事件消息。 Adobe PageMaker的线程结构 服务线程和事件处理线程的同步是很复杂的,因为用户可能不断地打字或移动鼠标,这会激活事件处理线程,而服务线程仍然处于忙状态。如果发生了冲突,PageMaker 将过滤掉这些消息,只接受某些最基本的消息,如改变窗口大小。 在服务线程发给事件处理线程一个消息表示其任务已经完成之前, PageMaker 中的用户活动是受限制的。程序通过禁止使用菜单项并显示忙碌光标来表明这一点。用户可以自由切换到其他应用程序,当忙碌光标移动到另一个窗口时,它将为该应用程序改变成合适的光标。 Adobe PageMaker的线程结构 为屏幕重画使用独立的线程有两个原因: 1. PageMaker 对在一页中可以出现的对象数没有限制,因此,处理重画请求很容易超过0.1s。 2 . 使用独立的线程允许用户取消重画。在这种情况下,当用户重新调节页大小时,可以立即进行重画。这样,程序着手按新比例重画之前,对老比例的重画会少做响应。 动态滚动,即当用户拖动滚动条时重画屏幕,也是可以实现的。事件处理

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档