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