系统架构-进程管理

进程的状态

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

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

五态模型:

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

前趋图

进程的同步与互斥:

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

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

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

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

信号量与pv操作

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

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

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

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

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

死锁及银行家算法

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

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

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

死锁的的四大条件和避免

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

避免:

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

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

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

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

相关推荐
Li emily2 小时前
解决了加密货币api多币种订阅时的数据乱序问题
人工智能·python·api·fastapi
2301_781571422 小时前
Golang格式化输出占位符都有什么_Golang fmt占位符教程【通俗】
jvm·数据库·python
asdzx672 小时前
使用 Python 为 PDF 添加页码 (详细教程)
python·pdf·页码
AI技术控3 小时前
《Transformers are Inherently Succinct》论文解读:从“能表达什么”到“多紧凑地表达”
人工智能·python·深度学习·机器学习·自然语言处理
金融大 k5 小时前
Python 全球指数监控面板:TickDB + REST + WebSocket 完整方案
python·websocket
啊哈哈121385 小时前
系统设计复盘:为什么 Agent 的 ReAct 循环必须内嵌确定性保护层——以 FitMind 健康助手的路由与步骤控制为例
人工智能·python·react
一颗牙牙6 小时前
安装mmcv
开发语言·python·深度学习
大数据魔法师6 小时前
Streamlit(二)- Streamlit 架构与运行机制
python·web
m0_470857647 小时前
PHP怎么实现工厂模式_Factory模式编写指南【指南】
jvm·数据库·python
大数据魔法师7 小时前
Streamlit(三)- Streamlit 多页面应用开发
python·web