内存映射io和io映射io之间有什么区别

时间:2010-10-08 12:33:41

标签: operating-system linux-kernel

请解释内存映射IO和IO映射IO之间的区别

5 个答案:

答案 0 :(得分:8)

嗯,......除非我误解,否则你谈的是两件完全不同的事情。我会给你两个非常简短的解释,这样你就可以了解你现在需要的东西。

内存映射I / O意味着将I / O硬件设备的内存映射到主内存映射中。也就是说,计算机内存中的地址实际上与RAM无关,而与内部寄存器和外围设备的内存相对应。这是Pointy谈论的机器架构。

还有映射I / O,这意味着获取(比方说)一个文件,并让操作系统将部分内容加载到内存中,以便以后更快地访问。在Unix中,这可以通过mmap()完成。

我希望这会有所帮助。

答案 1 :(得分:6)

在x86上有两个不同的地址空间,一个用于内存,另一个用于I / O端口。

端口地址空间限制为65536个端口,可使用IN / OUT指令访问。

例如,可以使用某些I / O端口访问视频卡的VGA功能,但帧缓冲区是内存映射的。

其他CPU架构只有一个地址空间。在这些体系结构中,所有设备都是内存映射的。

答案 2 :(得分:6)

内存映射I / O映射到与程序存储器和/或用户存储器相同的地址空间,并以相同方式访问。

端口映射I / O使用单独的专用地址空间,可通过一组专用的微处理器指令进行访问。

由于16位处理器将逐渐过时并在一般情况下被替换为32位和64位,因此为I / O保留内存地址空间范围不是问题,因为处理器的内存地址空间通常远大于系统中所有内存和I / O设备所需的空间。

因此,利用内存映射I / O的优势变得更加实用。

这种方法的缺点是必须为每个设备完全解码整个地址总线。例如,具有32位地址总线的机器将需要逻辑门来解析所有32个地址线的状态,以正确解码任何设备的特定地址。这增加了向机器添加硬件的成本。

IO映射IO系统的优势在于,解码离散地址所需的逻辑更少,因此将硬件设备添加到计算机的成本更低。但是可能需要更多说明。

参考: - Check This link

答案 3 :(得分:1)

我在两者之间有一个更明显的区别。内存映射I / O设备是I / O设备,当IO / M为低时响应。 I / O(或外设)映射的I / O设备是在IO / M为高电平时响应的设备。

答案 4 :(得分:0)

内存映射I / O映射到与程序存储器和/或用户存储器相同的地址空间,并以相同方式访问。

I / O映射I / O使用单独的专用地址空间,可通过一组专用的微处理器指令进行访问。

两种方案之间的区别发生在微处理器的/ Micro控制器中。在大多数情况下,英特尔已将I / O映射方案用于其微处理器,而摩托罗拉则使用了内存映射方案。

https://techdhaba.com/2018/06/16/memory-mapped-i-o-vs-i-o-mapped-i-o/