当我在任何地方阅读基于操作系统的书籍时,考虑到时间限制和过头很高,其写入从内存和I \ O(子系统)获取数据是昂贵的,这就是为什么在某些硬件制造商提供一些其他方式来访问它们在ARM7 some ISAs
之类的(加载和存储)以及为RTOS
制作的设备驱动程序也是不同类型的,考虑到这个事实(使用RTDM)比较GPOS
,所以如果它都是真的那么我我想知道关于这个事实的低级细节,为什么那个内存和我的交易都很昂贵。
答案 0 :(得分:5)
从内存和I / O设备中检索数据的成本很高,而且#34;因为涉及多少步骤,每一步都会增加少量延迟。以下是从内存中检索值所需步骤的一般示例:
1)从程序的内存空间中的数据虚拟地址开始
2)将虚拟地址转换为内存物理地址
3)检查缓存中的值
4)如果数据不在缓存中,请从内存控制器发出请求
5)存储器控制器将物理地址分成行,列,存储区和位地址
6)内存控制器从DRAM读取数据 - 实际从DRAM中检索数据的行为非常复杂,并且有一系列自己需要花费时间的步骤。请参阅Wikipedia entry for DRAM。
7)将数据返回到CPU
请记住,不同硬件单元之间的每一次通信都是通过总线完成的,总线的运行时钟速度比CPU的标称频率慢。
即便是这一系列步骤也大大简化了事情。例如,步骤2从查找翻译后备缓冲区(TLB Wikipedia Entry)开始,但如果所需的翻译不再在缓冲区中,那么 second 内存必须执行提取才能获取所请求数据的物理地址。
此外,您的系统中只有这么多RAM可用,因此您可能已将所需数据从RAM中删除并临时存储在您的硬盘上(称为"交换& #34;)如果它暂时没有使用过。现在您认为简单的RAM访问实际上是首先进入您的硬盘。顺便说一下,这种交换也可能发生在将虚拟地址转换为物理地址的表中,因此在最坏的情况下,检索一段时间没有使用过的单个字节实际上可以变为两次磁盘访问。 p>
说到硬盘,I / O设备是完全不同的故事。该术语本身涵盖了各种各样的设备:RS232串行端口,USB,网络,外部CD / DVD读卡器,外部硬盘和固态硬盘,列表无穷无尽。它们各自具有不同的属性和功能,使得它们比其他属性更快或更慢,但关键是它们都没有提供数据,因为它们自己的属性(如等待),CPU可以快速消耗它对于硬盘盘片来说,总线速度的物理限制和翻译层数据的数量通过。因此,每次CPU从I / O设备发出请求时,在收到回复之前可能会经过数十,数百甚至数千个时钟周期。
您的计划可能需要等待来自这些来源的回复的时间才是他们被认为是昂贵的原因。"