OS-1

1、操作系统的内核态、用户态

操作系统需要两种CPU状态

内核态:运行操作系统程序 ,表示一个应用进程执行系统调用后,或I/O 中断,时钟中断后,进程便处于内核执行

用户态:运行用户程序 ,表示进程正处于用户状态中执行

两种状态的主要差别在于:

  • 内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。

  • 用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。

为什么要有用户态和内核态?

由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 -- 用户态和内核态。

两种状态的转化:

用户态 切换到 内核态 的唯一途径 ---> 中断/异常/陷入

内核态 切换到 用户态 的途径 ---> 设置程序PSW状态字

注意: 陷入指令(又称 访管指令,因为内核态也被称为管理态,访管就是访问管理态)

该指令给用户提供接口,用于调用操作系统的服务

2、关于内核

操作系统是管理计算机硬件与软件资源的计算机程序。而内核是操作系统的核心,是操作系统工作的基础,通俗地讲,内核就相当于一个公司架构里面的管理层。

内核分类:单内核、微内核、混合内核。

 互联网公司普遍使用的Linux内核是一个典型的宏内核,而Windows则是一个混合内核。

宏内核:

宏内核又称为单内核,它的架构特性是整个核心程序都是以核心空间的身份及监管者模式来运行。宏内核被视作为运行在单一地址空间(核心空间)的单一的进程,核心提供的所有服务,都以特权模式进行。

目前有的宏内核可以将其运作从整体性运作拆分成几个服务模块,并且让各模块各自运作,但其操作系统的代码依然是高度紧密的,很难修改成其他类型的操作系统架构。

现在我们常用的操作系统多为宏内核,比如安卓系统、IOS。

微内核:

微内核是内核的一种精简形式。通常系统服务层是和内核集成在一起的,而微内核将系统服务层分离出来,变成可以根据需求加入的选件,这样就提高了OS可扩展性。微核的目标是将系统服务的实现和系统的基本操作规则分离开来。

鸿蒙的微内核操作系统就是基于微内核开发设计的,说到微内核一般会拿宏内核作对比,目前我们接触到的操作系统多为宏内核,比如Linux、Unix,以及在这些基础开发的安卓和IOS。

微内核和宏内核的区别:

宏内核和微内核的区别可以形象地理解为中央集权制和分封制。

宏内核简单地说就是把很多的东西都集成进内核里,各种进程和内核高度紧密,它的优点是效率高,缺点是稳定性差,如果开发进程出现一个bug经常会导致整个操作系统挂掉。

微内核的内核只能进行最基本的调度、内存管理,它的优点是非常稳定,做驱动开发时,发现错误,只需要相应地修正再重启进程就行了,原则上来说效率较差。它的一大特点是可以进行模块化设计。

混合内核:它很像微内核结构,只不过它的的组件更多的在核心态中运行,以获得更快的执行速度。

3、参考链接:

https://www.zhihu.com/question/339925118/answer/783985069
https://www.cnblogs.com/maxigang/p/9041080.html
https://www.zhihu.com/question/339638625
https://baike.baidu.com/item/%E5%86%85%E6%A0%B8/108410?fr=aladdin#3
 
原文地址:https://www.cnblogs.com/xuechengmeigui/p/13511494.html