今日内容回顾
基于UDP协议的套接字通信
# 服务端
import socket
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8080))
msg, address = server.recvfrom(1024)
print('msg>>>:%s' % msg.decode('utf8'))
print('address>>>:',address)
server.sendto('服务端'.encode('utf8'), address)
# 客户端
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1', 8080)
client.sendto('客户端'.encode('utf8'), server_address)
msg, address = client.recvfrom(1024)
print('msg>>>:%s' % msg.decode('utf8'))
print('address>>>:',address)
'''补充说明'''
1.服务端不需要考虑客户端是否异常退出
2.UDP不存在黏包问题(UDP多用于短消息的交互)
操作系统的发展史
-
穿孔卡片
需提前制作好穿孔卡片放到早期的输入机中,等待输入机中的卡片内容读取完毕后,输入到计算机内存
启动控制台对输入的数据运行,执行完毕后。打印结果,用户取走卡片后才让下一个用户使用
穿孔卡片阶段cup利用率非常的低。
-
联机批处理系统
缩短录入数据的时间,让cpu能够更好的发挥它的作用,提升cpu利用率
-
脱机批处理系统
等同于现代计算机的雏形,更近一步的提升cpu的的利用率
操作系统的发展史也可看成是cpu利用率提升的一个过程。
多道技术
单道技术
所有的程序排队执行,总耗时是所有程序的耗时的总和。
多道技术
计算机利用空闲时间提前准备好一些数据,提高效率,减少耗时。
多道技术的俩种状态,切换和保存状态
-
切换
当程序长时间占用cpu或程序自身进入io操作的时候,cpu会在这停顿期间切换执行其他程序。
-
保存状态
每次切换之前都要记录当前执行的状态,之后切回来基于当前状态继续执行
进程理论
-
什么是进程
首先程序指的一堆存放在文件上的死代码,没有被运行的。
而进程指的是正在被运行的程序。
进程的并行与并发
-
并行
多个进程之间同时执行,单个cpu无法实现并行,必须要有多个cpu
-
并发
多个进程看上去像同时执行就可以称之为并发,单个cpu完全可以实现并发的效果,如果是并行那么肯定也属于并发
-
小题目
描述一个网址非常牛逼能够同时服务很多人的话术。
1.我们这个网站很牛逼,能够支持14亿并行量(高并行)
2.我们这个网站很牛逼,能够支持14并发量(高并发)
首先第一题不合理,没有这么多cpu(集群也不现实),第二题就比较合理。
进程的三状态
- 所有的进程想要被运行,就必须先经过就绪态
- 运行过程中如果出现了io操作,则进入阻塞态
- 运行过程中如果时间片用完,则继续进入就绪态
- 阻塞态要想进入运行态必须先经过就绪态
同步和异步
同步异步用于描述任务提交的状态
同步:提交任务完成之后原地等待任务结果,在没有得到结果之前不会进行任何操作
异步:提交完任务之后不会原地等待结果,直接去做其它事情,结果自动提醒。
阻塞与非阻塞
阻塞与非阻塞用于描述进程的执行状态
阻塞:程序遇到了io操作进入阻塞态等待io操作结束
非阻塞:程序正常运行在就绪态或运行态阶段
同步异步与阻塞非阻塞
-
同步阻塞
在银行排队 并且在队伍中什么事情都不做
-
同步非阻塞
在银行排队 并且在队伍中做点其他事
-
异步阻塞
取号 在旁边座位上等着叫号 期间不做事
-
异步非阻塞
取号 在旁边座位上等着叫号 期间为所欲为
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】