《现代操作系统》第十二章习题答案

  1. 计算机硬件的改进主要归功于更小的晶体管。一些限制因素包括:(a) 光的波动性可能限制传统光刻技术制造集成电路的能力,(b) 固体中个别原子的迁移性可能导致非常薄的半导体、绝缘体和导体层的性能退化,(c) 背景辐射活性可能破坏分子键或影响非常小的储存电荷。当然还有其他因素。

  2. 对于高度交互式的程序,事件模型可能更好。其中,只有 (b) 是交互式的。因此,(a) 和 (c) 是算法驱动的,(b) 是事件驱动的。

  3. 不是。差异更多地与 DNS 服务器缓存并且以分级方式组织有关。路径可以很容易地按自顶向下的顺序给出,但倒序的惯例现在已被广泛接受。

  4. 可能 stat 是多余的。可以通过 open、fstat 和 close 的组合来实现。对于其他操作,模拟将非常困难。

  5. 如果将驱动程序放置在线程之下,那么驱动程序无法像 MINIX 3 那样独立运行。它们必须作为某个其他线程的一部分运行,更类似于 UNIX 风格。

  6. 是可能的。所需的是一个管理信号量的用户级进程,也就是信号量服务器。要创建信号量,用户向其发送一条消息,请求一个新的信号量。要使用它,用户进程将信号量的标识传递给其他进程。然后,它们可以向信号量服务器发送请求操作的消息。如果操作阻塞,不会发送回复,从而阻塞调用者。

  7. 模式是 8 毫秒的用户代码,然后 2 毫秒的系统代码。通过优化,每个周期现在是 8 毫秒的用户代码和 1 毫秒的系统代码。因此,一个周期从 10 毫秒减少到 9 毫秒。将这样的周期乘以 1000,一个 10 秒的程序现在只需要 9 秒。

  8. 外部名称可以任意长度且可变长。内部名称通常是 32 位或 64 位长度,且总是固定长度。外部名称不需要唯一。例如,UNIX 文件系统中的链接可以指向同一对象。内部名称必须唯一。外部名称可以是分层的。内部名称通常是表的索引,因此形成一个扁平的命名空间。

  9. 如果新表的大小是旧表的 2 倍,它不会很快填满,从而减少需要升级表的次数。另一方面,可能不需要这么多空间,因此可能会浪费内存。这是经典的时间与空间的权衡。

  10. 这样做是有风险的。假设 PID 正好在最后一个条目上。在这种情况下,退出循环会使 p 指向最后一个条目。然而,如果未找到 PID,则 p 可能指向最后一个条目或超出最后一个条目,这取决于编译代码的细节,启用了哪种优化等等。在一个编译器上可能行得通,但在另一个编译器上可能失败。设置一个标志更好。

  11. 可以这样做,但不是一个好主意。一个 IDE 或 SCSI 驱动程序可能很长。如此长的条件代码会使源代码难以跟踪。最好将每个驱动程序放在单独的文件中,然后使用 Makefile 来确定应该包含哪个文件。或者至少可以使用条件编译来包含一个驱动程序文件或另一个。

  12. 是的。它会使代码变慢,而且更多的代码意味着更多的错误。

  13. 不容易。同时进行的多个调用可能会干扰彼此。如果静态数据由互斥锁保护,可能是可能的,但这意味着对简单过程的调用可能会意外阻塞。

  14. 是的。每次调用宏时,代码都会被复制。如果调用多次,程序会变得非常庞大。这是典型的时间和空间的权衡:一个更大,更快的程序而不是一个更小,更慢的程序。然而,在极端情况下,较大的程序可能无法适应 TLB,导致抖动,从而运行更慢。

  15. 从将单词的低 16 位和高 16 位进行异或运算得到一个 16 位整数 s 。对于每一位,有四种情况:00(结果为 0),01(结果为 1),10(结果为 1)和 11(结果为 0)。因此,如果 s 中 1 的个数是奇数,则奇偶校验为奇数;否则为偶数。创建一个包含 65,536 个条目的表格,每个条目包含一个字节和奇偶校验位。宏的定义如下:
    #define parity(w) bits[(w & 0xFFFF) ^ ((w>>16) & 0xFFFF)]

  16. 没有情况可以。" 压缩 " 后的颜色值大小与原始值一样大,而且可能需要一个庞大的调色板。这完全没有意义。

  17. 8 位的调色板包含 256 个条目,每个条目占用 3 个字节,总共 768 字节。每个像素的节省是 2 个字节。因此,对于超过 384 个像素的图像,GIF 会获胜。16 位的调色板包含 65,536 个条目,每个条目占用 3 个字节,总共 196,608 字节。在这里,每个像素的节省是 1 个字节。因此,超过 196,608 个像素的图像,16 位压缩会获胜。假设宽高比为 4:3,平衡点是一个 512\times 384 像素的图像。对于 VGA ( 640\times 480 ),16 位颜色所需的数据量比真实的 24 位颜色要少。

  18. 对于在路径名缓存中的路径,它没有影响,因为绕过了 i-node。如果没有读取它,则它是否已经在内存中并不重要。对于不在名称缓存中但涉及固定的 i-node 的路径,固定 i-node 可以帮助,因为它消除了磁盘读取的需求。

  19. 记录最后修改日期、大小,可能还有一个计算出的签名(如校验和或 CRC)可以帮助确定文件自上次引用以来是否发生了变化。警告:远程服务器可能提供有关文件的虚假信息,可能需要本地重新生成计算出的签名。

  20. 可以给文件赋予版本号或校验和,并将这些信息与提示一起存储。在访问远程文件之前,将检查版本号或校验和是否与当前文件一致。

  21. 文件系统通常会尝试将新数据写入紧随上次使用过的最近可用的磁盘块。如果两个文件同时被写入,这可能导致数据块在磁盘上交错排列,从而导致两个文件都被碎片化,从而更难以读取。可以通过在内存中缓冲数据以最大化写入大小,或将数据写入临时文件,然后在程序终止时将每个输出复制到永久文件来减轻这种效果。

  22. Brooks 谈论的是在大型项目中程序员之间的沟通会减慢一切速度。这个问题在一个单人项目中不会出现,因此生产力可能会更高。

  23. 如果一个程序员可以以 10 万美元的成本生成 1000 行代码,那么一行代码的成本为 100 美元。Windows 8 由 5000-1 亿行代码组成,这相当于 50-1000 亿美元。这似乎非常庞大。可能微软已经通过使用更好的工具提高了程序员的生产力,使得一个程序员每年可以生成数千行代码。此外,Windows 8 的许多部分未经修改地从 Windows 7 中取出,因此 Windows 8 中新代码的数量只是其总体规模的一小部分。另一方面,微软的年收入约为 700 亿美元,所以在 Windows 8 上花费数十亿美元是可能的。

  24. 假设内存每 GB 成本 10 美元(与当前价格对比)。那么一个具有 100GB 硬盘的低端机器需要价值 1000 美元的 RAM。如果 PC 的其他部分成本为 500 美元,则总成本为 1500 美元。这对于低端市场来说太贵了。

  25. 嵌入式系统可能只运行一个或少数几个程序。如果所有程序都可以一直保持加载到内存中,可能就不需要内存管理器或文件系统。此外,仅需要驱动程序用于少数几个 I/O 设备,编写 I/O 驱动程序作为库程序可能更有意义。库程序可能会更好地编译为独立程序,而不是共享库,消除了对共享库的需求。在特定情况下,可能可以消除许多其他功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310393.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【并发设计模式】聊聊等待唤醒机制的规范实现

在多线程编程中,其实就是分工、协作、互斥。在很多场景中,比如A执行的过程中需要同步等待另外一个线程处理的结果,这种方式下,就是一种等待唤醒的机制。本篇我们来讲述等待唤醒机制的三种实现,以及对应的应用场景。 G…

STM32CubeMX教程13 ADC - 单通道转换

目录 1、准备材料 2、实验目标 3、ADC概述 4、实验流程 4.0、前提知识 4.1、CubeMX相关配置 4.1.1、时钟树配置 4.1.2、外设参数配置 4.1.3、外设中断配置 4.2、生成代码 4.2.1、外设初始化调用流程 4.2.2、外设中断调用流程 4.2.3、添加其他必要代码 5、常用函数…

Cuk、Zeta和Sepic开关电源拓扑结构

Cuk、Zeta和Sepic变换器,三种拓扑结构大致类似。不同点在于电感和二极管,MOS管的位置关系的变化。 Cuk电源是一种非隔离的直流电源转换器,其基本结构包括输入滤波电容、开关管、输入电感、输出电感和输出电容等元件。Cuk电路可以看作是Boost和Buck电路的…

2023年03月15日_GPT4的发布会简单介绍

文章目录 各种考试长度限制图像输入功能开发者API定价评估框架1 - 基准测试表现2 - 文本和图像提示3 - 系统消息功能4 - 真实性、稳定性、可靠性 2023年3月15日 今天凌晨呢 万众瞩目的大型多模态模型 GPT-4正式发布 我们先总结一下发布会的重点 首先 这个模型能够接受图像和…

LabVIEW在大型风电机组状态监测系统开发中的应用

LabVIEW在大型风电机组状态监测系统开发中的应用 风电作为一种清洁能源,近年来在全球范围内得到了广泛研究和开发。特别是大型风力发电机组,由于其常常位于边远地区如近海、戈壁、草原等,面临着恶劣自然环境和复杂设备运维挑战。为了提高风电…

leetcode 315. 计算右侧小于当前元素的个数(hard)【小林优质解法】

链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 代码: class Solution {int[]counts; //用来存储结果int[]index; //用来绑定数据和原下标int[]helpNums; //用于辅助排序 nums 数组int[]helpIndex; //用于辅助排序 i…

Vue常见面试问答

vue响应式数据 vue2 Vue2 的对象数据是通过 Object.defineProperty 对每个属性进行监听,当对属性进行读取的时候,就会触发 getter,对属性进行设置的时候,就会触发 setter。 /** * 这里的函数 defineReactive 用来对 Object.def…

【VS】NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。

问题描述 报错 NETSDK1045 严重性代码说明项目文件行禁止显示状态错误NETSDK1045当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标,或使用支持 .NET 6.0 的 .NET SDK 版本。RCSoftDrawMicrosoft.NET.TargetFrameworkInference.ta…

元旦特辑:Note6---选择排序

目录 前言❌ 1. 基本思想⚠️ 2. 直接选择排序🟢 2.1 思路分析✳️ 2.2 代码实现❎ 2.2.1 sort.h 2.2.2 sort.c 2.2.3 test.c 2.3 问题解决❇️ 2.3.1 sort.c修改 2.4 特性总结✅ 3. 堆排序🔵 3.1 代码实现🏧 3.2 特性总结&…

什么是检索增强生成?

检索增强生成(Retrieval Augmented Generation,RAG)是指对大型语言模型(Large Language Model,LLM)输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。LLM 用海量数据进行…

【开源】基于Vue+SpringBoot的就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

安全配置审计概念、应用场景、常用基线及扫描工具

软件安装完成后都会有默认的配置,但默认配置仅保证了服务正常运行,却很少考虑到安全防护问题,攻击者往往利用这些默认配置产生的脆弱点发起攻击。虽然安全人员已经意识到正确配置软件的重要性,但面对复杂的业务系统和网络结构、网…