计算机专业文献翻译-什么是内核对象.docVIP

计算机专业文献翻译-什么是内核对象.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本科生毕业论文(设计)外文资料译文 论文题目: Java语言上机考试系统的设计与实现 学生姓名: 年级(学号) 二级学院: 专 业:计算机科学与技术 指导教师: 称: 填表日期: 20 年 月 日 杭 州 师 范 学 院 教 务 处 制 外文资料翻译(不少于4000外文印刷字符) 1.所译外文资料: ①作者:Jeffrey Richter ②书名(或论文题目):Programming Applications for Microsoft Windows ③出 版 社(或刊物名称):Microsoft Press ④出版时间(或刊号):2000.5.1 ⑤所译页码:27,152,464 2.译成中文: 3.1什么是内核对象 作为一名Windows软件开发者,你经常要创建,打开,并且使用内核对象。系统建立并且使用几类内核对象,例如进入标志对象,事件对象,文件对象,文件绘制对象, I/O 完成接口对象,工作对象,mailslot 对象,mutex对象,管道对象,进程对象,信号物体,线程对象和可等待的定时器对象。 这些对象通过调用各种各样的函数来建立。 例如,CreateFileMapping 函数使系统建立一个文件绘制对象。 每个内核对象都只是内核分配的一个存储块,而且只有通过内核才可以进入。 这个存储块是关于对象的信息的数据结构。 一些成员安全性描述符,使用记数等等相同地通过所有对象类型,但是大多数成员明确一种特定的对象类型。 例如, 一个进程对象有一个进程ID, 基本优先级和一段退出代码,而一个文件对象有一个字节补偿,一种分享方式和一种打开方式。 因为内核对象的数据结构只通过内核可以进入,对于应用者来说,在存储器里找到这些数据结构并且直接改变他们的内容是不可能的。微软公司谨慎地采用这个限制以保证内核对象结构始终保持一致的状态。 这个限制也允许微软公司增加,删除,或者改变这些结构中的成员而对应用没有任何影响。 如果我们不能直接改变这些结构,我们在应用中怎样操作这些内核对象? 方法是Windows 提供一组明确定义的如何使用这些结构的函数集。通过这些函数总可以进入内核对象。当你调用函数来建立一个内核物体时,这个函数返回一个确认这个对象的句柄。 把这个句柄作为一个能在你的进程中的任何线程中使用的不透明的表。 你向各种窗口函数传递这个句柄,因此系统知道你想要操作哪个内核对象。我们在这章里将谈论更多有关这些句柄的内容。 为了使操作系统健壮,这些句柄表是关于过程的。所以,如果你传递这个句柄表给另一个进程中的一个线程(使用某种形式的进程间通信),另外的这个进程将使你使用的句柄表失败。在跨越进程边界共享内核对象 这章的最后这部分里,我们将看到允许多个过程成功地分享单个内核对象的3 个机制。 7.7线程的优先级 在这章的开头,先解释了在调度程序把另一个可调度的线程分配给CPU 之前,CPU 怎样能运行一个只有大约20毫秒的线程。这种情况发生在如果所有的线程有相同的优先级的前提下,但是实际上线程被分配许多不同的优先级,这影响调度程序选择哪一个线程作为要运行的下一个线程。 每个线程被分配到从0最低的到31最高的的优先级数。当系统决定分配CPU给哪个线程的时候,它首先检查优先级数为31的线程,并且把这些线程循环排成队列。如果优先级数为31的线程是可调度的,则分配CPU。在这个线程时间片的最后,系统检查是否有其他优先级数为31的线程可以运行,如果有的话允许这个线程分配到CPU 。 一旦优先级数为31的线程可以被调度,系统则不会把CPU分配给任何一个优先级数从0到30的线程。这种状态被称为饥饿状态。当高优先级的线程占用很多的CPU 时间以致于低优先级的线程没机会执行时,饥饿发生。饥饿很少发生在多处理机的机器上,因为在这种机器上,一优先级数为31的线程和一优先级数为30的线程能同时运行。系统总是努力保持CPU 繁忙,只有没有线程可调度的时候,CPU才会空闲。 你可能会认为象这样设计的系统中,低优先级的线程永远没有机会运行。但是我已经指出,在同一时刻,系统中的大多数线程是不可调度的。例如,如果你的进程的主要线程叫GetMessage,并且系统没有发现有待解决的消息,则系统挂起你进程中的线程,放弃线程时间片的剩余部分,并且立即把CPU 分配给另一个正等待的线程。 如果没有出现恢复GetMessage运行的消息,则该进程的主要线程始终保持挂起状态,并且永远不会分配到CPU。但是,当一条消息被放置在线程队列中时,如果没有更高优先级的线程需要执行,系统就会知道这个线程不应该再挂起,并且分配CPU。) 再来看另一个问题。不管低优先级的线程是

文档评论(0)

***** + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档