
合工大计信院操作系统实验
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
操作系统启动过程详解
操作系统启动过程详解
操作系统启动过程详解启动过程涉及一系列复杂的步骤,尤其在Linux内核0.11等较早版本中较为特殊。值得注意的是,在Linux内核0.11等较早版本中,启动过程通常始于中央处理器(CPU)的加电,随后依次调用包括BIOS程序、引导磁盘扇区程序以及加载相关软件在内的预设序列,最终转入操作系统启动的初始化阶段。当计算机开机时,系统初始化程序(BIOS)运行。该程序负责进行硬件自检及系统的初步配置。通常情况下,BIOS程序安装于主板上的只读内存芯片中,并完成对硬件设备的检查及初步配置工作,包括但不限于内存、硬盘存储装置和显示控制器等。在BIOS完成之后,在实验中,Linux 0.11的引导加载器将被搜索到并执行其功能。这些程序负责将操作系统的内核加载到内存中,并将在软盘上读取引导扇区以确保系统启动过程顺利进行。在实验中,Linux 0.11的引导加载器将从软盘上读取引导扇区并将其加载到内存中的指定位置,通常存储在地址0x7C00的位置。在引导加载器完成对内核的加载之后,在随后将执行权限转移至`head.s`,该程序乃是内核的主要入口程序。这个程序会处理一些必要的硬件初始化以及内存管理任务,并且随后将执行流程转向使用C语言编写的`start`函数,该函数位于文件`initmain.c$中的第134行。
内核初始化:`start`函数作为内核初始化的核心环节,负责进行内存地址分配、设备驱动配置以及进程调度器参数的设置等多方面工作。在VSCode开发环境中,通过在此函数处设置断点可以实时监控内核启动过程中的状态变化。在缺少调试信息的情况下,在执行BIOS程序、引导扇区程序以及加载程序的过程中,Bochs实现了命令行调试功能。利用`sreg`指令获取段寄存器信息,采用`r`指令查询通用寄存器内容,并借助`xp`与`vb`指令执行内存验证以及设定调试点,从而对这些阶段进行深入分析和评估。
在查看bootsect.lst这一列表文件时,可以深入理解汇编源代码与生成的二进制文件之间的关联,并以此为基础进行相关调试工作。例如,在设置断点时观察软盘引导扇区程序的操作流程,以便确认该程序是否准确地复制至内存指定的位置。一旦内核正常启动后,操作系统即进入管理状态,在包括进程调度、内存分配和设备驱动等功能的领域展开工作。通过调试工具/方法,我们得以深入了解系统如何协调硬件资源,并为应用程序提供服务的支持。在本次实验中,我们得以深入探讨操作系统由硬件启动直至正常运行的全过程。这对于我们掌握操作系统的核心理论和工作原理具有重要意义。本次实验不仅为我们的动手实践提供了平台,同时也教会我们利用调试工具对系统运行情况进行分析与问题排查。通过这些实践操作,我们进一步加深了我们对Linux内核及其操作系统机制的理解。
全部评论 (0)


