python之并发编程-操作系统

操作系统

  1. 操作系统

    1. 定义

      操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。

    2. 作用

      • 操作系统第一个作用:将一些丑陋复杂的硬件操作封装成美丽的接口,便于使用.

        如果没有操作系统,你去写一个程序,你只要完成两层即可.

        第一层: 你要学会底层硬件:cpu,内存,磁盘是如何工作使用的.

        第二层: 去调用这些底层的硬件.

      • 操作系统第二个作用: 合理的调度分配多个进程与cpu的关系,让其有序化

  2. 操作系统发展史

    1. 第一代电子计算机(1940~1955)

      二战时期,推出的电子计算机 手工操作.预定.类似于插线板的程序,进入机房,一个人独资享有计算机2个小时,各种硬件的操作插线与你的程序结合.

      特点: 没有操作系统的概念,所有的硬件连接都是自己完成.

      优点: 一个人独享.

      缺点:

      1. 一个人享用浪费资源.
      2. 所有的程序都是串行处理.
    2. 第二代计算机:磁带存储,批处理系统.(1955~1965)

      ​ 设计人员、生产人员、操作人员、程序人员和维护人员直接有了明确的分工,计算机被锁在专用空调房间中,由专业操作人员运行,这便是‘大型机’。有了操作系统的概念,有了程序设计语言:FORTRAN语言或汇编语言,写到纸上,然后穿孔打成卡片,再讲卡片盒带到输入室,交给操作员,然后喝着咖啡等待输出接口。

      优点: 批处理,节省了程序员连接硬件的操作的时间.

      缺点:

      1. 不能独享计算机,不能在程序运行时修复bug.
      2. cpu还是串行处理.
    3. 第三代计算机,集成电路,多道程序系统.

      集成电路概念,所有的硬件变的很小,排列在线路板上.

      20世纪60年代初: 计算机两条生产线:互不兼容

      1. 用于科学计算,运算的计算密集型.
      2. 用户商用保险银行,归档,打印等工作. IO 密集型.

      阻塞:IO阻塞,recv,accept,read,input,write,sleep等都是阻塞

      IBM公司试图通过引入system/360系列来同时满足科学计算和商业计算

      如何解决第二代计算机的问题1:
      卡片被拿到机房后能够很快的将作业从卡片读入磁盘,于是任何时刻当一个作业结束时,操作系统就能将一个作业从磁带读出,装进空出来的内存区域运行,这种技术叫做
      同时的外部设备联机操作:SPOOLING,该技术同时用于输出。当采用了这种技术后,就不在需要IBM1401机了,也不必将磁带搬来搬去了(中间俩小人不再需要)

      如何解决第二代计算机的问题2:

      第三代计算机的操作系统广泛应用了第二代计算机的操作系统没有的关键技术:多道技术

      多道技术:

      多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。如果三个进程全部都没有IO阻塞,多道技术就会影响最终的效率。

      空间上的复用:一个内存可以加载多个进程。将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。

      时间上的复用:当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%,类似于我们小学数学所学的统筹方法。(操作系统采用了多道技术后,可以控制进程的切换,或者说进程之间去争抢cpu的执行权限。这种切换不仅会在一个进程遇到io时进行,一个进程占用cpu时间过长也会切换,或者说被操作系统夺走cpu的执行权限)

      空间上的复用: 当年面临着一个问题,数据隔离。麻省理工(MIT)在一台改装过的7094机上开发成功的,CTSS兼容分时系统。

    4. 第四代(1980—至今)现代计算机

      1.个人计算机操作系统

        个人计算机上的操作系统是联机交互的单用户操作系统,它提供的联机交互功能与通用分时系统提供的功能很相似。

        由于是个人专用,因此一些功能会简单得多。然而,由于个人计算机的应用普及,对于提供更方便友好的用户接口和丰富功能的文件系统的要求会愈来愈迫切。

      2.网络操作系统

        计算机网络:通过通信设施,将地理上分散的、具有自治功能的多个计算机系统互连起来,实现信息交换、资源共享、互操作和协作处理的系统。

        网络操作系统:在原来各自计算机操作系统上,按照网络体系结构的各个协议标准增加网络管理模块,其中包括:通信、资源共享、系统安全和各种网络应用服务。

        就是添加了一些网络方面的功能。

      3.分布式操作系统

        表面上看,分布式系统与计算机网络系统没有多大区别。分布式操作系统也是通过通信网络,将地理上分散的具有自治功能的数据处理系统或计算机系统互连起来,实现信息交换和资源共享,协作完成任务。——硬件连接相同。

        分布式:将一个大的任务拆分成几个小的任务,分配给不同的任务处理机制,具体怎么分配是由系统中的算法决定的,大家同时来运行自己的任务,然后各自将人物的返回结果再返回给你这个大的任务。

        但有如下一些明显的区别:

       (1)分布式系统要求一个统一的操作系统,实现系统操作的统一性。

      ​ (2)分布式操作系统管理分布式系统中的所有资源,它负责全系统的资源分配和调度、任务划分、信息传输和控制协调工作,并为用户提供一个统一的界面。

       (3)用户通过这一界面,实现所需要的操作和使用系统资源,至于操作定在哪一台计算机上执行,或使用哪台计算机的资源,则是操作系统完成的,用户不必知道,此谓:系统的透明性。

       (4)分布式系统更强调分布式计算和处理,因此对于多机合作和系统重构、坚强性和容错能力有更高的要求,希望系统有:更短的响应时间、高吞吐量和高可靠性。

        分布式系统已经很普遍了,一般个人用不到,企业在处理比较大的任务的时候才会使用。

  3. 进程

    1. 进程与程序的区别

      • 程序就是一堆文件。

      • 进程就是一个正在执行的文件/程序,抽象的概念。

      • cpu最终运行你的程序。操作系统调度作用,将你的磁盘上的程序加载到内存,然后交由CPU去处理。

        一个cpu正在运行的一个程序,就叫开启了一个进程。

    2. 并发与并行

      串行:所有的进程由cpu一个一个的解决。

      并发:单个cpu,同时执行多个进程(来回切换的),看起来像是同时运行。

      并行:多个cpu,真正的同时运行多个进程。

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

      阻塞:遇到IO才叫阻塞

      非阻塞:没有IO

    3. 进程的创建

      什么是开启多个进程: socket: server,client 两个进程.

      python中,如果一次想开启多个进程,必须是一个主进程,开启多个子进程.

      linux, windows: 由主进程开启子进程:

      相同点: 原则:主进程开启子进程两个进程都有相互隔离的独立的空间,互不影响.

      不同点: linux: 子进程空间的初始数据完全是从主(父)进程copy一份.

      ​ windows: 子进程空间的初始数据完全是从主(父)进程copy一份,但是有所不同.

猜你喜欢

转载自www.cnblogs.com/yaoqi17/p/11226980.html