Professional Documents
Culture Documents
Ready
Thread
actual
NULL
NULL
main
main
CALL KThread.SelfTest2()
CALL Runnable.Runnable() /* Create myrunnable1 */
NULL
main
CALL KThread.SelfTest2()
NULL
main
NULL
main
NULL
main
NULL
main
NULL
main
CALL KThread.KThread(myrunnable1)
NULL
main
CALL KThread.KThread()
NULL
main
CALL TCB.TCB()
NULL
main
NULL
main
NULL
main
NULL
main
NULL
main
NULL
main
CALL KThread.KThread(myrunnable2)
NULL
main
CALL KThread.KThread()
NULL
main
CALL TCB.TCB()
NULL
main
NULL
main
NULL
main
NULL
main
NULL
main
Cola
Ready
Thread
actual
NULL
NULL
main
main
NULL
main
NULL
main
NULL
main
NULL
main
Call KThread.ready() en t1
NULL
main
t1
main
t1
main
t1
main
CALL Machine.interrupt().restore()
t1
main
t1
main
Cola
Ready
Thread
actual
t1
t1
main
main
t1
main
t1
main
t1
main
t1
main
Call KThread.ready() en t2
t1
main
t1, t2
main
t1, t2
main
t1, t2
main
CALL Machine.interrupt().restore()
t1, t2
main
t1, t2
main
Ahora al main le aplican el mtodo yield (). Esto lo que hace sacar al thread
actualmente corriendo y colocar al siguiente thread en la ready list.
Cola
Ready
Thread
actual
t1, t2
t1, t2
main
main
CALL KThread.yield()
CALL Machine.interrupt().disable()
t1, t2
main
t1, t2
main
CALL currentThread.ready()
t1, t2
main
main
main
main
CALL KThread.runNextThread()
main
t2, main
main
t2, main
main
CALL nextThread.run()
t2, main
main
CALL Machine.yield()
t2, main
main
t2, main
main
CALL currentThread.saveState()
t2, main
main
t2, main
main
CALL tcb.contextSwitch();
Cola
Ready
t2,
t2,
t2,
t2,
t2,
t2,
t2,
t2,
main
main
main
main
main
main
main
main
Thread
actual
t1
t1
t1
t1
t1
t1
t1
t1
Ahora para dejar el control a t2, el sistema primero aplica otra vez el
mtodo yield () pero esta vez a t1.
Cola
Ready
t2,
t2,
t2,
t2,
t2,
Thread
actual
main
main
main
main
main
t1
t1
t1
t1
t1
t2, main, t1
t2, main, t1
t2, main, t1
main, t1
t1
t1
t1
t1
main,
main,
main,
main,
main,
main,
main,
t1
t1
t1
t1
t1
t1
t1
t1
t1
t1
t1
t1
t1
t1
Cola
Ready
main,
main,
main,
main,
main,
main,
main,
main,
t1
t1
t1
t1
t1
t1
t1
t1
Thread
actual
t2
t2
t2
t2
t2
t2
t2
t2