IO多路复用的原理
IO多路复用是一种在单一进程中同时处理多个网络连接的技术。它的基本原理是通过一种机制,一个进程可以监视多个文件描述符(通常是网络套接字)。一旦某个文件描述符就绪(一个socket准备好读或者写),能够通知程序进行相应的读写操作。
实现IO多路复用可以使用哪些函数完成
select , poll , epoll
select和poll的区别
在IO多路复用中,select和poll虽然都能完成监听多个文件描述符的任务,它们之间的区别是
1 .文件描述符数量限制:select有最大文件描述符数量的限制,在Unix系统中一般限制为1024,如果超过这个数量,就无法使用select模型。而poll没有最大文件描述符数量的限制。
2 .效率问题:select和poll在处理大量并发连接时,由于需要在每次调用时对所有文件描述符进行线性扫描,效率较低。这是因为它们采用的是轮询的方式来处理文件描述符,而且当文件描述符数量大时,轮询的时间就会增加。
3 .参数传递方式:select使用三个位图(readset、writeset、exceptset)来表示三个fd_set,而poll使用一个pollfd结构体数组。因此,从存储空间来看,poll相对于select来说,更加灵活。
在UDP通信中,使用connect函数有什么好处
在UDP通信中,虽然UDP是无连接的,但是还是可以使用connect函数。使用connect函数在UDP通信中有以下几个好处:
指定默认目的地址和端口:在UDP通信中,每次发送数据时都需要指定目的地址和端口。但是如果大部分数据都是发送给同一个地址和端口,那么每次都指定会比较麻烦。这时候,可以使用connect函数来指定默认的目的地址和端口,这样在发送数据时就不需要再指定了。
错误检测:虽然UDP本身是不可靠的,但是如果使用了connect函数,那么在发送数据时如果网络出现错误,就可以立即得到错误信息。否则,错误信息可能会在下一次发送数据时才能得到。
简化编程:在使用connect函数后,UDP套接字的使用方式和TCP套接字更加接近,可以简化编程。
OSI7层网络体系结构有哪些
应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
四层网络体系结构
应用层,传输层,网络层,网络接口层
eg.ARP地址解析协议,网络接口层
HTTP超文本传输协议,应用层
IP网际协议,网络层
UDP用户数据报协议,传输层
TCP传输控制协议,传输层
eg.100.0.125.2默认的子网掩码为255.0.0.0
顺序表和链表的区别
顺序表和链表都是数据结构中常见的线性结构,二者最大的区别在于存储方式不同:
顺序表:使用一段连续的物理空间存储元素,每个元素占用固定大小的存储空间。可以通过下标直接访问元素,因此随机访问速度快,但插入和删除操作需要移动其他元素,效率较低。
链表:使用一组任意的物理空间存储元素,每个元素存储下一个元素的地址。不能通过下标直接访问元素,必须从头节点开始沿着指针遍历,因此随机访问速度较慢,但插入和删除操作只需要修改相邻元素的指针,效率较高。
进程和线程的区别
进程和线程是操作系统中的两个重要概念,它们是并发编程的基础。进程是计算机程序关于数据集合及处理器状态等的一次执行活动,是系统进行资源分配和调度的一个独立单位。而线程则是进程中的一条执行路径,是程序执行的最小单元,一个进程可以包含多个线程,它们共享进程的资源。
进程和线程的区别主要有以下几点:
1. 调度:线程是调度的基本单位,而进程则是资源分配的基本单位。
2. 内存:线程共享进程的内存空间,而进程之间是独立的。
3. 通信:线程之间可以直接通信,而进程之间需要通过IPC通信。
4. 并发性:多个线程可以在同一时间内并发执行,而进程只能在不同时间执行。