UDP协议
服务端不需要考虑客户端是否异常退出
UDP不存在黏包问题(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)
操作系统的发展史
-
一、穿孔卡片
-
CUP利用率非常的低
-
好处是程序员可以一个人独占计算机
-
-
二、联机批处理系统
- 缩短录入数据的时候 让CPU连续工作的时间变长>>>:提升CPU的利用率
-
三、脱机批处理系统
- 是现代计算机的雏形>>>:提升CUP的利用率
总结:
操作系统的发展史也可以看成是CPU利用率提升的发展史
多道技术
-
一、单道技术
- 所有的程序排队执行 总耗时是所有程序耗时之和
-
二、多道技术
- 计算机利用空闲时间提前准备好一些数据 提高效率 总耗时比较短
-
多道:
- 1.切换+保存状态
- CPU会在两种情况下切换(去执行其他的程序)
- 程序自身进入IO操作
- 程序长时间占用CPU
- 2.保存状态
- 每次切换之前要记录下当前执行的状态 之后切回来基于当前状态继续执行
-
例子:
做饭耗时50min
洗衣耗时30min
烧水耗时10min
单道技术总耗时长:50+30+10
多道技术总耗时长:50
进程理论
- 一、如何理解进程
- 程序:一堆躺在文件上的死代码
- 进程:正在运行的的程序(活的)
- 二、进程的调度算法
- 先来先服务算法
- 针对耗时比较短的程序不友好
- 短作业优先调度
- 针对耗时比较长的不友好
- 时间片轮转法+多级反馈队列
- 将固定的时间均分成很多份 所有的程序来了都公平的分一份
- 分配多次之后如果还有程序需要运行 则将其分到下一层
- 越往下表示程序总耗时越长 每次分的时间片越多 但是优先级越低
- 先来先服务算法
进程的并行与并发
- 一、并行
- 多个进程同时运行
- 单个CPU肯定无法实现并行 必须要有读个CPU
- 二、并发、
- 多个进程看上去想同时执行就可以称并发
- 单个CPU完全可以实现并发的效果
- 三、高并发与高并行
描述一个网址非常牛逼能够同时服务很多人的话术- 1.我这个网站很牛逼 能够支持14亿并行量(高并行)
- 不合理 言外之意计算机有14亿个CPU(哪有这么多CPU 集群也不现实)
- 2.我这个网站很牛逼 能够支持14亿并发量(高并发)
- 非常合理 单个CPU可以实现并发效果 多个CPU就能实现14亿并发
- 1.我这个网站很牛逼 能够支持14亿并行量(高并行)
进程的三状态
-
进程三状态的基本状态
- 1.所有的进程想要被运行 必须先经过就绪态
- 2.运行的进程中如果遇到IO操作 则进入阻塞态
- 3.运行的过程中如果时间片用完 则继续进入就绪态
- 4.阻塞态想要进入运行态必须先经过就绪态

同步和异步
用于描述任务的提交状态
- 一、同步
- 提交完成任务之后原地等待任务的结束 期间不做任何事
- 二、异步
- 提交完成任务之后不会原地等待直接去做其他事 结果自动提醒
阻塞与非阻塞
用于描述进程的提交状态
- 一、阻塞
- 阻塞态
- 二、非阻塞
- 就绪态 运行态
同步异步与阻塞非阻塞
同步异步与阻塞非阻塞的结合使用
- 一、同步阻塞
- 在银行排队 并且在队伍中什么事情的不做
- 二、同步非阻塞
- 在银行排队 并且在队伍中可以做点其他事情
- 三、异步阻塞
- 取号 在旁边的座位上等着被叫号 期间什么都不做
- 四、异步非阻塞
- 取号 在旁边的座位上等着被叫号 期间可以办公 打游戏(使程序的运行作用达到极致)
posted on
浙公网安备 33010602011771号