系统架构-进程管理

进程的状态

三态模型:阻塞 -> 就绪 -> 运行

  • 就绪状态被调度会进入运行态
  • 运行态时间片到了会回到就绪态
  • 非cpu资源耗尽会进入阻塞状态
  • 阻塞态等待非cpu资源释放会进入就绪态

五态模型:

五态模型:静止就绪、静止阻塞、活跃阻塞、活跃就绪、运行

前趋图

进程的同步与互斥:

  • 互斥:同类资源的竞争关系,是间接制约关系,由资源进行互斥制约,共享使用,同一时刻只允许一个人用
  • 同步:进程间的协作关系,是直接制约关系,是多个进程之间的协作制约关系,至少有两个不同的进程

同步模型的具体应用有:生产者和消费者

互斥模型的具体应用有:打印机

同步模型在应用的过程中需要利用的pv操作

信号量与pv操作

  • 临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机
  • 临界区:每个进程中访问临界资源的那段代码称为临界区
  • 信号量:是一种特殊的变量

pv操作都会结合信号量进行操作,p意味着加锁,v意味着释放锁

s为负数时,即代表有多少个进程在等待

在前趋图中,每个节点都有前驱和后继节点,代表的是两个进程,箭头指向的方向是 P 操作,来源方向是 V 操作,每根间线都代表一个信号量。用来控制两个进程的协作

如果在需要确认信号量的题目中,如果信号量都相等,则无所谓位置,如果信号量不等则需要根据题目进一步确认每个进程所需要的信号量

死锁及银行家算法

进程是资源分配和调度的基本单位,进程占用了资源了使用完会释放

M个进程,各自需要 w个资源,系统共有n个资源,不可能死锁的条件:

n >= m * (w -1)+1 每个进程都差1个最后只要再加1个就可以解决死锁

死锁的的四大条件和避免

  • 互斥:资源是互斥的,不能同时被两个进程使用
  • 环路等待:进程形成环路
  • 不剥夺:每个进程不会去抢夺其他进程已分配的资源
  • 保持和等待:没有资源的情况下会保持和等待

避免:

  • 有序资源分配法
  • 银行家算法

银行家算法:配资源的原对

  • 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程
  • 进程可以分期请求资源,但请求的总数不能超过最大需求量
  • 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源

银行家算法 要注意资源总数和已分配资源数

相关推荐
Mr_Xuhhh5 小时前
Java泛型进阶:从基础到高级特性完全指南
开发语言·windows·python
老天文学家了5 小时前
蓝桥杯备战Python
开发语言·python
ID_180079054736 小时前
除了 Python,还有哪些语言可以解析 JSON 数据?
开发语言·python·json
FreakStudio7 小时前
小作坊 GitHub 协作闭环:fork-sync-dev-pr-merge 实战指南
python·单片机·嵌入式·面向对象·电子diy
普通网友8 小时前
阿里云国际版服务器,真的是学生党的性价比之选吗?
后端·python·阿里云·flask·云计算
小陈工8 小时前
2026年4月2日技术资讯洞察:数据库融合革命、端侧AI突破与脑机接口产业化
开发语言·前端·数据库·人工智能·python·安全
陈晓明start9 小时前
【python】豆包模型,自动生成测试用例初探索
python
阿kun要赚马内9 小时前
Python中元组和列表差异:底层结构分析
开发语言·python
万添裁9 小时前
pytorch的张量数据结构以及各种操作函数的底层原理
人工智能·pytorch·python