Day33

今日总结

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'hello client', addr)


# 客户端
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_addr = ('127.0.0.1', 8080)  # 查找通讯录
client.sendto(b'hello server', server_addr)
msg, addr = client.recvfrom(1024)
print('msg>>>:', msg.decode('utf8'))
print('addr>>>:', addr)

操作系统发展史

1.穿孔卡片

​ 独享整个计算机资源,后面的一批人都得等着,但CPU利用率很低

2.联机批处理系统

​ 成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结

果向输出机输出。完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并

按上述步骤重复处理。

​ 一次性录入多个用户指令、缩短CPU等待的时间,从而提高了CPU的利用率

3.脱机批处理系统

​ 从输入机上读取用户作业并放到输入磁带上,再从输出磁带上读取执行结果并传给输出机。这样,

主机不是直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主

机与设备的矛盾。

多道技术

多道技术可以降低程序等待时间,提高CPU利用率

1.空间上的复用

​ 多个任务共用一台计算机

2.时间上的复用

​ 程序遇到IO操作或者程序长时间占用CPU时,CPU会运行其他程序

eg:

​ 炒菜需要20min,煲汤需要30min,如果按照串行的方式则炒菜与煲汤需要50min,而多道只需要30min

进程

进程就是正在运行的程序,与程序不同,程序是没有被运行的代码

进程调度算法发展史

​ 1.先来先服务

​ 对需求时间不长的短任务不太友好

​ 2.短作业有限

​ 对长作业不太友好

​ 3.时间片轮转法与多级反馈队列

​ 先将CPU公平分配,再根据作业长短分配CPU

阻塞与非阻塞

​ 进程的状态

​ 就绪态:程序等待执行

​ 运行态:程序被CPU执行

​ 阻塞态:程序执行IO操作

​ 就绪态和运行态可称为非阻塞状态

并发与并行

​ 并发

​ 看上去像同时在执行就可以称之为是并发,让CPU在多个程序之间利用多道技术来回切换+保存状态

​ 并行

​ 必须同时运行才能称为并行

​ 单核肯定能够实现并发,但是不能实现并行,实现并行必须有多个CPU

​ 高并发:服务器支持很多的用户量

​ 高并行:计算机有很多CPU,支持很多程序同时运行

同步与异步

​ 同步

​ 提交任务后原地等待任务的返回结果

​ 异步

​ 提交任务后不原地等待,直接做其他事情,有结果时自动提醒

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

​ 同步异步:用来描述任务的提交方式

​ 阻塞非阻塞:用来描述任务的执行状态

​ 同步阻塞:妈妈让你看着煲的汤,你搬个椅子盯着看

​ 同步非阻塞:妈妈让你看着煲的汤,你在等的时候看电视

​ 异步阻塞:排队办理业务时业务员离开 一直排队

​ 异步非阻塞:排队办理业务时业务员离开 期间看手机吃东西

posted @ 2022-04-18 19:36  有梦想的阿九  阅读(66)  评论(0)    收藏  举报