【8.8】并发编程相关发展介绍

今日内容概要

  • UDP协议
  • 操作系统的发展史
  • 进程的概念
  • 多道技术
  • 诸多专业名词
  • 代码创建进程

UDP协议

  • 含义:
    • UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文,尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。
# 服务端
import socket
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8080))
while True:
    msg, address = server.recvfrom(1024)
    print('msg>>>:%s' % msg.decode('utf8'))
    print('address>>>:',address)
    back_data = input('回复消息').strip()
    server.sendto(back_data.encode('utf8'), address)
    
    
    
# 客户端
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1', 8080)
while True:
    send_data = input('发送给服务端的消息>>>:').strip()
    client.sendto(send_data.encode('utf8'), server_address)
    msg, address = client.recvfrom(1024)
    print('msg>>>:%s' % msg.decode('utf8'))
    print('address>>>:',address)
  • 补充说明:
    • 1.服务端不需要考虑客户端是否异常退出
    • 2.UDP不存在黏包问题(UDP多用于短消息的交互)

操作系统的发展史

  • 计算机三大核心硬件:

    • CPU:计算机中处理一切事物的部分(核心)
    • 内存:给CPU准备需要运行的代码
    • 硬盘:永久存储将来可能要被运行的代码
  • 1.穿孔卡片

    • CPU利用率非常的低
    • 用户独占全机 ,不会出现因资源已被其他用户占用而等待的现象 ,但资源的利用率低。
  • 2.联机批处理系统

    • 缩短录入数据的时候 让CPU连续工作的时间变长>>>:提升CPU利用率
  • 3.脱机批处理系统

    • 是现代计算机的雏形>>>:提升CPU利用率
  • 总结:

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

多道技术

  • 前提:一个核/ 一个cpu/一个处理工作的
  • 单道技术
    • 所有的程序排队执行 总耗时是所有程序耗时之和
  • 多道技术
    • 计算机利用空闲时间提前准备好一些数据 提高效率 总耗时较短
    • 切换+保存状态
    • 切换:cup在两种状态下会切换(执行其他程序)2.程序长时间占用CPU
    • 保存状态:每次切换之前要记录下当前执行的状态 之后切回来基于当前状态继续执行

进程理论

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

进程的并行与并发

  • 并行:
    • 多个进程同时执行 需要多个cup同时进行 单个cup无法实现并行
  • 并发:
    • 多个进程看上去像同时执行的就可以称之为并发
    • 单个cpu完全可以实现并发的效果 如果是并行那么肯定也属于并发

进程的三状态

  • (1)就绪(Ready)状态
    • 当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。
  • (2)执行/运行(Running)状态
    • 当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。
  • (3)阻塞(Blocked)状态
    • 正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。

同步和异步

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

阻塞与非阻塞

  • 用于描述进程的执行状态
  • 阻塞:阻塞态
  • 非阻塞:就绪态 运行态

同步异步与阻塞非阻塞

  • 举例说明下列状态:

  • 同步阻塞:放学回家后 烧了壶水 并且在电水壶旁边等着水烧开什么事情都不做

  • 同步非阻塞:放学回家后 烧了壶水 并且在电水壶旁边等着水烧开做了点事情

  • 异步阻塞:放学回家后 烧了壶水 坐在沙发上等着水烧开 过程不做事

  • 异步非阻塞:放学回家后 烧了壶水 坐在沙发上等着水烧开 过程中写作业 背课文 查资料 复习 预习......

posted @   W日常  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示