一、UDP协议

1.服务端

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)

2.客户端

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)

3.注意

  1. 服务端不需要考虑客户端是否异常退出
  2. UDP不存在黏包问题(UDP多用于短消息的交互)

二、操作系统的发展史

学习并发编程其实就是在学习操作系统的发展史,也可以称为并发编程的发展史

三大核心硬件:

三大核心硬件 描述
CPU 计算机真正干活的人(CPU是整个计算机执行效率的核心
内存 给CPU准备需要运行的代码
硬盘 存储将来可能要被运行的代码

1.穿孔卡片

优势:程序员可以独占计算机,为所欲为

劣势:CPU利用率非常低

2.联机批处理系统

image

缩短录入数据的时候让CPU连续工作的时间变长

目的:提升CPU利用率

3.脱机批处理系统

image

现代计算机的雏形

目的:提升CPU利用率

4.总结

操作系统也可以看做是CPU利用率提升的发展史

三、多道技术

1.前提

一个核/一个CPU/一个真正干活的

单道/多道 描述
单道技术 所有程序排队执行,总耗时是所有程序耗时之和
多道技术 计算机利用空闲时间提前准备好一些数据,提高效率,总耗时较短

单道工作实例:

image

多道工作实例:

image

2.切换+保存状态

2.1.切换

CPU在两种情况下会切换(去执行其他程序)

  1. 程序自身进入IO操作

    • IO操作:输入输出操作
  2. 程序长时间占用CPU

2.2.保存状态

每次切换之前要记录下当前的记录状态,之后切回来基于当前状态继续执行

2.3.例

做饭耗时50min、洗衣耗时30min、烧水耗时10min

单道技术:50+30+10

多道技术:50

四、进程

1.进程理论

1.1.程序

一堆躺在文件上的死代码

1.2.进程

正在被运行的程序(活的)

1.3.进程的调度算法

  • 先来先服务算法:针对耗时较短的程序不友好
  • 短作业优先调度:针对耗时较长的程序不友好
  • 时间片轮法+多级反馈队列:将固定的时间分成很多份,所有程序来了都公平的分一份,分配多次之后如果还有程序需要运行,则将其分到下一层,越往下表示程序总耗时越长,每次分的时间片越多优先级越低

2.进程的并行与并发

并行/并发 描述
并行 多个进程同时进行,单个CPU无法实现并行,必须要有多个CPU
并发 多个进程看上去像同时执行,单个CPU完全可以实现并发的效果,如果是并行那么肯定也属于并发

如何描述一个网址非常牛逼,能够同时服务很多人

a.我这个网站很牛逼,能够支持14亿并行量(高并行)

  • 不合理,没有那么多CPU(集群也不现实)

b.我这个网站很牛逼,能够支持14亿并发量(高并发)

  • 非常合理

3.进程的三状态

image

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

3.1.就绪态

当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态

3.2.执行/运行态

当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态

3.3.阻塞态

正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等

image

五、同步和异步(重要)

用于描述任务的提交状态

名词 提交状态
同步 提交任务之后原地等待任务结果,期间不做任何事
异步 提交任务之后不在原地等待直接去做其他事,结果自动提醒

六、阻塞与非阻塞(重要)

用于描述进程的执行状态

名词 执行状态
阻塞 阻塞态
非阻塞 就绪态、运行态

七、同步异步与阻塞与非阻塞

名词 描述
同步阻塞 在银行排队,在队伍里什么事都不做
同步非阻塞 在银行排队,在队伍里做其他事
异步阻塞 取号,在旁边座位等着叫号期间什么事也不做
异步非阻塞(效率最高) 取号,在旁边座位等着叫号期间想干什么干什么
 posted on 2022-08-08 16:28  念白SAMA  阅读(36)  评论(0编辑  收藏  举报