UDP协议、操作系统、同步与异步、阻塞与非阻塞

UDP协议

# 客户端
import socket
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8888))
msg, addr = server.recvfrom(1024)
print(msg.decode('utf8'))
print(addr)
server.sendto(b'hello lisw', addr)


# 服务端
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_addr = ('127.0.0.1', 8888)
client.sendto(b'hello', server_addr)
msg, addr = client.recvfrom(1024)
print(msg.decode('utf8'))
print(addr)

基于UDP实现简易版本的qq

# 服务端
import socket

server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8888))
while True:
    msg, addr = server.recvfrom(1024)
    print(addr)
    print(msg.decode('utf8'))
    back_msg = input('请回复消息:').strip()
    server.sendto(back_msg.encode('utf8'), addr)
# 客户端
import socket

client = socket.socket(type=socket.SOCK_DGRAM)
server_addr = ('127.0.0.1', 8888)

while True:
    msg = input('请输入内容:').strip()
    msg = '来自客户端:%s' % msg
    client.sendto(msg.encode('utf8'), server_addr)
    msg, addr = client.recvfrom(1024)
    print(msg.decode('utf8'), addr)

操作系统的发展史

1.穿孔卡片
一个人用电脑,cpu利用率极低
2.联机批量处理
一次性多次输入读个用户指令,缩短了cpu等待的时间,提高了cpu的利用率
3.脱机批处理系统
现代计算机的核心部雏形,提高cpu利用率

# 发展史就是提高cpu的利用率的过程

穿孔卡片

联机批量处理

脱机批处理系统

多道技术

所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
# 主要是提高cpu利用率,降低程序等待时间
单个cpu情况下
串行:多个任务排队执行 总耗时就是多个任务完整时间叠加
多道:利用空闲时间提前准备 缩短利用率 提高cup利用率
空间上的复用
多个任务共用一套计算机硬件
时间上的复用
切换加保存状态
俩种拿走的情况
1.程序遇到io操作 会被拿走
2.程序长时间被占用 强项切换 保证其他程序使用

进化理论

程序:一堆没有被执行的代码
进程:正在运行的程序
进程是为了更好描述一些状态
发展史:
先来先服务 短作业优先 时间片论法与多级反馈队列
# 时间片论法与多级反馈队列
先公平的将cup分给每个人执行
根据作业短的不同在合理分配cpu执行时间
主要是为能够让单核的计算机也能做到运行多个程序

并发与并行

并发:看上去是同时进行的执行称为并发
并行:必须是同时进行情况是并行
单核计算机不可能实现,必须要有多个cpu
高并发:编写支持一个亿的并发量, 一个亿的用户都感觉被服务
高并行:一个亿的并行量 必须有一一个亿的cpu

同步与异步

# 同步与异步
	同步
  	提交完任务之后原地等待任务的返回结果 期间不做任何事情
  异步
  	提交完任务之后不愿地等待任务的结果 直接去做其他事情 有结果自动提醒

阻塞与非阻塞

# 阻塞与非阻塞
	进程三状态图
  	就绪态:程序之进入运行态之前肯定要处于就绪态
    运行态:程序被CPU执行着
    阻塞态:程序执行过程中有IO操作
    '''
    如果想要尽可能的提升程序执行效率 
    就要想办法让我们的程序一直处于就绪态和运行态(不要有IO操作)
    '''
  阻塞:阻塞态
  非阻塞:就绪态、运行态

同步异步与阻塞非阻塞结合

同步异步:用来描述任务的提交方式
阻塞非阻塞:用来描述任务的执行状态
# 上述两组属于两个不同概念 但是可以结合
  同步阻塞:银行排队办理业务 期间不做任何事
  同步非阻塞:银行排队办理业务 期间喝水吃东西 但是人还在队列中
  异步阻塞:在椅子上坐着 但是不做任何事
  异步非阻塞:在椅子上坐着 期间喝水吃东西办公	(程序运行的极致)

posted @   末笙  阅读(167)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示