正襟危坐说--操作系统(贰):操作系统相关基本概念

操作系统相关基本概念

内核态和用户态

为了区分不同程序的不同权利,人们发明了内核态和用户态的概念。如果一个程序运行在特权态,则该程序就可以访问计算机的任何资源,即它的资源访问权限不受限制。如果一个程序运行在用户态,则其资源需求将受到各种限制。例如,如果要访问操作系统的内核数据结构,如进程表,则需要在特权态下才能办到。如果要访问用户程序里的数据,则在用户态下就可以了。

CPU管理和内存管理都应该在内核态实现。诊断与测试程序也需要在内核态下实现,因为诊断和测试需要访问计算机的所有资源。对于文件系统来说,则可以一部分放在用户态,一部分放在内核态。文件系统本身的管理,即文件系统的宏数据部分的管理,必须放在内核态,不然任何人都可能破坏文件系统的结构。

 

态势的识别

那么计算机是如何知道现在正在运转的程序是内核态程序呢?这个标志就是处理器的一个状态位。这个状态位是CPU状态字里面的一个字位。这就是说,所谓的用户态、内核态实际上是处理器的一种状态,而不是程序的状态。我们通过设置该状态字,可以将CPU设置为内核态,或者用户态,或者其他的子态。一个程序运行时,CPU是什么态,这个程序就运行在什么态。

内核态与用户态的实现

在特权态下运行的程序可以访问任何资源,而用户态下的访问则受到限制。那么这种限制是如何实现的呢?

要限制一个程序对资源的访问,需要对程序执行的每一条指令进行检查才能完成。而这种检查就是地址翻译。通过对地址翻译的控制,就可以限制程序对资源的访问。为了给内核态程序赋予访问所有资源的特权,系统处于内核态时,内核程序可以绕过内存地址翻译而直接执行特权指令

 

若操作系统的所有功能都在内核态下运行,则会带来几个问题。首先,操作系统的所有服务都需要进入内核态才能使用,而从用户态转换为内核态是有时间成本的,这样就造成操作系统效率低下。随着操作系统功能和复杂性的增加,这种问题就十分明显了。

因此,人们又想出一个办法,就是微内核结构,即只将操作系统核心中的核心放在内核态运行,其他功能都移到用户态。这样就同时提高了效率和安全性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值