操作系统之内核态和用户态小结

操作系统内核态和用户态几乎是考研试题中必考的题目,一般是一道选择题,但是在教材中对着一部分讲解的不是很全面。在复习中(包括我在内),往往面临两难的问题,一方面教材上的内容较少,另一方面网上的东西又太多,看的时候又不知所措。所在在这里给大家把这一块的知识点总结一下,希望能给大家带来一些启迪,同时也欢迎大家一起讨论。

一、操作系统结构:

操作系统的发展大致经历了无结构操作系统(第一代),模块化的操作系统(第二代),分层式结构(第三代),这些称为传统操作系统结构。而微内核操作系统是现代操作系统结构,他是在C/S(客户端/服务器)这种架构方式上发展起来的。传统操作系统的内容,大家只需要了解就可以了。重点在微内核操作系统。

二、微内核操作系统

微内核操作系统往往采用的是C/S模式,它把操作系统分为微内核和多个服务器。微内核主要用于(1)实现与硬件紧密相关的处理,(2)实现一些较基本的功能,(3)负责客户和服务器之间的通信。

内核的功能:

(1)进程(线程)管理 (进程或者线程的调度)

(2)低级存储器管理 (用户程序逻辑空间到内存空间的物理地址的变换)

(3)中断和陷入管理 (中断和陷入)

由于微内核结构的存在,那么程序就运行在两种不同的地方,内核态和用户态,内核态与用户态是操作系统的两种运行级别,跟intel cpu没有必然的联系。

三、内核态和用户态

内核态:当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。其他的属于用户态。用户程序运行在用户态,操作系统运行在内核态.(操作系统内核运行在内核态,而服务器运行在用户态)。用户态不能干扰内核态.所以CPU指令就有两种,特权指令和非特权指令.不同的状态对应不同的指令。特权指令:只能由操作系统内核部分使用,不允许用户直接使用的指令。如,I/O指令、置终端屏蔽指令、清内存、建存储保护、设置时钟指令(这几种记好,属于内核态)。 非特权指令:所有程序均可直接使用。
所以:

系统态(核心态、特态、管态):执行全部指令。
用户态(常态、目态):执行非特权指令。

2. 用户态和内核态的转换

1)用户态切换到内核态的3种方式

a. 系统调用

这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如前例中fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。

b. 异常

当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。

c. 外围设备的中断

当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。

四、常见的内核态常见总结:

前文已经提到,内核的功能:

(1)进程(线程)管理 (进程或者线程的调度)

(2)低级存储器管理 (用户程序逻辑空间到内存空间的物理地址的变换)

(3)中断和陷入管理 (中断和陷入)

具体的:

(1) I/O指令、置终端屏蔽指令、清内存、建存储保护、设置时钟指令。

(2) 中断、异常、陷入,比如缺页中断等

(3)进程(线程)管理

(4)系统调用,比如调用了设备驱动程序

(5)用户内存地址的转换(逻辑---> 物理映射)

以前考过的真题:

1、用户在程序中试图读某文件的第100个逻辑块,使用操作系统提供的()接口

A系统调用 B:图形用户接口 C:原语 D:键盘命令

解析:程序需要读取第100个逻辑块,这里发生了逻辑地址到物理地址的转换,必然要进入到内核态执行转换,所以必然要进入到内核态,在四个选型中,只有A系统调用才能进入到内核态。所以A入选。图形用户接口是用户接口,他是获得操作系统提供的服务一种方式,但是要想获得操作系统的服务,在底层仍然是使用的系统调用。

2、在中断发生后,进入中断处理的程序属于:()

A:用户程序 B:可能是应用程序,也可能是操作系统程序

C:操作系统程序 D:既不是是应用程序,也不是操作系统程序

解析:中断的处理是由操作系统内核来处理的,这是操作系统内核最基本的功能之一,所以只能是操作系统程序。

从这些题目中,可以看出,理解内核态和用户态的基本的概念,区分好他们不同的情景,并且掌握内核态的典型场景,就可以做好这一类的题目。

赶了一周的项目和导师的任务,打开网易云音乐,听到了最喜欢的一首歌,分享给大家。在路上 累并快乐着 用我心灵的呼声 只为温暖我的人。

在路上 刘欢

music.163.com/#

我不得已上路
为不安分的心
为自尊的生存
为自我的证明
路上的辛酸已融进我的眼睛
心灵的困境已化作我的坚定
在路上  用我心灵的呼声
在路上  只为伴着我的人
在路上  是我生命的远行
在路上  只为温暖我的人
温暖我的人
那一天
我不得已上路
为不安分的心
为自尊的生存
为自我的证明
路上的辛酸已融进我的眼睛
心灵的困境已化作我的坚定
在路上  用我心灵的呼声
在路上  只为伴着我的人
在路上  是我生命的远行
在路上  只为温暖我的人
温暖我的人
在路上  用我心灵的呼声
在路上  只为伴着我的人
在路上  是我生命的远行
在路上  只为温暖我的人
温暖我的人
编辑于 2016-06-18