1.进程
本文中大部分图片改编自:《小林coding》、王道考研操作系统、程序员cxuan
进程与程序的区别与联系
程序是静态的,进程是动态的
程序是永久的,进程是暂时存在的
进程是程序的一次执行过程,动态产生、变化、消亡
1.1 进程的组成
PCB:描述进程的运动变化过程,系统可以利用PCB来控制和管理进程(进程存在的唯一标志)
程序段:程序代码(指令序列)
数据段:运行过程中的各种数据,如原始数据、中间结果、最终结果
1.2 进程的状态与转换
运行态 → \rightarrow →阻塞态 是进程自身做出的主动行为(事件未发生就自己转换为阻塞)
阻塞态 → \rightarrow →就绪态 是进程自身做出的被动行为(事件发生就发生转换)
运行态:CPU√、其他所需资源√
就绪态:CPU×、其他所需资源√
阻塞态:CPU×、其他所需资源×
五状态模型

七状态模型

1.3 进程的组织方式
进程的组织方式一般有两种:
1.链式
2.索引
大部分操作系统使用链式
将处于同一状态的进程的PCB放在同一个队列当中,且优先级高的处在靠近队头的位置
下图来自:《小林coding》

1.4 进程的控制

原语是一种特殊的程序,它执行过程中不可被中断(即所谓的原子性)
创建原语实现创建进程
撤销原语实现撤销进程,即终止进程
阻塞原语(Block)实现进程由运行态 → \rightarrow →阻塞态
唤醒原语(Wakeup)实现进程由阻塞态 → \rightarrow →就绪态
切换原语实现不同进程间的切换,例如将目前在CPU运行的进程切为就绪态(回到内存),将内存中处于就绪态的另一个进程切为运行态(去到CPU)
原语在操作系统中的位置
下图来自王道考研操作系统

原语的原子性通过“关中断指令”和“开中断指令”来实现

1.5 进程的通信
进程通信是指进程之间的信息交换
进程间的通信必须通过内核(内核是由多个内核程序组成,内核在内核空间中,这块区域通过页表来控制访问权限)来作为中介(只要控制进程就需要内核,因为PCB在内核中)

同步互斥工具:PV操作
信号量表示资源的数量,对应一个整型变量(sem)
P 操作:将信号量值减 1(sem-1),表示申请占用一个资源。如果sem小于 0,表示已经没有可用资源,则执行 P 操作的进程被阻塞。如果sem大于等于 0,表示现有的资源足够你使用,则执行 P 操作的进程继续执行(引用自:一文搞懂六大进程通信机制原理(全网最详细))
V 操作:将信号量值加 1(sem+1),表示释放一个资源,即使用完资源后归还资源。若加完后sem小于等于 0,表示有某些进程正在等待该资源,由于我们已经释放出一个资源了,因此需要唤醒一个等待使用该资源(就绪态)的进程,使之运行下去(引用自:一文搞懂六大进程通信机制原理(全网最详细))
下图来自《小林coding》



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/127847.html