并发编程理论
# 操作系统发展史
1.穿孔卡片
    cpu利用率非常低,好处是程序员能为所欲为
2.联机批处理系统
    缩短录入数据的时间,使cpu工作时间变长,提高cpu利用率
3.脱机批处理系统
    再次提高cpu的利用率,是现代计算机的雏形
  
  操作系统的发展史也可以看成是cpu利用率提升的发展史
 
多道技术
# 多道技术的前提是在单核cpu的基础上的
    单道技术             所有程序按序排队,耗时久,效率低
    多道技术             计算机空闲时提前准备好一些数据,提高效率,耗时变短
              通俗来说多道技术就是在做一件事的时候,在空余时间做其他事
# 切换+保存状态
# 1.切换
   CPU在两种下会切换(去执行其他程序)
   1.程序自身进入IO操作
      IO操作:输入输出操作
        获取用户输入
          time.sleep()
          读取文件
           保存文件
  2.程序长时间占用CPU
  
# 2.保存状态
  每次切换之前要记录当前的执行状态,之后切回后基于当前状态执行(如app的界面一般)
 
进程理论
# 1.进程的理解: 
     正在被运行的程序
# 2.进程的调度算法
    -1.先来先服务算法
        针对耗时短的程序不友好
    -2.短作业优先调度
        针对耗时久的程序不友好
    -3.时间片轮转法+多级反馈队列
        将都固定的个时间分为多份,每个程序分到一份
           分配多次后还有程序运行就分到下一层
              越往下表示程序总耗时越长,每次分到的时间片就越多,优先度变低
                  如果新来一个程序就会先运行新来的程序
 
进程的并行与并发
# 1.并行:  多个进程同时执行
          无法通过单个cpu实现,需要多个cpu
# 2.并发:  多个进程看上去像被同时执行
          可以通过单个cpu实现(就是时间片轮转法+多级反馈队列)
       
 """并行也属于并发"""
# 描述一个网站厉害通常说的是并发量(高并发),使用高并行描述不太合理
 
进程的三种状态
1.所有的进程要想被运行 必须先经过就绪态
2.运行过程中如果出现了IO操作 则进入阻塞态
3.运行过程中如果时间片用完 则继续进入就绪态
4.阻塞态要想进入运行态必须先经过就绪态
# 阻塞    : 阻塞态
# 非阻塞 : 就绪态,运行态