王道操作系统:1.3、操作系统运行环境
操作系统运行环境
处理器运行模式
程序的分类
操作系统内核程序(内核程序)
执行特权指令,管理应用程序
IO指令
访问状态信息
访问特殊寄存器
其它指令
用户自编程序(应用程序)
执行非特权指令,仅限访问用户地址空间
cpu运行模式
用户态
运行用户自编程序
核心态
运行操作系统内核程序
操作系统内核
时钟管理
-
时钟是最关键的设备
-
功能
-
计时
-
时钟中断实现进程切换
-
中断机制
-
各项操作的基础
-
功能
- 提高cpu利用率
-
注:终端机制只有一小部分属于内核(现场的保护、程序的转移)
原语
-
概念
-
处于操作系统的最低层,是最接近硬件的部分
-
程序的运行具有原子性,其操作只能一气呵成
-
程序的运行时间都较短,调用频繁
-
-
定义方式
- 关闭中断,完成所需动作,开中断
-
例子
- 设备驱动、CPU切换、进程通信
系统控制的数据结构及处理
(广义指令)
-
登记的信息和数据结构
-
基本操作
-
进程管理
- 进程状态管理、进程调度和分派、创建与撤销进程控制块
-
存储器管理
- 存储器的空间分配和回收、内存信息保护程序、代码对换程序
-
设备管理
- 缓冲区管理、设备分配和回收
-
中断和异常的概念
定义
(外)中断
定义:指来自CPU执行指令外部的事件
举例
设备发出的I/O结束中断,表示设备输入/输出处理已经完成
时钟中断
一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等
异常(内中断)
定义:是指来自CPU执行指令内部的事件
举例
程序的非法操作码、地址越界、运算溢出、虚存系统的缺页及专门的陷入指令等引起的事件
分类
外中断
可屏蔽中断-INTR线
通过改变屏蔽字实现多重中断
不可屏蔽中断-NMI线
紧急的硬件故障,如电源掉电
硬件中断
内中断
故障
指令执行引起的异常
- 非法操作、缺页故障、除数为零、运算上溢
自陷
事先安排的异常事件
- 条件陷阱指令
通过处理器所拥有的软件指令、可预期地使处理器正在执行的程序的执行流程发生变化,以执行特定的程序
终止
指出现了使得CPU无法继续执行的硬件故障
- 控制器岀错、存储器校验错
软件中断(程序性异常)
处理过程
(操作系统和驱动程序)
检测中断信号
转去并执行中断处理程序
返回原先的指令/终止用户程序
系统调用
概念
指用户在程序中调用操作系统所提供的一些子功能
系统调用可视为特殊的公共子程序
功能
•设备管理。完成设备的请求或释放,以及设备启动等功能。
•文件管理。完成文件的读、写、创建及删除等功能。 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。
•进程通信。完成进程之间的消息传递或信号传递等功能。
•内存管理。完成内存的分配、回收以及获取作业占用内存区大小及始址等功能
由用户态转向核心态
注
由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈,但这个系统堆栈也是属于该进程的
用户态转到核心态,则会用到访管指令,访管指令是在用户态使用的,所以
它不可能是特权指令。
习题
通用操作系统上运行程序不需要像操作系统预定时间,使用时间片轮转调度算法
编译器是操作系统的上层软件,不是操作系统需要提供的功能
批处理系统的主要缺点是缺少交互性
I/O通道是一种特殊的处理器(硬件),它具有执行I/O指令的能力,并通过执行通道程序来控制I/O操作
访管中断
用户态运行"危险性高的"指令转成操作系统的核心态去运行的过程
进程调度算法决定cpu使用权,由操作系统实现,不需要硬件的支持
计算机通过硬件中断机制完成由用户态到核心态的转换
操作系统管理内存的例子
操作系统管理内存时,管理的是内存中的数据放在哪里、哪里可以放数据、哪里不可以放数据(内存保护)、哪里空闲等问题,而内存中的数据是什么、怎么读和写,都不是核心态关心的。就好像操作系统管理的是杯子摆在哪里、哪些杯子中的水可以喝、哪些杯子中的水不能喝,而杯子中是水还是饮料、你是拿起杯子喝还是把吸管插进去吸,都不是操作系统关心的问题。
子程序调用只需保存程序断点,即该指令的下一条指令的地址
发生中断时,初始化中断向量表、保存PSW的值、保存通用寄存器的值、保存中断屏蔽字、提供中断服务都由操作系统完成
区分执行态的主要目的是保护系统程序。用户态到核心态的转换发生在中断产生时,而核心态到用户态的转换则发生在中断返回用户程序时
通道技术和中断技术结合起来就可实现CPU与I/O设备并行工作
CPU启动通道传输数据后便去执行其他程序的计算工作而通道则进行输入/输岀操作(此时cpu与通道并行工作);
当通道工作结束时,再通过中断机构向CPU发出中断请求,CPU则暂停正在执行的作,对岀现的中断进行处理,处理完后再继续原来的工作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了