日常学习--20240706

1、udp协议的特点有哪些?

a、无连接,发送和接收数据不需要建立连接,开销小,实时性好

b、不可靠传输,不保证数据包能够到达目的地,也不保证数据包的顺序

c、面向数据报的,以数据报形式发送数据

// 创建DatagramPacket对象,包含要发送的数据、长度、服务器地址和端口
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, port);

d、支持广播和多播形式,UDP支持广播和多播功能,这使得UDP能够向多个目的地址发送相同的数据报。

2、TCP如何保证可靠的传输?

序列号和确认应答、超时重传、校验和、流量控制、拥塞控制、连接自动管理、数据分块的方式保证可靠传输。

序列号和确认应答:保证数据到达客户端,客户端能够对数据进行去重、排序等

超时重传:客户端超过定时器时间未应答,则重传

校验和:客户端对数据进行校验和计算对比服务端校验和,如果不一致,则认为数据在传输过程中发生异常,要求服务端重传。

流量控制:服务端会依据客户端的接收窗口大小,调整自己的发送数据速率,避免客户端过多数据堆积,导致丢包重发

拥塞控制:在网络拥堵时,服务端会自动调整自己的发送速率

连接管理:TCP三次握手和四次挥手,确保服务端和客户端已连接

数据分段:TCP数据报文分块,出现丢包等异常时只需重发异常部分。

3、Linux系统的零拷贝技术?

零拷贝(Zero-Copy)就是一种避免 CPU 将数据从一块存储拷贝到另外一块存储的技术,是指将数据直接从磁盘文件复制到网卡设备中,而不需要经由应用程序之手。

传统read+write方式:四次上下文切换和四次数据拷贝(其中两次有CPU参与)

主要方式有:

mmap+write方式:四次上下文切换和三次数据拷贝(用户空间到socket缓冲区时CPU参与)

splice(通过内核管道做中转传递数据),两次上下文切换和两次数据拷贝(要求有一个文件描述符需要支持管道)

sendfile方式:Linux2.4以前,两次上下文切换和三次拷贝(有一次是内核缓冲区拷贝到socket缓冲区);Linux2.4及以后,两次上下文切换和两次拷贝(磁盘到内存缓冲区,内存缓冲区到网卡缓冲区;原来的内核缓冲区到socket内存缓冲区改为了非传统拷贝,在socket缓冲区中引用指向内核缓冲区包含了偏移量等)

4、说一说进程调度算法有哪些

  • 先来先服务(FCFS,First-Come, First-Served):按照进程到达的先后顺序进行调度,先到达的进程先执行。

  • **短作业优先调度(SJF, Shortest Job First):**选择估计运行时间最短的进程优先执行,以减少平均等待时间。特点:可以最大程度地减少平均等待时间,但可能会导致长作业被饿死(即长时间得不到执行)。

  • 时间片轮转调度(RR, Round-Robin): 所有进程按照到达顺序排成一个队列,每个进程执行一个时间片后,将CPU时间片分配给下一个进程。特点:适用于时间片较短的情况,能够平衡各个进程的执行,但可能导致上下文切换频繁。

  • **优先级调度(PSA, Priority Scheduling Algorithm):**为每个进程分配一个优先级,优先级高的进程先获得CPU时间片。特点:可以根据不同的情况调整优先级,但可能导致低优先级的进程长时间等待,出现饥饿现象。

  • **多级反馈队列调度(MFQ, Multi-level Feedback Queue Scheduling):**将进程分为多个队列,每个队列有不同的优先级和时间片大小。进程在一个队列中执行完毕后,可以进入下一个优先级较高的队列。特点:能够兼顾不同类型的作业,既可以保证短作业优先执行,又可以避免长作业饥饿。

  • **最高响应比优先调度(HRRN, Highest Response Ratio Next):**根据等待时间和估计运行时间的比值(响应比)来选择下一个执行的进程,以最大化响应比。特点:可以减少平均等待时间,但需要预先知道每个进程的运行时间。

相关推荐
网络研究院2 小时前
如何安全地大规模部署 GenAI 应用程序
网络·人工智能·安全·ai·部署·观点
limengshi1383922 小时前
通信工程学习:什么是RIP路由信息协议
网络·网络协议·学习·智能路由器·信息与通信
xiaobuding_QAQ3 小时前
自用Proteus(8.15)常用元器件图示和功能介绍(持续更新...)
单片机·嵌入式硬件·学习·proteus
wei_shuo3 小时前
偏标记学习+图像分类(论文复现)
学习·分类·数据挖掘
Miqiuha4 小时前
lock_guard和unique_lock学习总结
java·数据库·学习
一 乐5 小时前
学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
加油,旭杏6 小时前
【中间件学习】fastCG介绍和使用
学习·nginx·fastcgi
limengshi1383926 小时前
通信工程学习:什么是TFTP简单文件传输协议
网络·网络协议·学习·信息与通信
GFCGUO6 小时前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
麻辣韭菜8 小时前
网络基础 【HTTP】
网络·c++·http