No.31
今日概要
- 操作系统
- 进程
- 并行与并发
- 同步与异步
- 阻塞与非阻塞
内容回顾
网络编程
- C/S 和 B/S 架构
- C/S
- eg:ftp
- B/S
- eg:网页开发
- C/S
- osi五层协议
- 应用层
- socket / socketserver
- 传输层(端口/服务相关)
- TCP / UDP协议
- TCP协议:面向连接的、可靠的、全双工的、流式传输协议。
- 三次握手
- 四次挥手
- 粘包现象
- 发送端粘
- 信息短 时间间隔小 因优化机制粘在一起
- 接收端粘
- 发送的信息无边界 因没有即时接收在缓存端粘在一起
- 发送端粘
- 拆包机制
- UDP协议:面向数据报、不可靠、无连接的协议。
- TCP协议:面向连接的、可靠的、全双工的、流式传输协议。
- 设备:四层路由器、四层交换机
- TCP / UDP协议
- 网络层(IP相关)
- ipv4 / ipv6
- 设备:路由器、三层交换机
- 数据链路层(mac相关)
- arp
- 设备:网卡、交换机
- 物理层
- 输入和输出(I/O操作)
- input 输入到内存
- recv
- recvfrom
- output 从内存输出
- send
- sendto
- input 输入到内存
- 阻塞和非阻塞
- 阻塞:cpu不工作
- accept
- recv
- connect
- 非阻塞:cpu工作
- 阻塞:cpu不工作
- socket模块
- tcp协议
- 服务端 / 客户端
- 粘包问题:struct模块
- udp协议
- 服务端 / 客户端
- tcp协议
- socketserver模块
- hamc模块
- 效验客户端合法性
内容详细
1.操作系统发展史
-
手工操作 + 穿孔卡片
- CPU利用率低
- 人机矛盾
-
批处理 + 磁带存储
- 降低数据的读取时间
- 提高CPU利用率
-
多道操作系统
- 数据隔离
- 时空复用
- 当一个任务遇到IO操作的时候,主动把CPU让出来给其它的任务使用。
- 切换会占用时间
- 切换是操作系统做的
-
分时操作系统
教授 24h 没有IO 博士 10min 没有IO 硕士 5min 没有IO - 短作业优先算法
- 先来先服务算法
- 时间分片
- 每一个程序分配一个时间片
- CPU按时间片的轮转给不同任务使用
- 切换会占用时间
- 降低了CPU利用率,提高了用户体验
-
分时操作系统 + 多道操作系统 + 实时操作系统
- 多个程序一起在计算机中执行时
- 一个程序如果遇到IO操作,切出去让出CPU
- 一个程序没有遇到IO操作,但是时间片到了,切出去让出CPU
-
网络操作系统
-
分布式操作系统
2.进程
运行中的程序就是进程
- 程序和进程的区别
- 程序只是一个文件
- 进程是这个文件被CPU运行起来了
- 进程是计算机中最小的资源分配单位
- 进程在操作系统中的唯一标识符是pid
操作系统调度进程的算发
- 短作业优先
- 先来先服务
- 时间片轮转
- 多级反馈算法
进程的三状态图
就绪 运行 阻塞
3.并行与并发
并行
- 两个程序,两个CPU,每个程序分别占用一个CPU各自独立执行
并发
- 两个程序,一个CPU,每个程序交替占用一个CPU执行
- 看起来是同时执行,实际上是串行。
4.同步与异步
同步
- 正在烧水
- 停下烧水动作 吹头发
- 吹完头发 继续烧水
异步
- 正在烧水
- 烧水动作继续 吹头发
5.阻塞与非阻塞
阻塞
- CPU不工作
- 同步阻塞
- 调用函数时,函数内部有IO操作。
- socket 阻塞的tcp协议
- 异步阻塞
- func扔到其它任务中执行
- 本身任务和func任务各自执行各自的,本身有IO操作。
- 同步阻塞
非阻塞
- CPU工作
- 同步非阻塞
- 调用函数时,函数内部无IO操作。
- socket 非阻塞的tcp协议
- 异步非阻塞
- func扔到其它任务中执行
- 本身任务和func任务各自执行各自的,本身没有IO操作。
- 同步非阻塞