计算机操作系统-第七天

简介: 计算机操作系统-第七天

1、计算机操作系统的结构(续集)

分层结构

特性:最底层是硬件,最高层是用户接口,每层只可使用更低的相邻层所提供的功能接口(只有第一层可以直接操作硬件,第二次只能使用第一层提供的功能接口......)

优点:

1、便于调试和验证,自底层向上逐层调试验证

       因为每一层都只会使用相邻的低层所提供的功能,第一层只会使用底层的硬件各种特性而硬件的各种特性在出厂时就一定没问题,所以第一层只需要用代码去调试验证一下硬件的各种特性,如果没有问题则第一层的调试完成,第二层只会使用第一层提供的功能,而第一层的功能和代码已经调试验证过没有问题所以第二层就可以直接基于第一层来进行的各种"特性"的验证(可以将每一层的相邻下一层视为该层的硬件,如果硬件调试后没有问题我们再去调试该层的”软件“)

2、易扩充和易维护,各层之间调用接口清洗固定

       由于分层结构在设计时便已经规划好了层与层之间的调用接口(函数名,参数列表,返回值等),由于层间调用接口不变,所以想要在两层之间新加一层只需要做到新加层想更上层提供跟原来一样的接口向更下层接口的使用

缺点:

1、尽可调用相邻底层,难以合理定义各层的边界

       比如第一层的功能是进程管理,第二层的功能是内存管理,两个子系统需要相互调用,但是由于分层结构只能调用相邻的低层,所以不能实现这种相互调用的效果

关于进程管理和内存管理的拓展:

       进程管理和内存管理是操作系统中两个独立但相互关联的子系统。它们在某些方面有交互,但并不直接依赖于对方。

       进程管理主要关注进程的创建、调度和终止等操作,以及进程间的通信和同步。它负责管理进程的执行和资源分配,但并不直接处理内存的分配和回收。

       内存管理则专注于物理内存的分配、回收和保护。它负责管理系统的内存资源,将可用的内存分配给进程,并处理内存碎片等问题。但内存管理并不直接参与进程的创建、调度和终止。

       尽管进程管理和内存管理是独立的子系统,但它们之间存在一些交互和依赖关系。例如,在进程创建时,进程管理器可能需要向内存管理器请求分配一块适当大小的内存空间来存储新进程的代码和数据。类似地,在进程终止时,进程管理器可能会通知内存管理器释放该进程占用的内存。

       总的来说,进程管理和内存管理在操作系统中是紧密相关的,但它们是独立的子系统,各自负责不同的任务。它们之间的交互和依赖是通过接口和协议来实现的,以确保进程能够正确地使用和管理内存资源。

2、效率低,不可跨层调用,系统调用执行时间长

模块化

特性:将内核分为多个模块,各模块之间相互协作

内核 =主模块 + 可加载内核模块(锦上添花)

主模块:只负责核心功能如进程调度、内存管理等

可加载内存模块:可以动态加载新模块到内核,而无需重新编译整个内核,如设备驱动程序

       模块化是将操作系统按功能划分为若干个具有一定独立性的模块,每个模块具有某方面的管理功能,并规划好各模块间的接口,是各模块之间能通过接口进行通信,还可以进一步将各模块细分为若干个具有一定功能的子模块,同样也规定好各子模块之间的接口,把这种设计方法称为模块-接口法,下图为由模块、子模块等组成的模块化操作系统结构:

优点:

1、模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发

比如进程管理模块需要对外暴露三个功能接口,只要规定好三个接口的函数名、参数列表、返回值等信息即使该模块并未完全开发,其他模块也可以直接使用该模块提供给的功能接口

2、支持动态加载新的内核模块(如安装设备驱动程序、安装新的文件操作系统模块到内核),增强OS(操作系统)的适应性

3、任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高

类似于调用函数一样,模块之间可以直接调用其他模块提供的功能接口

缺点:

1、模块间的接口定义未必合理、实用

2、模块间相互依赖,更难调试和验证

a模块调用b模块提供的功能接口,b模块调用a模块提供的功能接口,如果产生问题,那么该问题产生的情况是多样的:有可能是模块自身的问题,有可能是调用其他模块提供的功能接口后产生的问题,甚至是两个模块互相调用各自的功能接口后导致的问题,相比而言分层结构中的每一层看起来也是一种模块但是分层结构的模块之间有一个明确的单向依赖的规定即高层依赖底层(高层只能调用相邻的低层提供的功能接口)

宏内核(大内核)

特性:所有系统功能都放在内核里(大内核结构的OS通常也采用了“模块化”的设计思想)

优点:性能高,内核内部各种功能都可以直接相互调用

缺点:

1、内核庞大功能复杂、难以维护

2、大内核中某个功能模块出错,就可能导致整个系统崩溃(由于各模块间依赖程度高)

微内核

特性:只把中断、原语、进程通信等最核心的功能放入内核、进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态

昨天的微内核图中将进程管理划分到了用户态中现已纠正

优点:

1、内核小功能少、易于维护、内核可靠性高

2、内核外的某个功能模块出错不会导致整个系统崩溃

缺点:

1、性能低,需要在用户态与核心态之间频繁的切换,用户态下的各功能模块不可以直接相互调用,只能通过内核的消息传递来间接通信

2、用户态下的各功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信

外核(极其少见的操作系统,感觉有点抽象先跳过吧)

特性:外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全

优点:1、外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源

2、减少了虚拟硬件资源的“映射层”,提升效率

缺点:

1、降低了系统的一致性

2、使系统变得更复杂

关于外核的拓展:

外核操作系统(Exokernel)是一种操作系统设计范例,它与传统的宏内核(Monolithic Kernel)和微内核(Microkernel)有所不同。在外核操作系统中,内核的功能被限制到最小,只提供了硬件抽象和保护机制,而应用程序可以直接访问底层硬件资源。

外核操作系统的设计目标是提供最大的灵活性和性能,允许应用程序直接控制硬件资源,而不需要经过内核的中介。这种设计使得应用程序可以根据自身的需求进行优化和定制,从而获得更高的性能。

然而,外核操作系统并不是常见的操作系统设计范例。传统的宏内核和微内核仍然是主流的操作系统设计方式,因为它们在实现和管理上相对简单,并且具有广泛的应用和支持。

尽管如此,外核操作系统仍然是一个有趣和活跃的研究领域,吸引了一些学术界和研究机构的关注。一些研究项目和实验性操作系统采用了外核操作系统的设计思想,以探索新的操作系统架构和性能优化的可能性。

总而言之,虽然外核操作系统不太常见,但它是一个有趣的操作系统设计范例,用于探索更高级别的应用程序控制和性能优化。在实际应用中,传统的宏内核和微内核仍然是主流。

关于各类结构的使用拓展(建议了解):

       计算机操作系统的结构可以分为多种类型,包括单体内核结构、分层结构、微内核结构、外核结构等。每种结构都有其独特的设计和特点,适用于不同的应用场景和需求。

在实际情况中,不同计算机系统可能采用不同的操作系统结构取决于计算机的类型、用途和设计目标。以下是一些常见的情况:

  1. 个人计算机(如台式机、笔记本电脑):大多数个人计算机通常使用单体内核结构。这种结构将所有操作系统功能集中在一个单一的内核中,包括进程管理、文件系统、设备驱动程序等。
  2. 服务器和大型机:在服务器和大型机环境中,常见的操作系统结构是分层结构或微内核结构。分层结构将操作系统功能划分为多个层次,每个层次负责不同的功能。微内核结构将操作系统的核心功能放在一个精简的内核中,而将其他功能作为独立的服务运行在用户空间。
  3. 嵌入式系统:嵌入式系统通常具有有限的资源和特定的应用需求。在这种情况下,可能会使用一种更精简的操作系统结构,如微内核结构或外核结构。这些结构可以根据系统的需求进行裁剪和优化,以满足资源限制和实时性要求。

       需要注意的是,操作系统结构的选择是根据具体的需求和约束来确定的。不同的计算机系统可能会选择适合其需求的结构,而不是一定要使用所有结构。因此,每台计算机中使用的操作系统结构可能会有所不同。

本节没有思维导图~:

特性、思想 有点 缺点
分层结构 内核分多层、每层可单向调用更低一层提供的功能接口 1、便于调试和验证,自底层向上逐层调试验证 1、仅可调用相邻低层,难以合理定义各层的边界
2、易扩充和易维护,各层之间调用接口清晰固定 2、效率低,不可跨层调用,系统调用执行时间长
模块化

将内核划分为多个模块,各模块之间相互协作,

内核 = 主模块 + 可加载内核模块

主模块:只负责核心功能,如进程调度内存管理

可加载内存模块:可以动态加载新模块到内核,而无需重新编译整个内核

1、模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发 1、模块间的接口定义未必合理、实用

2、支持动态加载新的内核模块(如安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性

3、任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高 2、模块间相互依赖、更难调试和验证
大内核 所有的系统功能都放在内核中(大内核结构的OS通常也采用了“模块化”的设计思想) 1、性能高,内核内部各种功能都可以直接相互调用 1、内核庞大功能复杂、难以维护
2、大内核中某个功能模块出错,就可以导致整个系统崩溃
微内核 只把中断、原语、进程通信、进程管理等最核心的功能放入内核。文件管理、设备管理等功能以用户进程的形式在用户态 1、内核小功能少、易于维护、内核可靠性高 1、性能低,需要频繁的在用户态和核心态之间切换
2、内核外的某个功能模块出错不会导致整个系统崩溃 2、用户态下的各功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信
外核 内核负责进程调度、进程通信等功能,外核负责为用户进程提供分配未经抽象的硬件资源,且由外核负责保证资源使用安全 1、外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源 1、降低了系统的一致性
2、减少了虚拟硬件资源的“映射层”,提高效率 2、使系统变得更复杂

~over~

相关文章
|
17天前
|
存储 Unix Linux
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
23 1
|
17天前
|
存储 算法 Linux
【计算机操作系统】深入探究CPU,PCB和进程工作原理
【计算机操作系统】深入探究CPU,PCB和进程工作原理
|
17天前
|
存储 缓存 安全
【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解
【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解
|
17天前
|
存储 安全 数据处理
【计算机系统组成原理】操作系统处理器深入介绍
【计算机系统组成原理】操作系统处理器深入介绍
|
17天前
|
安全 Linux Shell
操作系统究竟是什么?在计算机体系中扮演什么角色?
操作系统究竟是什么?在计算机体系中扮演什么角色?
50 0
|
17天前
|
存储 安全 Unix
计算机的操作系统
计算机的操作系统
13 2
|
17天前
|
存储 Ubuntu Unix
【Linux】1、操作系统、计算机硬件和软件、Linux 介绍
【Linux】1、操作系统、计算机硬件和软件、Linux 介绍
46 0
|
17天前
|
存储 安全 自动驾驶
计算机软考之操作系统
计算机软考之操作系统
56 0
|
17天前
|
Linux 数据安全/隐私保护 虚拟化
操作系统:计算机的大脑
操作系统:计算机的大脑
68 0
|
17天前
|
存储 算法 调度
《计算机操作系统》重点知识笔记整理(二)
《计算机操作系统》重点知识笔记整理(二)
48 0