• 进程 并发 线程 032


    一 计算机操作原理简介:

      硬盘 永久存储数据的

      内存 暂存数据 

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

    二 并发 : 提高程序的工作效率(伪并行)  遇到io就进行切换 

        1进程切换   2保存现场 保存程序运行的信息

        并行 :  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 模块介绍  该模块是一个创建进程的模块 借助它可以完成进程的创建

       

  • 相关阅读:
    沙盒解决方案part1:沙盒解决方案的用途和好处
    session定义使用和丢失问题小结(20120101有更新&&20121026又更)
    普通pc检测维修的一个特例:检测\换板\电源\IDE信道\声卡驱动
    用户sa登录失败,该用户与可信sql server连接无关联
    trycatchfinally(C# 简单学习)
    按钮只能一次提交:ajax页面中调用ascx控件,如何设置ascx中按钮为false
    开始学习:Ajax的全称是:AsynchronousJavaScript+XML
    ajax学习的第一次亲密接触.(虽然还有一点模糊)
    .net2.0 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的
    创建可重复使用的控件ascx-一页只能有一个服务器端 Form 标记?
  • 原文地址:https://www.cnblogs.com/f-g-f/p/9831567.html
Copyright © 2020-2023  润新知