进程、同步、异步、阻塞、非阻塞

进程

背景知识

  • 进程:运行中的程序,是计算机中最小的资源分配单位
  • 程序与进程的区别
    • 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陷入阻塞

进程的三状态图

  • 就绪
  • 运行
  • 阻塞

应用实例

posted @ 2021-06-04 15:22  小杨的冥想课  阅读(47)  评论(0编辑  收藏  举报