操作系统 层次结构
操作系统可以通过各种结构来实现。操作系统的结构主要取决于操作系统的各个常见组件如何相互连接并融入内核中。根据这一点,我们必须遵循操作系统的结构。
分层结构方法将操作系统分解为不同的层,并对系统保持更多的控制。底层(第0层)是硬件,最顶层(第N层)是用户界面。这些层被设计成每一层只使用低层次层的功能。它简化了调试过程,因为如果对低层次的层进行了调试,并且在调试过程中发生错误,那么错误必须仅存在于该层,因为低层次的层已经经过了调试。
- 这允许实现者改变内部工作方式并增加模块化。
- 只要例程的外部接口不变,开发人员就可以更自由地改变例程的内部工作方式。
- 主要优势在于构建和调试的简单性,主要困难在于定义各个层次。
这种结构的主要缺点是数据需要在每个层次中进行修改和传递,从而增加系统的开销。此外,必须仔细规划各个层次,因为每个层次只能使用较低层次的层次。UNIX就是这种结构的一个例子。
为什么要在操作系统中使用分层
分层在操作系统中提供了明显的优势。所有层次可以单独定义并按需相互交互。此外,如果以层次结构的形式创建、维护和更新系统,则更容易实现。对一个层次的更改不会影响其他层次。
操作系统中的每个层次只能与上层和下层进行交互。最底层处理硬件,最高层处理用户应用程序。
分层结构的架构
分层操作系统是作为对早期的单块系统的改进而创建的。操作系统在分层操作系统中分为各个层次,每个层次具有不同的功能。在实现层次结构时有一些规则如下。
- 某个层次可以访问其下方的所有层次,但不能访问它们。也就是说,第n-1层可以访问从n-2到0的所有层次,但无法访问第n层。
- 第0层处理进程分配,当发生中断或计时器到期时切换进程。它还处理CPU的基本多程序运行。
因此,如果用户层想与硬件层进行交互,响应将经过从n-1到1的所有层次。每个层次必须被设计和实现,以便它只需要下面的层次提供的服务。
分层操作系统中有六个层次。以下是说明这些层次的图表:
- 硬件: 该层与系统硬件进行交互,并与所有使用的外部设备(如打印机、鼠标、键盘、扫描仪等)协调。这些类型的硬件设备在硬件层中进行管理。 硬件层是分层操作系统架构中最低且最有权威的层。它直接连接到系统的核心。
- CPU调度: 这个层处理为CPU调度进程。使用多个调度队列来处理进程。进程进入系统时,它们被放入作业队列中。 准备在主存储器中执行的进程保留在就绪队列中。此层负责管理分配给CPU的进程数量以及留在CPU外的进程数量。
- 内存管理: 内存管理处理内存,并将进程从磁盘移动到主存储器以进行执行,然后将其移回。这由操作系统的第三层处理。所有内存管理与此层相关。计算机中有各种类型的存储器,如RAM和ROM。 如果考虑RAM,则涉及内存的交换。当我们的计算机运行时,一些进程会移动到主存储器(RAM)进行执行,而当程序(如计算器)退出时,它会从主存储器中删除。
- 进程管理: 此层负责管理进程,即为进程分配处理器并决定有多少进程保留在等待调度中。该层还管理进程的优先级。用于进程调度的不同算法包括FCFS(先来先服务)、SJF(最短作业优先)、优先级调度、轮转调度等。
- I/O缓冲区: I/O设备在计算机系统中非常重要。它们为用户提供与系统交互的手段。该层处理I/O设备的缓冲区,并确保它们正常工作。 假设您正在从键盘输入。键盘上附有一个键盘缓冲区,用于临时存储数据。同样,所有输入/输出设备都有一些与之关联的缓冲区。这是因为输入/输出设备的处理或存储速度较慢。计算机使用缓冲区来保持处理器和输入/输出设备的良好时序速度。
- 用户程序: 这是分层操作系统中最高的层。该层处理在操作系统中运行的许多用户程序和应用程序,如文字处理器、游戏、浏览器等。您也可以将其称为应用层,因为它涉及应用程序。
分层结构的优点
操作系统设计的分层结构具有几个优点,例如:
- 模块化: 这种设计促进了模块化,因为每个层只执行它被安排执行的任务。
- 易于调试: 由于各个层是离散的,所以非常容易调试。假设在CPU调度层发生错误,开发人员只需搜索该特定层进行调试,而不像单内核系统中所有的服务都存在。
- 易于更新: 对特定层进行的修改不会影响其他层。
- 无法直接访问硬件: 硬件层是设计中最内层。因此,用户能够使用硬件的服务,但不能直接修改或访问它,不像简单系统中用户可以直接访问硬件。
- 抽象: 每个层都关注自己的功能。因此,其他层的功能和实现对该层来说是抽象的。
分层结构的缺点
尽管这种系统在与单内核和简单设计相比有几个优势,但也存在一些缺点,例如:
- 复杂而谨慎的实施: 由于一个层可以访问它下面的层的服务,因此必须谨慎安排层的顺序。例如,后备存储层使用内存管理层的服务,因此必须将其放在内存管理层下面。因此,伴随着良好的模块化而来的是复杂的实施。
- 执行较慢: 如果一个层想要与另一个层互动,它必须通过两个互动层之间的所有层传输请求。这样会增加响应时间,不像单内核系统那样快速。因此,层数增加可能导致非常低效的设计。
- 功能: 并不总是可以将功能分开。很多时候,它们是相互关联的,不能分离。
- 通信: 非相邻层之间没有通信。