Linux 内核--任务0的运行(切换到用户模式)move

    技术2022-05-20  48

    本文分析基于Linux 0.11内核,转载请标明出处,http://blog.csdn.net/yming0221/archive/2011/06/01/6459119.aspx

    在main.c的程序中,当设备初始化完毕后,程序将从内核模式切换到用户模式,也就是所说的任务0,执行fork()函数(该函数使用内嵌的汇

    编,防止函数调用弄乱堆栈,造成写时复制COPY_ON_WRITE)切换到用户堆栈并执行任务0使用iret指令,首先将有关的值压入堆栈,然后执

    行iret指令。将刚刚压入对堆栈的数据根据标志位弹入相应的寄存器。

    切换到用户模式运行。 // 该函数利用iret 指令实现从内核模式切换到用户模式(初始任务0)。 #define move_to_user_mode() / __asm__ ( "movl %%esp,%

    转载请注明原文地址: https://ibbs.8miu.com/read-2217830.html

    最新回复(0)