UNIX网络编程
文章平均质量分 95
SoveTingღ
嵌入式小白记录学习
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【UNIX网络编程】I/O多路复用
本文介绍了I/O多路复用技术及其三种实现方式:select、poll和epoll。I/O多路复用通过单个线程监控多个文件描述符,提高I/O效率。select使用固定大小的位图结构,存在1024个描述符限制和轮询效率低的问题;poll改用动态数组,消除了数量限制但仍需轮询;epoll采用红黑树和就绪链表,实现了高效的事件通知机制,支持水平触发和边缘触发两种模式。文章详细说明了各技术的API接口、使用流程和底层原理,并通过代码示例展示了具体实现,最后比较了各技术的优缺点,指出epoll在高并发场景下的性能优势。原创 2025-08-01 09:49:19 · 1212 阅读 · 0 评论 -
【UNIX网络编程】5种I/O模型
本文介绍了五种I/O模型的工作原理:阻塞I/O全程等待;非阻塞I/O通过轮询检查状态;I/O复用通过select等机制监控多个描述符;信号驱动I/O由内核主动通知数据就绪;异步I/O则由内核完成所有操作后通知结果。文章通过老王烧水的生动比喻,形象说明了各种模型的特点,指出阻塞I/O效率最低,非阻塞I/O消耗CPU资源,I/O复用可提高效率,而异步I/O性能最优。不同模型适用于不同场景,理解其差异有助于系统优化。原创 2025-07-31 13:40:36 · 2166 阅读 · 0 评论 -
【进程间通信】Posix 共享内存
本文介绍了共享内存通信机制及其相关函数。共享内存是进程间通信(IPC)中最快的方式,通过将内存映射到进程地址空间,避免了内核数据拷贝的开销。文章详细讲解了mmap、munmap、msync等核心函数,以及Posix共享内存区的shm_open/shm_unlink方法。通过生产者-消费者模型的代码示例,展示了如何使用环形队列结合信号量实现共享内存通信。该机制相比管道、消息队列等传统IPC方式,减少了数据在内核和用户空间之间的复制次数,显著提高了通信效率。文末提供的完整代码示例可帮助理解共享内存的实际应用。原创 2025-07-24 16:15:30 · 2381 阅读 · 0 评论 -
【进程间通信】Posix 信号量
本文介绍了POSIX信号量的两种类型及其使用方式。有名信号量通过内核维护,使用sem_open()创建/打开,sem_wait()/sem_post()进行P/V操作,sem_close()/sem_unlink()关闭删除。基于内存的信号量通过sem_init()初始化,需配合共享内存实现进程间同步。文中提供了两种信号量的代码示例:有名信号量的生产者-消费者模型演示了基本的同步操作;基于内存的信号量则实现了一个环形队列的生产者-消费者模型。原创 2025-07-24 10:57:26 · 1271 阅读 · 0 评论 -
【进程间通信】Posix 消息队列
Posix消息队列比较简单:mq_open创建一个新队列或打开一个已存在的队列,mq_close关闭队列,mq_unlink则删除队列名。往一个队列中放置消息使用mq_send,从一个队列中读出消息使用mq_receive。队列属性的查询与设置使用mq_getattr和mq_setattr,函数mq_notify则允许我们注册一个信号或线程,它们在有一个消息被放置到某个空队列上时发送(信号)或激活(线程)。队列中的每个消息被赋予一个小整数优先级,mq_receive每次被调用时总是返回最高优先级的最早消息。原创 2025-07-22 09:49:54 · 1094 阅读 · 0 评论 -
【进程间通信】Posix IPC
Posix IPC概述 Posix IPC包含消息队列、信号量和共享内存三类进程间通信机制。三类IPC均以/name格式命名,通过mq_open、sem_open和shm_open创建或打开,支持O_CREAT(不存在则创建)、O_EXCL(排他创建)等标志。权限模式mode(八进制数)指定读写权限。原创 2025-07-21 14:28:30 · 769 阅读 · 0 评论
分享