并发编程初识
# 1.系统发展史
# 1.1人机矛盾
CPU利用率低
磁带存储 + 批处理
提升处理效率:
# 降低数据的读取时间
# 提高cpu的利用率
1
2
3
2
3
# 1.2.多道程序系统
所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
切换这件事是谁做的 :操作系统
多道程序系统的出现,标志着操作系统渐趋成熟的阶段,先后出现了作业调度管理、处理机管理、存储器管理、外部设备管理、文件系统管理等功能。
由于多个程序同时在计算机中运行,开始有了空间隔离的概念,只有内存空间的隔离,才能让数据更加安全、稳定。除了空间隔离之外,多道技术还第一次体现了时空复用的特点,遇到IO操作就切换程序,使得cpu的利用率提高了,计算机的工作效率也随之提高。
# 1.3.分时系统
- 分时技术:把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。
- 分时系统的主要目标:对用户响应的及时性,即不至于用户等待每一个命令的处理时间过长。
- 分时系统的分时间片工作,在没有遇到IO操作的时候就用完了自己的时间片被切走了,这样的切换工作其实并没有提高cpu的效率,反而使得计算机的效率降低了。
# 1.4.实时系统
实时系统在一个特定的应用中常作为一种控制设备来使用。
实时操作系统的主要特点:
(1)及时响应。每一个信息接收、分析处理和发送的过程必须在严格的时间限制内完成。
(2)高可靠性。需采取冗余措施,双机系统前后台工作,也包括必要的保密措施等。
分时——现在流行的PC,服务器都是采用这种运行模式,即把CPU的运行分成若干时间片分别处理不同的运算请求 linux系统
实时——一般用于单片机上、PLC等,比如电梯的上下控制中,对于按键等动作要求进行实时处理
1
2
2
# 1.5.通用操作系统
- 通用操作系统:具有多种类型操作特征的操作系统。可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。
# 分时操作系统 + 多道操作系统 + 实时操作系统
# 多个程序一起在计算机中执行
# 一个程序如果遇到IO操作,切出去让出CPU
# 一个程序没有遇到IO,但是时间片到时了,切出去让出CPU
1
2
3
4
2
3
4
# 2.进程 概念:
进程就是运行中的程序
#程序和进程之间的区别 程序只是一个文件 进程是这个文件被CPU运行起来了 进程是计算机中最小的资源分配单位,在操作系统中的唯一标识符 :pid
1
2
3
4操作系统调度进程的算法
- 短作业优先算法
- 先来先服务算法
- 时间片轮转算法
- 多级反馈算法
并行与并发
- 并行 两个程序 两个CPU 每个程序分别占用一个CPU自己执行自己的,看起来是同时执行,实际在每一个时间点上都在各自执行着
- 并发 两个程序 一个cpu 每个程序交替的在一个cpu上执行,看起来在同时执行,但是实际上仍然是串行
同步
- 洗剪吹不能同时进行
异步
- 剪头玩手机
阻塞
- cpu不工作
非阻塞
cpu工作
同步阻塞 conn.recv socket 阻塞的tcp协议的时候
同步非阻塞 func() 没有io操作 socket 非阻塞的tcp协议的时候 调用函数(这个函数内部不存在io操作)
异步非阻塞 把func扔到其他任务里去执行了 我本身的任务和func任务各自执行各自的 没有io操作
异步阻塞
# 3.进程的三状态
- 就绪
- 运行
- 阻塞
![1557551924469](C:\Users\big cattle\AppData\Roaming\Typora\typora-user-images\1557551924469.png)
上次更新: 2023/04/16, 18:35:33