并发编程1 操作系统与进程

161 阅读3分钟

操作系统的发展史

1.穿孔卡片
    cpu利用率非常低,好处是程序员能为所欲为
2.联机批处理系统
    缩短录入数据的时间,使cpu工作时间变长,提高cpu利用率
3.脱机批处理系统
    再次提高cpu的利用率,是现代计算机的雏形
  
  操作系统的发展史也可以看成是cpu利用率提升的发展史

多道技术

  • 多道技术的前提是在单核cpu的基础上的
单道技术             所有程序按序排队,耗时久,效率低
多道技术             计算机空闲时提前准备好一些数据,提高效率,耗时变短
           通俗来说多道技术就是在做一件事的时候,在空余时间做其他事
  • 切换+保存状态
    • 1.切换
      • CPU在两种下会切换(去执行其他程序)
        1.程序自身进入IO操作
        IO操作:输入输出操作
          获取用户输入
          	time.sleep()
          	读取文件
          	保存文件
        2.程序长时间占用CPU
        
    • 2.保存状态
      • 每次切换之前要记录当前的执行状态,之后切回后基于当前状态执行(如app的界面一般)

进程理论知识

  • 进程的理解
    • 正在被运行的程序
  • 进程的调度算法
    • 先来先服务算法
      • 针对耗时短的程序不友好
    • 短作业优先调度
      • 针对耗时久的程序不友好
    • 时间片轮转法+多级反馈队列
      将都固定的个时间分为多份,每个程序分到一份
          分配多次后还有程序运行就分到下一层
              越往下表示程序总耗时越长,每次分到的时间片就越多,优先度变低
                  如果新来一个程序就会先运行新来的程序
      

进程的并行与并发

  • 并行
    • 多个进程同时执行
      • 无法通过单个cpu实现,需要多个cpu
  • 并发
    • 多个进程看上去像被同时执行
      • 可以通过单个cpu实现(就是时间片轮转法+多级反馈队列)
      • 并行也属于并发
  • 描述一个网站厉害通常说的是并发量(高并发),使用高并行描述不太合理

进程的三种状态

1.所有的进程要想被运行 必须先经过就绪态
2.运行过程中如果出现了IO操作 则进入阻塞态
3.运行过程中如果时间片用完 则继续进入就绪态
4.阻塞态要想进入运行态必须先经过就绪态
  • 阻塞
    • 阻塞态
  • 非阻塞
    • 就绪态
    • 运行态

同步与异步

  • 同步
    • 提交完任务之后原地等待结果,期间不做任何事
  • 异步
    • 提交完任务后直接去做其他事,自动提醒结果

同步异步与阻塞非阻塞

  • 同步阻塞
    • 类似于在银行排队,什么时都不做
  • 同步非阻塞
    • 类似于在银行排队,等待过程中你可以做一点其他事
  • 异步阻塞
    • 类似于医院挂号,等待叫号,期间什么都不做
  • 异步非阻塞
    • 类似于医院挂号,等待叫号,期间想干什么干什么