进程、同步、异步、阻塞、非阻塞
进程
背景知识
- 进程:运行中的程序,是计算机中最小的资源分配单位
- 程序与进程的区别
- C程序只是一个文件
- 进程是这个文件的被CPU运行起来
- 在操作系统中的唯一标识符:Pid
操作系统调度进程的算法
- 短作业优先
- 先来先服务
- 时间片轮转
- 多级反馈算法:结合短作业优先、先来先服务与时间片轮转的算法
- 尽量在程序的开始阶段少使用IO
并行与并发
- 并行
- 两个程序 两个CPU 每个程序分别占用一个CPU自己执行自己的
- 看起来是同时执行,实际在每个时间点上都在各自执行着
- 并发
- 两个程序 一个CPU 每个程序交替的在一个CPU上执行
- 看起来在同时执行,但实际上仍然是hi串行的
同步 异步 阻塞 非阻塞
-
同步
- 烧水、吹头发
- 停下烧水 吹头发
- 吹完头发之后继续烧水
- 让你做某件事,但要等结果:喊你吃饭并在旁边等你一起去吃饭
-
异步
- 烧水 、 吹头发
- 吹头发 、烧水也在继续
- 让你做某件事,但不等结果:喊你去吃饭,然后直接走了
-
阻塞:
- CPU不工作
-
非阻塞
- CPU工作
-
同步阻塞
- cono.recv,需要等到recv的返回的信息之后函数cono才能继续执行
-
同步非阻塞
- func() 没有IO操作,cpu不暂停所以是非阻塞
- 调用函数,但该函数内部不存在IO操作
-
异步非阻塞
- 把func扔到其他任务里去执行
- 我本身的任务和func任务各自执行各自的 没有io操作,充分利用cpu的资源
- 一个函数调用另外一个函数,但不用等其返回结果,继续自己的运行
-
异步阻塞
- 调用某个程序时,该程序继续执行,但本身具有IO操作时CPU陷入阻塞
进程的三状态图
- 就绪
- 运行
- 阻塞
应用实例
记录学习的点点滴滴