Chinaunix

标题: linux0.12任务0怎么切换到任务1 [打印本页]

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




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2