Solaris操作系统可加载模块


Solaris是一个基于Unix的操作系统,由Sun Microsystems开发,Sun被Oracle收购后,被称为Oracle Solaris。它以其可扩展性和创新特性而闻名,例如DTrace、ZFS、Time Slider等。

Solaris内核

内核是操作系统的核心,其主要功能是通过适当分配资源来管理硬件。Solaris采用微内核设计,无法创建单片Solaris内核。

在Solaris中,从本地磁盘引导内核可通过以下步骤完成:

加载引导块

将引导块读取并加载到内存是Solaris引导的第一步。这使用PROM中的系统固件,称为Open Boot PROM (OBP)。完成的步骤包括提供系统参数、构建硬件设备树以及为手动或自动系统引导提供引导支持。

加载ufsboot

引导块定位辅助引导程序ufsboot。加载ufsboot后,控制权从引导块传递到ufsboot。引导块程序不能大于7680字节,因此在这个空间内只能执行读取Unix目录、定位文件并将其加载到内存的操作。

加载核心内核和链接器

ufsboot程序定位并加载核心内核和链接器到/platform//kernel/unix/kernel/misc/krtldn分别。ufsboot程序可以加载所需的krtldn程序并将其控制权传递给它,因为它可以解析可执行文件和链接格式头。

加载所需的内核模块

krtldn搜索特定模块,其路径由一个关键变量确定。此变量可在OBP固件中设置,也可以手动输入到引导程序的命令行中。

初始化内核

Solaris内核使用虚拟内存地址空间运行,但在启动用户应用程序之前需要进行一些初始化。处理器寄存器被初始化,并调用mlsetup()、main()和startup()。

init进程

init进程是第一个真正的用户进程,它分配的是用户地址空间而不是内核地址空间。init是内核创建的最后一个进程,用于启动系统。

Solaris可加载内核模块

Solaris具有一个小型核心内核,该内核具有可以动态链接的不同模块。这些模块在某种程度上类似于层,因为它们都有其定义的任务以及与其他模块的接口。

但是,每个模块可以根据需要相互联系。这消除了通过多个中间层进行交互的问题。

Solaris可加载模块可以使用给定的图表表示:

Solaris Loadable Modules

更新于:2020年6月22日

903 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告