1 / 113

IS1200 Datorteknik

IS1200 Datorteknik. Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) vt 2009 (period 3-4) för E och I med flera. Ö10. F10. Hemlab-3. Hemlab-2. Hemlab-1. Ö1. Ö2. Ö4. Ö3. Ö8. Ö9. Ö5. Ö7. Ö6. F5. F6. F2. F7. F9. F1. F4. F3. F8. Tentamen. LAB-1.

arella
Download Presentation

IS1200 Datorteknik

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IS1200 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) vt 2009 (period 3-4) för E och I med flera IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  2. Ö10 F10 Hemlab-3 Hemlab-2 Hemlab-1 Ö1 Ö2 Ö4 Ö3 Ö8 Ö9 Ö5 Ö7 Ö6 F5 F6 F2 F7 F9 F1 F4 F3 F8 Tentamen LAB-1 LAB-3 LAB-2 IS1200 Datorteknikhttp://www.ict.kth.se/courses/IS1200 Våren 2009 Period 3 Assemblerkod 4 stegs pipeline Nios2time C-kod Nios2io Nios2int Cache-minnen CPU-scheduling Våren 2009 Period 4 IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  3. 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling (förberedelse till hemlab 3) IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  4. Realtidskärna Viktiga begrepp (en del) • Kursboken kap 5.4 - 5.7 • CPU - scheduling • Time Slice • Timer Interrupt • Context Switch (process/thread switch) • Process Control Block / Thread Control Block • Ready Queue • Round Robin IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  5. CPU-schedulingRound Robin OS Tråd 1 Tråd 2 Tråd 3 context switches time-slice . . . time-ut time-out time-out time-out time-out time-out IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  6. Åtgärder vid Context Switch • Save PCB: Spara undan viktig information, dvs allt som behövs för att kunna fortsätta exekvering vid senare tidpunkt. (PCB – Process Control Block) • Put in RQ: Placera processen/tråden i Ready-Queue • Get from RQ: Välj en ny, viktig, process/tråd ur Ready-Queue • Unsave PCB: Kopiera in dess PCB till processorn • Return: Starta/fortsätt exekvering av den nyhämtade processen/tråden IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  7. Sid 7 utgår IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  8. Program-Kod för context switch(forts.) contextswitch: push r31 # skydda returadress i r31/ra call PCBSAVE # spara PCB i minnet (på lokal stack) move r4, sp # kopiera sp till r4 call RQPUT # skriv sp i Ready Queue # här görs ”språnget” mellan 2 processer/trådar call RQGET # läs ny sp från Ready Queue move sp, r2 # kopiera r2 till sp call PCBUNSAVE # kopiera PCB till processorn pop r31 # återställ r31/ra . . . cswret: eret # tillbaks till utvald tråd/process IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  9. r31 #returadress r29 (ea) r1—r23 r26 (gp) r28 (fp) Nios-II Process Control Block - PCB Thread Control Block - TCB sp 27 register 108 bytes IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  10. Realtidskärna Viktiga begrepp (igen) • Time-Slice #10-100 millisekunder • PCB Save # spara undan Process Control Block • RQ Put # pekare till tråd läggs i Ready Queue • RQ Get # pekare till tråd tas ur Ready Queue • PCB Unsave # återställ Process Control Block • Exit # avsluta en tråd • CreateThread (Addr, SP, PRIO, ...) # initiera ett Process Control Block • Yield # släpp resten av en Time-Slice • (Sleep # ”sov en stund” (inte nu!) ) IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  11. CPU-schedulingExit (System Call) Round Robin OS Tråd 1 Tråd 2 Tråd 3 time-slice exit Tråd 2 borta ur RQ ! time-out time-out time-out time-out IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  12. CPU-schedulingCreate (System Call) Round Robin OS Tråd 1 Tråd 2 Tråd 3 time-slice create Tråd 2 tillkom i RQ ! time-out time-out time-out time-out time-out IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  13. CPU-schedulingYield (System Call) Sound Robin OS Tråd 1 Tråd 2 Tråd 3 time-slice < time-slice yield Tråd 2 vilar i RQ ! time-out time-out time-out time-out time-out IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  14. TCB2 Process Control Block TCB4 Process Control Block TCB5 Process Control Block TCB0 Process Control Block TCB1 Process Control Block Ready QueueCurrent Thread and PCB:s Idle 0 sp1 1 sp2 2 running_thread sp3 3 sp4 4 sp5 5 Ready Queue innehåller (stack-) pekare till PCB:er IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  15. oslab_thread_info_arraybefore idle runs upptagen oslab_thread_info_array[0] 0 Idle-thread oslab_current_thread_count = 1 oslab_currently_running_thread oslab_next_available_thread_id = 1 MAX_THREADS = 17 oslab_thread_info_array[16] ledig IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  16. oslab_thread_info_arrayidle and 5 threads upptagen ? Idle-thread sp1 1 First created thread Second created thread ... ... sp2 2 sp3 3 oslab_currently_running_thread sp4 4 sp5 5 oslab_current_thread_count = 6 oslab_next_available_thread_id = 6 MAX_THREADS = 17 oslab_thread_info_array[16] ledig IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  17. Plats för nya bilder Några bilder som visar hur oslab_thread_info_array ändras vid • os_lab_create_thread • os_lab_exit Skulle kunna vara på plats eventuellt IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  18. PCB2 Process Control Block PCB4 Process Control Block PCB1 Process Control Block PCB5 Process Control Block PCB6 Process Control Block Ready QueuePCB Save Ready Queue Current Thread (5) sp IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  19. PCB2 Process Control Block PCB4 Process Control Block PCB1 Process Control Block PCB5 Process Control Block PCB6 Process Control Block Ready QueueRQ Put Ready Queue Current Thread (5) IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  20. PCB2 Process Control Block PCB4 Process Control Block PCB1 Process Control Block PCB5 Process Control Block PCB6 Process Control Block Ready QueueSelect new Process/Thread Ready Queue Current Thread (2) IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  21. PCB2 Process Control Block PCB4 Process Control Block PCB6 Process Control Block PCB1 Process Control Block PCB5 Process Control Block Ready QueueRQ Get Ready Queue Current Thread (2) sp IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  22. Ready Queue, Data StructureCircular Buffer, FIFO rdaddr: wraddr: queue: ledig upptagen rqend: Utanför queue IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  23. Ready Queue, Data Structure .equ MAX_THREADS, 16 .data .align 2 # 22 wraddr: .word queue # *skrivadress rdaddr: .word queue # *läsadress queue: .fill MAX_THREADS, 4, 0 rqend: .word # slutmärke IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  24. Ready Queue, Data StructureCircular Buffer, FIFO rdaddr: wraddr: queue: ledig upptagen rqend: Utanför queue IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  25. Nios-II: Subrutinen rqinit rqinit: movia r8, queue movia r9, wraddr movia r10, rdaddr st r8, 0(r9) st r8, 0(r10) ret IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  26. Nios-II: Subrutinen RQPUT RQPUT: movia r8, wraddr ldw r9, 0(r8)stw r4, 0(r9) # skriv från r4 addi r9, r9, 4 # öka wraddr movia r10, rqend bne r9, r10, putend movia r9, queue putend: stw r9, 0(r8)ret # OBS ingen kontroll om kön är full IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  27. Nios-II: Subrutinen RQGET RQGET: movia r8, rdaddr ldw r9, 0(r8)ldw r2, 0(r9) # skriv från r4 addi r9, r9, 4 # öka wraddr movia r10, rqend bne r9, r10, getend movia r9, queue getend: stw r9, 0(r8)ret # OBS ingen kontroll om kön är tom IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  28. Program-Kod för context switch(repris) contextswitch: push r31 # skydda returadress i r31/ra call PCBSAVE # spara PCB på lokal stack move r4, sp # kopiera sp till r4 call RQPUT # skriv sp i Ready Queue # här görs ”språnget” mellan 2 processer/trådar call RQGET # läs ny sp från Ready Queue move sp, r2 # kopiera r2 till sp call PCBUNSAVE # kopiera PCB till processorn pop r31 # återställ r31/ra . . . cswret: eret # tillbaks till utvald tråd/process IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  29. Kod för context switchmer liknande lab-PM contextswitch: push r31 # skydda returadress i r31 call PCBSAVE # spara PCB på lokal stack move r4, sp # kopiera sp till r4 call oslab_internal_threadswitch # RQPUT och RQGET i C-kod move sp, r2 # kopiera r2 till sp call PCBUNSAVE # kopiera PCB till processorn pop r31 # återställ r31 cswret: eret # tillbaks till utvald tråd/process IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  30. r31 #returadress r29 (ea) r1—r23 r26 (gp) r28 (fp) Nios-II (repris) Process Control Block - PCB Thread Control Block - TCB sp IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  31. Nios-subrutin spara PCB å stacken PCBSAVE: PUSHALL # r29, r1-23, 26, 28 ret # jmp r31 PCBUNSAVE: POPALL # r29, r1-23, 26, 28 ret # jmp r31 IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  32. Nios-II: Macro för att pusha register på stacken .macro PUSHALL #r29, r1-r23, r26, r28push r29push r1push r2 . . .push r23push r26push r28 .endm IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  33. Nios-II: Macro för att poppa register på stacken .macro POPALL #r29, r1-r23, r26, r28pop r28pop r26pop r23 . . .pop r2pop r1pop r29 .endm IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  34. Nios-II: Macro för att lagra register till stacken .macro STWALL # r1-r23, r26, r28 subi sp, sp, 26*4 # 26 platserstw ea, 4*0(sp) # r29 = eastw r1, 4*1(sp)stw r2, 4*2(sp) . . .stw r23, 4*23(sp)stw r26, 4*24 (sp) # r24 = gpstw r28, 4*25 (sp) # r26 = fp.endm IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  35. Nios-II: Macro för att ladda register från stacken .macro LDWALL #r1-r23, r26, r28ldw ea, 4*0(sp) # r29 = ea ldw r1, 4*1(sp)ldw r2, 4*2(sp) . . .ldw r23, 4*23(sp)ldw r26, 4*24(sp)ldw r28, 4*25(sp) addi sp, sp, 26*4 # 26 platser .endm IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  36. PAUS-RUTA • Snart kommer nästa portion IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  37. 2G1518 Datorteknik Föreläsning 9 2. Semaforer (förberedelse till hemlab 3) IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  38. Samverkande processer Användning av semaforer vid Synkronisering Ömsesidig uteslutning IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  39. Semafor, vad är det • En heltalsvariabel (0, 1, 2, 3 … -1, -2 ??) • (men med) Speciella egenskaper • Operationer (atomära - odelbara) • signal (sem) ~ öka med 1 • wait (sem) ~ minska med 1 om det går(annars ”vänta” tills det går) • Binär semafor, kan anta värde 0 eller 1 IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  40. Semaforkorgbollsanalogi BOLL KORG IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  41. Semaforkorgbollsanalogi BOLL KORG SIGNAL är ungefär: Lägg en till boll i korgen (och fortsätt sedan…) IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  42. Semaforkorgbollsanalogi BOLL KORG WAIT är ungefär: Vänta (vid behov) tills det finns minst en boll i korgen Ta en boll ur korgen (och fortsätt sedan …) IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  43. Dijkstra • Signal - Verhogen; V(sem) • Wait - Proberen; P(sem) IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  44. Samverkan mellan processermed hjälp av semaforer • Synkronisering • Ömsesidig uteslutning (Mutual Exclusion) • Rendez Vous (dubbel synkronisering) IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  45. Synkronisering:P1 i T1 krävs före P2 i T2 T2: T1: … wait P2: … … P1: … signal IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  46. SynkroniseringP1 i T1 krävs före P2 i T2 T2: T1: … wait P2: … … P1: … signal IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  47. SynkroniseringP1 i T1 krävs före P2 i T2 T2: T1: … wait P2: … … P1: … signal IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  48. SynkroniseringP1 i T1 krävs före P2 i T2 T2: T1: … wait P2: … … P1: … signal IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  49. SynkroniseringP1 i T1 krävs före P2 i T2 T2: T1: … wait P2: … … P1: … signal IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

  50. SynkroniseringP1 i T1 krävs före P2 i T2 T2: T1: … wait P2: … … P1: … signal IS1200 Datorteknik vt09, föreläsning 9, (E och I m.fl.)

More Related