DMA全称Direct Memory Access(直接访问存储器)
。这是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据。
2、为什么需要DMA?
整个数据传输操作在一个称为DMA控制器
的控制下进行,CPU除了在数据传输开始和结束时做一点处理外(开始和结束时候要做中断处理),在外部设备和存储器进行数据传输的过程中,CPU可也进行其他的工作(前提是未设置停止CPU访问),这样,在大部分时间里,CPU和输入输出都处于并行操作,因此,计算机系统的效率将会大大提高。
3、什么时候需要DMA?
DMA方式主要适用于一些高速的I/O设备。这些外部设备传输字节或字的速度非常快,对于这些设备,如果用输入输出指令或者采用中断的方式来传输字节信息,会大量占用CPU的时间,同时也容易造成数据的丢失。而使用DMA方式能让外部I/O设备直接和存储器进行成批数据的快速传送。
DMA主要用于需要高速、大批量数据传送的系统中,目的是提高数据的吞吐量,如磁盘存取、图像处理、高速数据采集系统方面应用甚广。通常只有数据量较大的外设才需要支持DMA能力,比如视频、音频和网络接口。
4、谁来控制和管理DMA?
上面说到,DMA和外部设备在数据传输的过程中,并不需要CPU的参与,也就是DMA可以在脱离CPU的情况下工作,但是,这并不是说DMA不需要进行控制和管理。通常是采用DMA控制器(DMAC)
来取代CPU,负责DMA数据传输的全过程控制
5、什么是DMA控制器?
目前DMA控制器
都是可编程的大规模集成芯片,是内存储器和外部设备之间进行高速数据传输时的硬件控制电路
,是一种实现直接数据传送的专用处理器。
一个DMA控制器,实际闪是采用DMA方式的外围设备和系统总线之间的接口电路,这个接口电路是在中断接口的基础上再加上DMA机构组成。习惯上将DMA方式的接口电路称为DMA控制器
(也就是DMA控制器其实就一个硬件接口电路)。DMAC控制器包含下面几个部分:
- 内存地址计数器:用于存放内存中要交换的数据的地址
- 字计数器:用于记录传送数据块的长度
- 数据缓冲寄存器:用于暂存每次传送的数据
- DMA请求标志:每当外部设备准备好一个数据后给出一个控制信号,使这个标志位置1,当DMAC控制器中的“控制/状态”逻辑接收到CPU发回的响应信号HLDA后,会发出DMA响应信号,并把DMA请求标志复位,为交换下一个字做准备。
- “控制/状态”逻辑:由控制和时序电路以及状态标志等组成,用于修改内存地址计数器和字计数器,指定传送类型(输入或输出),并对"DMA请求"信号和CPU响应信号进行协调和同步。
- 中断机构:当字计数器溢出时,意味着一组数据交换完毕,由溢出信号触发中断机构,向CPU提出中断报告。
6、DMA的传输过程是怎么样的?
如上图所示,DMA的数据传输过程分为几个部分:
- 当外部设备有DMA使用需求时,会向DMAC控制器发出
DMA请求信号(DREQ
)
为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
- 174 道运维工程师面试题
- 128道k8s面试题
- 108道shell脚本面试题
- 200道Linux面试题
- 51道docker面试题
- 35道Jenkis面试题
- 78道MongoDB面试题
- 17道ansible面试题
- 60道dubbo面试题
- 53道kafka面试
- 18道mysql面试题
- 40道nginx面试题
- 77道redis面试题
- 28道zookeeper
总计 1000+ 道面试题, 内容 又全含金量又高
- 174道运维工程师面试题
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
2503)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!