Linux操作系统学习-内核运行.pdf
Linux操作系统学习-内核运行.pdf本文主要介绍Linux操作系统的内核运行过程,包括从实模式到保护模式的切换、新旧中断的交替、内核初始化、IDT和GDT的创建等重要步骤。一、从实模式到保护模式的切换在加载完成之后,Linux内核需要从实模式切换到保护模式。在这个过程中,需要关闭旧的中断(cli)并确立新的中断(sti)。 cli和sti总是在一个完整操作过程的两头出现,目的是避免中断在此期间的介入。二、新旧中断的交替在实模式下的中断显然不可以和保护模式的中断同日而语,因此我们需要关闭旧的中断(cli)并确立新的中断(sti)。main函数能够适应保护模式的中断服务体系被重建完毕才会打开中断,而那时候响应中断的服务程序将不再是BIOS提供的中断服务程序,取而代之的是由系统自身提供的中断服务程序。三、IDT和GDT的创建IDT(Interrupt Descriptor Table,中断描述符表)保存保护模式下所有中断服务程序的入口地址,类似于实模式下的中断向量表。GDT(Global Descriptor Table,全局描述符表),在系统中唯一的存放段寄存器内容(段描述符)的数组,配合程序进行保护模式下的段寻址。GDT在操作系统的进程切换中具有重要意义,可理解为所有进程的总目录表,其中存放每一个任务(task)局部描述符表(LDT, Local Descriptor Table)地址和任务状态段(TSS, Task Structure Segment)地址,完成进程中各段的寻址、现场保护与现场恢复。四、A20的启用A20启用是一个标志性的动作,由上文提到的lzma_decompress.img调用real_to_prot mode启动。打开A20,意味着Linux内核正式开始运行,准备好接受来自用户的输入和命令。本文系统地介绍了Linux操作系统的内核运行过程,包括从实模式到保护模式的切换、新旧中断的交替、IDT和GDT的创建等重要步骤,为读者提供了一个深入了解Linux内核的机会。
用户评论