操作系统
操作系统的基本概念
操作系统的特征
并发
共享
并发和共享的关系
两个进程同时执行 , (并发性)
需要共享的访问硬盘资源(共享性)
虚拟
虚拟存储器 和空分复用技术
空分复用技术
时分复用技术
异步
在多道程序环境下, 允许多个程序并发执行, 但是由于资源的有限, 进程的执行不是一贯到底的, 而是走走停停
操作系统底层
指令
使用寄存器0, 和1 表示内核态, 还是用户态( 这个叫做PSW的标志位)
当出现中断信号之后就会修改cpu的控制权为内核态
中断和异常
内中断
指令非法就会触发内中断 比如黑客 入侵或者 除0
应用程序想要请求操作系统内核的服务,此时就会执行一条 特殊的指令-陷入指令(也可以叫做Trap指令/访管指令)
外中断
时钟中断 - 由时钟部件发送的中断信号
io设备中断: 外部设备发送的中断信号
判断 两个中断的差别: 与当前执行的指令无关中断信号的来自cpu内外
中断机制的基本原理
系统调用
操作系统体系结构
微内核转换的时候需要状态转换6次
- 外核
操作系统的引导
虚拟机
区别在于是否分配在宿主操作系统
对于第一种vmm 中 我们还可以继续进行划分特权
对于ring1, 2的指令 vmm不需要检查直接执行, 对于ring0的请求在进行检查即可
进程
- PCB 进程控制块
- 进程由 : PCB 程序段, 数据段组成
状态
创建态
就绪态
运行态
CPU会执行该进程对应的程序
阻塞态
终止态
注意: 不能从阻塞态 直接转换到运行态, 也不能由就绪态直接转换到阻塞态
运行态, 也可以转换为就绪态 (时间片到了,处理机被抢占)
单个CPU环境下,同一时刻只有一个进程被执行, 但是在多核环境下,可能会有多个进程处于运行态
在进程控制块中有一个变量state 用于表示当前进程的状态
进程组织
链式方式组织
索引方式组织
进程控制
- 进程控制由原语控制
原语
不可被中断, 原子性
原理 : 使用了关中断指令和开中断指令这两个特权指令来实现原子性
出现时机
撤销原语
步骤
从PCB集合中找到终止进程的PCB
若进程正在运行, 立刻剥夺CPU, 将CPU分配给其他的进程
终止其所有的子进程
将该进程拥有的所有资源归还给父进程或者操作系统
删除PCB
- 触发撤销原语的时机
切换原语
- PSW 程序状态字寄存器
当别的线程抢断之后, 寄存器的值被覆盖, 当进程切回来的时候, 原本的信息就消失了, 这个时候就需要把数据存储到硬盘中。
进程通信
- 进程不能直接去访问其他的进程
共享通信
- 通过共享存储, 进程P 和 进程Q就可以共享信息了
直接通信
间接通信
管道通信
和 共享通信的区别, 就是 管道通信时半双工, 当然我们可以设置两个管道, 实现全双工
- 管道一旦读出, 就会彻底消失, 一个管道允许多个写进程, 一个读进程。( 当然linux 也可以实现 多个读进程)
线程模型
- 什么是线程( 程序执行流的最小单位)
- 引入线程后, cpu调度的对象就是线程了
线程的实现方式
用户线程
内核线程
多线程模型
一对一模型
多对一模型
- 退化成了用户级线程
多对多
线程的状态和转换
处理机调度
高级调度
低级调度
中级调度
七状态模型
进程调度的时机
低级进程调度
进程调度方式
调度器(Scheduler)
- 如果系统支持内核级线程的话, 那么调度的基本单位就是内核级的线程
闲逛进程
- 优先级最低
- 反复的执行0地址指令,占用一个完整的指令周期
- 能耗低
一些进程的评价公式
CPU利用率
系统吞吐量
周转时间
带权周转时间
等待时间
响应时间 : 用户提交请求到首次产生响应所用的时间
调度算法
先来先服务方式
- 对长作业有利, 对短作业无力
短进程优先算法
- SJF (非抢占式)
每次调度选择当前已经到达的且运行时间最短的作业
- SRTN (抢占式)
每当有新的进程进入就绪队列的时候,就需要重新使用调度算法
高响应比优先(HRRN) (非抢占式)
- 抉择策略