Linux内核框架,体系结构,讲的很清楚( 二 )


Linux内核框架,体系结构,讲的很清楚

文章插图
在 VFS 上面,是对比如open、close、read 和 write 之类的函数的一个通用 API 抽象 。在 VFS 下面是文件系统抽象,它定义了上层函数的实现方式 。它们是给定文件系统(超过 50 个)的插件 。文件系统的源代码可以在 ./linux/fs 中找到 。文件系统层之下是缓冲区缓存,它为文件系统层提供了一个通用函数集(与具体文件系统无关) 。这个缓存层通过将数据保留一段时间(或者随即预先读取数据以便在需要是就可用)优化了对物理设备的访问 。缓冲区缓存之下是设备驱动程序,它实现了特定物理设备的接口 。
(5)网络协议栈
网络协议栈在设计上遵循模拟协议本身的分层体系结构 。回想一下,Internet Protocol (IP) 是传输协议(通常称为传输控制协议或 TCP)下面的核心网络层协议 。TCP 上面是 socket 层,它是通过系统调用层进行调用的 。socket 层是网络子系统的标准 API,它为各种网络协议提供了一个用户接口 。从原始帧访问到 IP 协议数据单元(PDU),再到 TCP 和 User Datagram Protocol (UDP),socket 层提供了一种标准化的方法来管理连接,并在各个终点之间移动数据 。内核中网络源代码可以在 ./linux/net 中找到 。
(6)设备驱动程序
Linux 内核中有大量代码都在设备驱动程序中,它们能够运转特定的硬件设备 。Linux 源码树提供了一个驱动程序子目录,这个目录又进一步划分为各种支持设备,例如 Bluetooth、I2C、serial 等 。设备驱动程序的代码可以在 ./linux/drivers 中找到 。
(7)依赖体系结构的代码
尽管 Linux 很大程度上独立于所运行的体系结构,但是有些元素则必须考虑体系结构才能正常操作并实现更高效率 。./linux/arch 子目录定义了内核源代码中依赖于体系结构的部分,其中包含了各种特定于体系结构的子目录(共同组成了 BSP) 。对于一个典型的桌面系统来说,使用的是 x86 目录 。每个体系结构子目录都包含了很多其他子目录,每个子目录都关注内核中的一个特定方面,例如引导、内核、内存管理等 。这些依赖体系结构的代码可以在 ./linux/arch 中找到 。
Linux 还是一个动态内核,支持动态添加或删除软件组件 。被称为动态可加载内核模块,它们可以在引导时根据需要(当前特定设备需要这个模块)或在任何时候由用户插入 。
参考源理君参考了这篇文章 https://blog.csdn.net/zhoudaxia/article/details/7172192




推荐阅读