linux0.12任务0怎么切换到任务1
哪位大牛能不能详细讲讲任务0是怎么切换到任务1(init())?在main中通过调用move_to_user_mode()进入任务0,if(!fork()){init();},在这个过程中并没有加载tr和ldtr,那任务是怎么切换的。 fork() 函数复制了一份 task0 的运行环境给task1. 从fork的返回开始,task1就已经在运行(严格的说是处于就绪态, 被调度到的时候才会运行),不需要显式的从task0 切换到 task1. 在task0 和 task1中,fork()的返回值不同, task0接收到的是task1的pid, 而task1接受到的是0. 因此,在task1中,if(!fork()) 为 if(!0),条件得到满足,于是task1开始执行init(). 谢谢,当时看书的时候以为在 task0下if(!fork()) 后直接执行init(),没有经过调度函数
页:
[1]