进程线程

本文为博主学习后自我总结用,如有错误敬请指出

1.进程线程的概念
进程:进程是程序的一次执行
线程:线程是操作系统能够运算调度的最小单位.
2.进程的三种基本状态
运行态:进程占有CPU,正在CPU上运行
就绪态:进程拥有了除CPU以外的所有资源,但由于没有空闲CPU,而暂时不能运行
阻塞态:因等待某一事件而暂时不能运行
3.创建态和终止态
由于进程的创建和终止不是在一瞬间完成的,因此引入这两个状态
创建态: 进程正在被创建, 操作系统为进程创建并初始化PCB, 分配内存等资源
终止态:进程正在被操作系统销毁, 所有资源被回收, 撤销PCB
他们的关系如下图所示
在这里插入图片描述
4. 进程的控制(实现进程状态的切换)
使用原语来进行进程状态的切换,所谓原语就是执行期间不允许中断,只能一气呵成的操作
这种不可被中断的操作叫做原子操作
原语采用"开中断指令"和"关中断指令"来实现
关中断指令执行后, 如有外部中断信号, 则不理睬, 即不转入中断处理程序
开中断指令执行后, 如有外部中断信号, 则保存当前运行状态, 转入中断处理程序
在这里插入图片描述
接下来看看几种原语
在这里插入图片描述
创建原语
进程创建的过程:
申请空白PCB
为新进程分配所需资源
初始化PCB
将PCB插入就绪队列
在这里插入图片描述

撤销原语:
撤销过程:
从PCB集合中找到终止进程的PCB
若进程正在运行,立即剥夺CPU, 将CPU分配给其他进程
终止其所有的子进程
将该进程拥有的所有资源归还给父进程或操作系统
删除PCB
在这里插入图片描述
阻塞和唤醒原语
进程切换的原语
进程切换的原语

由此可以看出,这些原语无非是对进程做三件事情:
更新PCB中的信息(修改进程状态标志, 保存运行环境, 从PCB恢复运行环境)
将PCB插入合适的队列
分配或回收资源

5.进程的通信
在这里插入图片描述
有三种方式:
共享内存
消息传递
管道通信
在这里插入图片描述
在内存中开辟出一块内存, 称其为共享空间. 两个进程都可以对该空间做读写操作, 不过这些操作必须是互斥的.
互斥: 进程1在对共享空间进行操作时, 进程2必须等待进程1操作结束后才能进行操作.(PV操作实现)
在这里插入图片描述
管道其实是指用于连接读写进程的一个共享文件,又名pipe文件. 其实就是在内存中开辟一个大小固定的缓冲区.
在这里插入图片描述
进程间的数据交换以格式化的消息为单位. 进程通过操作系统提供的"发送消息/接受消息"两个原语进行数据交换.
直接通信方式: 直接将消息挂到接收进程的消息缓冲队列上
间接通信方式: 消息要先发送到中间实体(信箱)中, 因此也称为"信箱通信方式"
6. 为什么要引入线程
因为有的进程要同时做很多事情, 而传统的进程只能串行的执行一系列程序, 因此引入了线程来增加并发度.
比如QQ, 我想发送文件和视频通话同时进行, 传统的进程因为串行无法达成, 因此开启两个线程, 分别执行相应的任务, 提高并发度.
在这里插入图片描述
在这里插入图片描述
需要注意的是, 用户能够看见的线程并不一定是处理机分配的单位, 只有内核级线程才是处理机分配的单位.
7. 进程的七状态模型
在这里插入图片描述

在这里插入图片描述
这里引入挂起原语, 挂起与未挂起的区别在于挂起是将进程的进程映像调至外存, 内存中只保留PCB.
8. 进程的调度方式
进程的调度是指从就绪队列中选出一个进程进行执行
进程的切换是指一个正在执行的进程让出处理机, 让另一个进程占用处理机的过程.
在这里插入图片描述
在这里插入图片描述
抢占式是死锁产生的必要条件之一.
9. 调度算法
共有6种, 是重点哦
前三种虽然简单, 但确实后面的基础, 适合早期的批处理系统
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后三种, 适合重交互的系统
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

10.信号量机制(实现进程互斥同步的方法)
在这里插入图片描述
wait原语就是P操作, signal原语就是V操作
信号量就是一个变量.
在这里插入图片描述
整形信号量的缺点: 如果资源数不够, 就会让进程进入循环等待, 该进程不会释放处理机, 造成忙等现象, 降低工作效率.
在这里插入图片描述

因此人们又提出了记录型信号量, 记录型信号量是一个结构, 其中包含了剩余资源数value, 和一个等待队列头 *L.
执行wait原语时, 先将信号量S.value–, 然后判断其是否小于零, 如果小于零, 则执行block原语将其置于该资源的等待队列中.
执行signal原语时, 代表有进程使用完了该资源, 需要将该资源进行释放, 将S.value++, 如果S.value<=0, 代表该资源的等待队列中有进程正在等待该资源, 执行wakeup原语将位于等待队列中的一个进程唤醒,将其从阻塞态变为就绪态.
记录型信号量克服了整数型信号量的缺点, 当当前资源数不够时, 进程会让出处理机进入阻塞态, 而不是忙等.
在这里插入图片描述

11.信号量机制实现进程同步
在这里插入图片描述
与控制资源不同, 用来控制同步的信号量将会被初始化为0. P操作使信号量+1,V操作使信号量-1.
在前操作之后进行V操作,让信号量>0, 代表前驱操作已完成, 执行到P操作时-1, 发现信号量仍然>=0, 因此不会执行block原语, 而是执行后继操作
相反的, 若先执行到P操作, 信号量-- = -1,会使自己执行block操作而释放处理机进入阻塞态,进入等待队列, 当执行到V操作时, 信号量加1=0会执行wakeup原语唤醒在等待队列中的相应进程.
从而实现进程的同步控制
12.用信号量实现前驱关系
在这里插入图片描述

本文中图片截取自bilibili的王道考研的计算机操作系统篇,链接放下,欢迎大家观看

操作系统_王道考研_bili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值