UDP协议、操作系统的发展史、进程、多道技术

UDP协议

在UDP协议中。服务端不需要考虑客户端是否异常退出,并且不存在黏包问题(UDP多用于短消息的交互)

服务端
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1',8080))
msg ,address = server.recvfrom(1024)
print(msg.decode('utf8'))
print('111')
print(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.decode('utf8'))
print(address)

操作系统的发展史

操作系统的发展史,也可以看成是CPU利用率的发展史

1.穿孔卡片

这时候CPU利用率非常的低,程序员使用计算机得一个个排队

2.联机批处理系统

image

这时候提升了CPU的利用率,缩短了数据录入时间,让CPU连续工作的时间变长

3.脱机批处理系统

image

大大提升了CPU的利用率,是现代计算机的雏形

多道技术

多道技术的前提的只有一个CPU

image

单道技术

所有的程序排队执行,总耗时是所有程序耗时之和

多道技术

计算机利用空闲的时间提前准备好一些数据,提高效率,总耗时较短

1.CPU会在以下两种情况下会切换(去执行其他程序)
	1.1 程序自身进入IO操作
    	IO操作:指输入输出操作:获取用户输入、time.sleep()、读取文件、保存文件
	1.2 程序长时间占用CPU
2.保存状态
	每次切换之前要记录下当前执行的状态,之后切回来基于当前状态继续执行

进程

进程的理论

1.如何理解进程
	程序:在文件里没有被运行的代码
	进程:正在被运行的代码
2.进程的调度算法
	2.1 先来先服务算法
    	针对耗时比较短的程序不友好
	2.2 短作业优先调度
    	针对耗时比较长的不友好
	2.3 时间片轮转法+多级反馈队列
    	将固定的时间均分成很多份,所有的程序来了都公平的分一份,分配多次之后,如果还有程序需要运行,则将其分到下一层,越往下表示程序总耗时越长,每次分的时间片越多,但是优先级越低

进程的并行与并发

1.并行:多个进程同时执行。这时单个CPU肯定无法实现并行,必须要有多个CPU
2.并发:多个进程看上去像同时执行就可以称之为并发。单个CPU完全可以实现并发的效果,如果是并行那么肯定是并发
3.描述一个网址非常牛逼能够同时服务很多人的话术:xx网站很牛逼,能够支持14亿并发量(高并发)ps:12306
	ps:不能说能够支持14亿的并行量(高并行),因为没有那么多的CPU(集群也不可能)	


进程的三状态

三状态指:就绪、运行、阻塞

image

1.所有的程序想要被运行,必须先经过就绪态
2.运行过程中如果出现IO操作,则进入阻塞态
3.运行过程中如果时间片用完,则继续进入就绪态
4.阻塞态要想进入运行态必须先经过就绪态

同步和异步

同步和异步用于描述任务的提交状态

1.同步:提交完任务之后,原地等待任务的结果,期间不做任何事
2.异步:提交完任务之后不愿地等待直接去做其他事,结果自动提醒

阻塞与非阻塞

阻塞与非阻塞用于描述进程的执行状态

1.阻塞:即阻塞态
2.非阻塞:就绪态、运行态

同步异步与阻塞非阻塞

1.同步阻塞:相当于在银行排队,并且在队伍中什么事都不做
2.同步非阻塞:相当于在银行排队,并且在队伍中做其他事
3.异步阻塞:在银行取票,等待的时间在座位上什么都不做
4.异步非阻塞:在银行取票,等待的时间在座位上做其他事
posted @ 2022-08-08 16:41  DRAMA-娜娜  阅读(83)  评论(0)    收藏  举报