进程与线程(进阶概念)

1.进程控制:
对进程整个生命周期中各种状态之间的转换进行控制由于原语实现
2.原语:
就是由若干条指令组成 用于完成一定功能的一个过程 是一个不可分割的基本单位
即原语在执行过程中不允许被中断

(1)创建原语:
‌主要任务:建立进程控制块PCB
‌过程:先申请一空闲PCB 然后将有关信息填入PCB 置进程状态为就绪态 插入就绪队列
(2)撤销原语:
‌主要任务:撤销进程PCB
‌过程:找到要被撤销的PCB 将它从所在队列中消去 撤销属于改进程的一切“子进程”释放资源 并消去被撤销的PCB
(3)阻塞原语:
‌若某个进程的执行过程中需要I/O操作 则该进程调用阻塞原语将其从运行状态转换为阻塞状态
‌过程:产生中断 把处理器的当前状态保护在PCB的现场信息中 ,当前进程置为等待态插入等待队列
(4)唤醒原语:
‌一个进程因为等待某事件的发生而处于等待状态 当该事件后 就用唤醒原语将其转换为就绪状态
‌过程:在等待队列中找到该进程 ,将进程的当前状态置为就绪状态 并插入到就绪队列中排队
3.程序并发执行所需付出的实时开销:
‌创建进程开销:内存空间 I/O设备 PCB
‌撤销进程的开销:对其资源进行回收
‌进程切换的开销:保留CPU 环境 设置新进程CPU环境
这些开销限制了系统中进程的数目 进程切换也不宜频繁 限制了并发程度进一步提高
4.引入线程的目的:
引入进程是为了使多个进程并发执行
引入线程是为了减少程序并发执行所付出的时空开销
5.线程的属性:
‌每一个线程都有一个唯一的标识符和一张线程描述表——TCB
‌不同的线程可以执行相同的程序
‌同一个进程中的各个线程共享该进程的内存地址空间
‌线程是处理器的独立调度单位,多个线程可以并发执行
‌一个线程具有生命周期 经历等待 就绪 运行等生命状态
6.引入线程的好处
‌创建一个新线程花费时间少
‌线程之间的切换花费时间少
‌线程之间通信无需调用内核,不需要额外的通信机制 使得通信简单 信息传递速度快
7.调度算法的设计目标
共同目标:资源利用率高 公平 平衡 强制执行策略
批处理目标:平均周转时间短 系统吞吐量高 处理机利用率好
分时系统目标:响应时间快 均衡性
实时系统目标:截止时间的保证 可预测性
8.进程的同步
进程A从硬盘上读记录,每读出一个记录就存入缓冲区
进程B从缓冲区取出记录加工,直置所有记录处理结束
直接制约关系
9.进程的互斥
多个进程竞争使用打印机 一些变量 表格等资源
进程间互斥是一种间接制约关系
10.相关临界区的调度使用原则
‌当临界资源空闲时,若有一个进程要进入临界区应允许它进入 有空让进 有效利用资源
‌若有一个进程已在临界区,其他要求进入临界区的进程必须等待 ,无空等待 互斥进入
‌当设有进程在临界区而同时有多个进程要求进入临界区 选择其一进入 其他等待
‌任一进程进入临界区的要求应有限时满足 有限等待 避免死等
‌处于等待状态的进程应效率占用处理器 让权等待 避免忙等
11.死锁预防:
破坏不可剥夺条件:
‌若一个进程已经占用了某些资源 又要申请新的资源 在得不到新资源的同时释放原有资源 然后等待
‌若一个进程申请新资源 首先系统检查该资源是否可用 如果可用则分配 否则从其他等待进程剥夺资源分配给该进程
如果没有等待进程占用资源 该进程必须等待 在等待过程中 资源也有可能被剥夺
破坏请求和保持条件:
每个进程必须在开始执行前就申请它所需要的全部资源 仅当系统能满足进程的资源请求且把资源一次性分配给进程后 该进程才能开始执行
破坏资源循环等待条件:
对系统所有资源类型进行线性排序,并赋予不同的序号 进程申请资源时 必须严格按照资源编号的顺序进行 即一个进程先得到编号小的资源才能申请编号大的资源 释放资源时 次序相反
一般原则:
较为紧缺,稀少资源的编号较大
死锁公式:
i个进程需要j个资源:
‌i*(j-1)有可能死锁
‌i*(j-1)+1 一定不会死锁
n 个资源 m个进程
范围:n-m ~ m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

{HENRRY}

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值