• Python之并发编程(一)进程和操作系统概述


    进程和操作系统概述

    1. 进程的基础

      • 程序和进程:

        程序是一堆静态的代码文件

        进程是一个正在运行着的程序,抽象概念

        进程由操作系统操控调用交给CPU运行

    2. 操作系统

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

      • 操作系统的作用:

        • 将一些对硬件操作的复杂丑陋的接口,变成简单美丽的接口. open函数.

        • 多个进程抢占一个(CPU)资源时,操作系统会将你的执行变得合理有序.

          阻塞: input read write sleep recv accept sendto recvfrom .....

    3. 操作系统发展史

      1. 最早出现的计算机: 算盘.

      2. 电子类的计算机发展史:

        1. 第一代计算机1940~1955

          • 在大学里出现了机房,想使用计算机必须预约.

            先连接调配各个硬件,1.5小时, 真空管, 然后在插上程序调试.效率低

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

          • 缺点:硬件调试插线,耗时,所有人都是串行执行

        2. 第二代计算机 磁带存储---批处理系统 1955~1965

          • 优点:
            • 程序员不用亲自对硬件进行插线操控,效率提高
            • 可以进行批量处理代码
          • 缺点:
            • 程序换不能独自使用计算机
            • 你的所欲程序还是串行的
        3. 第三代计算机:集成电路,多道程序系统

          • 大背景:

            • 集成电路:把所有用的硬件变小,线路板
            • 将两套不同的生产线合并成 一条生产线
          • 技术上的更新:多道技术

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

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

            几乎所有的程序又有IO阻塞,

            同时加载到内存 3个任务,3个进程,每个进程都有阻塞情况,只要cpu运行一个进程时,遇到IO阻塞立马回切换,长时间占用cpu也会切换.

            提升效率,最大限度的使用cpu.

            如果是一个IO密集型进程,来回切换提升效率.

            如果是一个计算密集型,来回切换降低效率.

            第三代计算机广泛采用了必须的保护硬件(程序之间的内存彼此隔离)之后,第三代计算机应用而生:

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

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

            第四代计算机: 至今.

      3. 进程的理论:

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

        2. 并发: 一个cpu完成多个任务.看起来像是同时完成.

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

        4. 阻塞: cpu遇到IO就是阻塞.

        5. 非阻塞: 没有IO,就叫非阻塞

        6. 程序: 一堆静态文件

        7. 一个正在执行的程序任务,一个进程.

        8. 一个程序能否开启多个进程? 可以.

        9. 进程的创建:

          一个子进程必须依赖于一个主进程才可以开启.

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

          unix: fork创建子进程.

          unix(linux,mac): 创建一个子进程会完完全全复制一个主进程所有的资源,初始资源不变.

          windows: 操作系统调用CreateProcess 处理进程的创建.

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

        10. 程序的状态:

  • 相关阅读:
    linux网络编程-socket(36)
    linux网络编程-socket(2)
    linux网络编程-socket(1)
    jni不通过线程c回调java的函数
    jni 字符串的梳理 2 字符串的处理操作
    jni 字符串的梳理
    android studio 中jni底层日志的打印
    事件冒泡与事件捕获
    盒子模型
    比较好的前端面试题
  • 原文地址:https://www.cnblogs.com/zhangdadayou/p/11431884.html
Copyright © 2020-2023  润新知