进程 并发 线程 032

Posted f-g-f

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程 并发 线程 032相关的知识,希望对你有一定的参考价值。

一 计算机操作原理简介:

  硬盘 永久存储数据的

  内存 暂存数据 

  cpu  运算 三者之间关系如下图

二 并发 : 提高程序的工作效率(伪并行)

技术分享图片

    并行 :  3个cpu同时运行 3个程序

三 进程的创建

  打开设备上安装的程序使其进入运行状态即创建了一个进程

  与程序的区别 :

      1 .程序是指令和数据的有序集合,其本身没有任何运行的含义 , 是一个静态的概念. 而进程是程序在处理机上的一次执行过程,它是一个动态的概念 

      2 .程序可以作为一种软件资料长期存在 , 而进程有一定盛名周期

      3 .程序是永久的,进程是暂时的 

      例如qq 不运行 就是程序 运行起来 就成为一个进程了.

          

  

  

四  进程调度 

     想要多个进程交替运行 操作系统必须对这些进程进行调度 而这个调度也不是随机进行的 是需要遵循一定的法则 因此就有了进程的调度算法 

    先来先服务  调度算法最简单的调度算法 既可用于作业调度 也可用于进程调度 该算法有利于长作业(进程) 不利于短作业(进程) 适合于cpu繁忙性作业 不适合i/o繁忙性作业(进程)

    短作业优先调度 对短作业(进程)优先调度,对长作业不利 不能保证紧迫性作业(进程)被及时处理 长短只是被估出来的

    时间片轮转  :  

    多级反馈队列

五 并发与并行 

    通过进程之间的调度 即进程之间的切换 我们感知到好像是两个视频文件同时在播放 或者音乐和游戏同时在进行 其实无论是并行还是并发 在用户看来都是‘同时‘运行的 不管是进程还是线程 都只是一个任务而已 真正干活的是cpu来做这些任务

    并发 : 伪并行 , 即看起来是同时运行 单个cpu + 多道技术就可以实现并发(并行也属于并发)

    并行 : 同时运行 只有具备多个cpu才能实现并行 将cpu比作高速上的多个同向车道 进程好比是行驶的车辆 大家在自己的车道上行驶 互不影响 同时开车 这就是并行 

    单核下 可以利用多道技术 多个核 每个核也都可以利用多道技术(针对单核而言的)

    例如 有四个核 六个任务 ,这样同一时间有4个任务被执行 一旦某个核遇到i/o就被迫中断执行 此时任务5就会拿该核的cpu时间片去执行 这就是单核的多道技术 而一旦被迫中断的任务的i/o结束了 操作系统就会重新调用它 可能被分配到四个cpu的任意一个去执行 保证cpu一直在工作.技术分享图片

六 同步异步阻塞非阻塞(重点)

  1 .进程状态介绍

技术分享图片

    在程序进行运行过程中 由于被操作系统的调度算法控制 程序会进入几个状态 :就绪 运行和阻塞.

    就绪状态  当进程已分配到除cpu以外所有必要的资源 只要获得处理机便可立即执行 这时的进程状态称为就绪状态.

    执行/运行状态 进程获得处理机 正在处理机上进行 此时的状态称为执行状态

    阻塞状态 状态正在执行的进程 由于等待某个事件发生而无法执行时 便放弃处理机而处于阻塞状态 引起阻塞的事件可以有多种 例如 等待i/o完成 申请缓冲区不能满足.等待信件(信号)等

    事件请求 : input  sleep  文件输入输出 recv accept 等

    事件发生 :sleep input 等完成了

    时间片到了之后又回到就绪状态 这三个状态不断地在转换

 技术分享图片

  2 .同步异步

    同步就是 一个任务的完成需要依赖另一个任务时 , 只有等待被依赖的任务完成以后 依赖的任务才能算完成 这是一种可靠的任务序列 要成功都成功 失败都失败 其实就是一个程序结束才执行另外一个程序 串行的,不一定两个程序就有依赖关系.

    异步就是不需要等待被依赖的任务完成 只是通知被依赖的任务要完成什么工作 依赖的任务也立即执行 ,只要自己完成了整个任务就算完成了 至于被依赖的任务是否真正完成 依赖它的任务无法确定 所以它是不可靠的任务序列.

  3 .阻塞和非阻塞

    与程序(线程)等待消息通知时的状态有关 即是由程序(线程)等待消息通知时的状态角度来说的

  4 .同步/异步 与阻塞/非阻塞

    1 .同步阻塞

    2 .异步阻塞

    3 .同步非阻塞

    4 .异步非阻塞

七 multiprocess 模块

  仔细说来 multiprocess 不是一个模块而是Python中的一个包 ,管理进程的包. 

  1 .process 模块介绍  该模块是一个创建进程的模块 借助它可以完成进程的创建

   

以上是关于进程 并发 线程 032的主要内容,如果未能解决你的问题,请参考以下文章

什么是并发和并行?什么是进程和线程?进程和线程的区别

python并发编程:多线程,多进程

Java并发编程之美之并发编程线程基础

并发线程、进程和多核

线程进程与程序+并行与并发

Java 并发编程线程简介 ( 进程与线程 | 并发概念 | 线程间通信 | Java 并发 3 特性 )