直接内存访问(DMA)是一种计算机技术,它允许外设控制器(通常是显卡、网卡、声卡等)直接与主存交换数据而无需中央处理器(CPU)的干预。在没有DMA的情况下,数据必须通过CPU进行传输,这会导致系统效率低下。
使用DMA技术,控制器可以在CPU的帮助下将数据传输到内存中,然后直接在内存中与其他设备交换数据。这样,CPU就不再需要参与每个数据传输,它可以将更多的时间用于其他任务,从而提高整个系统的性能。
在DMA传输开始之前,CPU必须与外设控制器进行通信,告知控制器在何处找到需要传输的数据以及存放位置。一旦这些信息被设定,控制器就会开始将数据从外设读取到内存中。
在数据传输过程中,DMA控制器通过内存总线与内存交互。该过程中,控制器不断读取数据并将其存入内存,直到所有数据传输完成。
传输完成后,DMA控制器通知CPU消息以使得CPU得知数据已经传输完毕,让CPU可以开始处理数据。
中断是一种计算机系统中的机制,它允许CPU跳出当前正在执行的程序,处理一个事件并在事件处理完成后返回之前的程序执行状态。操作系统和应用程序通常使用中断处理程序来响应硬件事件、软件异常和系统调用等不同类型的事件。
当发生需要处理的事件时(如键盘输入、鼠标移动、网络数据接收等),硬件会向CPU发出中断信号。CPU随后根据中断信号的种类执行相应的中断处理程序。中断处理程序通常是一个小的代码块,只包含必要的操作,例如保存当前状态、完成中断处理、恢复之前的状态并返回原来的执行状态。
中断可以分为硬件中断和软件中断。硬件中断是由计算机硬件引起的,例如时钟、鼠标、键盘和网卡等。而软件中断根据执行的原因和由哪个程序块引起又可以分为异常和系统调用两种类型。
异常中断是指由于程序错误或非法操作而产生的中断。常见的异常包括除以零、访问违规的存储单元等。系统调用是指由软件主动产生的中断,通常用于请求操作系统提供某些服务,例如文件访问、网络通信以及内存管理等。