操作系统设计与实现
操作系统是一个允许用户应用程序与系统硬件交互的结构。操作系统本身不提供任何功能,但它提供了一个环境,使不同的应用程序和程序能够完成有用的工作。
在设计和实现操作系统时,可能会出现许多问题。这些问题在操作系统设计与实现中都有涉及。
操作系统设计目标
在设计操作系统时,定义其所有目标和规范是相当复杂的。设计会根据操作系统的类型而变化,例如批处理系统、分时系统、单用户系统、多用户系统、分布式系统等。
在设计操作系统时,基本上有两种类型的目标:
用户目标
根据用户的需求,操作系统应该方便、易用、可靠、安全和快速。然而,这些规范并不十分实用,因为没有固定的方法来实现这些目标。
系统目标
操作系统应该易于设计、实现和维护。这些是创建、维护和操作操作系统的人员所需的规范。但是,也没有具体的方法来实现这些目标。
操作系统机制与策略
由于设计操作系统是一项极具创造性的任务,因此没有特定的方法。但是,有一些通用的软件原则适用于所有操作系统。
机制和策略之间的一个微妙区别在于,机制展示了如何做某事,而策略展示了做什么。策略可能会随着时间的推移而改变,这将导致机制的改变。因此,最好有一个通用的机制,即使策略发生变化,也只需要很少的更改。
例如 - 如果机制和策略是独立的,那么如果策略发生变化,机制只需要很少的更改。如果一个策略偏向于 I/O 密集型进程而不是 CPU 密集型进程,那么将策略更改为偏向于 CPU 密集型进程将不会改变机制。
操作系统实现
操作系统在设计完成后需要进行实现。早期的操作系统是用汇编语言编写的,但现在使用高级语言。第一个不是用汇编语言编写的系统是 Burroughs 计算机的主控程序 (MCP)。
高级语言的优势
使用高级语言实现操作系统有多个优点,例如:代码编写速度更快,代码更紧凑,也更容易调试和理解。此外,如果操作系统是用高级语言编写的,则可以轻松地将其从一个硬件平台移植到另一个硬件平台。
高级语言的劣势
使用高级语言实现操作系统会导致速度下降和存储需求增加。但是,在现代系统中,只有少量代码需要高性能,例如 CPU 调度程序和内存管理器。此外,如果需要,系统中的瓶颈例程可以用汇编语言等效项替换。