进程与多并发

01 进程的初始

  程序:应用软件,一堆代码文件

  进程:一个正在执行的程序/文件,抽象的概念

  启动一个进程具体过程:

  程序存在硬盘,磁盘中,当你双击(出发了)操作系统,操作系统就会将你的程序加载到内存,然后交于cpu进行处理

  进程的由来:源于操作系统

02 操作系用的发展史

  一个进程:cpu 去刷碗,炒菜

  来一个任务(活) 献给操作系统,然后有操作系统给了cpu:cpu做这个任务才是一个进程

  操作系统:

     1.定义 : 操作系统就一个软件,管理,协调,控制计算机硬件与软件之间的控制软件.

     2.作用:

      如果现在没有操作系统,让你完成一个程序:

      写两层:

        1,如何调用控制cpu,硬盘,内存

        2.具体的你的程序的代码.

      a,将一些丑陋的与硬件的接口变成了漂亮的美丽的接口.

        f = open(三要素)

        同一时刻多个进程共同抢占一个cpu资源.

      b.操作系统要合理的有序的去安排不同的进程的执行顺序问题.

  操作系统与软件的区别:

     操作系统与用户的禅意并不在于二者所处的地位.特别的,操作系统是一个大型,复杂,长寿的软件

  操作系统的发展史:

  机械类:算盘

  电子类的计算机:第一代:二战时期哈佛大学创建的电子计算机

  工作流程:程序员拿着插件版(后期穿孔卡片),预约时间去计算机房 研究

  

  第一代计算机 没有操作系统概念的

  优点:一个程序员可以独享一个计算机

  缺点:

    1,浪费资源,一个计算机只能供一个人使用

    2,所有的程序都是串行的,效率很低.

  第二代计算机:分为三部分,两个机器组成

  工作流程:程序员按照程序将字节的穿孔卡片(10个)给了1401 转化为磁带 , 交给7094机器运行处结果

  有点:批处理,节省了计算机的时间

  缺点:

    1,中间传输还需要人员参与,效率低

    2,所有程序还是串行处理

    3,每个人不能独享计算机了,而且你的bug不能及时修复

 

  第三代计算机:集成电路,多道程序技术

  一个程序:IO(Input Output)计算

    计算机:既可以处理IO,又可以处理计算.

  单个cpu:

    多道技术:

      炒菜,洗衣服,洗脚

      前提:如果这三家事情没有一点IO,全部都是计算,

      空间上的复用:(内存可以加载很多个不同的任务)

      

      时间上的复用:(好比cpu处理3个任务  炒菜,洗衣服,洗脚)

        1,遇到进程中的IO时,cpu就切换

          IO:用户输入input,f.read()

        2,一个进程长时间被cpu处理时,操作系统就强硬的将cpu掉出去处理下一个进程

 

    如果每个进程都有不同的IO阻塞,遇到进程中的IO时,cpu就切换,极大地提升了效率

        炒菜: 10 10 20分钟
        洗衣服: 10 40 50分钟
        拖地: 20 5 25分钟

        串行: 95分钟.
        并发:一个cpu在同一个时刻处理不同的进程,任务.
        50 分钟.
        如果每个进程都没有IO阻塞,:一个进程长时间被cpu处理时,操作系统就强硬的将cpu调出去处理下一个进程.
        为什么这么做?
        假如有一个任务 不着急但是非常耗时 1 + 2+几千亿.
        另外两个任务时间短,很着急:

 

  第三代计算机初期还有缺陷:

    1.内存级别各种进程间的数据物理隔离.

    2.没有达到个人独享的效果

  过了几年:

    分时系统,对内存级别的数据进行物理隔离

    unix分账户概念,让人们认为自己的独享计算机

 

03  概念:串行,并发,并行,阻塞,非阻塞

  串行:cpu将一些进程一个接一个的执行(之前写的代码都是串行)

  并发:一个cpu执行多个任务,看起来像是同时执行的

  并行:真正意义的一对一服务

      4个CPU  处理4个任务

  阻塞:IO成为阻塞

      一个cpu串行执行10个任务,这10个任务前提如果没有IO,执行第一个任务是,下面九个都在等待,这叫阻塞

  

  非阻塞:进程没有IO,就非阻塞.

05 进程的详解
进程与程序的区别.
并发并行.
进程的创建:
如何创建一个进程?
双击qq开启一个进程,运行一个py文件,开启一个进程,我如何开启多个进程.
十个任务,你如何将十个任务开启起来?
你的程序中如何开启多个进程?
他的思路就是我要有一个主(父)进程,在这个代码里面有一个命令,通知操作系统再给我开一个进程,你把代码放进这个进程中,
这样就相当开启了两个进程.

两类系统开启进程的命令不同:
linux(unix,macos):fork
windows:CreateProcess

两类系统开启进程内部方式稍有不同:
linux(unix,macos): 会将主进程的所有数据复制一份,放到进程空间中.


windows:
进程并发的实现: 进程遇到IO阻塞或者长时间运行,操作系统会将你的进程挂起, + 保持原来的状态.
今日总结:
进程
进程与程序的区别.
操作系统发展史
多道技术,
空间,时间的复用.
串行 并发 并行 阻塞 非阻塞
详细的进程:
不同操作系统开不同的进程的区别.
程序要想开启多个进程:一定是在运行一个主进程(文件)时,执行此主进程的某一行开启进程的代码(内部会通知操作系统开始进程.).

 

 


06 进程的id 父进程的id
07 开启进程的两种方式

 

posted @ 2019-02-25 23:12  善良的大蝌蚪  阅读(657)  评论(0编辑  收藏  举报