系统调用模块(system call interface)提供用户进程对文件系统的统一控制访问。虚拟文件系统为用户进程屏蔽了所有特殊的特性。 所有文件使用i-nodes表示。每个inode都记录一个文件在硬件设备上的位置信息。不仅如此,inode还存放着指向逻辑文件系统模块和设备驱动的的函数指针,这些指针能够执行具体的读写操作。通过按照这种形式(就是面向对象中的虚函数的思想)存放函数指针,具体的逻辑文件系统和设备驱动可以向内核注册自己而不需要内核依赖具体的模块特性。一个特殊的设备驱动是ramdisk,这个设备在主存中开辟一片区域,并把它当成持久性存储设备使用。这个设备驱动使用内存管理模块完成任务,所以在VFS与对内存管理模块存在依赖关系(图中的依赖关系反了,应该是VFS依赖于内存管理模块)、数据流和控制流。逻辑文件系统支持网络文件系统。这个文件系统像访问本地文件一样,从另一台机器上访问文件。为了实现这个功能,一种逻辑文件系统通过网络子系统完成它的任务——这引入了VFS对网络子系统的一个依赖关系以及它们之间的控制流和数据流。 正如前面提到的,内存管理器使用VFS完成内存swap功能和内存映射I/O。另外,当VFS等待硬件请求完成时,VFS需要使用进程调度器阻塞进程;当请求完成时,VFS需要通过进程调度器唤醒进程。最后,系统调用接口允许用户进程调用来存取数据。不像前面的子系统,VFS没有提供给用户注册不明确调用的机制,所以没有从VFS到用户进程的控制流。 4. NETWORK INTERFACE 架构网络子系统让Linux系统能够通过网络与其他系统相连。这个子系统支持很多硬件设备,也支持很多网络协议。网络子系统将硬件和协议的实现细节都屏蔽掉,并抽象出简单易用的接口供用户进程和其他子系统使用——用户进程和其余子系统不需要知道硬件设备和协议的细节。网络协议层模块图 网络设备驱动模块(network device drivers) 设备独立接口模块(device independent interface module)提供所有硬件设备的一致访问接口,使得高层子系统不需要知道硬件的细节信息。 网络协议模块(network protocol modules)负责实现每一个网络传输协议,例如:TCP,UDP,IP,HTTP,ARP等等~ 协议无关模块(protocol independent interface)提供独立于具体协议和具体硬件设备的一致性接口。这使得其余内核子系统无需依赖特定的协议或者设备就能访问网络。 -
(编辑:ASP站长网)
|