OS_作业1
第一题
1. 什么是多道程序设计?多道程序设计与分时系统的区别是什么?
定义: 多道程序设计是一种计算机内存管理技术,其允许在计算机内存中同时存放多个相互独立的程序,并使这些程序在管理程序的控制下相互穿插运行。这种技术使得两个或两个以上的程序在计算机系统中同时处于开始到结束之间的状态。从宏观上看,这些程序似乎是并行运行的,因为多道程序都处于运行中且没有运行结束;但从微观上看,这些程序实际上是串行的,它们轮流使用CPU,交替执行。
多道程序设计技术的引入旨在提高CPU的利用率,提高计算机的硬件资源的利用率,充分发挥计算机系统部件的并行性。当一道程序因某种原因(如I/O请求)而暂停执行时,CPU会立即转去执行另一道程序,从而减少了CPU的等待时间,增加了系统的吞吐量,提高了系统的效率。
特点:多道、宏观上并行、微观上串行的。
区别:
分时系统是一种联机的多用户交互式操作系统,它是多道程序设计的延伸。在分时系统中,多个用户可以通过终端同时与计算机进行交互,每个用户都可以实时得到服务。分时系统采用时间片轮转的方式,每个用户获得一个时间片并运行,如果某个作业在分配的时间片用完之前计算还未完成,该作业就暂时中断,等待下一轮。这种方式保证了用户获得足够小的响应时间,提高了交互能力。特点是多个用户可以同时使用计算机,且每个用户都感觉自己独占了一台计算机。
多道程序设计主要关注于如何有效地利用CPU和其他系统资源,通过多个程序同时运行来提高系统效率;而分时系统则主要关注于如何为多个用户提供实时的交互式服务,保证每个用户都能获得良好的使用体验。两者之间的侧重点和实现方式不同。
第二题
2. 什么原因推动了操作系统从批处理发展到多道程序,进而发展到分时系统?
批处理 -> 多道程序:
- 硬件技术的发展基础:随着计算机硬件技术的进步, CPU的运动速度大大提高。这为操作系统的发展提供了物质基础,使得系统能够更有效地管理和利用硬件资源。
- 资源利用率的提升需求:在早期的批处理系统中,虽然作业被分组并成批处理,但单道批处理系统存在资源利用率低的问题。内存中一次只有一个作业被处理,当作业进行I/O操作时,CPU处于等待状态,导致CPU利用率极低。为了提高CPU的利用率和计算机系统的整体性能,多道程序设计技术被引入,形成了多道批处理系统。
多道程序 -> 分时系统:
- 资源利用率的提升需求:多道程序设计虽然允许多个程序同时进入内存并交替执行,提高了CPU的利用率,但用户在使用时仍然感受到一定的等待时间。分时系统通过更精细地管理CPU时间片,使得多个用户能够更高效地共享计算机资源,从而进一步提高了资源利用率。
- 满足用户交互需求:分时系统通过为每个用户分配一个时间片,保证了用户能够获得实时的响应,从而满足了用户与计算机进行实时交互的需求。
- 技术进步的支持:随着计算机硬件性能的不断提升,特别是CPU速度的提高和存储容量的扩大,为分时系统的实现提供了可能。
第三题
3. 什么是陷阱?与中断的区别是什么?什么是系统调用?
陷阱:在操作系统中,陷阱(trap)是一种特殊的软件中断指令。当CPU执行到该指令时,会保存当前进程的状态,并使执行流程从用户态陷入内核态,将控制权转移给操作系统。这样,用户程序就可以通过陷阱调用内核函数,使用硬件,并获得操作系统提供的服务。
区别:
- 触发原因:中断通常是由来自 I/O 设备的信号。而陷阱则是程序内部有意设置,主动从用户态陷入内核态,调用内核函数,使用硬件,并获得操作系统提供的服务。
- 同异步:中断是异步的,其与指令的执行状态无关;中断是同步的,其与指令的执行状态相关。
- 是否可屏蔽中断: CPU处理中断的过程中会屏蔽中断,不接受新的中断直到此次中断处理结束。而陷阱并不屏蔽中断,可以接受新的中断。
- 处理对象:中断处理程序通常不是为当前进程服务的,而是由操作系统内核负责处理。当中断发生时,处理器会保存当前进程的上下文,然后跳转到中断处理程序执行相应的中断服务程序。而陷阱处理程序提供的服务则是为当前进程所用,进行相应的操作或处理。
系统调用:
系统调用是用户进程(也就是应用程序)与内核交互的接口。
由操作系统内核提供的一组函数组成,允许用户进程请求操作系统内核提供的服务和资源,例如文件操作、网络通信、进程控制等。
作用是实现操作系统的功能,它可以使用户进程在没有特权级的情况下,通过调用系统提供的函数来访问操作系统提供的功能和资源。
第四题
4. 判断:可移植的操作系统可以从一个系统架构移植到另外一个系统架构而无需修改。
错误
(1) 请解释为什么构建完全可移植的 OS 是不可能的?
- 硬件和架构的多样性:不同的计算机硬件和架构在底层设计、指令集、内存管理、中断处理等方面都存在显著差异。这些差异导致操作系统需要针对特定的硬件和架构进行定制和优化。尽管一些抽象层和接口可以帮助提高操作系统的可移植性,但在面对高度特殊化的硬件功能或优化需求时,通常需要进行深入的底层调整。
- 设备驱动和外围设备的多样性:除了基本的硬件和架构差异外,不同的计算机系统还可能配备各种各样的外围设备和接口。这些设备需要特定的驱动程序来支持,而这些驱动程序通常是与特定硬件紧密相关的。因此,即使操作系统的核心部分可以在不同架构之间移植,设备驱动程序的差异也可能成为移植的障碍。
- 性能和效率考虑:为了提高操作系统的性能和效率,开发者通常会针对特定的硬件和架构进行优化。这些优化可能包括利用特定的指令集、内存访问模式或中断处理机制等。然而,这些优化措施往往与硬件和架构紧密相关,因此在移植到其他平台时可能无法保持相同的性能水平。
- 安全性和稳定性需求:操作系统作为计算机系统的核心组件,其安全性和稳定性至关重要。在移植过程中,可能会引入新的安全漏洞或稳定性问题。为了确保系统的安全性和稳定性,开发者需要对移植后的操作系统进行全面的测试和验证,这是一个复杂且耗时的过程。
(2) 如果需要你设计一个高度可移植的 OS,那么请描述你需要设计的两个层次?
内核层
内核层是操作系统的核心部分,负责管理系统的硬件和软件资源,提供基本的系统服务。内核层的设计需要确保在不同硬件平台上的可移植性。
主要特点:
- 硬件抽象接口:内核层应提供一套统一的硬件抽象接口,使得上层软件无需关心底层硬件的具体实现。这通常通过设备驱动程序和硬件抽象层(HAL)来实现。
- 模块化设计:内核应被划分为多个模块,每个模块负责特定的功能(如内存管理、进程调度、文件系统、网络协议栈等)。这种模块化设计使得每个模块可以被独立地优化和替换,从而提高系统的可移植性。
- 微内核:为了实现更好的可移植性和灵活性,可以采用微内核架构,将大部分系统服务实现为用户空间的服务。这样,内核本身保持较小且简单,易于在不同平台上移植。
应用层
应用层是操作系统提供给用户的接口,包括各种系统调用、库函数、图形用户界面等。应用层的设计应确保在不同操作系统和平台上的兼容性。
主要特点:
- 标准API:应用层应提供一套标准的API,使得应用程序能够以一种统一的方式访问系统资源和服务。这些API应遵循广泛接受的标准和协议,以确保跨平台的兼容性。
- 抽象和封装:应用层应抽象和封装底层的系统细节,使得应用程序无需关心底层系统的具体实现。这可以通过使用高级编程语言和库函数来实现。
- 运行时环境:为了支持跨平台的应用程序部署,可以设计一个运行时环境(如虚拟机或容器),使得应用程序可以在不同的操作系统上运行而无需修改。
第五题
5. 在设计操作系统时,一些设计指标是相互矛盾的,例如资源利用率、吞吐量、处理时间、健壮性等。请给出一对相互矛盾的设计实例。
资源利用率与处理时间的矛盾
为了提高资源利用率,操作系统可能会选择将任务进行批量处理或优化任务调度,以减少资源切换和空闲时间。但这可能导致某些任务需要等待更长时间才能开始执行,从而增加了处理时间。
另一方面,如果操作系统过于追求短处理时间,频繁地中断和切换任务,可能会导致资源利用率下降,因为系统需要花费额外的时间进行上下文切换和任务管理。
第六题
一个计算机系统有输入机一台、打印机两台,现有二道程序同时投入运行,且程序 A 先开始运行,程序 B 后运行。程序 A 的运行轨迹为:计算 50ms,打印信息 100ms,再计算 50ms ,打印信息 100ms ,结束。程序 B 运行的轨迹为:计算 50ms,输入数据 80ms,再计算 100ms,结束。要求:
(1) 用图画出这二道程序并发执行时的工作情况。
(2) 说明在二道程序运行时,CPU 有无空闲等待?若有,在哪段时间内等待?为什么会空闲等待?
(3) 程序 A、B 运行时有无等待现象?在什么时候会发生等待现象?
(1)
(2) 有
100ms-150ms: CPU处于空闲等待的状态
这段时间内,A程序正在通过打印机打印信息,B程序正在通过输入机输入数据,故CPU处于空闲等待的状态
(3) 有
A程序未发生等待现象,B程序在0-50ms,180ms-200m时间段内发生等待现象。