# 操作系统的发展史
# 人机矛盾
# CPU利用率低
# 磁带存储 + 批处理
# 降低数据的读取时间
# 提高cpu的利用率
# 多道操作系统 —— 在一个任务遇到IO的时候主动让出CPU
# 数据隔离
# 时空复用
# 能够在一个任务遇到io操作的时候主动把cpu让出来,给其他的任务使用
# 切换要不要占用时间 :要占用
# 切换这件事是谁做的 :操作系统
# 分时操作系统 —— 给时间分片,让多个任务轮流使用CPU
# 老教授 24h 没有IO
# 研究生 5min 没有IO
# 研究生 6min 没有IO
# 短作业优先算法
# 先来先服务算法
# 时间分片
# cpu的轮转
# 每一个程序分配一个时间片
# 要切换 要占用时间
# 反而降低了cpu的利用率
# 提高了用户体验
# 分时操作系统 + 多道操作系统 + 实时操作系统
# 多个程序一起在计算机中执行
# 一个程序如果遇到IO操作,切出去让出CPU
# 一个程序没有遇到IO,但是时间片到时了,切出去让出CPU
# 网络操作系统
# 分布式操作系统
2.进程
# 进程 :
# 运行中的程序
# 程序和进程之间的区别
# 程序只是一个文件
# 进程是这个文件被CPU运行起来了
# 进程 是计算机中最小的资源分配单位
# 在操作系统中的唯一标识符 :pid
# 操作系统调度进程的算法
# 短作业优先
# 先来先服务
# 时间片轮转
# 多级反馈算法
# 并行与并发
# 并行
# 两个程序 两个CPU 每个程序分别占用一个CPU自己执行自己的
# 看起来是同时执行,实际在每一个时间点上都在各自执行着
# 并发
# 两个程序 一个cpu 每个程序交替的在一个cpu上执行
# 看起来在同时执行,但是实际上仍然是串行
# 同步 烧水 吹头发
# 正在烧水
# 停下烧水这个动作 吹头发
# 吹完头发之后继续烧水
# 异步 烧水 吹头发
# 正在烧水
# 吹头发 烧水也在继续
# 阻塞
# cpu不工作
# 非阻塞
# cpu工作
# 同步阻塞
# conn.recv
# socket 阻塞的tcp协议的时候
# 同步非阻塞
# func() 没有io操作
# socket 非阻塞的tcp协议的时候
# 调用函数(这个函数内部不存在io操作)
# 异步非阻塞
# 把func扔到其他任务里去执行了
# 我本身的任务和func任务各自执行各自的 没有io操作
# 异步阻塞
# 进程的三状态图
# 就绪 运行 阻塞