莱昂氏UNIX源代码分析 十五 程序交换.pdfVIP

莱昂氏UNIX源代码分析 十五 程序交换.pdf

  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文档。上传文档
查看更多
下载 第三部分 程序交换、基本输入 /输出、块设备 第三部分说明主存和磁盘存储之间的基本输入 /输出操作。 这些操作对于程序交换活动和磁盘文件的创建和引用都是基础性的。 本部分也介绍使用和处理大缓存 ( 5 1 2字节缓存) 的有关过程。 第14章 程 序 交 换 与所有分时系统和某些多道程序系统一样, U N 1X使用“程序交换” (program swapping) 技术使多个进程共享有限的物理主存资源。“程序交换”有时也被称之为“滚进/滚出” ( r o l l - i n / r o l l - o u t ) 。 可以选择已被挂起的进程,将它们的数据段 (包括“每个进程数据区” ) 写到磁盘上的“交 换区”( s w a p a r e a ) 中,这种操作称之为“换出”(swapped out) 。 已被换出进程原来占用的内存区就可分配给其他进程使用,而这种进程非常可能是将从 磁盘“交换区”中“换入” (swapped in) 的。 与“换出”有关的大部分决策以及与“换入”有关的全部决策是由“ s c h e d ”过程作出的。 “s c h e d ”直接调用( 2 0 3 4 ) “s w a p ”过程( 5 1 9 6 ) ,由其处理具体的“换入”操作,而“ s c h e d ” 需要执行“换出”操作时则调用 ( 2 0 2 4 ) “x s w a p ”( 4 3 6 8 )过程。 非常熟悉 U N I X 更早版本的读者可能会想到,为了执行“换出”进程的操作,原来的 “s c h e d ”直接调用的是“s w a p ”而不是“x s w a p ”。增加“x s w a p ”过程的原因与实现共享“正 文段”( s h a r a b l e text segment)有关。为此还增加了另外一些过程,读者可以在“ t e x t . c ”文件中 找到这些过程。 为了实现正文段特性,究竟增加了多少代码呢 ?对此进行估计会使我们对 U X IX的一个方 面有进一步的了解。在“t e x t . c ”文件中包含有4个过程,它们是:“x s w a p ”、“x a l l o c ”、“x f r e e ” 和“x c c d e c ”,这4个过程都涉及在文件“ t e x t .h ”中说明的“t e x t . h ”结构数组。在“ s y s l . c ” 和“s l p . c ”文件中也增加了一些代码。 14.1 正文段 正文段是只包含“纯代码和数据”的段,而“纯代码和数据”的含量是在程序执行的全 过程中不会有任何的改变。所以,在执行同一程序的多个进程之间可以共享正文段。 当系统中的很多用户同时执行同一程序,例如编辑程序或“ s h e l l ”时,由于共享同一正 文段就能大大节省所需的存储空间。 298 下篇 莱昂氏UNIX源代码分析 下载 与正文段有关的信息必须存放在操作系统的中心部分,为此设计了“ t e x t ”数组。共享正 文段的每一个进程在其“u . u _ t e x t p ”中存放一个指向相应“t e x t ”结构数组元素的指针。 正文段存放在代码文件的开始部分。共享某一正文段的进程开始执行时先使所需正文段 的一个副本存放到“交换”区中。 在共享某一正文段的所有进程终止或改换映像后,释放该正文段所占用的资源。在内存 中当前并无进程引用某正文段时,释放它所占用的内存资源。一般而言,只要当前不存在引 用某正文段的进程,则释放它所占用的“交换”区。 共享某一正文段的进程数以及共享某一正文段其映像在内存中的进程数分别由“ x - c o u n t ” 和“x - c c o u n t ”记录。例程“x f r e e ”和“x c c d e c ”分别对这两个计数器执行减 1操作,当这两 个计数器值分别为 0 时,它们也进行释放相应资源的操作。 ( 只要使进程换出或终止,就调用 x c c d e c ;只要一个进程终止,就调用x f r e e 。) 14.2 sched(1940) #0进程执行“ s c h e d ”。当该进程并不

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档