每天3分钟操作系统修炼秘籍(14):IO操作和DMA…
2019-11-17 09:18:34来源:博客园 阅读 ()
每天3分钟操作系统修炼秘籍(14):IO操作和DMA、RDMA
点我查看秘籍连载
I/O操作和DMA、RDMA
用户进程想要执行IO操作时(例如想要读磁盘数据、向磁盘写数据、读键盘的输入等等),由于用户进程工作在用户模式下,它没有执行这些操作的权限,只能通过发起对应的系统调用请求操作系统帮忙完成这些操作。这里因为系统调用产生中断将陷入到内核,进行一次上下文切换操作。
内核进程帮忙执行IO操作时,由于IO操作相比于CPU来说是极慢的操作,CPU不应该等待在这个过程中,而是切换到其它进程上去执行其它任务。这里再次涉及到一次上下文切换:从内核态回到用户态的其它进程。
DMA要求硬件的支持,需要在硬件中集成一个小型的“CPU”,比如现在的机械硬盘、固态硬盘、网卡等硬件都带有DMA功能,这样操作系统要执行IO操作时,直接将相关指令发送给这些DMA硬件,DMA处理器负责IO操作,而操作系统这时可以放弃CPU,让CPU去执行其它进程。例如对于读磁盘文件时,操作系统将相关指令以及数据应写在哪个内存地址发送给DMA硬件后,由DMA硬件去读写数据到指定内存地址,当IO操作完成后,DMA硬件通过总线发送一个硬件中断给CPU,于是陷入到内核态(这里涉及了一次上下文切换),内核就知道了IO已经完成,于是将Kernel Buffer数据拷贝到用户进程的IO Buffer,并准备调度用户进程(再次上下文切换)。
假如不使用DMA硬件的话,那么IO操作过程中,操作系统将多次参与,负责将硬件数据读入或读出内存,操作系统参与意味着要陷入到内核态,并且获取CPU控制权,这也意味着要进行大量的上下文切换以及占用大量CPU资源。
而使用DMA后,只有4次必要的上下文切换,且IO操作的过程中完全不需要消耗CPU资源。
除了DMA,还有更高级的RDMA(Remote Direct Memory Access)机制,它需要操作系统和硬件的支持,还需要编写RDMA方式的代码。
前面介绍缓冲空间时提到过,一般情况下,每个用户进程要读、写数据,都会经过两个必要的缓冲层:内核空间的Kernel Buffer、用户空间的IO Buffer。例如读文件数据时,先将数据拷贝到内核的缓冲空间(page cache),然后陷入内核,内核将该缓冲空间数据拷贝到用户空间的缓冲空间(IO Buffer),当调度到用户进程时,用户进程从自己的缓冲空间读取数据。
DMA机制并没有绕过这两个缓冲层,但使用RDMA机制,程序可以直接绕过Kernel Buffer,内核发现是RDMA操作后,直接告诉RDMA硬件将读取的数据(写操作也一样)写入到用户空间的IO Buffer,而不需要先拷贝到Kernel Buffer,再拷贝到IO Buffer。虽然RDMA机制相比DMA不会减少上下文切换次数,但是它减少了内存数据拷贝的过程,相当于是使用了O_DIRECT标记的直接IO技术。
DMA和RDMA两种技术对比如图:RDMA一般实现在网卡上,但出于方便理解,下图直接使用磁盘来描述
像这种绕过内核功能的技术,通常称为内核旁路(Kernel Bypass),RDMA技术内核旁路的是一种,还有像TOE也是内核旁路的一种。
虽然RDMA比较优秀,但是它需要硬件、操作系统和代码的同时支持,对编程而言是一个比较大的冲击,所以目前使用的非常少。
原文链接:https://www.cnblogs.com/f-ck-need-u/p/11875510.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:useradd命令详解(转)
下一篇:部署django
- 操作系统第六次实验报告——使用信号量解决哲学家进餐问题 2020-05-28
- Linux基础(二)在vmwaer虚拟机 上安装Linux操作系统 2020-05-27
- 操作系统第五次实验报告——内存管理 2020-05-17
- 基于mykernel 2.0编写一个操作系统内核 2020-05-13
- 操作系统第四次实验报告——文件系统之使用LinuxAPI实现ls - 2020-04-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash