Day33
今日总结
UDP协议
# 服务端
import socket
server = socket.socket(type=socket.SOCK_DGRAM) # 自己指定UDP协议(默认是TCP协议)
server.bind(('127.0.0.1', 8080))
msg, addr = server.recvfrom(1024)
print('msg>>>:', msg.decode('utf8'))
print('addr>>>:', addr)
server.sendto(b'hello client', addr)
# 客户端
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_addr = ('127.0.0.1', 8080) # 查找通讯录
client.sendto(b'hello server', server_addr)
msg, addr = client.recvfrom(1024)
print('msg>>>:', msg.decode('utf8'))
print('addr>>>:', addr)
操作系统发展史
1.穿孔卡片
独享整个计算机资源,后面的一批人都得等着,但CPU利用率很低
2.联机批处理系统
成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结
果向输出机输出。完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并
按上述步骤重复处理。
一次性录入多个用户指令、缩短CPU等待的时间,从而提高了CPU的利用率
3.脱机批处理系统
从输入机上读取用户作业并放到输入磁带上,再从输出磁带上读取执行结果并传给输出机。这样,
主机不是直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主
机与设备的矛盾。
多道技术
多道技术可以降低程序等待时间,提高CPU利用率
1.空间上的复用
多个任务共用一台计算机
2.时间上的复用
程序遇到IO操作或者程序长时间占用CPU时,CPU会运行其他程序
eg:
炒菜需要20min,煲汤需要30min,如果按照串行的方式则炒菜与煲汤需要50min,而多道只需要30min
进程
进程就是正在运行的程序,与程序不同,程序是没有被运行的代码
进程调度算法发展史
1.先来先服务
对需求时间不长的短任务不太友好
2.短作业有限
对长作业不太友好
3.时间片轮转法与多级反馈队列
先将CPU公平分配,再根据作业长短分配CPU
阻塞与非阻塞
进程的状态
就绪态:程序等待执行
运行态:程序被CPU执行
阻塞态:程序执行IO操作
就绪态和运行态可称为非阻塞状态
并发与并行
并发
看上去像同时在执行就可以称之为是并发,让CPU在多个程序之间利用多道技术来回切换+保存状态
并行
必须同时运行才能称为并行

单核肯定能够实现并发,但是不能实现并行,实现并行必须有多个CPU
高并发:服务器支持很多的用户量
高并行:计算机有很多CPU,支持很多程序同时运行
同步与异步
同步
提交任务后原地等待任务的返回结果
异步
提交任务后不原地等待,直接做其他事情,有结果时自动提醒
同步异步与阻塞非阻塞结合
同步异步:用来描述任务的提交方式
阻塞非阻塞:用来描述任务的执行状态
同步阻塞:妈妈让你看着煲的汤,你搬个椅子盯着看
同步非阻塞:妈妈让你看着煲的汤,你在等的时候看电视
异步阻塞:排队办理业务时业务员离开 一直排队
异步非阻塞:排队办理业务时业务员离开 期间看手机吃东西

浙公网安备 33010602011771号