操作系统的运行机制和体系
预备知识
1. 什么是指令?
答: “指令” 就是处理器能识别、执行的最基本命令
例: C语言 -> 机器语言指令 , 一个高级语言代码翻译可能会对应多条指令
指令分为: 特权指令(内存清零) 、非特权指令(普通运算指令)
2.CPU 如何判断当前是否可执行特权指令?
答: CPU两种状态:用户态 (目态), 核心态 (管态)
当CPU为用户态,只能执行非特权指令 , CPU核心态执行 特权指令、非特权指令。CPU状态由程序状态寄存器(PSW)中某标志位识别当前CPU状态。例 1 为核心态 , 0 为 用户态。
操作系统的内核
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分,实现操作系统内核功能的那些程序就是内核程序
部分操作系统未将 (对系统资源管理)分为系统内核
操作系统的体系结构 | 优点 | 缺点 |
---|---|---|
大内核 | 高性能 | 内核功能少,结构清晰,方便维护 |
微内核 | 结构混乱 ,难以维护 | 需要频繁的在核心态和用户态之间切换。性能低 |
小节:
特权指令只能在核心态下执行
内核程序只能在核心态下执行
核心态、用户态之间的切换(后续)
中断和异常
中断机制的诞生:为了实现多道程序并发执行而引入的一种技术。
本质:发生中断就意味着需要操作系统介入,开展管理工作
由于操作系统的管理工作(如进程切换、分配I/O设备等)需要特权指令,因此CPU要从用户态转为核心态,中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权
。有利中断,才能实现多道程序并发执行。
问题 1 用户态、核心态之间的切换是怎么实现的?
答: “用户态”->“核心态” 通过中断实现,且中断是唯一途径 ,
“核心态” -> “用户态” 通过执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态”。
中断的分类
系统调用
问题1 : 什么是系统调用,有什么作用?
答: “系统调用” 是操作系统提供应用程序(程序员)使用的接口,可理解为可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。
应用程序通过系统调用请求操作系统的服务,系统的各种共享资源由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(存储分配、I/O操作、文件管理等),都必须通过系统调用的方式想操作系统提出服务请求,由操作系统代为完成,这样保证系统的稳定性和安全性,防止用户进行非法操作。
问题2 : 系统调用和库函数的区别?
普通应用程序 | 可直接进行系统调用,也可使用库函数。有的库函数涉及系统调用,有的不涉及 |
---|---|
编程语言 | 向上提供库函数。有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使上层经行系统调用更加方便 |
操作系统 | 向上提供系统调用 |
裸机 |
|