进程与操作系统
本章内容
- UDP协议
- UDP协议实战
- 操作系统的发展史
- 多道技术
- 进程理论
- 并发与异步
UDP协议
服务端
import socket
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1',8080))
msg1,addr1 = server.recvfrom(1024)
msg2,addr2 = server.recvfrom(1024)
msg3,addr3 = server.recvfrom(1024)
print(msg1.decode('utf8'))
print(msg2.decode('utf8'))
print(msg3.decode('utf8'))
客户端
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
client.connect(('127.0.0.1',8080))
client.send('啊哈哈哈'.encode('utf8'))
client.send('啊哈哈哈'.encode('utf8'))
client.send('啊哈哈哈'.encode('utf8'))
UDP 协议不会出现粘包现象
操作系统的发展史
1.穿孔卡片
优势:一个人独占电脑
劣势:CPU利用率极低
2.联机批处理系统
一次性可以录入多个用户指令、缩短了CPU等待的时间、提高了CPU 的利用率
3.脱机批处理系统
是现代计算机核心部件的雏形、提高CPU的利用率
总结:操作系统的发展史其实就是提升CPU利用率的过程
多道技术
目的:提升CPU利用率 降低程序的等待时间
串行:多个任务排队执行,总耗时就是多个任务完整时间叠加
多道:利用空闲提前准备 缩短总的执行时间并且还能提高CPU利用率
多道技术: 所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。

在A程序计算时,I/O空闲, A程序I/O操作时,CPU空闲(B程序也是同样);必须A工作完成后,B才能进入内存中开始工作,两者是串行的,全部完成共需时间=T1+T2。

将A、B两道程序同时存放在内存中,它们在系统的控制下,可相互穿插、交替地在CPU上运行:当A程序因请求I/O操作而放弃CPU时,B程序就可占用CPU运行,这样 CPU不再空闲,而正进行A I/O操作的I/O设备也不空闲,显然,CPU和I/O设备都处于“忙”状态,大大提高了资源的利用率,从而也提高了系统的效率,A、B全部完成所需时间<<T1+T2。
多道程序设计技术不仅使CPU得到充分利用,同时改善I/O设备和内存的利用率,从而提高了整个系统的资源利用率和系统吞吐量(单位时间内处理作业(程序)的个数),最终提高了整个系统的效率。
单处理机系统中多道程序运行时的特点:
(1)多道:计算机内存中同时存放几道相互独立的程序;
(2)宏观上并行:同时进入系统的几道程序都处于运行过程中,即 它们先后开始了各自的运行,但都未运行完毕;
(3)微观上串行:实际上,各道程序轮流地用CPU,并交替运行。
多道程序系统的出现,标志着操作系统渐趋成熟的阶段,先后出现了作业调度管理、处理机管理、存储器管理、外部设备管理、文件系统管理等功能。
由于多个程序同时在计算机中运行,开始有了空间隔离的概念,只有内存空间的隔离,才能让数据更加安全、稳定。
出了空间隔离之外,多道技术还第一次体现了时空复用的特点,遇到IO操作就切换程序,使得cpu的利用率提高了,计算机的工作效率也随之提高。
进程理论
1.什么是进程
程序:一堆没有被执行的代码(死的)
进程:正在运行的程序(活的)
2.进程调度算法发展史
2.1.先来先服务
对短作业任务不太友好
2.2.短作业优先
多长作业任务不太友好
2.3.时间片轮转法与多级反馈队列
时间片轮转法:先公平的将CPU分给每个人执行
多级反馈队列:根据作业长短的不同再合理分配CPU执行时间
这么做就是为了能够让单核的计算机也能够做到运行多个程序
并发与并行
# 并发与并行
并发
看上去像同时在执行就可以称之为是并发
"""
饭店里面有多桌客人(任务)
但是只有一个服务员(CPU)
如何让所有客人都感觉被服务员服务着(CPU执行)
让服务员在多桌客人之间快速的来回切换并保存状态即可
让CPU在多个程序之间利用多道技术来回切换+保存状态
单核肯定能够实现并发 但是不能实现并行!!!
"""
并行
必须同一时间同时运行才可以称之为并行
"""单核计算机肯定不能实现并行!!! 必须要有多个CPU"""
# 高并发与高并行
高并发:我们写的软件可以支持1个亿的并发量
一个亿的用户来了之后都可以感觉到自己被服务着
高并行:我们写的软件可以支持1个亿的并行量
上述话语的言外之意是计算机有一亿个CPU
同步与异步
# 同步与异步
同步
提交完任务之后原地等待任务的返回结果 期间不做任何事情
异步
提交完任务之后不愿地等待任务的结果 直接去做其他事情 有结果自动提醒
# 阻塞与非阻塞
进程三状态图
就绪态:程序之进入运行态之前肯定要处于就绪态
运行态:程序被CPU执行着
阻塞态:程序执行过程中有IO操作
'''
如果想要尽可能的提升程序执行效率
就要想办法让我们的程序一直处于就绪态和运行态(不要有IO操作)
'''
阻塞:阻塞态
非阻塞:就绪态、运行态
同步异步与阻塞非阻塞结合
同步异步:用来描述任务的提交方式
阻塞非阻塞:用来描述任务的执行状态
# 上述两组属于两个不同概念 但是可以结合
同步阻塞:银行排队办理业务 期间不做任何事
同步非阻塞:银行排队办理业务 期间喝水吃东西 但是人还在队列中
异步阻塞:在椅子上坐着 但是不做任何事
异步非阻塞:在椅子上坐着 期间喝水吃东西办公 (程序运行的极致)

浙公网安备 33010602011771号