操作系统发展史
穿孔卡片
一个计算机机房,一次只能一个用户使用.
CPU利用率低
联机处理系统
支持多个用户去使用一个计算机机房
脱机批量处理
高速磁盘
提高文件的读取速度
优点
提高CPU利用率
多道技术(基于单核情况下研究)
多道
空间上的复用(*****)
一个CPU可以提供给多个用户使用
时间上的复用(*****)
切换+保存状态
优点
若CPU遇见IO操作,会立即将当前程序的CPU使用权断开(会让CPU的利用率提高)
缺点
若一个程序使用CPU的时间过长,会立即将当前执行的程序的CPU使用权断开(会让程序的利用率降低)
单道
多个用户使用CPU时是串联运行的
必须让上一个程序运行完,才能运行下一个程序
并发与并行
并发
指的是看起来像同时在运行,多个程序不停切换+保存状态
并行
真实意义上的同时运行, 在多核的情况下,同时执行多个程序
进程
程序与进程
程序:一堆代码
进程:一堆代码运行的过程
进程调度
- 先来先服务调度
缺点:程序A先使用,程序B必须等待程序A使用CPU结束后才能使用 - 短作业优先调度
缺点:若程序A使用时间最长,有N个程序使用时间短,必须等待所有用时短的程序结束后才能使用 - 时间片轮转法
CPU执行的时间1秒钟,加载N个程序,要1秒等分多N个时间片 分级反馈队列
将执行优先分为多层级别
1级:优先级最高
2级:优先级第二
3级:类推
……程序调度时的三种状态
就绪态:所有进程创建时都会进入就绪态,准备调度
阻塞态:凡是遇到IO操作的进入阻塞态,IO操作结束,必须重新进入就绪态
运行态:调度后的进程,进入运行态同步与异步
指的是提交任务的方式
同步
若有两个任务需要提交,在提交第一个任务时,必须等待该任务执行结束后,才能继续提交并执行第二个任务
异步
指的是,若有两个任务提交,在提交第一任务时不需要原地等待,立即可以提交并执行第二个任务
阻塞与非阻塞
阻塞
阻塞态,遇见IO一定会阻塞
非阻塞
就绪态和运行态
面试题:同步与异步,阻塞与非阻塞是同一个东西吗?
不是同一个概念,同步与异步准备期的,阻塞和非阻塞是建设期的
创建进程的两种方式
- 定义一个任务
windows:创建子进程,windows会将当前父进程代码重新加载执行一次
linux/mac:会将当前父进程代码重新拷贝一份,在去执行 自定义一个类,并继承Process
join
告诉操作系统,让子进程结束后,父进程在结束
进程间数据相互隔离
主进程与子进程会产生各自的名称空间,让数据相互隔离
进程对象的属性
当前进程.pid
获取子进程os.getpid()
获取主进程pid号
cmd中查看进程号:tasklist|findstr
进程号进程号回收的两种条件
join.
可以回收子进程与主进程主进程正常结束,子进程与主进程也会被回收
僵尸进程与孤儿进程
僵尸进程
指的是进程已经结束,但PID号还存在,未被销毁
缺点:占用PID号,占用操作系统资源孤儿进程
指的是进程还在执行,但父进程意外结束
操作系统优化机制:提供一个类似于福利院的机制,帮你回收没有父进程的子进程守护进程
指的是主进程结束后,该主进程产生的所有子进程跟着结束,并回收