操作系统 串行 并发 并行 阻塞 非阻塞

进程的基础

  1. 程序: 一堆静态的代码文件

  2. 进程: 一个正在运行的程序,抽象的概念

    被谁运行?

    由操作系统,操控调用交于 CPU 运行,被 CPU 运行

操作系统

  1. 什么是操作系统?

    管理控制协调计算机硬件与软件的关系

  2. 操作系统的作用?
    第一个作用 : 将一些复杂丑陋的接口,变成一些简单美丽的接口

    第二个作用 : 当多个进程抢占一个资源时,操作系统会将你的执行变的合理有序

    阻塞: input read writre sleep recv accept send recvfrom

    如果没有操作系统,会发生什么呢?

    第一层 : 对硬件的协调,调用(CPU 内存 磁盘等)

    第二层: 如何调用各种接口,去编程

    操作系统的发展史

    最早出现的计算机 : 算盘

    电子类的计算机发展:

    第一代计算机 : 1940~~1955

    在大学时期出现了机房:想使用必须预约

    先连接各个硬件 真空管 然后再插上程序调试,效率低

    优点:个人独享整个计算机资源

    缺点:硬件调试插线,耗时

    ​ 所有人都是串行

    第二代计算机

    磁带存储一批处理系统

    优点 :

    1. 程序员不用亲自对硬件进行插件操控,效率提高
    2. 可以进行批量处理代码

    缺点:

    1. 程序不能独自使用计算机
    2. 你的所有程序还是串行

    大背景:

    1. 集成电路 : 多道程序系统,把所有的硬件变小,线路板
    2. 将两个不同的生产线,合并成一条生产线
    技术上的更新:多道技术 非常重要

    空间上的复用:将内存分区域,一个内存可以同时加载多个进程时间上的复用

    时间上的复用:实现将 CPU 在多个进程之间来回切换,并且保留状态

    ps: 同时加载到内存三个任务,三个进程都有阻塞的情况,只要 CPU 运行一个进程时,只要遇到阻塞就立马会切换,长时间占用 CPU 也会切换

    多道技术的作用:

    提升效率,最大程度的使用 CPU

    另外情况 : 如果是一个 商业IO(阻塞)密集型进程,来回切换,提升效率

    ​ 如果是一个计算密集型,来回切换就会降低效率了(串行比较好,一切就耗时)

    第三代计算机

    广泛采用了必须的保护硬件,程序之间的内存彼此隔离

    每个人占用计算机的时间是有限的

    多人(少于 10 个)共同使用一个计算机

    第四代计算机

    内存的物理隔离

    进程的理论

    串行:所有的任务一个一个完成

    并发:一个 CPU 完成多个任务,看起来像是同时完成

    并行: 多个 CPU 执行多个任务,真正的同时完成

    阻塞:CPU 遇到 IO 就是阻塞

    非阻塞:没有IO就是 非阻塞

    image-20190819143515023

    1. 程序: 一堆静态文件
    2. 一个正在执行的程序任务就是一个进程
    3. 一个程序能否打开多个进程:可以 你可以选择看一下浏览器,多个同时打开
    进程的创建
    1. 一个子进程必须依赖于一个主进程才可以开启

    2. 一个主进程可以开启多个子进程

      ATM:一个进程 虽然开辟了很多 PY 文件,但就是一个进程

      socket: 这是两个进程,有服务端和客户端

      pycharm是主进程

      cmd(终端) 主进程是操作系统

      Windows : 操作系统会调用 CreatProcess 处理进程的创建

      unix : fork 创建子进程

      windows : 创建一个子进程,会 copy 主进程所有资源,但是会改变一些资源

      Unix (linux, mac) : 创建一个子进程会完完全全复制一份主程序所有资源

    3. 进程的状态

    运行 阻塞 就绪

原文地址:https://www.cnblogs.com/hualibokeyuan/p/11376957.html