操作系统复习总结
-
什么是os
从用户的角度看呢,os是用户和硬件系统的借口。
从资源管理角度看,os是资源的管理者,这句话我觉得是核心,os是计算机的资源管理者,管理计算机的很多资源。
从虚拟机角度看,os是一组命令 -
os到底是干啥的
os是程序的集合,管理资源(处理器资源,存储器资源,文件管理,内存管理等等) -
操作系统的四大特性
- 并发性:(多个事件在同一个时间间隔内发生)
- 共享:(互斥共享和同时共享):临界资源只允许一个进程在这段时间访问,和多个进程可以同时访问。
- 虚拟:把一个物理实体,变成若干个逻辑实体。
- 异步:进程的推进顺序是不可预知的。因为竞争资源的存在导致。
其中,并发和共享互为存在条件,如果不并发,共享就没有意义。如果不共享,无法并发。
-
处理机的特权级
分级是为了保护os的系统,不可能让用户级的程序拥有太大的权利的。- 管态:又称系统态,处于这个状态的进程可以使用所有指令,特权非特权级别的指令都可以使用。
- 目态:又称用户态,只能是有非特权指令,并且只能访问自身所在的存储区域。
-
系统调用
- 系统调用的流程提取如下:
- 用户发送请求系统调用指令
- 传递系统调用的参数
- 执行trap(陷入)指令
- 执行相应的服务程序
- 返回用户态
- 系统调用本身是操作系统为了用户提供的一些接口,一些高级的语言比如C,Java会封装这些系统调用成为一些库函数。而系统调用
- 系统调用的流程提取如下:
-
进程的一些知识点
- 进程是静止的程序。也可以说进程是程序的一次执行过程。而程序本身是一个指令的集合。程序和进程不是一一对应的,一个程序可以对应多个进程,(多次执行)。
- 程序的执行可以分为顺序执行与并发执行
- 顺序执行:
- 顺序性:指令自上而下,一条一条运行
- 封闭性:指令的执行与外界因素没什么关系
- 可再现性:再一次运行运行程序,结果相同
- 并发执行:
- 间隔性:运行一段时间,暂停一段时间。
- 不可再现:由于推进速度的不同,结果可能会不一样
- 失去封闭性:本进程暂停运行的同事,可能会有其他的进程来修改本进程所需要的资源。
- 顺序执行:
- 进程是动态的,具有以下几点特征:
- 动态
- 独立性(它是系统资源分配的最小单位)
- 并发性
- 异步性
- 一个进程的结构:
- pcb(记录了这个进程的一些信息,相当重要)
- 数据段
- 程序段
- Pcb:
- 记录进程的动态特征
- 是进程存在的唯一标志
- pcb的一部分一直存在在内存中,也就是,就算虚拟内存在,也不会全部调出去。
- 进程同步
- 同步的原则:
- 空闲让进:临界区资源空就可以拿到
- 忙则等待:临界区资源不空,就等待别的进程用完
- 有限等待:不能一直无限期等下去
- 让权等待:没有拿到临界区资源的进程,释放cpu
- 同步的原则:
- 进程的调度
- 调度的时机
- 时间片用到了
- 申请临界区资源需要等待
- 中断返回等
- 进程调度算法
- 先来先服务(FCFS):哪个进程先进入,就先处理它,处理完再说(对短进程不利)
- 短作业优先:短的进程先服务(对长进程不利)
- 优先级算法:有两种,静态的就是对进程设定权重,权重大的先服务,动态的是等待时间越久优先级越大。
- 时间片轮转调度:一个进程分配一个时间片,运行结束,就让出cpu。
- 多级反馈调度:优先级高的队列越能进入cpu,一个队列中的进程是遵循FCFS来执行的。
8.进程状态图
- 创建态到就绪态:需要分配除了cpu之外的一切资源(这里也说明了,cpu其实是最重要的资源),从创建态可以直接到就绪挂起状态。
- 就绪态:就绪态的进程拥有除了cpu之外的一切资源。就绪态和就绪挂起可以互相转换。就绪态的进程一旦拥有了cpu就会变成运行态。
- 运行态:运行态的进程拥有包括cpu在内的所有资源。一旦时间片到了,或者cpu被强占,运行态的程序就会退化到就绪态,而当运行态的程序需要请求一些系统调用(比如输入输出)她就会进入阻塞态,阻塞态的进程需要等待被唤醒。
- 阻塞态:阻塞态的进程是不能直接进入运行状态的。阻塞状态的进程放弃了自己的所有资源,但是这个进程还是在内存中的。
- 阻塞挂起和就绪挂起,长时间不能进入就绪态的就绪进程和阻塞进程,就会被挂起,挂起的意思是,进程被调入外存,而不在内存了
- 终止态,系统运行完毕,就会进入终止态。
- 调度的时机
-
线程的一些知识点:
- 进程是系统分配资源最小的单位。但是县城是cpu执行的最小单位。
- 属性有:
- 并发性
- 共享所属进程所有的资源
3.线程分为用户级线程和系统进程。
-
死锁
死锁:一组进程中,每个进程都在无限等待另一个进程释放资源。- 死锁产生的原因
- 竞争资源:资源够多就不需要竞争了。
- 进程的推进顺序不当
- 死锁的必要条件
- 互斥
- 环路等待
- 请求与保持
- 不剥夺
- 死锁产生的原因
-
存储器管理
- 内存的分配
- 分区分配,分区等长,或者分区不等长
- 可变分区分配
- 首次适应
- 最佳适应
- 最坏适应
- 可变分区分配之分页与分段
- 分页
- 基本概念:页面=页,页框=帧。
- 地址结构 页号P + 页内地址d
- 页表:
理解这张图就能把页表这个概念理解透彻了。
虚拟地址分为,页号,页内地址。首先根据页号找到页表中块的存储位置,再根据页内地址映射出真实的物理地址。 - 多级页表:多级页表的存在主要是为了解决页表太大,读取一张页表很占内存的问题。
- 快表:块表的存在是记录近几次访问到的内存地址,提高访问速度。如果这个页号是之前存在快表中的,那无需读取页表,直接访问内存地址即可。
- 分页是对程序员隐藏的,就是不可见的,虽然提高了内存的利用率,但是对于使用者来说是一个黑盒
- 分页
- 分段式(这个是对程序员不隐藏的)
- 段页式存储(用的最多的)
- 内存的分配
-
虚拟存储(两张图)
- 页表项
- 页号
- 物理块:在内存中的地址
- 状态位:是否在内存
- 访问字段:提供页面置换算法使用
- 修改为:是否被修改
- 外存地址:如果放在外存,那是放在了哪儿
- 页面置换算法
- 先进先出
- 始终算法
- LRU算法
- 最佳算法(不可能存在)
- 页表项