IS1200 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer

Slides:



Advertisements
Liknande presentationer
PTS Bredbandskartläggning
Advertisements

Folkhälsan i Sverige: Årsrapport 2012
Kap 1 - Algebra och linjära modeller
Innehåll, huvudpresentation 4. Rangordning av ordningsstörningar (fråga 1) 5. Problem med nedskräpning (fråga 1a) 6. Problem med skadegörelse (fråga 1b)
Joomla © 2009 Stefan Andersson 1. Kontaktformulär  På varje seriös webbplats bör det finnas ett kontaktformulär.  Använd ej maillänkar, risk för spam!
Det allmänna ekonomiska läget
Konstföreningen Dragning På sista sidan finns konstnärerna för respektive tavla.
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 5: CPU-schemaläggning.
Tillämpning av bolagsstyrningskoden vid årsstämmor 2005 och 2006.
Hela Sverige ska leva Totalrapport. Regeringens bidrag har medverkat till kunskapsförmedling?
Projektföljeforskning
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
1 Hårddiskar och Disketter Boot sektorn på en diskett eller startsektorn på en partition (se s. 770)
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
UNIONEN - tillgänglighet under semestern 2014
Skånedatabasen & Region Skånes tillgänglighetsmodell
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
Kommunpussel Din uppgift är att sortera de organisatoriska delar på nästa sida på ett sådant sätt att det överensstämmer med hur din kommun är organiserad.
9 September 2014IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Punktprevalensmätning av trycksår 2011, v.40 Resultat från landstingen
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
| Trycksår Kommun/Områdes-skillnader (inklusive könsdimensionen) Dennis Nordvall Statistiker/Datamanager,
Enkätresultat för Grundskolan Elever 2014 Skola:Hällby skola.
Sveriges utrikeshandel (Andelar i procent) ImportExport EU (25) EFTA NAFTA Central- och Östeuropa Asien - Japan - Kina Övriga 59,9.
Information statistik Ej med i statistik: Konradsbergs lokaler (utgår VT13) Nya lokalerna i Frescati backe (ej med i gamla systemet) Övrigt: Mätningen.
Finländarnas uppfattningar om äldrevården Kirsi Markkanen Utvecklingschef Tehy rf.
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
(2) Avvikelse från std. kostnad (5) Andel inv 65+ med insats (4) Andel 80+ i befolkningen (1) Kronor/ invånare (65+) (3) Kronor/ brukare (6) Ytterfall.
Sveriges utrikeshandel mars Källa: WTO; International Trade Statistics 2009.
Hittarps IK Kartläggningspresentation år 3.
Information statistik Ej med i statistik: Konradsbergs lokaler (utgår VT13) Institutionsägda lokaler Övrigt: Mätningen är gjord terminstiden för VT13 (undantag.
1 Individ Kompetens 60%66%67% Motivation 59%64%60% Ansvar & Initiativ 77%74%68% Befogenheter 82%69%61% Organisation Samarbete 52%66%68% Organisatorisk.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
ÖVERSLAGSRÄKNING.
TÄNK PÅ ETT HELTAL MELLAN 1-50
Greppa Näringen Medlemsundersökning, kvartal 1. 1.
/hp Beräkning av kommunernas och samkommunernas utgifter år 2013 Övriga utgifter 0,81 md € Investeringar 4,70 md € Övr. verksamhetskostn. 0,79.
Helhet Händelse Agerande Kunskap om vardagsverksamheten Förståelse av vardagsverksamheten.
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
Varumärket Luleå kommun
Resultat sammanhållen vård och omsorg om de mest sjuka äldre i Örebro län Västra länsdelen mätperiod 2014.
2 Agenda 1. Börja arbeta med Excel Hantera arbetsböcker 3. Formler 4. Formatera 5. Diagram 6. Skriva ut 7. Referenser mellan kalkylblad 8. Arbeta.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
Källa: FHI, Folkhälsodatabas
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 6: Process- synkronisering.
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Regional handlingsplan ”Det goda livet för sjuka äldre” RESULTAT i VG+Skaraborg.
Smittspårarutbildning
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7 31 March IS1200 Datorteknik föreläsning CE – F2.
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
Grundskola Elever 2013 Grundskoleenkät - Elever Enhet: Gillberga skola.
Sammanhållen vård och omsorg om de mest sjuka äldre i Örebro län Mätperiod – Margit Gehrke Flyckt Projektledare
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.
2 June 2015IS1200, Förel 9, vt08 (Kista)1 IS1200 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) vt 2008 (period.
2 June 20152G1518, Förel 9 vt2006 (E3)1 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) version vt 2006 för.
4 June 20152G1518, Förel 9 ht2005 (D3)1 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) version ht 2005 för.
4 June G1518, Föreläsning 9, vt07 (IT/ME/2IT)1 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer (förberedelse till hemlab 3) version.
20 June G1502, Föreläsning 8 vt2004, för IT1 2G1502 Datorteknik allmän kurs Föreläsning 8 1. CPU-scheduling 2. Semaforer (förberedelse till lab 5)
1 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Föreläsning 9 zDel 1. CPU-scheduling zDel 2. Semaforer zInför föreläsning 10 zSammanfatting.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
17 October 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Föreläsning 9 Del 1. CPU-scheduling Del 2. Semaforer (förberedelse till hemlab.
Presentationens avskrift:

IS1200 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer 6 apr -17 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 m.fl. 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

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

Föreläsning 9 1. CPU-scheduling (förberedelse till hemlab 3) 6 apr -17 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling (förberedelse till hemlab 3) 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

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 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

CPU-scheduling Round Robin OS Tråd 1 Tråd 2 Tråd 3 context switches time-slice . . . time-out time-out time-out time-out time-out time-out 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Åtgärder vid Context Switch Save TCB: Spara undan viktig information, dvs allt som behövs för att kunna fortsätta exekvering vid senare tidpunkt. (TCB – Thread 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 TCB: Kopiera in dess TCB till processorn Return: Starta/fortsätt exekvering av den nyhämtade processen/tråden 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) Sid 7 utgår 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Program-Kod för context switch # TCB kan skrivas som ett makro, se nedan TCBSAVE # spara TCB 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 TCBUNSAVE # kopiera TCB till processorn . . . cswret: eret # tillbaks till utvald tråd/process 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Program-Kod för context switch (forts.) oslab_time_to_switch: . . . oslab_trap_handler: # TCB kan skrivas som ett makro, se nedan TCBSAVE # spara TCB i minnet (på lokal stack) move r4, sp # kopiera sp till r4 # här görs ”språnget” mellan 2 processer/trådar call oslab_internal_threadswitch move sp, r2 # kopiera r2 till sp TCBUNSAVE # kopiera TCB till processorn cswret: eret # tillbaks till utvald tråd/process 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

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

Nios-II Process Control Block - PCB Thread Control Block - TCB programkod ret sp r29 (ea) r1—r23 r26 (gp) r28 (fp) r4 ”Object”: inparam r31 #returadress 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

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

oslab_thread_info_array before idle runs upptagen oslab_thread_info_array[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 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

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

Realtidskärna Viktiga begrepp (igen) Time-Slice #10-100 millisekunder TCB 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 TCB 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!) ) 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

CPU-scheduling Exit (System Call) OS Tråd 1 Tråd 2 Tråd 3 Round Robin time-slice exit Tråd 2 borta ur RQ ! time-out time-out time-out time-out 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

CPU-scheduling Create (System Call) OS Tråd 1 Tråd 2 Tråd 3 Tråd 4 Round Robin time-slice create Tråd 4 tillkom i RQ ! time-out time-out time-out time-out time-out time-out 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

CPU-scheduling Yield (System Call) OS Tråd 1 Tråd 2 Tråd 3 Sound Robin time-slice < time-slice yield Tråd 2 vilar i RQ ! time-out time-out time-out time-out time-out 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Program-Kod för context switch (repris) TCBSAVE # spara TCB 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 TCBUNSAVE # kopiera TCB till processorn . . . cswret: eret # tillbaks till utvald tråd/process 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Kod för context switch mer liknande lab-PM TCBSAVE # spara TCB 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 TCBUNSAVE # kopiera TCB till processorn cswret: eret # tillbaks till utvald tråd/process 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

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

Nios-II: Macro för att pusha register på stacken .macro TCBSAVE #r29, r1-r23, r26, r28, r31 push r31 # returadress push r28 # fp push r26 # gp push r23 . . . push r2 push r1 push r29 # ea .endm 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Nios-II: Macro för att poppa register på stacken .macro TCBUNSAVE #r29, r1-r23, r26, r28 pop r29 # ea pop r1 pop r2 . . . pop r23 pop r26 # gp pop r28 # fp pop r31 # returadress .endm 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Nios-II: Macro för att lagra register till stacken .macro TCBSAVE # r1-r23, r26, r28 subi sp, sp, 27*4 # 27 platser stw ea, 4*0(sp) # r29 = ea stw r1, 4*1(sp) stw r2, 4*2(sp) . . . stw r23, 4*23(sp) stw r26, 4*24 (sp) # r24 = gp stw r28, 4*25 (sp) # r26 = fp stw r31, 4*26 (sp) # r31 = ra .endm 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Nios-II: Macro för att ladda register från stacken .macro TCBUNSAVE #r1-r23, r26, r28 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) ldw r31, 4*26(sp) ldw ea, 4*0(sp) # r29 = ea addi sp, sp, 27*4 # 27 platser .endm 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Exceptions in Nios-II Suggested software structure 6 apr -17 Exceptions in Nios-II Suggested software structure ExcHand: IntHand: Int ? Yes subi r29, r29, 4 No NoInt: trap0 trap1 trapn error TrapHand: No trap0Hand Yes trap1Hand trapnHand eret Yes Trap ? Yes IRQ00 irq00Hand No No Yes ElseHand IRQ10 irq10Hand No IRQ31 Yes irq31Hand No int error eret instr 0x800020:”jmp ExcHand” trap 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Exceptions in Nios-II Suggested software structure 6 apr -17 Exceptions in Nios-II Suggested software structure ExcHand: IntHand: Int ? Yes subi r29, r29, 4 TimerIntHand: No NoInt: Yes Yes Trap ? IRQ10 100? Yes No No No ElseHand error eret Context Switch int instr TrapHand: 0x800020:”jmp ExcHand” trap eret 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) PAUS-RUTA Snart kommer nästa portion 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Föreläsning 9 2. Semaforer (förberedelse till hemlab 3) 6 apr -17 2G1518 Datorteknik Föreläsning 9 2. Semaforer (förberedelse till hemlab 3) 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Samverkande processer Användning av semaforer vid Synkronisering Ömsesidig uteslutning 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) 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 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Semafor korgbollsanalogi 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Lägg en till boll i korgen Semafor korgbollsanalogi BOLL KORG SIGNAL är ungefär: Lägg en till boll i korgen (och fortsätt sedan…) 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Vänta (vid behov) tills det finns minst en boll i korgen Semafor korgbollsanalogi 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 …) 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) Dijkstra Signal - Verhogen; V(sem) Wait - Proberen; P(sem) 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Samverkan mellan processer med hjälp av semaforer Synkronisering Ömsesidig uteslutning (Mutual Exclusion) Rendez Vous (dubbel synkronisering) 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Synkronisering: P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

P1 och P2 får inte exekveras ”samtidigt” Ömsesidig uteslutning: P1 i T1 kritisk liksom P2 i T2 P1 och P2 får inte exekveras ”samtidigt” T1: T2: … wait P1: … signal … wait P2: signal … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

P1 Och P2 får inte exekveras ”samtidigt” Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 P1 Och P2 får inte exekveras ”samtidigt” T1: T2: … wait P1: … signal … wait P2: signal … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

P1 Och P2 får inte exekveras ”samtidigt” Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 P1 Och P2 får inte exekveras ”samtidigt” T1: T2: … wait P1: … signal … wait P2: signal … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

P1 Och P2 får inte exekveras ”samtidigt” Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 P1 Och P2 får inte exekveras ”samtidigt” T1: T2: … wait P1: … signal … wait P2: signal … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

P1 Och P2 får inte exekveras ”samtidigt” Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 P1 Och P2 får inte exekveras ”samtidigt” T1: T2: … wait P1: … signal … wait P2: signal … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

P1 Och P2 får inte exekveras ”samtidigt” Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 P1 Och P2 får inte exekveras ”samtidigt” T1: T2: … wait P1: … signal … wait P2: signal … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

P1 Och P2 får inte exekveras ”samtidigt” Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 P1 Och P2 får inte exekveras ”samtidigt” T1: T2: … wait P1: … signal … wait P2: signal … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

P1 Och P2 får inte exekveras ”samtidigt” Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 P1 Och P2 får inte exekveras ”samtidigt” T1: T2: … wait P1: … signal … wait P2: signal … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

P1 Och P2 får inte exekveras ”samtidigt” Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 P1 Och P2 får inte exekveras ”samtidigt” T1: T2: … wait P1: … signal … wait P2: signal … 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Rendez Vous T1 och T2 inväntar varandra innan S1 och S2 exekverar … P1: … signal wait S1 … P2: … signal wait S2 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Testprogram (hem-laboration 3) Producers, p stycken, producerar primtal Consumers, c stycken, konsumerar primtal FIFO (buffert) med x platser för primtal 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) Producer init: tal := start ploop: räkna ut nästa primtal, tal anropa PUT-FIFO (tal) br ploop 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Producer ”NiosII-kod” / makron prod: movia r4, start ploop: call NextPrime # subrutin PUTFIFO # macro # yield() ??? br ploop 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Producer C-kod enligt hemlab 3 Void Producer ( … ) next = ”startvalue from inparam” while (1) { next = NextPrime(next) // function PutFifo(next) // function // yield() // maybe ? } 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Consumer ”NiosII-kod” / makron init: vid behov ? cloop: anropa GET-FIFO (tal) konsumera primtalet (skrivut tal) br cloop 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Consumer C-kod enligt hemlab 3 Void Consumer ( … ) while (1) { next = GetFifo() // function ”consume” (next) // function // yield() // maybe ? } 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) PUT-FIFO Skriv data till FIFO-buffert på ett säkert sätt Det måste finnas minst en ledig plats ”Samtidig” skrivning är kritisk Vad är det som är kritiskt ? Hantering av skrivpekaren wraddr ! 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

FIFO Queue, Data Structure (jfr med RQ!) wraddr: rdaddr: Fifo: ledig upptagen FifoEnd: 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

FIFO Queue, Data Structure #define Fifo_Size 16 int Fifo[Fifo_Size] ; int wraddr = 0 ; int rdaddr = 0 ; 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) C-code: skriv tal till Fifo-buffert C-code: läs till tmp från Fifo-buffert /* skriv tal */ Fifo[wraddr] = tal; wraddr = wraddr + 1; if (wraddr == Fifo_Size) wraddr = 0; /* läs tal till retval */ retval = Fifo[rdaddr] ; rdaddr = rdaddr + 1; if (rdaddr == Fifo_Size) rdaddr = 0; 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) PUT-FIFO wrmut anrop … wait … wait … wrfifo … signal … signal … retur nrempty nrfull 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

”Nios-kod” för PUTFIFO (bara en massa macron) PUTFIFO: WAIT nrempty WAIT wrmut call wrfifo SIGNAL wrmut SIGNAL nrfull RETURN 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Nios-II-kod Macro för System Call .macro SysCall index movia r4, \index trap .endm 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Nios-II-kod Macro för Signal och Wait .macro SIGNAL sem movia r5, \sem SysCall 6 # trap med 6 i r4 .endm .macro WAIT sem movia r5, \sem SysCall 7 # trap med 7 i r4 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) GET-FIFO Läs data från FIFO-buffert på ett säkert sätt Det måste finnas minst en upptagen plats Samtidig läsning är kritisk Vad är det som är kritiskt ? Hantering av rdaddr ! 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) nrempty nrfull retur … signal … signal … rdfifo … wait … wait … anrop rdmut GET-FIFO 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Nios-kod för GETFIFO (bara en massa macron) GETFIFO: WAIT nrfull WAIT rdmut call rdfifo SIGNAL rdmut SIGNAL nrempty RETURN 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) CPU-scheduling time-slice OS Prod 1 Prod 2 Prod 3 Cons 1 Cons 2 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

En process kan göra yield Lämna bort resten av sin time-slice Speciellt vid wait-operation på semafor Nästa thread bör få en hel time-slice Vid en semafor finns ”väntande threads” En signal kan flytta en thread till RQ Det finns olika varianter vid signal (vilken tråd ska fortsätta efter signal ?) 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) Några sidor om SIGNAL som System Call med TRAP 6 WAIT som System Call med TRAP 7 YIELD som System Call med TRAP 8 EXIT som System Call med TRAP 9 Nios-II-kod för signal, wait och yield ... 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Signal med Nios-II-kod pekare till semafor i r5 # Om anrop görs med SysCall 6 är PIE redan= 0 # DI # enter critical trap6:ldw r24, 0(r5) # hämta värde addi r24, r24, 1 # lägg till en boll stw r24, 0(r5) # skriv värde # EI # NEJ ! eret # medför även EI 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

function: Signal med C-kod inparameter: pekare till semafor void Signal ( int * sem) { oslab_begin_critical_region() ; *sem = *sem + 1 ; oslab_end_critical_region() ; } 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Wait med Nios-II-kod pekare till semafor i r5 Om anrop görs med TRAP7 är PIE redan =0 trap7: ldw r24, 0(r5) # läs nytt semaforvärde bgt r24, r0, ball # hopp om minst en boll noball: PUSHCTL 1 # skydda estatus PUSH r29 # skydda ea EI # släpp in TimerInt, OBS OBS ! # YIELD # om så önskas med SysCall 8 DI # hindra TimerInt POP r29 # återställ ea POPCTL 1 # återställ estatus br trap7 # och leta boll igen ball: subi r24, r24, 1 # ta en boll stw r24, 0(r5) # semaforvärde skrivs tillbaks eret # medför även EI 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

function: Wait med C-kod inparameter: pekare till semafor void Wait (int * sem) { oslab_begin_critical_region() ; while ( *sem <= 0) { oslab_end_critical_region() ; /* os_lab_yield(); */ oslab_begin_critical_region() ; } *sem = *sem -1 ; oslab_end_critical_region() ; } 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Program-Kod för context switch (uppdaterad repris) TCBSAVE # spara TCB 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 exit: call RQGET # läs ny sp från Ready Queue move sp, r2 # kopiera r2 till sp TCBUNSAVE # kopiera TCB till processorn . . . cswret: eret # tillbaks till utvald tråd/process 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) Yield med Nios-kod YIELD-anrop görs med TRAP 8 TRAP 8 görs med SysCall 8 Vad ska utföras av YIELD ? Samma sak som context switch ! 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) Kod för YIELD Hit kommer man efter YIELD-anrop och det ska göras Context Switch (Timern ska justeras till hel time-slice …) trap8: push r29 br contextswitch 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) EXIT med Nios-kod EXIT-anrop görs med TRAP (t.ex TRAP9) TRAP 9 görs med SysCall 9 Vad ska utföras av EXIT ? Tråden ska ej placeras i RQ ! 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) Kod för EXIT Hit kommer man efter EXIT-anrop och det ska göras Context Switch (Timern ska justeras till hel time-slice …) trap9: br exit 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl) Hem-laboration 3 Material ingår i tentamen (se extentor) Lab-PM finns på hemsidan Labben körs på NiosII-simulatorn ! Labben ska redovisas muntligt Ensam eller i grupp om 2 (ev 2 grupper) 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Hem-laboration 3 CPU-scheduling / semaforer Idle-tråd kan göra Yield Producer skriver primtal till FIFO Consumer läser primtal från FIFO Antal Producers varieras Antal Consumers varieras Antal platser i FIFO varieras Beteende vid WAIT varieras 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

CPU-scheduling Idle-tråd och en Producer OS Idle (gör inte yield) Prod 1 Round Robin time-slice Idle tar cirka 50% av tiden Prod 1 får cirka 50% av tiden 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

CPU-scheduling Idle-tråd och en Producer OS Idle (Idle gör yield) Prod 1 Round Robin time-slice Idle tar cirka 0% av tiden Prod 1 får nästan 100% av tiden 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Proc 1 får cirka 33% av tiden CPU-scheduling Idle-tråd och tre Processer OS Idle (Idle gör yield) Proc 1 Proc 2 Proc 3 Round Robin time-slice Proc 1 får cirka 33% av tiden 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Proc 1 får cirka 20% av tiden CPU-scheduling Idle-tråd och fem Processer OS Idle Proc 1 Proc 2 Proc 3 Proc 4 Proc 5 Round Robin time-slice Proc 1 får cirka 20% av tiden 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

CPU-scheduling endast Idle-tråd som yieldar OS Idle gör yield Robin Hood time-slice Idle får cirka 100% av tiden (bränner/slösar) 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Med time-slice 10 millisekunder Hur många instruktioner? Antag 1 GHz processor Antag 1 instruktion per CPU-cykel 1 000 000 000 instruktioner per sekund 1 000 000 instruktioner per millisekund 10 000 000 instruktioner per time slice 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Windows OS ctrl-alt-del öppnar Windows Task Manager Klicka på Processes och studera längst ner: ... System Idle Process SYSTEM många % 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

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

oslab_thread_info_array create next thread #6 Idle 0 Idle-thread sp1 1 sp2 2 sp3 3 sp4 4 sp5 5 sp6 6 oslab_current_thread_count = 7 oslab_next_available_thread_id = 7 oslab_thread_info_array[16] 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

oslab_thread_info_array exit thread, #2 and #5 Idle 0 Idle-thread sp1 1 sp3 3 sp4 4 sp6 6 oslab_current_thread_count = 5 oslab_next_available_thread_id = 7 oslab_thread_info_array[16] 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

oslab_thread_info_array create next thread #7 Idle 0 Idle-thread sp1 1 sp3 3 sp4 4 sp6 6 sp7 7 oslab_current_thread_count (6) oslab_next_available_thread_id = 8 oslab_thread_info_array[16] 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

CPU-scheduling Exempelsamling uppgift 9.x OS Idle P1 P2 P3 C1 C2 Round Robin time-slice 6 April 2017 IS1200 Datorteknik vt09, föreläsning 9, (E och I mfl)

Hemlab 3 (OS-labben) yield i Consumer och i wait() Idle Prod 1 Prod 2 Prod 3 Cons 1 Cons 2 Round Robin time-slice Första varvet varv 3 och senare 6 April 2017 IS1200 Datorteknik hemlab 3