UDP、操作系统发展史、进程

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'csb', addr)   # 客户端 import socket  client = socket.socket(type=socket.SOCK_DGRAM)  server_addr = ('127.0.0.1', 8080) client.sendto(b'qiubabimunieniu', server_addr) msg, addr = client.recvfrom(1024) print('msg:', msg.decode('utf8')) print('addr:', addr)  

# 实现简易聊天室 # 服务端 import socket  server = socket.socket(type=socket.SOCK_DGRAM) server.bind(('127.0.0.1', 8080)) while True:     msg, addr = server.recvfrom(1024)     print(addr)     print(msg.decode('utf8'))     back_msg = input('请回复:').strip()     server.sendto(back_msg.encode('utf8'), addr)   # 客户端1 import socket  client = socket.socket(type=socket.SOCK_DGRAM) server_addr = ('127.0.0.1', 8080)  while True:     msg = input('请发送:').strip()     msg = '来自1  %s'%msg     client.sendto(msg.encode('utf8'), server_addr)     msg, addr = client.recvfrom(1024)     print(msg.decode('utf8'), addr)      # 客户端2 import socket  client = socket.socket(type=socket.SOCK_DGRAM) server_addr = ('127.0.0.1', 8080)  while True:     msg = input('请发送:').strip()     msg = '来自2  %s'%msg     client.sendto(msg.encode('utf8'), server_addr)     msg, addr = client.recvfrom(1024)     print(msg.decode('utf8'), addr) 

操作系统的发展史

# 操作系统的发展史其实就是提升CPU利用率的过程  1.穿孔卡片 	优势:一个人独占电脑   	劣势:CPU利用率极低  2.联机批处理系统 	一次性可以录入多个用户指令、缩短了CPU等待的时间、提高了CPU的利用率    3.脱机批处理系统 	是现代计算机核心部件的雏形、提高CPU的利用率 

多道技术

# 目的:提升CPU利用率 降低程序等待时间 '单核情况下' 串行 	多个任务排队执行 总耗时就是多个任务完整时间叠加 多道 	利用空闲提前准备 缩短总的执行时间并且还能提高CPU利用率       多道技术 	1.空间上的复用 		多个任务共用一套计算机硬件 	2.时间上的复用 		切换+保存状态 			CPU在两种情况下会被拿走 				1.程序遇到IO操作 CPU自动切走运行其他程序 				2.程序长时间占用CPU 系统发现之后也会强行切走CPU 保证其他程序也可以使用      类比: 做饭需要30min 洗衣需要50min 烧水需要20min 串行总共需要耗时:30min + 50min + 20min 多道总共需要耗时:50min 

进程理论

# 什么是程序、什么是进程 	程序:一堆没有被执行的代码(死的)   进程:正在运行的程序(活的)      # 为什么有进程的概念 	就是为了更加精确的描述出一些实际状态  # 进程调度算法发展史   1.先来先服务   	对短作业任务不太友好   2.短作业优先   	多长作业任务不太友好   3.时间片轮转法与多级反馈队列   	时间片轮转法:先公平的将CPU分给每个人执行     多级反馈队列:根据作业长短的不同再合理分配CPU执行时间   '''目的就是为了能够让单核的计算机也能够做到运行多个程序''' 

重要概念

# 并发与并行 	并发   	看上去像同时在执行就可以称之为是并发  	并行   	必须同一时间同时运行才可以称之为并行         # 高并发与高并行 	高并发:我们写的软件可以支持1个亿的并发量     	一个亿的用户来了之后都可以感觉到自己被服务着   高并行:我们写的软件可以支持1个亿的并行量     	上述话语的言外之意是计算机有一亿个CPU               # 同步与异步 	同步   	提交完任务之后原地等待任务的返回结果 期间不做任何事情   异步   	提交完任务之后不愿地等待任务的结果 直接去做其他事情 有结果自动提醒   # 阻塞与非阻塞 	进程三状态图   	就绪态:程序之进入运行态之前肯定要处于就绪态     运行态:程序被CPU执行着     阻塞态:程序执行过程中有IO操作     '''     如果想要尽可能的提升程序执行效率      就要想办法让我们的程序一直处于就绪态和运行态(不要有IO操作)     '''   阻塞:阻塞态   非阻塞:就绪态、运行态         

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

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