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()获取主主进程号

守护进程

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

原文地址:https://www.cnblogs.com/gfhh/p/11715407.html