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

  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.mzph.cn/news/588503.shtml

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

相关文章

ARCGIS PRO SDK GeometryEngine处理独立几何图形

1、面积类:pol为Polygon 1).Area:获取几何图形的面积。这是使用二维笛卡尔数学来计算面积的平面测量 double d GeometryEngine.Instance.Area(pol) 2).GeodesicArea:获取几何图形的椭球面积 …

【Redis-08】Redis主从复制的实现原理

在Redis中,可以通过slaveof命令或者设置slaveof选项实现两台Redis服务器的主从复制,比如我们有两个Redis机器,地址分别是 127.0.0.1:6379 和 127.0.0.1:6380,现在我们在前者上面执行: 127.0.0.1:6379 > SLAVEOF 12…

图片预览 element-plus 带页码

vue3、element-plus项目中&#xff0c;点击预览图片&#xff0c;并显示页码效果如图 安装 | Element Plus <div class"image__preview"><el-imagestyle"width: 100px; height: 100px":src"imgListArr[0]":zoom-rate"1.2":max…

菜鸟学习vue3笔记-vue hooks初体验

import { ref } from "vue"; export default function () {let a1 ref(1);let a2 ref(5);let c ref(0);function add() {a1.value;a2.value;}return {add,a1,a2,c,}; }<template><div><p>第一个数字{{ a1 }}</p><p>第二个数字{{ a2…

公共用例库计划--个人版(一)

1、公共用例库计划 1.1、目标 在公司测试管理体系的演变过程中&#xff0c;从禅道过渡到devops再到云效平台&#xff0c;我们已经实现了对bug和用例的有效集中管理。然而&#xff0c;在实际操作中发现&#xff0c;尽管用例管理得到了初步整合&#xff0c;但在面对不同系统和测…

Python高级并发编程的实例详解

更多Python学习内容&#xff1a;ipengtao.com Python中的高效并发编程&#xff0c;有几个重要的概念和工具可以帮助大家充分利用多核处理器和提高程序性能。本文将介绍一些关键的概念和示例代码&#xff0c;以帮助大家更好地理解Python中的高效并发编程。 多线程 vs. 多进程 在…

计算机网络【HTTP 面试题】

HTTP的请求报文结构和响应报文结构 HTTP请求报文主要由请求行、请求头、空行、请求正文&#xff08;Get请求没有请求正文&#xff09;4部分组成。 1、请求行 由三部分组成&#xff0c;分别为&#xff1a;请求方法、URL以及协议版本&#xff0c;之间由空格分隔&#xff1b;请…

全栈架构:从0开始,Vue的搭建与开发

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;很多小伙伴拿到一线互联网企业、上市企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。 然后&#xff0c;很多小伙伴平时聚焦CRUD&#xff0c;没有亮点项目&#xff0c; 黄金项目。 简历也写得是非常lo…

Generalized Focal Loss V1论文解读

摘要 单级检测器基本上将物体检测表述为密集分类和定位&#xff08;即边界框回归&#xff09;。分类通常通过Focal Loss进行优化&#xff0c;而边界框的定位通常根据Dirac delta分布进行学习。单级检测器的最新趋势是引入一个单独的预测分支来估计定位质量&#xff0c;预测质量…

【javaSE】代理并不难

代理&#xff1a; 代理模式最主要的就是在不改变原来代码&#xff08;就是目标对象&#xff09;的情况下实现功能的增强 在学习AOP之前先了解代理&#xff0c;代理有两种&#xff1a;一种是动态代理&#xff0c;一类是静态代理。 静态代理 相当于是自己写了一个代理类&#…

力扣(leetcode)第257题二叉树的所有路径(Python)

257.二叉树的所有路径 题目链接&#xff1a;257.二叉树的所有路径 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出…

win10和win11上解决乱码的一个优点偏门的方法,不算很完美

左下角搜索控制面板&#xff0c;进入控制面板之后&#xff0c;点击时钟和区域下面的更改日期、时间或数字格式 点击顶上的“管理”选项&#xff0c;然后找到更改系统区域设置&#xff0c;把下方的Beta版&#xff1a;使用Unicode UTF-8提供全球语言支持&#xff08;U&#xff…

视频批量转码:一键转换多个视频mp4格式到FLV视频

在数字媒体时代&#xff0c;视频格式的多样性给处理工作带来了诸多不便。满足不同的播放需求&#xff0c;经常要视频从一种格式转换为另一种格式。其中&#xff0c;将mp4格式转换为FLV格式的需求很常见。现在一起来看下云炫AI智剪如何高效的将视频批量转码方法&#xff0c;一键…

[Angular] 笔记 21:@ViewChild

chatgpt: 在 Angular 中&#xff0c;ViewChild 是一个装饰器&#xff0c;用于在组件类中获取对模板中子元素、指令或组件的引用。它允许你在组件类中访问模板中的特定元素&#xff0c;以便可以直接操作或与其交互。 例如&#xff0c;如果你在模板中有一个子组件或一个具有本地…

\r\n和缓冲区/进度条小程序

一 前置知识 带有\n就会立马刷新缓冲区(因为显示器是行刷新)&#xff0c;\r不会刷新缓冲区 刷新的2个场景: 1 ~fflush 缓冲区中存在\r或\n --> \r fflush --> 不换行的\n) 2 ~ 文件关闭自动刷新缓冲区 倒计时小程序0-9 %-d是左对齐,%d是右对齐 倒计时小程序0-99 …

在Go中使用Goroutines和Channels发送电子邮件

学习如何使用Goroutines和Channels在Go中发送电子邮件 在现代软件开发的世界中&#xff0c;通信是一个关键元素。发送电子邮件是各种目的的常见实践&#xff0c;例如用户通知、报告等。Go是一种静态类型和编译语言&#xff0c;为处理此类任务提供了高效和并发的方式。在本文中&…

BED 文件格式 chip-seq m6a数据可视化会用到

General usage — bedtools 2.31.0 documentationhttps://bedtools.readthedocs.io/en/latest/content/general-usage.html BED格式&#xff08;Browser Extensible Data format&#xff09;是一种在生物信息学中广泛使用的文本文件格式&#xff0c;用于描述基因组上的特征和…

机器人中的数值优化之线性共轭梯度法

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 本文ppt来自深蓝学院《机器人中的数值优化》 目录 1.无约束优化方法对比 2.Hessian-vec product 3.线性共轭梯度方法的步长​编辑 4.共轭梯度…

7.10非递减子序列(LC491-M)

算法&#xff1a; 在90.子集II (opens new window)中我们是通过排序&#xff0c;再去重来达到去重的目的。 而本题求自增子序列&#xff0c;是不能对原数组进行排序的&#xff0c;排完序的数组都是自增子序列了。 肯定还是回溯算法。 画树&#xff1a; 树里面其实有两个注意…

[python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频

当电脑没有立体声混音导致Python写代码无法使用pyaudio进行录制系统声音怎么办&#xff1f;查阅资料和安装驱动等方法都不行&#xff0c;难道没办法了吗&#xff1f;那为什么电脑其他软件可以做到呢&#xff1f;因此研究了一下pyaudio在没有立体声混音情况下确实无法录制声音&a…