1.什么是进程:
进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
2.引入进程的目的:
在多道操作系统中,程序的执行属于并发执行,此时他们将失去其封闭性,并具有间断性,以及其运行结果不可再现的特性,为能使程序并发执行,并且可以对并发执行的程序加一描述和控制,就需要引入进程这个概念。
3.进程的特征:
(1)动态性:进程的实质是进程实体的执行过程。
(2)并发性:指多个进程实体同存于内存中,且能在一段时间内同时运行。
(3)独立性:是指进程实体是一个能独立运行,独立获得资源和独立接收调度的基本单位。
(4)异步性:指进程的运行是以不可预知的速度向前推进的。
4.进程的状态
(1)创建态
(2)就绪态
(3)阻塞态
(4)运行态
(5)结束态
5.进程状态之间的转换:
(1)NULL -> 创建: 创建一个新进程,进程进入创建态。
(2)创建 -> 阻塞态:进程所需要的资源(除处理机)被占用,进程进入阻塞态。
(3)创建 -> 就绪态:进程所需要的资源(除处理机)都可以申请到。进程进入就绪态。
(4)运行态 -> 结束态: 进程完成任务,或是遇到无法克服的困难,进程结束,进入结束态。
6.引入线程的目的:
减少程序在并发执行时所付出的时空开销。
7.线程的特征:
(1)线程作为调度的基本单位,不拥有资源,调度的开销小。
(2)一个进程里的线程和不同进程的线程都是并发运行的。
(3)独立性,线程的独立性不如进程,进程的资源大多不能被其他进程使用,而在同一个进程内的线程却可以共享彼此的资源。
8.处理机的调度层次:
(1)高级调度
高级调度又称作业调度,面向作业,在多道批处理系统中应用。
功能是:根据某种算法,将在外存上的处于后备队列上的进程调入内存,为他们创建进程。
(2)低级调度
低级调度又称为进程调度,调度对象是进程
功能:决定就绪队列中哪个进程占用处理机。
(3)中级调度
中级调度又称内存调度,提高内存利用率和系统吞吐量。将那些在内存中暂时无法运行的程序调出内存,将那些可以运行的进程从外存调入内存。
9.进程调度算法
(1)三个基本衡量标准:
周转时间:周转时间是指从作业提交到作业完成所经历的时间,包括作业等待,在就绪队列中排队,在处理机上运行及进行输入输出所花费的时间的总和。
带权周转时间:带权周转时间 = 作业周转时间 / 作业实际运行时间(结果都大于等于1,所以算法的带权周转时间越少越好)
等待时间:等待时间指进程处于等处理机状态的时间。
响应时间:从用户提交到系统首次响应的时间。
(2)进程调度算法
2.1 FCFS(First Come First Service) 先来先服务 不可剥夺算法。
2.2 SJF (Shortest Job First) 短作业优先算法。
2.3 SRTN (Shortest Remaining Time Next)SJF 的抢占式版本
2.4 高响应比优先算法 优先级 = (等待时间 + 要求服务时间) / 要求服务时间
2.5 时间片轮转算法 抢占式
2.6 多级反馈队列 抢占式
10.死锁的定义:死锁是指多个进程因竞争资源而造成的一种互相等待,若无外力作用,这些进程无法向前推进的现象。
产生死锁的必要条件:
(1)不剥夺条件:进程获得的资源在未使用完之前不能被其他进程剥夺。
(2)互斥条件:进程要求对所用资源进行排他控制。
(3)请求并保持条件:即进程有多个资源,但还是在申请新的资源,并且手中的资源不释放。
(4)循环等待条件:存在一个循环等待链,{p0 - pn - 1} ,使得 pi 请求的资源被 p(i + 1)%n 持有。
预防死锁的方法:
(1)破坏互斥条件:若系统对资源都能共享访问,系统就不会进入死锁。
(2)破坏不剥夺条件:当一个手持资源的进程请求新的资源在等待时,它必须释放已经保持的资源。
(3)破坏请求并保持条件:进程在运行前申请完他需要的所有资源才能运行。
(4)破坏循环等待条件:为临界资源编号,每次只能申请比以前资源号更高的进程。
解决死锁的方法有:
死锁的预防 破坏必要条件
死锁的避免 银行家算法
死锁的检测 操作系统检测