zoukankan      html  css  js  c++  java
  • day28

    操作系统发展史

    1.操作系统发展史

    ​ 1)穿孔卡片

    ​ 一个计算机机房,一次只能被一个卡片使用

    ​ 缺点:

    ​ CPU利用率低

    ​ 2)联机批处理系统

    ​ 支持多用户去使用一个计算机机房

    ​ 3)脱机批处理系统

    ​ 高速磁盘:

    ​ 提高文件的读取速度

    ​ 优点:

    ​ 提高CPU的利用率

    ​ 4)多道技术(基于单核情况下研究):

    ​ 单道:

    ​ 多个使用CPU时是串行

    ​ 多道技术:

    ​ 空间上的复用

    ​ 一个CPU可以提供给多个用户使用

    ​ 时间上的服用

    ​ 切换+保存状态

    ​ IO操作

    ​ input()

    ​ print()

    ​ time.sleep(3)

    ​ 1)若CPU遇到IO操作,会立即将当前执行程序CPU使用权断开

    ​ 优点:

    ​ CPU的利用率高

    ​ 2)若一个程序使用CPU的时间过长,会立即将当前执行程序CPU使用权断开

    ​ 缺点:

    ​ 程序的执行效率低

    ​ 并发与并行

    ​ 并发:指的是看起来像同时运行,多个程序不停,切换+保存状态

    ​ 并行:真实意义上的同时运行,在多核(多个CPU)的情况下,同时执行多个程序

    进程

    2.进程

    ​ 程序与进程

    ​ 程序:一堆代码

    ​ 进程:一堆代码运行的过程

    ​ 进程调度

    ​ 当代操作系统调度

    ​ 时间片轮转法+分级反馈队列

    ​ 1)先来先服务调度

    ​ a,b程序,若a程序先来,先占用CPU

    ​ 缺点:

    ​ 程序a先使用,程序b必须等待程序a使用CPU结束后才使用

    ​ 2)短作业优先调度

    ​ a,b程序,谁的用时短,先优先调度使用CPU

    ​ 缺点:

    ​ 若程序a使用时间最长,有N个程序使用时间短

    ​ 必须等待所有用时短的程序结束后才能使用

    ​ 3)时间片轮转法

    ​ CPU执行的时间1秒钟,加载N个程序,需要将1秒等分成多N个时间片

    ​ 4)分级反馈队列

    ​ 将执行优先分为多层级别

    ​ 1级:优先级最高

    ​ 2级:优先级第二,以此类推

    ​ 。。。。

    ​ 进程的三个状态

    ​ 就绪态

    ​ 所有进程创建时都会进入就绪态,准备调度

    ​ 运行态

    ​ 调度后的进程,进入运行态

    ​ 阻塞态

    ​ 凡是遇到io操作的进程,都会进入阻塞态

    ​ 若io结束,必须重新进入就绪态

    ​ 同和异步

    ​ 指的是提交任务的方式

    ​ 同步

    ​ 若有两个任务需要提交,在提交第一个任务时

    ​ 必须等待该任务执行结束后,才能继续提交并执行第二个任务

    ​ 异步

    ​ 若有两个任务需要提交,在提交第一个任务时

    ​ 不需要原地等待,立即可以提交并执行第二个任务

    ​ 阻塞与非阻塞

    ​ 阻塞:

    ​ 阻塞态,遇到IO一定会阻塞

    ​ 非阻塞:

    ​ 就绪态

    ​ 运行态

    ​ 面试题:同步与异步,阻塞和非阻塞是同一个概念吗?

    ​ 强调:不是一个概念,不能混为一谈

    ​ 最大提高CPU的使用率:

    ​ 尽可能的减少不必要的IO操作

    ​ 进程号回收的两种条件

    ​ 1.join,可以回收子进程与主进程

    ​ 2.主进程正常结束,子进程与主进程也会被回收

    僵尸进程与孤儿进程

    ​ 僵尸进程:

    ​ 指的是子进程已经结束,但PID号还存在,未销毁

    ​ 缺点:占用PID号,占用操作系统资源

    ​ 孤儿进程:

    ​ 指的是子进程还在执行,但父进程意外结束

    ​ 操作系统优化机制:

    ​ 提供一个福利院,帮你回收没有父亲的子进程

    ​ multiprocessing是一个模块,python中的多线程无法利用多核优势,如果想要充分的使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程

    process由该类实例化得到的对象,可用来开启一个字进程

    强调:

    ​ 1.需要使用关键字的方式来指定参数

    ​ 2.args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号

    ​ 模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数)

    multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步

    current_process().pid:获取子进程号

    os.getpid():获取主进程pid号

    cmd中查看进程号:tasklist |findstr 进程号

    进程号回收的两种条件:

    ​ 1.join,可以回收子进程与主进程

    ​ 2.主进程正常结束,子进程与主进程也会被回收

    ​ os.getppid()获取主主进程号

    守护进程

    ​ 指的是主进程结束后,该主进程产生的所有子进程跟着结束,并回收

  • 相关阅读:
    MVC部分视图
    windows服务
    mvc中seeeion和cook的用法
    @Html.Raw()用法和Html.ActionLink的用法总结
    FileStream类的使用(文件流)
    简单工厂和工厂模式对比
    项目案例【Net Core】如何注入多个服务实现类
    快速查找所有存储过程/触发器中是否包含某个字符串
    TortoiseGit安装与配置
    C# 中==与Equals方法比较
  • 原文地址:https://www.cnblogs.com/gfhh/p/11715407.html
Copyright © 2011-2022 走看看