table {
border-collapse: collapse;
width: 100%;
margin-bottom: 1rem;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
pre {
background-color: #f8f8f8;
padding: 15px;
border-radius: 4px;
overflow-x: auto;
}
1、考虑以下服务,将它们分类为在内核中进行或在内核外进行。分别对微内核和混合内核系统进行分类。a. 打开和关闭文件 b. 写入寄存器 c. 读取内存单元 d. 接收短信 e. 播放音频片段。
在微内核系统中:
a、b、c 通常在内核中进行
d、e 通常在用户空间(内核外)进行
在混合内核系统中:
a、b、c 也在内核中进行
d、e 可能部分功能在内核实现以提高性能,但也有部分在用户空间
2、软件中断有很多用途。请想出计算机系统中软件中断的其他例子。(提示:将软件中断视为事件。)
错误发生时触发的中断,例如读取文件超出文件末尾。
使操作系统执行特定操作的中断,例如系统定时器超时。
没有既定服务例程的中断,通常由特定软件应用程序设置和驱动。
显式发送的中断,例如 Unix 允许通过特殊系统调用向操作系统发送“信号”。
通过进行函数调用透明生成的中断,例如许多 Symbian OS 系统调用会生成软件中断。
3、以下哪些操作应在内核的特权模式下完成?a. 读写文件 b. 发送短信 c. 用相机拍照 d. 通知程序数据已接收 e. 切换CPU上的进程 f. 从内存单元读取数据。
a、e
4、系统通常在硬件中内置多个缓存,我们称之为L1和L2。为什么多级缓存有用?
多级缓存的作用
多级缓存能在快速的寄存器存储和较慢的主存之间起到缓冲作用。
缓存层次结构
不同级别的缓存速度和成本不同,形成层次结构。
缓存级别比较
例如 L1 缓存比 L2 缓存更快、更贵。
设计优势
这样的设计可以根据数据访问的频率和速度需求,将数据存储在合适级别的缓存中,提高数据访问效率,减少硬件等待从主存读写数据的时间,释放 CPU 进行更多程序执行。
5、如我们所讨论的,塞班操作系统使用两级内核空间操作:执行调用和内核服务器请求。为什么这是必要的?为什么执行调用不能在内核中创建对象?(提示:思考微内核中服务器的作用)
两级内核空间操作必要的原因
两级内核空间操作的必要性主要体现在微内核设计的结构特点上:
最小系统功能和数据置于内核
:在微内核架构中,仅将最基本、不可或缺的系统功能和数据保留在内核空间中。
其他功能分散到用户空间服务器
:多数系统功能被移至用户空间,作为独立的服务器运行。
服务器通过执行调用进入内核
:在需要执行特定内核操作时,用户空间服务器通过执行调用(如系统调用)进入内核空间完成任务。
分层设计的优势
:
内核结构更加简洁,减少了内核复杂性。
用户空间服务器可以按需启动和终止,灵活管理资源。
内核中的数据表保持更干净,提升系统稳定性和可维护性。
执行调用不能创建对象的原因
尽管执行调用可以修改内核空间中的对象,但某些操作(如创建或删除对象)必须由内核服务器来完成:
服务器负责保护内核资源
:内核资源的操作请求必须通过特定的服务器进行中介,确保访问控制和安全性。
对象管理的限制
:
执行调用仅允许对已有内核对象进行修改。
创建或删除对象等操作必须由服务器发起请求给内核处理。
确保资源安全和合理管理
:通过将对象创建和删除操作限制在服务器层面,可以更有效地控制资源的生命周期,防止非法或不当操作,保障系统的安全性和一致性。
6、塞班操作系统采用面向对象的设计。指出面向对象设计在哪些方面有助于其设计策略。
系统调用方面:
在塞班操作系统中,系统调用涉及系统或内核端对象,抽象概念贯穿系统设计。例如,Unix系统创建文件描述符并将其作为参数用于打开调用,而塞班操作系统会创建
RFile
类的对象并调用与该对象关联的
open()
方法。用户无需了解文件对象的具体实现方式,只需创建
RFile
对象并使用其方法即可,体现了面向对象设计的封装性和抽象性,使系统设计更简洁、灵活。
继承特性方面:
塞班操作系统继承自EPOC,具有面向对象的特性。这种继承有助于系统复用EPOC的优秀设计和功能,同时可以在此基础上进行扩展和改进,符合面向对象设计中的继承原则,提高了系统的可维护性和可扩展性。
7、塞班操作系统(Symbian OS)专为智能手机设计。考虑一个智能手机平台,确定它可能使用的通信形式。对于每种通信形式,确定可用于实现该形式的设备输入/输出(I/O)类型。
通信形式及对应可实现的设备I/O类型如下:
TCP/IP网络
:可通过网络接口(如Wi-Fi模块、移动数据调制解调器)实现I/O。
串行通信
:可通过串口接口实现I/O。
红外通信
:可通过红外收发器实现I/O。
蓝牙通信
:可通过蓝牙模块实现I/O。
WAP、HTTP等
:可通过网络接口(如Wi-Fi模块、移动数据调制解调器)实现I/O。
8、以下哪些操作应在内核中以特权模式完成?a. 读写文件 b. 发送短信 c. 用相机拍照 d. 通知程序数据已接收 e. 切换CPU上的进程 f. 从内存单元读取数据。
a、b、c、d、e、f这些操作都应在内核中以特权模式完成。
因为读写文件、发送短信、用相机拍照涉及系统设备操作;
通知程序数据已接收、切换CPU上的进程属于操作系统应做的管理任务;
从内存单元读取数据涉及系统资源管理,
这些都是只有操作系统才能做的任务,需在特权模式下进行。
9、从你日常使用的应用程序中举例说明多线程。描述一下你认为如果使用单线程控制,每个例子会如何运行。
以下是调整为 Markdown 格式的文本内容:
日常使用的浏览器是多线程应用的例子。若浏览器使用单线程,当获取并显示请求的网页时,浏览器界面会冻结。
由于网页通常涉及多个文件(如图像和文本文件)的获取,页面渲染会非常缓慢,因为一次只能获取并渲染一个文件。
此外,在网页下载时无法进行其他操作,如使用菜单系统、再次下载网页、鼠标悬停链接改变光标等。
对于网页服务器,如果使用单线程,一次只能处理一个网页请求,请求者需要长时间等待单个网页的组件传输完成。
10、请给出两种内核多线程并不比单线程更优的情况。
当共享资源(如设备或特定内存区域)需要谨慎访问,通常一次只能由一个线程访问时,单线程更有利,否则会损坏资源或其衍生数据。
在许多对一的内核线程模型中,多个用户线程竞争单个内核控制线程,会导致内核请求积压和用户线程大量等待,此时多线程相比单线程并无优势。
11、描述为什么在软实时环境中不应该使用非抢占式调度。
软实时系统会对时间关键进程设置优先级,给予实时进程优待并尽量减少某些延迟时间。
非抢占式调度一旦进程开始执行就不会被中断,直到其执行完毕。
在软实时环境中,可能存在时间敏感的进程需要及时执行,若使用非抢占式调度,高优先级的实时进程可能要等待低优先级进程执行完才能运行,无法保证实时进程得到及时处理,不能满足软实时系统对实时进程的优待和低延迟要求,因此不适合在软实时环境中使用。
12、假设发明了一种新的 Linux 调度策略,该策略在每个进程调度之间寻找更高优先级的进程。如果有更高优先级的进程在等待,就为其分配一个额外的时间片。为什么这种方法会导致饥饿现象?
这种方法可能导致低优先级进程长时间甚至永远无法获得 CPU 时间,因为每次调度时都会优先考虑更高优先级的进程并为其分配额外时间片,使得低优先级进程一直得不到执行机会,从而出现
饥饿现象
。
13、证明以下算法确实符合互斥、无饥饿和有界等待这三个标准。算法如下:while (true){ready[myID] = true;turn = nextID;while (ready[nextID] && turn == nextID) ;// 临界区ready[myID] = false;// 其他需要完成的操作}
1. **互斥性**:当一个进程进入临界区时,它将 `ready[myID]` 设为 `true` 并将 `turn` 设为另一个进程的 ID。另一个进程只有在当前进程退出临界区(将 `ready[myID]` 设为 `false`)后才能进入,因为在当前进程处于临界区时,另一个进程会在 `while (ready[nextID] && turn == nextID)` 循环中等待,所以同一时间只有一个进程能进入临界区,满足互斥性。
2. **无饥饿**:如果一个进程想要进入临界区,它会将 `ready[myID]` 设为 `true`。如果另一个进程不在临界区(`ready[nextID]` 为 `false`),则当前进程可以立即进入。如果另一个进程在临界区,当前进程会等待,但当另一个进程退出临界区(将 `ready[nextID]` 设为 `false`)后,当前进程的等待条件不再满足,会被允许进入临界区,不会出现一个进程一直无法进入临界区的情况,满足无饥饿。
3. **有界等待**:当一个进程请求进入临界区时,另一个进程最多只能进入临界区一次。因为当当前进程将 `turn` 设为另一个进程的 ID 后,另一个进程进入临界区并退出时会改变状态,使得当前进程有机会进入,所以等待次数是有界的,满足有界等待。
14、以下代码展示了一个临界区。请使用信号量重写它。region time_buffer when (timing_count > 0){timing_data = time_buffer[time_out];time_out = (time_out + 1) % buffer_size;timing_count –;display(timing_data);}
要使用信号量重写上述临界区代码,可按如下步骤进行:
使用一个二进制信号量来实现锁机制,使用
wait()
操作获取锁,使用
signal()
操作释放锁。
在进入临界区前检查
timing_count > 0
条件。
以下是重写后的代码示例:
// 假设 semaphore 是信号量类型,mutex 是信号量实例
wait(mutex);
if (timing_count > 0) {
timing_data = time_buffer[time_out];
time_out = (time_out + 1) % buffer_size;
timing_count--;
display(timing_data);
}
signal(mutex);
在这个重写的代码中,
wait(mutex)
用于获取信号量(锁),确保同一时间只有一个进程可以进入临界区。然后检查
timing_count > 0
条件,如果条件满足,则执行临界区内的代码。最后,
signal(mutex)
用于释放信号量(锁),允许其他进程进入临界区。
15、解释为什么在塞班操作系统中互斥锁是必要的。值为 1 的信号量是否也能起作用?
在塞班操作系统中,互斥锁是必要的,因为它本质上是一个二进制信号量,只有两种状态,旨在实现两个进程之间的互斥。值为 1 的信号量理论上也能实现互斥功能,因为它和互斥锁一样在同一时间只允许一个进程访问共享资源。
不过,塞班操作系统中的内核互斥锁实现了一些纳米内核互斥锁所没有的信号量属性,例如:
允许阻塞和排队;
多个进程可以在互斥锁上调用
wait()
并在等待轮到自己时阻塞;
还可以同时持有多个内核互斥锁。
16、假设一个程序多次请求动态内存,但每次请求的内存都很小(10 字节)。对于这种内存分配模式,哪种内存分配方案最合适?
最佳适配(best fit)方案最合适。因为该程序每次请求的动态内存较小,最佳适配方案会搜索内存并分配与请求大小最接近的空闲内存区域,能较好地满足小内存请求,减少内存浪费。
17、考虑一个配置,其逻辑地址空间有4096个字,映射到有64页的物理内存上。逻辑地址应该有多少位?
因为2的12次方等于4096,所以逻辑地址应该有12位。
18、考虑一个对文件块使用链接分配的文件系统。当分配方案仍为链接分配时,使这些块相邻能获得哪些好处?
当文件块相邻时,读取文件时减少了在存储介质上的寻道操作,降低了机械磨损,提高了文件读取的效率。
19、为什么使用FAT16文件系统的微软Windows 98只能支持最大2GB的分区?
在FAT16文件系统中,磁盘地址为16位,这限制了最大分区大小为2GB,所以使用该文件系统的Windows 98只能支持最大2GB的分区。
20、请给出三个不应该使用阻塞式 I/O 的具体场景。
处理用户界面设备,如触摸屏或鼠标,使用非阻塞式 I/O 调用更有效,系统可在等待用户输入时处理其他事务。
多线程应用程序中使用 I/O 调用,系统等待 I/O 操作时,应用程序其他部分可继续执行。
当设备响应时间不可预测,使用阻塞式 I/O 会导致程序长时间等待,影响性能。
21、在塞班操作系统中,内核扩展是特殊的设备驱动程序。它们特殊在哪里?为什么必须特殊对待它们?
特殊之处
内核扩展是塞班操作系统在启动时加载的设备驱动程序,构建于启动过程中,在调度器启动后加载并启动,实现对操作系统至关重要的功能,如DMA服务、LCD管理、外设总线控制等。
特殊对待的原因
因其在启动时加载,与普通设备驱动程序不同,需特殊处理。此外,这样做既符合微内核设计的面向对象设计抽象,又允许塞班操作系统运行的不同平台在不重新编译内核的情况下运行专门的设备驱动程序来启用硬件。
22、列出操作系统访问网络的至少五个不同方面,并说明通过网络访问扩展的操作系统功能特性。
CPU 处理
:网络扩展了 CPU 处理能力,操作系统可借助网络让多台计算机协同处理任务,提高处理效率。
内存
:网络使操作系统能利用其他计算机的内存资源,实现内存共享,提升内存使用效率。
文件系统
:网络让操作系统可访问其他计算机的文件和目录,扩展了数据存储和访问范围,实现文件资源共享。
输入/输出(I/O)
:网络增强了计算机的 I/O 能力,操作系统能通过网络与其他设备进行数据交互,如远程打印、数据传输等。
通信
:网络为操作系统提供了强大的通信功能,使计算机之间能进行数据交换和信息共享,促进协同工作。
23、列出你周围的计算机使用的至少三种不同的通信介质。对于每一种,考虑它在连接性、安装、通信成本和可用性方面的表现。
以下三种通信介质及其在各方面的表现如下:
双绞线或光纤电缆
:
–
用途
:用于局域网(LAN)连接,通常在小地理区域如建筑物或街区内使用。
–
连接性
:可提供稳定物理连接,连接计算机数量依网络规模而定。
–
安装
:需铺设电缆,初始工作量大。
–
通信成本
:相对低,因电缆铺设后使用成本不高。
–
可用性
:若电缆损坏可能影响数据传输,但可通过冗余设计提高可用性。
无线局域网(WLAN)
:
–
用途
:通过中央发射器(接入点)连接计算机。
–
连接性
:灵活,计算机可在接入点覆盖范围内自由移动连接。
–
安装
:相对简单,只需设置接入点。
–
通信成本
:因使用无线频段和网络服务而异,可能有一定费用。
–
可用性
:受信号干扰或接入点故障影响,但可通过多个接入点增强可用性。
蓝牙
:
–
用途
:作为基于无线电的无线通信介质。
–
连接性
:方便,能在短距离内实现设备间通信。
–
安装
:简单,设备开启蓝牙功能配对即可。
–
通信成本
:低,无需额外网络费用。
–
可用性
:受距离和障碍物限制,但在有效范围内较稳定。
24、为什么缓存是分布式文件系统的一个重要方面?
缓存能加速对最近操作数据的访问。在分布式文件系统中,若不快速刷新缓存,会出现一致性问题,如处理器可能处理的不是同一信息实例。此外,延迟写缓存可延迟对远程文件服务器的写入,直到多次写入或可最小化延迟,平均而言写入更快;写时关闭缓存可在文件关闭时写入数据,进一步加速访问,允许最近写入覆盖缓存中的旧数据。
25、找出抽象在操作系统中的不同用途,并描述为什么每种用途都有用。
抽象在操作系统中有多种用途:
处理输入/输出时,由于 I/O 设备数量众多且与 CPU 速度有差异,抽象成为处理 I/O 的必要工具。设备驱动程序和设备控制器将设备的重要工作隔离到标准化接口中,同时以适合每个设备的方式实现该接口。
系统模型常基于抽象,它能隐藏无关数据,仅呈现有用的相关信息,为软件提供直观访问系统资源的方式。例如操作系统将系统资源作为抽象对象呈现给软件,文件是代表使用硬件存储的抽象对象,短信是代表使用软硬件资源访问信息的抽象对象。这些抽象概念由操作系统构建和支持,并提供给应用程序。
26、在移动电话通话中,会建立一系列客户端 – 服务器关系。请识别并报告这些关系。
在WAP功能手机的微浏览器示例中,存在两个客户端-服务器关系:
手机是客户端,网关服务器是服务器,手机向网关服务器发送编码请求;
网关服务器又作为客户端,HTTP服务器是服务器,网关服务器将手机请求传递给HTTP服务器。
网关服务器是代理服务器,代表手机在另一网络成为客户端。
27、描述网页在网页浏览器和网站之间是如何被请求和传送的,并确定这一系列事件中的客户端 – 服务器关系。
以支持WAP的手机中的微浏览器为例,手机通过向提供服务的公司的计算机发送编码请求来调用WML页面以供查看,该计算机称为
网关服务器
,它为手机提供了接入互联网的网关。
网关服务器将手机的请求传递给实际存放该WAP页面的互联网服务器,此服务器提供HTTP服务,通过向网关服务器发送网页来响应请求。
网关服务器将HTML页面转换为WML,并使用手机期望的加密方案对响应进行编码,最后将响应发送给手机,微浏览器在手机显示屏上显示WML页面。
在这个例子中,有两个
客户端
和两个
服务器
:
网关服务器对于手机来说是
服务器
网关服务器对于HTTP服务器来说是
客户端
这是
代理服务器
的一个例子,即代理服务器代表其客户端在另一个网络上成为客户端本身。
28、Linux应用程序如何实现VoIP?
在传统操作系统(如Linux)中,必须使用完全不同的模型来实现VoIP。
旧模型是底层模型,通过有线连接与控制功能交互来控制电话设备。
VoIP将作为网络通信栈的一部分来实现,而不是使用控制功能。
SIP是一种使用TCP传输数据包的应用协议,因此VoIP应用程序与套接字和TCP连接进行交互,发送SIP数据包并接收响应。
29、为什么电子邮件消息总是以可读文本形式存在?
所有电子邮件都使用可读(ASCII/Unicode)字符发送。若邮件包含非文本附件,这些附件会以特殊方式编码成文本,编码方法会包含在数据对象的头部,以便接收软件解码对象。并且电子邮件是基于文本的通用形式,能适应大多数计算机系统,多数设备可以读取和转发。
30、发送传真属于消息传递的推送模型还是拉取模型的示例?
推送模型
31、为什么塞班操作系统使用消息服务器?为什么客户端不被允许直接访问消息?
塞班操作系统中的消息服务器
塞班操作系统将消息的数据存储库视为可在进程间共享的资源。根据塞班操作系统和微内核标准,需要一个服务器来保护该存储库并管理对它的访问。
消息服务器的功能
消息服务器实现两个重要功能:
为客户端请求提供对消息数据存储库的临时、独占访问
确保存储库正确排序和处理异常消息事件。
使应用程序能够识别需要特定协议功能的请求并加载适当的消息传输模块(MTM)
安全机制
客户端不被允许直接访问消息,是为了保证消息数据的:
安全性
完整性
有序性
避免因客户端直接访问可能导致的数据损坏或异常。
32、假设一个程序宣传自己会在你的手机上安装一组酷炫的铃声。你下载了这个程序,当塞班操作系统询问时,你允许了安装。程序运行时你可能会得到铃声,但同时也会有一个进程等待两周后删除你手机上的所有文件。塞班操作系统v9如何捕获这种类型的特洛伊木马程序?
塞班操作系统v9的签名机制
塞班操作系统v9采用了签名机制来捕获此类特洛伊木马。
签名流程
获取供应商ID
:软件开发者需从证书颁发机构获取供应商ID。
提交验证
:开发软件包后提交给独立测试机构验证。
验证内容
:测试机构会验证软件对系统的访问类型列表是否完整且无其他类型访问。
软件签名
:若通过验证,则对软件签名。
安装与执行
检查签名
:安装过程会检查安装包的签名。
签名有效
:内核会记录并赋予软件相应的访问能力。
未授权访问
:若进程尝试进行未在这些能力列表中的访问,内核会拒绝并导致程序出错。
33、连接到互联网的计算机管理员应采取哪些步骤来保护其系统?
管理员应在四个层面实施安全措施:
确保计算机或设备的物理访问安全,防止入侵者,如确保房间访问安全或跟踪手机。
筛选人类用户,确保系统由可信人员访问,且访问者身份真实。
通过有线或无线连接(如以太网和手机技术)实现网络访问时保障安全,因为网络会传输数据且可能被入侵。
操作系统要自我保护和确保安全,筛选所有访问以确定其是否合法。
34、Java虚拟机(JVM)的架构允许使用非常短的字节码指令。这对Java有什么好处?
短字节码指令可从磁盘驱动器或网络等任意位置加载,且 JVM 架构有能通过短汇编指令加载和存储常量的类文件常量池、类型化数据栈以及保存程序计数器和管理栈的寄存器,这些特性使指令能被快速解释。