其他分享
首页 > 其他分享> > UDP协议与并发预备理论

UDP协议与并发预备理论

作者:互联网

UDP协议

# 服务端

      import socket
      server = socket.socket(type=socket.SOCK_DGRAM)  # 指定协议为UDP协议
      server.bind(('127.0.0.1', 9000))
      while True:
          msg, addr = server.recvfrom(1024)
          print('信息>>>>:', msg.decode('utf8'))
          print('信息来自>>>>:', addr)
          message = input('回复的信息>>>>:').strip()
          server.sendto(message.encode('utf8'), addr)

# 客户端
      import socket
      client = socket.socket(type=socket.SOCK_DGRAM)  # 指定协议为UDP协议
      while True:
          message = input('请输入要发送的信息>>>>:').strip()
          client.sendto(message.encode('utf8'), ('127.0.0.1', 9000))
          msg, addr = client.recvfrom(1024)
          print('信息>>>>:', msg.decode('utf8'))
          print('信息来自>>>>:', addr)

UDP协议没有建立链接通道的操作,从而也没有断开链接通道的需求。可以直接对某个地址发送信息,只需要在发送数据的时候进行地址的指定就可以发送。并且在发送信息的时候不需要对方确认接收。而且使用的接收和发送指令都是不同于TCP协议的。

并发预备理论

操作系统的发展史

  1. 穿孔卡片
      优点:一个人占据电脑
      缺点:CPU利用率低(由于穿孔卡片制作上传的过程,CPU都不工作)

  1. 联机批处理系统
      一次性可以录入多个用户指令、缩短了CPU等待的时间、提高了CPU的利用率

  2. 脱机批处理系统
      是现代计算机核心部件的雏形、提高CPU的利用率

总结:操作系统的发展史其实就是提升CPU利用率的过程

多道技术

这里需要注意的是,目前阶段,我们研究并发是基于单核CPU情况
 1. 串行:是指多个任务执行的顺序是类似于串起来的环节,总是在每一个任务做完以后才会执行下一个任务
 2. 多道:是指利用不同环节是否占用对不同的任务进行执行不同的阶段(从硬盘)

进程理论

程序与进程

进程调度算法发展史

  1. 先来的先服务(先来后到):存在对短进程不友好的问题
  2. 短作业优先(按进程需要时间由短到长进行排序,然后依次执行):存在对长进程不友好的问题
  3. 时间片轮转法与多级反馈队列
      时间片轮转法:先公平的将CPU分别给每个人执行(将固定的CPU执行时间,按照进程数分片,然后分给每一个进程)
      多级反馈队列:根据作业的长短的不同再合理分配CPU执行时间

进程调度算法的发展本质上也是为了让单核计算能够做到运行多个程序

重要概念

并发与并行

并发:看着像是多个进程在同时进行

类似于只有一个服务员的餐厅同时来了多位客人,并且还要服务好每位客人的问题。只有合理安排服务顾客A的空闲时间去服务其他客人才能保证服务各位客人,看似在服务多位客人,其实同一时间只服务了一位客人

并行:必须是多个进程在同时运行

以上面举得例子为例,如果想同一时间服务好每一位客人,那么就要求必须有与客人数相等的服务员数量
单核计算机只能实现并发,不能实现并行

高并发与高并行

同步与异步

阻塞与非阻塞

 这里需要介绍进程的三种状态:就绪态、运行态、阻塞态

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

同步异步:用来描述任务的提交方式
阻塞非阻塞:用来描述任务的执行状态

标签:UDP,socket,预备,阻塞,并发,进程,执行,CPU
来源: https://www.cnblogs.com/Oliver-Chance/p/16163385.html