博客整理day28
python day28
操作系统发展史
穿孔卡片
一个计算机房,一次只能被一个卡片使用
缺点:CPU利用率低
联机批处理系统
支持多用户去使用一个计算机机房
脱机批处理系统
高速磁盘:
提高文件的读取速度
优点:
提高CPU的利用率
多道技术(基于单核情况下):
单道:
多个程序使用CPU时是串行
多道技术:
空间上的复用:
一个CPU可以提供多个用户去使用
时间上的复用
切换 + 保存状态
IO操作
input()
print()
time.sleep()
-
若CPU遇到IO操作,会立即将当前执行程序CPU使用权断开
优点:
CPU的利用率高
2. 若一个程序使用CPU的时间过长,会立即将当前执行程序CPU使用权断开
缺点:
程序的执行效率低
并发与并行
并发:指的是看起来像同时在运行,多个程序不停切换 + 保存状态
并行:真实意义上的同时运行,在多核(多个cpu)的情况下,同时执行多个程序
进程
程序与进程
程序:一堆代码
进程:一堆代码运行的过程
进程调度
当代操作系统调度:
时间片轮转法 + 分级反馈队列
-
先来先服务调度:
缺点:
程序a先使用,程序b必须等待程序a使用cpu结束后,才能使用
-
短作业优先调度:
缺点:
若程序a使用时间最长,有n个程序使用时间短,则必须等待所有用时短的程序结束后才能使用
-
时间片轮转法:
cpu执行的时间的1秒中,加载n个程序,要将1s等分成多n个时间片
-
分级反馈队列
将执行优先分为多层级别,第一个队列的优先级别最高,第二队列次之,其余各队列的优先权逐个降低.该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权越高的队列中,为每个进程所规定的执行时间片就越小
进程的三个状态
就绪态
就绪(Ready)状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。
运行态
执行/运行(Running)状态当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。
阻塞态
阻塞(Blocked)状态正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。
同步和异步
同步 : 一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态可以保持一致。
异步 : 是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了。至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠的任务序列。
阻塞与非阻塞
阻塞
阻塞态.遇到IO一定会阻塞。
非阻塞
就绪态
运行态
进程号回收的两种条件:
- join可以回收子进程和主进程
- 主进程正常结束,子进程与主进程也会被回收
僵尸进程与孤儿进程
僵尸进程
指的是子进程已经结束,但PID号还在,未销毁
缺点:
占用PID号,占用操作系统资源
孤儿进程
指的是子进程还在执行,但父进程意外结束
守护进程
指的是主程序结束后,该主程序产生的所有子程序跟着结束,并回收