课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Linux编程开发是目前比较热门的一个编程开发技术,而今天我们就一起来了解一下,Linux编程开发中io模型的作用。
1.内核缓冲区和进程缓冲区
说到IO模型的时候,我们先说说绕不开的内存缓冲区。缓冲区的目的,是为了减少频繁地与设备之间的物理交换,我们知道,外部设备的直接读写,会涉及到操作系统的中断,发生和结束系统中断的时候,需要保存和恢复进程数据等信息,为了减少这种底层系统的时间损耗和性能损耗,于是出现了内存缓冲区。
在linux操作系统中,操作系统内核只有一个内核缓冲区,但是每个用户进程都有自己的缓冲区,叫做进程缓冲区。有了这两个概念,再来说下read和write操作。
read系统调用。并不是直接从物理设备把数据读取到内存中,是把数据从内核缓冲区复制到进程缓冲区。
write系统调用。也不是直接把数据写入到物理设备,是把数据从进程缓冲区复制到内核缓冲区。
所以,上层程序的IO操作,实际上不是物理设备级别的读写,而是缓存的复制。数据在内核缓冲区和物理设备之间的交换,是由操作系统内核来完成的。
2.阻塞和非阻塞
阻塞是指用户线程一直在等待,直到内核IO操作彻底完成,在这期间不能干别的事情。
非阻塞是指用户线程拿到内核返回的状态值就返回自己的空间,干别的事情去了。
3.同步和异步
同步是指用户空间的线程是主动发起请求的一方,内核空间是被动接受方。
异步则刚好相反,指操作系统内核是主动发起请求的一方,而用户线程是被动接收方。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。