进程

Process

进程
. 进程是程序在一个数据集合上运行的具体过程,是一个动态的概念
. 是系统可独立进行资源分配和调度的 基本单位
. 是程序一次执行的过程;没有程序就没有进程程序的一次执行过程(创建就产生,撤销就消亡)
. 一个进程不会长时间占用CPU资源,CPU资源会被划分为多个时间片
. 异步:各并发进程各自独立,以不可预知的速度推进
. 独立:进程之间对资源的分配和调度是独立的
. 组成
程序块
进程控制快PCB:进程的唯一标志
数据块
线程
. 是进程内部的子单位
. 对进程细分;一个进程可以有多个线程
. 可以被独立调度,但不能分配资源
. 线程之间可以彼此共享资源|不是独立被分配;但是程序计数器、寄存器和栈空间独有,不共享
状态
. 三态模型是进程状态的基础,将整个进程运行状态分为了:运行、阻塞、就绪
. 如果考虑挂起,就会有五态模型,内存资源不足的时候,将某个进程挂起从内存移动到磁盘里变为静止xx的状态,后面我们再运行
1. 就绪
. CPU资源就绪,非CPU资源未就绪,等待非核心资源的分配
. 一旦CPU空闲,被调度执行
. 就绪态的资源不会被剥夺,因此不会回到等待态
2. 运行
. 正在执行
. 执行完毕后,要么继续等待下一次|就绪,要么消亡
. 某一个进程自己的时间片用完了还未分到新的资源,就会进入就绪态去排队等待下一个时间片的到来
3. 阻塞
. 也称等待|睡眠
. 两个资源都不满足;等待分配和调度
. 等待态不能直接进入运行态;只能先到就绪态才能到运行态
. 就绪态不能直接进入等待态;只能从运行态进入等待态
. 等待态→就绪态是被动的,不受进程控制;一旦条件满足,即发生转移
. 终止|消亡:回收资源;回收PCB
互斥模型
同步模型
信号量PV
. 使用原语操作信号量,方便实现进程同步、进程互斥|协调进程的并发
. 系统提供的具有特定功能的原语;这里采用荷兰语P、V表示,俩者成对出现
S
. 信号量|资源数,是一种特殊的全局变量变量,用来记录相应的资源数量
. 是一个整数,可以是0或者负数;也可以是复杂的记录型数据
P(S)
. 锁定|占有资源
. 信号量S-1
. 每执行1次,就申请1个资源
. 如果S<0,说明资源不够用,把当前进程放入阻塞队列去等资源
. S负的越多,等待资源的进程就越多
V(S)
. 解锁|释放资源
. 信号量S+1
. 每执行1次,就释放1个资源
. 如果S<=0,说明阻塞队列里是有进程在排队,通知下他们有资源了,进入就绪状态
说明
. 通过加锁/解锁实现资源的互斥使用
. 一定是对资源S的占用P和释放V
. 有可能失锁
失锁
. 2个或多个进程同时要求对方占用的互斥资源|你申请我的,我申请你的
. 保持和等待
. 进程对已有资源的保持使用|执行中占用和对新资源的等待使用|就绪中占用导致已有资源不能释放
. 就绪中占用:就绪中申请的资源,不可被剥夺
. 执行中占用
. 不剥夺:进程不能夺取别的进程正在使用的资源,只能由进程主动释放
. 环路等待:互相请求对方的资源;A等B的CPU资源,B等A的内存资源,他们互相等待都不执行,就会死锁
最小资源总数n >= ( w - 1)*m + 1
m:进程数
w:每个进程需要的资源数
银行家算法