深入了解Linux内核启动过程及文件系统操作
1. 用户空间的文件系统操作
在用户空间处理文件和目录时,通常无需过多担心底层的实现细节。进程通过内核系统调用访问已挂载文件系统中的文件和目录内容。不过,用户可以获取一些看似不属于用户空间的文件系统信息,例如 stat() 系统调用会返回inode编号和链接计数。但在不维护文件系统时,一般无需关注这些实现细节,这些信息主要是为了向后兼容而对用户模式程序开放,而且并非所有Linux文件系统都有这些内部信息。
对于非传统文件系统,可能无法执行传统的Unix文件系统操作。例如,在挂载的VFAT文件系统上不能使用 ln 创建硬链接,因为其目录项结构是为Windows设计的,不支持该概念。
幸运的是,Linux系统为用户空间提供的系统调用具有足够的抽象性,无需了解底层实现即可轻松访问文件。此外,文件名格式灵活,支持混合大小写名称,便于支持其他分层式文件系统。而且,特定的文件系统支持不一定需要在内核中,例如在用户空间文件系统中,内核只需作为系统调用的通道。
2. Linux内核启动流程
Linux内核启动过程可简化为以下步骤:
1. 机器的BIOS或引导固件加载并运行引导加载程序。
2. 引导加载程序在磁盘上找到内核映像,将其加载到内存并启动。
3. 内核初始化设备及其驱动程序。
4. 内核挂载根文件系统。
5. 内核启动一个名为 init 的进程,进程ID为1,标志着用户空间启动。
6. init 启动其余系统进程。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



