1.UDP协议:短消息交互
服务端:
import socket
# 创建服务端对象
server = socket.socket(type=socket.SOCK_DGRAM)
# 获得ip地址与port端口
server.bind(('127.0.0.1', 8090))
while True:
msg, address = server.recvfrom(1024)
# 用户交互
print('msg>>>%s' % msg.decode('utf8'))
print('address>>>', address)
info = input(f'请回复客户端{address}的消息>>>:').strip()
server.sendto(info.encode('utf8'), address)
客户端:
import socket
# 获得客户端对象
client = socket.socket(type=socket.SOCK_DGRAM)
# 获得服务端ip地址与端口号
server_address = ('127.0.0.1', 8090)
while True:
# 用户交互
info = input('请给服务端发消息>>>').strip()
client.sendto(('来自客户端的消息>>>:%s' % info).encode('utf8'), server_address)
msg, address = client.recvfrom(1024)
print('msg>>>%s' % msg.decode('utf8'))
print('address>>>', address)
2.操作系统发展史
2.1理论知识
2.1.1操作系统发展史
注:计算机三大核心硬件:CPU、内存、硬盘
计算机真正工作的是CPU
穿孔卡片:早期因录入数据时间过长且只能一次一人操作-CPU工作利用率非常低
联机批处理系统:缩短录入时间-提升CPU利用率
脱机批处理系统:现在计算机的雏形-提升CPU利用率
2.1.2.操作系统的作用
作用:协调、管理和控制计算机硬件和软件资源(协调、管理多个进程对硬件的使用变得有序起来)
隐藏丑陋复杂的硬件接口,提供良好的抽象接口
3.多道技术
2.1 产生背景:针对单核,实现并发
2.2 单道技术:程序排队运行,耗费时间为所有程序运行之和
2.3 多道技术:当遇到io切换或者CPU等待时间过长时会产生多道技术,并会保存当前的进程状态,之后切换回来基于前面的进程状态操作
IO操作:输入、输出、等待用户输入、time.sleep、读取文件、保存文件等
空间复用:内存中产生多个程序运行
时间复用:类似于复刻出多个CPU去执行,缩短执行时间
4.进程理论
3.1 概念:进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上
狭义的定义:正在运行程序的实例
广义的定义:具有一定独立功能的程序关于某个数据集合的一次运行活动
3.2 进程的调度算法:
先来先服务调度算法:耗费时间很短的程序不适用
短作业优先调度:对耗费时间长又比较紧迫的程序不适用
时间片轮转法+多级反馈队列:
将固定的时间分为多个等分,均等的分给正在运行的程序,如果多次分发后还有程序在运行
则将其放到下一层,也说明该程序耗费时间越长,分发的时间越多,但优先级越低
5.进程的并发与并行
4.1并行:
定义:多个进程运行,单个CPU无法完成需要多个CPU
4.2并发:
定义:多个进程看上去像同时进行,单个CPU可以完成,是并发一定是并行
6.进程三状态

5.1 所有的程序被运行必须经过就绪态
5.2 运行过程中如果发生IO操作将进入阻塞态
5.3 运行时间片若用完则进入就绪态
5.4 阻塞态之后重新进入就绪态
7.同步异步与阻塞非阻塞
7.1同步异步
同步:提交完任务之后原地等待不做任何事情
异步:提交完任务之后去处理其余事情
7.2阻塞非阻塞
阻塞:阻塞态
非阻塞:就绪态、运行态
7.3同步异步与阻塞非阻塞
同步非阻塞:在银行排队 并且在队伍中做点其他事
同步阻塞:在银行排队 并且在队伍中什么事情都不做,效率最低
异步非阻塞:取号 在旁边座位上等着叫号 期间为所欲为,效率高
异步阻塞:取号 在旁边座位上等着叫号 期间不做事
posted on
浙公网安备 33010602011771号