您的位置首页>企业动态>

一文读懂Linux操作系统是如何管理I/O口

导读 大家好,我是极客范的本期栏目编辑小友,现在为大家讲解一文读懂Linux操作系统是如何管理I O口问题。输入输出端口端口是接口电路中可由中央

音频解说

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解一文读懂Linux操作系统是如何管理I/O口问题。

输入输出端口

端口是接口电路中可由中央处理器直接访问的寄存器的地址。几乎每一种外围设备都会读写设备上的寄存器。通过这些地址或端口,中央处理器发送命令,读取状态,并将数据传输到接口电路中的寄存器。外设寄存器,也称为“I/O端口”,通常包括三类:控制寄存器、状态寄存器和数据寄存器,一个外设寄存器通常是连续寻址的。

第二,输入输出内存

比如一个有2MB存储空间的显卡可以插在PC上,甚至可能有一个ROM里面有可执行代码。

三、输入输出端口和输入输出内存的区别和联系

如何区分两者涉及到硬件知识。在X86系统中,有两个地址空间:I/O空间和内存空间,而RISC指令系统(如ARM、PowerPC等)的CPU。)通常只实现一个物理地址空间,即内存空间。

内存:内存地址的地址范围。32位操作系统的内存空间是2的32次方,也就是4G。

I/O空间:X86独有的空间,独立于内存空间的地址空间。32位X86有64K I/O空间。

输入输出端口:当寄存器或内存在输入输出空间时,称为输入输出端口。通用寄存器通常也称为输入输出端口。该输入/输出端口可以映射到内存空间或输入/输出空间。

输入输出内存:当寄存器或内存位于内存空间时,称为输入输出内存。

四.外围输入输出端口物理地址的地址模式

中央处理器有两种方法来处理外围输入输出端口的物理地址:一种是输入输出映射,另一种是内存映射。采用哪一种取决于CPU的架构。

1.统一寻址

RISC指令系统的CPU(如PowerPC、m68k、ARM等。)通常只实现一个物理地址空间(RAM)。在这种情况下,外围输入输出端口的物理地址被映射到中央处理器的单个物理地址空间,并成为内存的一部分。此时,CPU可以像访问内存单元一样访问外设I/O端口,而无需设置特殊的外设I/O命令。

统一寻址也叫“I/O内存”模式,外设寄存器位于“内存空间”(很多外设都有自己的内存和缓冲区,外设的寄存器和内存统称为“I/O空间”)。

2.独立寻址

另一方面,其他架构(一般为X86)的CPU专门为外设实现了单独的地址空间,称为“I/O地址空间”或“I/O端口空间”。这是一个不同于CPU的RAM物理地址空间的地址空间,其中所有外设的I/O端口都被寻址。中央处理器通过设置特殊的输入输出指令(如X86的输入输出指令)来访问该空间中的地址单元(即输入输出端口)。与RAM的物理地址空间相比,I/O地址空间通常相对较小。比如x86 CPU的I/O空间只有64 KB (0-0xffff)。这是“输入输出映射法”的一个主要缺点。

独立寻址也叫“I/O端口”模式,外设寄存器位于“I/O(地址)空间”。

3.优点和缺点

独立寻址的主要优点是:

1)I/O端口地址不占用内存空间;使用特殊的输入输出指令操作端口,输入输出指令短,执行速度快。

2)而且由于特殊的I/O指令和内存访问指令有明显的区别,程序中的I/O操作和内存操作层次清晰,程序可读。

3)同时,由于使用了特殊的I/O指令来访问端口,并且I/O端口地址和内存地址是分开的,所以I/O端口地址和内存地址可以重叠,不会相互混淆。

4)解码电路相对简单(因为I/0端口的地址空间一般较小,使用的地址线较少)。

缺点是只能使用特殊的I/O指令,访问端口的方式没有访问内存的方式多。

统一寻址的优势:

1)由于对I/O设备的访问是访问内存的指令,指令种类多,功能齐全,不仅能使对I/O端口的访问实现输入输出操作,还能对端口的内容进行算术逻辑运算、移位等;

2)此外,它可以给端口更大的寻址空间,这对大型控制系统和数据通信系统非常有意义。

这种方法的缺点是端口占用了内存的地址空间,降低了内存容量。另外,指令长度比特殊I/O指令长,所以执行速度较慢。

12下页全文

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。