美文网首页
操作系统加载顺序与系统调用

操作系统加载顺序与系统调用

作者: 龙眠散人 | 来源:发表于2021-05-10 20:13 被阅读0次

    bootsect.s   加载操作系统,bootsect.s 跳转至setup.s

    setup.s        进入保护模式,setup.s 跳转至head.s 

    head.s         初始化gdt表,head.s跳转至main.s

    main.s         空闲内存初始化,清楚哪些内存已使用,哪些内存未分配

    mem_init。

    系统调用

    内核态,用户态。

    CRL为0是内核态,为3是用户态。

    CRL与DS最低俩位DPL比较,DPL >= CPL则进入内核态。

    main函数(蓝色部分)使用了系统调用,操作系统会拿出cs:ip的最低俩位,0表示内核态,3表示用户态。与DS的最低俩位进行比较,DPL >= CPL则进入内核态,否则被拒绝。进入内核态时,会发生中断,中断指令int将DPL置为3。

    int 0x80进入,根据想调用的系统编号,选择相应的系统调用

    传参,内嵌汇编。输入_NR_write 给eax,后三个参数分别给ebx、ecx、edx.

    eax、ebx、ecx、edx

    int 0x80将DPL置为3,DPL >= CPL,可以进入内核态

    用int 0x80,将DPL置为3,设置系统调用参数,才能使用内核态系统调用。处于安全考虑不可以直接跳转。

    相关文章

      网友评论

          本文标题:操作系统加载顺序与系统调用

          本文链接:https://www.haomeiwen.com/subject/vqzidltx.html