zoukankan      html  css  js  c++  java
  • 操作系统 串行 并发 并行 阻塞 非阻塞

    进程的基础

    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. 进程的状态

      运行 阻塞 就绪

  • 相关阅读:
    【Java】RuleSource约束常用方法整理
    【Oracle】多次提交造成性能慢及处理方法
    【Oracle】ORA-28000: the account is locked-的解决办法
    【Eclipse】几个最重要的快捷键
    JavaScript 垃圾回收总结
    JavaScript 执行环境(作用域)总结
    JavaScript基本数据类型
    全局 Ajax 事件处理器
    require.js 模块化
    配置apache反向代理进行跨域
  • 原文地址:https://www.cnblogs.com/hualibokeyuan/p/11376957.html
Copyright © 2011-2022 走看看