borrar1.docx

Upload: christian-valdivia

Post on 05-Jul-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/16/2019 borrar1.docx

    1/6

    Cola

    “Ready”

    Thread

    actual

    Llamada del método

    NULL main CALL KThread.SelfTest2()NULL main CALL Runnable.Runnable() /* Create myrunnable1 */

    NULL main CALL KThread.SelfTest2()

    NULL main CALL Runnable.Runnable() /* Create myrunnable1 */

    NULL main RETR! "R#$ Runnable.Runnable()

    NULL main CALL Runnable.Runnable() /* Create myrunnable2 */

    NULL main RETR! "R#$ Runnable.Runnable()

    NULL main CALL KThread.KThread(myrunnable1)

    NULL main CALL KThread.KThread()

    NULL main CALL TC%.TC%()

    NULL main RETR! "R#$ TC%.TC%()

    NULL main RETR! "R#$ KThread.KThread()

    NULL main RETR! "R#$ KThread.KThread(myrunnable1)

    NULL main CALL KThread.set!ame(&'hild 1&)

    NULL main RETR! "R#$ KThread.set!ame(&'hild 1&)

    NULL main CALL KThread.KThread(myrunnable2)

    NULL main CALL KThread.KThread()

    NULL main CALL TC%.TC%()

    NULL main RETR! "R#$ TC%.TC%()

    NULL main RETR! "R#$ KThread.KThread()

    NULL main RETR! "R#$ KThread.KThread(myrunnable2)

    NULL main CALL KThread.set!ame(&'hild 2&)

    NULL main RETR! "R#$ KThread.set!ame(&'hild 2&)

    Ahra ara el fr1+ 'm dems ,er en el '-di es el rimer mtd

    fr 0ue se ali'a+ est ha'e entrar al 'hild1 a la ready list.

  • 8/16/2019 borrar1.docx

    2/6

    Cola

    “Ready”

    Thread

    actual

    Llamada del método

    NULL main CALL KThread.fr() ara t1NULL main CALL $a'hine.interrut().disable()

    NULL main RETR! "R#$ $a'hine.interrut().disable()

    NULL main CALL TC%.start(ne Runnable() fr

    KThread.runThread())NULL main RETR! "R#$ TC%.start()

    NULL main Call KThread.ready() en t1

    NULL main CALL readyueue.ait"rA''ess(this) //'l'a a t1

    en la ready listt1 main RETR! "R#$ readyueue.ait"rA''ess(this)

    t1 main RETR! "R#$ KThread.ready()

    t1 main CALL $a'hine.interrut().restre()

    t1 main RETR! "R#$ $a'hine.interrut().restre()

    t1 main RETR! "R#$ KThread.fr()

  • 8/16/2019 borrar1.docx

    3/6

    Ahra el fr2+ 'l'and a 'hild2 en la ready list+ detr3s de 'hild1.

    Cola

    “Ready”

    Thread

    actual

    Llamada del método

    t1 main CALL KThread.fr() ara t2

    t1 main CALL $a'hine.interrut().disable()

    t1 main RETR! "R#$ $a'hine.interrut().disable()

    t1 main CALL TC%.start(ne Runnable() fr

    KThread.runThread())t1 main RETR! "R#$ TC%.start()

    t1 main Call KThread.ready() en t2

    t1 main CALL readyueue.ait"rA''ess(this) //'l'a a t2

    en la ready listt1, t2 main RETR! "R#$ readyueue.ait"rA''ess(this)

    t1, t2 main RETR! "R#$ KThread.ready()

    t1, t2 main CALL $a'hine.interrut().restre()

    t1, t2 main RETR! "R#$ $a'hine.interrut().restre()

    t1, t2 main RETR! "R#$ KThread.fr()

  • 8/16/2019 borrar1.docx

    4/6

    Ahra al main le ali'an el mtd yield (). Est l 0ue ha'e sa'ar al thread

    a'tualmente 'rriend y 'l'ar al siuiente thread en la ready list.

    Cola

    “Ready”

    Thread

    actual

    Llamada del método

    t1, t2 main CALL KThread.yield()t1, t2 main CALL $a'hine.interrut().disable()

    t1, t2 main RETR! "R#$ $a'hine.interrut().disable()

    t1, t2 main CALL 'urrentThread.ready()

    t1, t2 main CALL readyueue.ait"rA''ess(this) /* 'l'a a

    main de,uelta a la ready list */t1, t2, main main RETR! "R#$ readyueue.ait"rA''ess(this)

    t1, t2, main main RETR! "R#$ 'urrentThread.ready()

    t1, t2, main main CALL KThread.run!e4tThread()

    t1, t2, main main CALL readyueue.ne4tThread() //sa'a a t1 de la

    ready listt2, main main RETR! "R#$ readyueue.ne4tThread()

    t2, main main CALL ne4tThread.run()

    t2, main main CALL $a'hine.yield()

    t2, main main RETR! "R#$ $a'hine.yield()

    t2, main main CALL 'urrentThread.sa,eState()

    t2, main main RETR! "R#$ 'urrentThread.sa,eState()

    t2, main main CALL t'b.'nte4tSit'h()5

  • 8/16/2019 borrar1.docx

    5/6

    Ahra el thread t1 ,a a ser el thread 0ue ,a tmar el 'ntrl.

    Cola

    “Ready”

    Thread

    actual

    Llamada del método

    t2, main t1 CALL KThread.runThread()

    t2, main t1 CALL KThread.bein()t2, main t1 CALL KThread.restreState()t2, main t1 RETR! "R#$ KThread.restreState()t2, main t1 CALL $a'hine.interrut().enable()t2, main t1 RETR! "R#$ $a'hine.interrut().enable()t2, main t1 RETR! "R#$ KThread.bein()t2, main t1 CALL myrunnable1.run()

    Ahra ara de6ar el 'ntrl a t2+ el sistema rimer ali'a tra ,e7 el

    mtd yield () er esta ,e7 a t1.

    Cola

    “Ready”

    Thread

    actual

    Llamada del método

    t2, main t1 CALL KThread.yield() /adentr del runnable de t1/t2, main t1 CALL $a'hine.interrut().disable()t2, main t1 RETR! "R#$ $a'hine.interrut().disable()t2, main t1 CALL 'urrentThread.ready()t2, main t1 CALL readyueue.ait"rA''ess(this) //'l'ar t1

    de,uelta a la ready listt2, main, t1 t1 RETR! "R#$ readyueue.ait"rA''ess(this)t2, main, t1 t1 RETR! "R#$ 'urrentThread.ready()t2, main, t1 t1 CALL KThread.run!e4tThread()main, t1 t1 CALL readyueue.ne4tThread() //sa'ar a t2 de la

    ready listmain, t1 t1 RETR! "R#$ readyueue.ne4tThread()main, t1 t1 CALL ne4tThread.run()main, t1 t1 CALL $a'hine.yield()main, t1 t1 RETR! "R#$ $a'hine.yield()main, t1 t1 CALL 'urrentThread.sa,eState()main, t1 t1 RETR! "R#$ 'urrentThread.sa,eState()main, t1 t1 CALL t'b.'nte4tSit'h()5

  • 8/16/2019 borrar1.docx

    6/6

     8 ahra t2 tma el 'ntrl

    Cola

    “Ready”

    Thread

    actual

    Llamada del método

    main, t1 t2 CALL KThread.runThread()

    main, t1 t2 CALL KThread.bein()main, t1 t2 CALL KThread.restreState()main, t1 t2 RETR! "R#$ KThread.restreState()main, t1 t2 CALL $a'hine.interrut().enable()main, t1 t2 RETR! "R#$ $a'hine.interrut().enable()main, t1 t2 RETR! "R#$ KThread.bein()main, t1 t2 CALL myrunnable2.run()