- 进程
- . 进程是程序在一个数据集合上运行的具体过程,是一个动态的概念
- . 是系统可独立进行资源分配和调度的 基本单位
- . 是程序一次执行的过程;没有程序就没有进程程序的一次执行过程(创建就产生,撤销就消亡)
- . 一个进程不会长时间占用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:每个进程需要的资源数
银行家算法