4.0进程管理
4.1进程概念
4.1.1进程的基本概念


进程是一个动态的概念,是个过程。




还有其他的分类标准(...)
4.1.2进程状态

阻塞状态也是等待状态(Wait)




4.1.3进程控制块





state:用来描述进程的状态:运行、就绪、阻塞
counter:进程还可以运行tick数量,减至0后进入就绪
priority:进程优先级
pid,uid,gid:和进程的标识有关
p_pptr:和进程家族关系有关
next_task:和进程链表,方便操作系统遍历进程

mm:和内存有关
fs:和文件系统有关
policy:和进程调度策略有关


4.2进程控制
4.2.1进程控制概念












4.2.2Windows进程控制
、

上述三个函数对CreateProcess一定程度上有一定的封装

IpStartupInfo :启动信息,设置初启的状态的
IpProcessInformation :输出参数

应用例子:



第一个方式比较温和
第二关方式非常暴力 强制结束
4.2.3Linux进程控制


子进程是父进程的复制。
唯一差别是ID与时间有关的信息不一样。

fork创建了子进程
父进程和子进程并发运行
所以输出来两个HELLO WORLD!

在父进程执行一次,子进程也会执行一次。

父进程的pid就是子进程的ID
父进程和子进程谁先输出不得而知

从绿色箭头处开始并发
在Linux中,除了init,其他所有进程都由fork函数来创建。
init函数是所有函数的主线,其他的任何进程都由fork来创建
在创建进程的时候,通常会调用exec函数簇



一共有六个函数,前五个都是对第六个的一定程度的封装。
4.3.1线程的概念
1.线程是可由CPU直接运行的实体。
2.一个进程可以创建多个线程。
3.多个线程共享CPU可以实现并发运行。


4.3.2线程的典型应用场景
1.实现在线看电影
并发功能:视频解码,音频解码,网络接收...
每个功能都创建为一个线程,从而实现多功能的并发。


解决办法:把“后台计算”函数创建为“线程”。





4.4.1临界区和临界资源

在并发环境下,可能出现三种结果,导致错误

这样做确保了,答案的正确,把这个区域叫做临界区。





临界区不能太大也不能太小。

4.4.2锁机制


上述代码称为上锁原语。


4.5.1同步和互斥的概念



两者的动作之间有相应的关联。

互斥关系属于特殊的同步关系。(互斥属于同步的一种)
4.5.2P-V操作的概念
信号灯概念





V操作可能唤醒阻塞的进程。
4.5.3P-V操作解决互斥问题





4.5.4P-V操作解决同步问题


4.5.5经典的同步问题










4.6.1Windows同步机制


错误代码:



正确代码:










4.6.2Linux父子进程同步







4.7.1匿名管道通信










4.7.2Linux信号通信

















来源:CSDN
作者:conquistado
链接:https://blog.csdn.net/weixin_41965277/article/details/103872213