linux 0.11内核分析
文章平均质量分 76
@seven@
加油,未来可期
展开
-
linux 0.11内核源码(2)之操作系统的全部加载
bootsect利用int 0x13中断指令,将setup和system加载到内存里面。到目前为止,操作系统代码已经加载到内存里面,其中bootsect为1个扇区大小,setup为4个扇区大小,system为240个扇区的大小。首先,我们看到int 10这个指令,是bios给我们提供的10号中断指令,是用于显示服务中断的处理程序。我们通过设置ax寄存器的值。控制显示效果。dx存储返回值。不难看出来,一开始操作系统的一切操作都离不开BIOS的协助操作。通过该中断,我们可以获取一些操作系统的信息,比如内存原创 2022-07-03 21:00:34 · 277 阅读 · 0 评论 -
linux 0.11内核源码之中断
中断分为硬中断和软中断。整个操作系统就是一个中断驱动的死循环的。所有事情都是通过中断去获取cpu执行权,不然cpu就会一直在空转。所以,我们需要提前往操作系统去注册中断机制和其对应的中断的处理函数完成。inter手册里面的中断分为中断和异常。内部异常:在CPU内部发生的意外事件或特殊事件外部中断:在CPU外部发生的特殊事件,通过“中断请求“信号向CPU请求处理。异常和中断的处理发生异常和中断事件后,系统将进入OS内核态对相应事件进行处理,即改变处理器状态(用户态->内核态)。1.3硬件中断和软中断的区原创 2022-07-02 19:20:26 · 424 阅读 · 0 评论 -
linux 0.11内核源码(1)之开机启动过程
当我们按下电脑开机键的时候,BIOS程序会充当搬运工的身份,将磁盘0盘0道1扇区(启动区)的代码原封不动的搬运到内存的0x07c0的位置,然后CPU就开始从0x07c0的位置不停机的运行着,具体运行什么内容,我们后面慢慢分析。启动区:只要磁盘0盘0道1扇区的结尾的两个字节分别是0x55和0xaa,BIOS即可认为该扇区是启动区。磁盘0盘0道1扇区的代码是位于boot文件夹下面的bootsect.s的二进制文件 设置段寄存器的值,因为汇编限制,ds这些寄存器不可以直接赋值,我们需原创 2022-07-01 23:03:06 · 789 阅读 · 0 评论