外部存储设备上的物理内存如何被Linux OS解释为文件?

时间:2017-09-05 21:40:43

标签: operating-system

据我所知,从硬件角度来看,物理内存是一个统一的触发器(晶体管)阵列。但是在操作计算机时,我们可以看到内存表示为文件系统所代表的文件。操作系统用于此类解释的基本机制是什么。

1 个答案:

答案 0 :(得分:0)

内存设备通常分为两类:字符设备和块设备。对于字符设备,驱动程序在字节边界上与其控制器通信,也就是说,设备可以读取&写入特定的字节地址(如RAM / ROM,某些类型的基于NOR的闪存)。另一方面,块设备在块边界上与驱动器通信&因此,不是每个字节都是可寻址的,而是在一块数据中访问(基于磁性的存储器,如硬盘驱动器和基于NAND的闪存,可能包含芯片上的闪存转换层)。

要理解的重要部分是需要大量的模块化和抽象层来提供高级别的文件错觉。
首先,设备有一个控制器接口,我们可以从中访问设备。内部存储器例如,如果不知道内存实际上是如何在内部实现的,那么闪存设备的行为就像接口级别的磁性设备(两者都实现了SATA接口或PCIe)。理论上,如果两种类型使用相同的通信协议(逻辑体系结构,内部寄存器,相同的接口等),则一种类型的驱动程序可以使用完全不同的类型。
第二部分是特定的文件系统驱动程序和操作系统的I / O子系统,它将调用特定设备的低驱动程序,但在此之前管理高级抽象(逻辑块/页/单元,具体数据结构)&他们可以实现不同的缓存和预取技术,在这个层面上我们甚至可以使角色设备看起来像块设备&反之亦然。

最后,在非常高的层面上,有一个虚拟文件系统(又名VFS)层,它使所有文件系统和所有设备看起来都是一样的:一个带有开放读取和放大的简单文件。使用来自GLIBC等标准库的包装函数,使用简单的系统调用在任意位置写入。

结论是,在硬件级别(通过控制器/接口和特殊设备)和软件级别(与设备控制器通信的低级驱动程序)中,涉及许多抽象层来实现这种错觉。文件系统驱动程序,缓冲,缓存和虚拟文件系统)&有些事情彼此联系在一起。例如,公共汽车,芯片组,高速缓存和许多其他事情。那是制造这个美好世界的大乐团。