UDP协议与进程技术

UDP协议

什么是UDP协议

说明解释
英文名:User Datagram Protocol
中文名:数据报协议
协议说明:UDP是一种面向无连接的传输层通信协议。
举例:发短信,不需要双方建立连接,但是,数据报的大小应限制在64k以内
特点:效率高,数据传输不安全,容易丢包,UDP是一个不可靠的协议,发送方所发送的数据报并不—定以相同的次序到达接收方。

应用场景

选择UDP作为传输协议时必须要谨慎。在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的QQ就是使用的UDP协议

应用实列

基于UDP实现一个简易版的聊天室

服务端:

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)

客户端:

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)

补充说明:

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

操作系统的发展史

1.穿孔卡片

优劣势解释
优势程序员可以一个人独占一个计算机
劣势CPU的利用率很低,工作效率也低

在这里插入图片描述

2.联机批处理系统

优劣势解释
优势监督程序不停地处理各个作业,从而实现了作业到作业的自动转接,减少了作业建立时间和手工操作时间,有效克服了人机矛盾,提高了计算机的利用率。
劣势但是,在作业输入和结果输出时,主机的高速CPU仍处于空闲状态,等待慢速的输入/输出设备完成工作: 主机处于“忙等”状态。

在这里插入图片描述

3.脱机批处理系统

功能:

(1)从输入机上读取用户作业并放到输入磁带上。

(2)从输出磁带上读取执行结果并传给输出机。

优劣势解释
优势有效缓解了主机与设备的矛盾。主机与卫星机可并行工作,二者分工明确,可以充分发挥主机的高速计算能力。
劣势每次主机内存中仅存放一道作业,每当它运行期间发出输入/输出(I/O)请求后,高速的CPU便处于等待低速的I/O完成状态,致使CPU空闲。

在这里插入图片描述

为改善CPU的利用率,又引入了多道程序系统。

多道程序系统

什么是多道程序系统?

所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。

单道技术

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

运行过程:

在A程序计算时,I/O空闲, A程序I/O操作时,CPU空闲(B程序也是同样);必须A工作完成后,B才能进入内存中开始工作,两者是串行的,全部完成共需时间=T1+T2。

在这里插入图片描述

多道技术

计算机利用空闲时间提前准备好一些数据 提高效率 总耗时较短
  • 切换和保存状态

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

    1.程序自身进入IO操作

    IO操作:输入输出操作
    获取用户输入
    time.sleep()
    读取文件
    保存文件

    2.程序长时间占用CPU

    2.保存状态

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

  • 运行过程:

    将A、B两道程序同时存放在内存中,它们在系统的控制下,可相互穿插、交替地在CPU上运行:当A程序因请求I/O操作而放弃CPU时,B程序就可占用CPU运行,这样 CPU不再空闲,而正进行A I/O操作的I/O设备也不空闲,显然,CPU和I/O设备都处于“忙”状态,大大提高了资源的利用率,从而也提高了系统的效率,A、B全部完成所需时间<<T1+T2。

  • 作用:

    多道程序设计技术不仅使CPU得到充分利用,同时改善I/O设备和内存的利用率,从而提高了整个系统的资源利用率和系统吞吐量(单位时间内处理作业(程序)的个数),最终提高了整个系统的效率。

在这里插入图片描述

进程理论

1.如何理解进程?

程序:一堆躺在文件上的死代码
进程:正在被运行的程序(活的)

2.进程的调度算法

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

进程的并行与并发

  • 并行

    并行是指两者同时执行,比如赛跑,两个人都在不停的往前跑;(资源够用,比如三个线程,四核的CPU )

    单个CPU肯定无法实现并行 必须要有多个CPU

  • 并发

    并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B用完继续给A ,交替使用,目的是提高效率。

    单个CPU完全可以实现并发的效果 如果是并行那么肯定也属于并发

并行和并发的区别

并行是从微观上,也就是在一个精确的时间片刻,有不同的程序在执行,这就要求必须有多个处理器(A,B,C,AB一直占用资源,C一直处于等待状态,只有等A,B资源结束之后在C才有资源使用)

并发是从宏观上,在一个时间段上可以看出是同时执行的,比如一个服务器同时处理多个session(A,B,C,AB一直占用资源,一旦有空闲资源C就会运行,A,B,C可以交替使用资源,提高效率)

高并发与高并行

高并发:我们写的软件可以支持1个亿的并发量
	一个亿的用户来了之后都可以感觉到自己被服务着

高并行:我们写的软件可以支持1个亿的并行量
	上述话语的言外之意是计算机有一亿个CPU(不太合理)

进程三状态

1)就绪状态(Ready):

进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。

2)运行状态(Running):

进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。

3)阻塞状态(Blocked):

由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理器资源分配给该进程,也无法运行。

思路:

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

同步与异步

  • 同步

    就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事

  • 异步

    提交完任务之后不原地等待直接去做其他事 结果自动提醒

    不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了

阻塞与非阻塞

用于描述进程的运行状态
  • 进程三状态图
    就绪态:程序之进入运行态之前肯定要处于就绪态
    运行态:程序被CPU执行着
    阻塞态:程序执行过程中有IO操作

在这里插入图片描述

总结:

如果想要运行效率高,那就要让程序在就绪态和运行态来回切换(不要有IO操作)

阻塞:阻塞态
非阻塞:就绪态和运行态

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

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

  • 同步阻塞形式

    效率最低。在银行排队 并且在队伍中什么事情都不做
    
  • 异步阻塞形式

    在银行排队 并且在队伍中做点其他事
    
  • 同步非阻塞形式

    取号 在旁边座位上等着叫号 期间不做事
    
  • 异步非阻塞形式

    效率最高。取号 在旁边座位上等着叫号 期间可以做任何事情
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值