首页 > 系统相关 >粘包问题及进程理论基础

粘包问题及进程理论基础

时间:2022-11-17 21:34:22浏览次数:43  
标签:struct 理论 程序 TCP 粘包 进程 CPU

昨日内容回顾

  • TCP与UDP协议

    TCP协议 三次握手建立连接,四次挥手断开连接。

    TCP协议的可靠性 完备的反馈机制。

    TCP协议半连接池 限制同时连接数,保证服务器正常运作。

    UDP协议 作用单一,仅负责数据的接收急发送,数据易丢失。

  • socket模块

    套接字模块,分为基于文件类型的UNIX及基于网络的INET。

    常见内置函数:bind、listen、connect、recv、send、accept、close

今日内容概要

  • 粘包问题
  • 粘包问题解决思路
  • struct模块
  • 操作系统发展史
  • 多道技术
  • 进程理论

今日内容详细

粘包问题

在TCP协议下传输为流式传输,受到TCP协议算法的影响,在传输数据时,若多次传输的数据量不大且发送间隔较小,TCP协议会默认将这些数据打包一起传送,造成所谓的粘包问题。

粘包问题的解决思路

粘包问题的本质是在传输时未对传输的数据进行明确的分段,若在传输时进行明确的分段,则可避免粘包问题。

struct模块

struct模块可以将传输的数据的长度进行包装,得到固定长度的包装信息,在一端发出包装信息之后,另一端先对收到的信息进行解析,分析出原信息的长度,再接收指定长度的信息,即可避免粘包问题。

# 客户端
info = 'This is a message.'
res = struct.pack('i', len(info.encode('utf8')))  # 对数据长度进行包装
print(len(res))  # 4
res1 = struct.unpack('i', res) 
print(res1)	  # (18,)

struct模块无法对长度过大的数据进行打包或解析,因此,对数据长度较大的数据进行包装时,可先将该数据信息封入字典,先对该字典进行传送,然后,通过通道直接传送该数据。

操作系统发展史

第一阶段:穿孔卡片阶段,计算机很庞大,使用很麻烦 一次只能给一个人使用,期间很多时候计算机都不工作。

第二阶段:联机批处理系统,提前使用磁带一次性录入多个程序员编写的程序,然后交给计算机执行。

第三阶段:脱机批处理系统,通过中转机对主机内程序进行操作。

多道技术

单道运行即CPU在同一时间段内仅执行一个程序,一个程序运行完成后再去执行其他程序。

多道运行即CPU在一个时间段内,通过切换程序同时运行多个程序的运行。

多道运行的详细实现为:

​ 切换 发生切换的情形有程序出现IO操作(输入、读写、阻塞)、程序长时间占用CPU。

​ 保存 CPU切换程序时,会对当前程序的运行状态进行记录。

进程理论

基础知识

程序是代码,进程是在运行的程序。

进程的调度算法为时间片轮转法+多级反馈队列,首次运行分配相同时间,给定时间内未完成则分配更长时间。

并行与并发

并行 多个进程同时执行,必须要有多个CPU参与,单个CPU无法实现并行。
并发 多个进程看上去像同时执行,单个CPU可以实现,多个CPU肯定也可以。

进程的三状态

就绪态 所有的进程在被CPU执行之前都必须先进入就绪态等待。
运行态 CPU正在执行。
阻塞态 进程运行过程中出现了IO操作,阻塞态无法直接进入运行态,需要先进入就绪态。

标签:struct,理论,程序,TCP,粘包,进程,CPU
From: https://www.cnblogs.com/akazukis/p/16901065.html

相关文章