首页 > 技术文章 > 进程的两大概念

YGZICO 2019-12-06 20:56 原文

进程的两大概念

一、进程的并行与并发

  • 并行:是指两者同时执行,比如赛跑,两个人都在不停的往前跑
  • 并发:是指资源有限的情况下,两者交替轮流使用资源,比如一段路同时只能过一个人,A走一段后,让给B,B用完继续给A,交替使用,目的是提高效率
  • 区别
    • 并行是同时运行,只有具备多个CPU才能实现并行
    • 并发是伪并行,看起来是同时运行,单个CPU+多道技术就可以实现并发


二、同步异步阻塞非阻塞

  • 阻塞与非阻塞

    • 阻塞(等待),凡是遇到I/O都会阻塞

    • I/O

      input()
      output()
      time.sleep()
      文件的读写
      数据的传输
      
    • 非阻塞(不等待),除了I/O都是非阻塞

  • 同步和异步

    同步和异步值的是"提交任务的方式"

    • 同步:一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态可以保持一致
      • 比如:若有两个任务需要提交,在提交第一个任务时,必须等待该任务执行结束后,才能继续提交并执行第二个任务
    • 异步:不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了。至于被依赖的任务最重是否真正完成,依赖它的任务无法确定,所以它是不可靠的任务序列
      • 比如:若有两个任务需要提交,在提交第一个任务时,不需要原地等待,立即可以提交并执行第二个任务
  • 进程的三种状态

    • 就绪状态:当程序已分配到CPU以外的所有必要的资源,只要获得处理器便可以立即执行,这时的进程状态为就绪状态
    • 执行/运行状态:当进程已获得处理器,其程序正在处理器上执行,此时的进程状态为执行状态
    • 阻塞状态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理器而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等

问:阻塞和同步是一样的吗?非阻塞和异步是一样的吗?

  • 同步与异步:提交任务的方式

  • 阻塞与非阻塞:进程的状态

  • 异步非阻塞:CPU的利用率最大化

推荐阅读