【操作系统】——运行机制及体系结构(2)
文章目录
- Tips
- 一、操作系统的运行机制
- 1、两种指令
- 2、两种处理器状态
- 二、中断和异常
- 1、中断
- 2、中断机制的基本原理
- 三、系统调用
- 1、系统调用和c语言中库函数的区别
- 2、系统调用的必要性
- 四、操作系统的体系结构
- 1、内核
Tips
【操作系统】——定义及发展历程(1)
【操作系统】——进程及状态转换(3)
一、操作系统的运行机制

1、两种指令
特权指令: 只允许管理者,操作系统内核来使用
非特权指令: 除了特权指令之外的指令
2、两种处理器状态
核心态: 又称内核态,此状态是运行内核程序,执行特权指令的(也可以执行非特权指令)。
用户态: 运行应用程序,只能执行非特权指令
程序状态寄存器标志处理器中不同的状态
两种状态的切换:
- 电脑刚开机的时候是CPU处于内核态的,CPU上运行的是操作系统的内核程序
- 开机完成后,用户可以启动某个应用(操作系统主动将CPU的使用权让出,并修改程序状态寄存器中的值,使得cpu从内核态转换为用户态。
- 若在运行应用程序的过程中,出现异常则会引发中断信号(CPU检测到中断信号之后,会立即变为核心态,并停止运行当前的应用程序,转而运行处理“中断信号”的内核程序)。
异常是指内部错误,包括用户态下运行特权指令、除数为0等
但凡需要操作系统介入的地方都会触发中断信号
- “中断”使得操作系统再次夺回CPU的控制权
- 操作系统会对引发中断的事件进行处理,处理完了再把cpu的使用权交给别的应用程序。
二、中断和异常

1、中断
CPU上会运行两种程序,一种是操作系统的内核程序(是整个系统的管理者),一种是应用程序。
在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序,而“中断”是让操作系统内核夺回CPU使用权的唯一途径。
简单点说,中断的作用是可以使得CPU由用户态变为内核态,使得操作系统重新夺回对CPU的控制权。

内中断:
与当前执行指令有关,中断信号来源于CPU内部,包括用户态下出现特权指令,除数为0等异常情况,另外,还有一种特殊指令——陷入指令,该指令会引发一个内部中断信号。
应用程序想请求操作系统为其服务时就会执行陷入指令,执行了陷入指令则意味则应用程序主动将CPU的控制权还给操作系统内核。“系统调用就是通过陷入指令来完成的 ”
外中断:
与当前执行的指令无关,中断信号来源于CPU外部。在开中断的情况下,CPU每执行完一条指令都会检测是否存在外中断信号。
最典型的就是由外部时钟部件发出的中断信号,其实也就是时间片的实现,在多道程序并发运行中,每道程序都会得到一定大小的时间片,而程序中一般是没有特权指令,或者在当前时间片内一般不执行陷入指令,在没有内中断的情况下,实现程序交替则需要外中断,时间片一旦用完,时钟部件就会向CPU发出中断信号,CPU控制权被操作系统夺回并实现重新分配。

2、中断机制的基本原理
不同的中断信号需要不同的中断处理程序来处理。

三、系统调用
“系统调用”是操作系统提供给应用程序(程序员)使用的接口,可以理解为是一种可供应用程序调用的特殊函数,应用程序可以系统调用来请求获得操作系统内核的服务。
总而言之,系统调用就是请求上一级(特指操作系统内核)为其服务。

1、系统调用和c语言中库函数的区别

2、系统调用的必要性
其实系统调用是一种对共享资源的宏观控制,在多方发出资源请求时,由操作系统内核进行内部协调再分配资源,防止多方各自争抢而造成不良结果。

四、操作系统的体系结构


1、内核
内核是操作系统最基本、最核心的部分实现操作系统内核的程序称为内核程序。


操作系统内核需要运行在内核态,操作系统非内核功能运行在用户态

若该应用程序同时涉及到进程管理、存储管理、设备管理,则此次的系统调用:

大内核情况下:只需要两次状态转换
微内核情况下:则需要多次状态转换
频繁的状态转换会降低系统性能!
扩展:linux和Unix采用大内核,而windows NT采用微内核
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
