No.31进程

No.31

今日概要

  • 操作系统
  • 进程
  • 并行与并发
  • 同步与异步
  • 阻塞与非阻塞

内容回顾

网络编程

  • C/S 和 B/S 架构
    • C/S
      • eg:ftp
    • B/S
      • eg:网页开发
  • osi五层协议
    • 应用层
    • socket / socketserver
    • 传输层(端口/服务相关)
      • TCP / UDP协议
        • TCP协议:面向连接的、可靠的、全双工的、流式传输协议。
          • 三次握手
          • 四次挥手
          • 粘包现象
            • 发送端粘
              • 信息短 时间间隔小 因优化机制粘在一起
            • 接收端粘
              • 发送的信息无边界 因没有即时接收在缓存端粘在一起
          • 拆包机制
        • UDP协议:面向数据报、不可靠、无连接的协议。
      • 设备:四层路由器、四层交换机
    • 网络层(IP相关)
      • ipv4 / ipv6
      • 设备:路由器、三层交换机
    • 数据链路层(mac相关)
      • arp
      • 设备:网卡、交换机
    • 物理层
  • 输入和输出(I/O操作)
    • input 输入到内存
      • recv
      • recvfrom
    • output 从内存输出
      • send
      • sendto
  • 阻塞和非阻塞
    • 阻塞:cpu不工作
      • accept
      • recv
      • connect
    • 非阻塞:cpu工作
  • socket模块
    • tcp协议
      • 服务端 / 客户端
      • 粘包问题:struct模块
    • udp协议
      • 服务端 / 客户端
  • socketserver模块
  • hamc模块
    • 效验客户端合法性

内容详细

1.操作系统发展史

  • 手工操作 + 穿孔卡片

    • CPU利用率低
    • 人机矛盾
  • 批处理 + 磁带存储

    • 降低数据的读取时间
    • 提高CPU利用率
  • 多道操作系统

    • 数据隔离
    • 时空复用
    • 当一个任务遇到IO操作的时候,主动把CPU让出来给其它的任务使用。
      • 切换会占用时间
      • 切换是操作系统做的
  • 分时操作系统

    教授 24h 没有IO
    博士 10min 没有IO
    硕士 5min 没有IO
    • 短作业优先算法
    • 先来先服务算法
    • 时间分片
      • 每一个程序分配一个时间片
      • CPU按时间片的轮转给不同任务使用
    • 切换会占用时间
    • 降低了CPU利用率,提高了用户体验
  • 分时操作系统 + 多道操作系统 + 实时操作系统

    • 多个程序一起在计算机中执行时
    • 一个程序如果遇到IO操作,切出去让出CPU
    • 一个程序没有遇到IO操作,但是时间片到了,切出去让出CPU
  • 网络操作系统

  • 分布式操作系统

2.进程

运行中的程序就是进程

  • 程序和进程的区别
    • 程序只是一个文件
    • 进程是这个文件被CPU运行起来了
  • 进程是计算机中最小的资源分配单位
  • 进程在操作系统中的唯一标识符是pid

操作系统调度进程的算发

  • 短作业优先
  • 先来先服务
  • 时间片轮转
  • 多级反馈算法

进程的三状态图

就绪 运行 阻塞

No.31进程

No.31进程

3.并行与并发

并行

  • 两个程序,两个CPU,每个程序分别占用一个CPU各自独立执行

并发

  • 两个程序,一个CPU,每个程序交替占用一个CPU执行
  • 看起来是同时执行,实际上是串行。

4.同步与异步

同步

  • 正在烧水
  • 停下烧水动作 吹头发
  • 吹完头发 继续烧水

异步

  • 正在烧水
  • 烧水动作继续 吹头发

5.阻塞与非阻塞

阻塞

  • CPU不工作
    • 同步阻塞
      • 调用函数时,函数内部有IO操作。
      • socket 阻塞的tcp协议
    • 异步阻塞
      • func扔到其它任务中执行
      • 本身任务和func任务各自执行各自的,本身有IO操作。

非阻塞

  • CPU工作
    • 同步非阻塞
      • 调用函数时,函数内部无IO操作。
      • socket 非阻塞的tcp协议
    • 异步非阻塞
      • func扔到其它任务中执行
      • 本身任务和func任务各自执行各自的,本身没有IO操作。

No.31进程

上一篇:Linux - Ubuntu18.04下更改apt源为阿里云源


下一篇:[matplotlib] Mac中文显示乱码