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.

Slides:



Advertisements
Liknande presentationer
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Advertisements

E-post juni 2013.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 5: CPU-schemaläggning.
Programstruktur: C för enchipsdatorer
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Namngivna rörledningar -Signaler -Signalhantering.
Enkel dator teknik Tips och tricks.
Funktioner och programorganisation
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
William Sandqvist System Management functions S Burd, Systems Architecture ISBN Figure 11-2 CPU Management Memory Management.
IS1200 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer
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.
C-programmering ID120V William Sandqvist Länkad lista
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Realtidsprog. - Anders Arvidsson1 Realtidsprogrammering En introduktion – Implementering (med exempel från PIC)
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kap 3 & 4: Processer & trådar.
PROCESSPROGRAMMERING
Pekare och speciell programstruktur i inbyggda system
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( )‏ Innehåll:Trådsäkerhet - Intrinsic locks och synkronisering - Synchronized statements.
Tabeller.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
William Sandqvist C:s minnesmodell.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Att överföra data till PC Förberedelse 1.Installera Programvara, finns på CD i framfickan på väska) 2.Ta fram handenhet 3.Ta fram USB-interface Tanka USB-interface.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Trådsäkerhet - Memory consitency error - Guarded blocks - Lock Objects - Immutable Objects -
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: -Producent – konsument problemet -Förmedling av fildeskriptorer.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: -IPC: Semaforer -Exekveringstrådar (threads) -Introduktion till Java.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 6: Process- synkronisering.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
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.
Cacheminnen: skrivning ● Träff ● Skrivbuffert ● Miss.
Minnesarkitektur Problem: Snabbare och snabbare processorer men minnena hänger inte med. Lösning: Minneshierarkier.
Operativsystem - Processkommunikation
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 9 ( ) Innehåll: - IPC: Semaforer.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( )‏ Innehåll:Trådar: - Avbrott (”interrupts”)‏ - Metoden join()‏ Högnivå objekt för.
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.
14.1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Repetition.
William Sandqvist Datorteknik övning 1 Introduktion till assemblerprogrammering av Nios II William Sandqvist
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 G1518, Föreäsning 7, vt 2007 (D2)1 2G1518 Datorteknik Föreläsning 7 Exceptions ht vt 2006 (period 2-3) för D2.
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.
6/3/2015© Mats Brorsson1 Hur mycket snabbare blir det med PC133 SDRAM jämfört med PC100 SDRAM?... blir det med en 1,4 GHz Athlon- processor jämfört.
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.
Uppstart iPad Höörs kommun.
13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)1 IS1200 Datorteknik Föreläsning 7 Exceptions vt 2008 (period 3) för IT/ME och Hing/Kand.
William Sandqvist Övning 7 Interrupt, Exeption, Trap.
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)
16 July 2015 IS1500 Datorteknik och komponeneter, föreläsning DC-F2 1 IS1500 Datorteknik och komponenter Föreläsning DC F2 Kretsar med återkoppling Minnen.
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.
William Sandqvist Datorteknik övning 3 stackhantering subrutin som anropar subrutin programutveckling.
3 August 2015IS1200 Datorteknik föreläsning 71 IS1200 Datorteknik Föreläsning 7 Exceptions Interrupts - Traps.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
3 October 2015 IS1200 Datorteknik ht2009 föreläsning 3, (D2)1 IS1200 Datorteknik Föreläsning 3 Metoder / subrutiner Kursboken, valda delar av kapitel 4.
Enkel dator teknik Tips och tricks. Välja storlek och radavstånd Här väljer du storlek på texten vi vill att ni använder 14 p till rubriker och 12 p till.
12 October 2015 IS1200 Datorteknik föreläsning CE - F71 IS1200 Datorteknik och komponenter Föreläsning 7 Exceptions Interrupts - Traps.
13 October 2015 IS1200 Datorteknik ht2009, föreläsning 7, (D2)1 IS1200 Datorteknik Föreläsning 7 Exceptions ht 2009 – vt 2010 (period 2-3) för D-2.
Lathund PowerPoint 2007 Lathund
IT och medier1 Utgående från boken Computer Science av: J. Glenn Brookshear Grundläggande datavetenskap, 4p Kapitel 3 Operativsystem.
Presentationens avskrift:

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 3)

IS1200 Datorteknik Assemblerprogram C In- och utmatning Avbrott och "trap" Cacheminnen Trådar, synkronisering CE F1 CE F3 CE F4 CE F5 CE F6 CE F7 CE F8 CE F9 CE F2 CE Ö4 CE Ö1 CE Ö2 CE Ö3 CE Ö7 CE Ö8 CE Ö9 CE Ö5CE Ö6 lab nios2time hemlab C lab nios2io lab nios2int hemlab cache hemlab trådar CE F10CE Ö10 tentamen 17 October IS1200 Datorteknik föreläsning CE - F9

17 October 2015 IS1200 Datorteknik föreläsning CE - F93 IS1500 Datorteknik och komponenter Föreläsning 9 Del 1. CPU-scheduling Fördelning av processortid (förberedelse till hemlab 3)

17 October 2015 IS1200 Datorteknik föreläsning CE - F94 Realtidskärna Viktiga begrepp (en del)  CPU - scheduling  Time Slice  Timer Interrupt  Context Switch (process/thread switch)  Process Control Block / Thread Control Block  Ready Queue  Round Robin

17 October 2015 IS1200 Datorteknik föreläsning CE - F95 CPU-scheduling Round Robin OS Tråd 1 Tråd 2 Tråd 3 time-slice time-out context switches...

17 October 2015 IS1200 Datorteknik föreläsning CE - F96 Å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

17 October 2015 IS1200 Datorteknik föreläsning CE - F97 Kartbild av fysiska minnet varje tråd har egna platser adress ? 7 0.data.text heap stack (fetch-execute) (malloc-free) (push-pop) (load-store) SP PC +n.bss adress ? 7 0.data.text heap stack (fetch-execute) (malloc-free) (push-pop) (load-store) SP PC +n.bss..

17 October 2015 IS1200 Datorteknik föreläsning CE - F98 Program-Kod för context switch context_switch: # TCBSAVE och TCBUNSAVE kan skrivas som makron, se senare 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 processor... cswret: eret# tillbaks till utvald tråd/process

17 October 2015 IS1200 Datorteknik föreläsning CE - F99 Program-Kod för context switch (mer som i labprogramvaran) oslab_time_to_switch:... oslab_trap_handler: # TCBSAVE och TCBUNSAVE kan skrivas som makron, se senare 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

17 October 2015 IS1200 Datorteknik föreläsning CE - F910 Nios-II Process Control Block - PCB Thread Control Block - TCB r1—r23 r26 (gp) r28 (fp) sp r31 #returadress r29 (ea) 27 register 108 bytes Varje register som en tråd använder ska sparas/skyddas

17 October 2015 IS1200 Datorteknik föreläsning CE - F911 Ready Queue Current Thread and PCB:s TCB2 Process Control Block TCB4 Process Control Block TCB5 Process Control Block TCB0 Process Control Block Ready Queue innehåller (stack-) pekare till PCB:er sp1 1 Idle 0 sp2 2 sp3 3 sp4 4 sp5 5 running_thread TCB1 Process Control Block

17 October 2015 IS1200 Datorteknik föreläsning CE - F912 oslab_thread_info_array before idle runs oslab_thread_info_array[0] 0 ledig upptagen oslab_currently_running_thread oslab_current_thread_count = 1 oslab_next_available_thread_id = 1 MAX_THREADS = 17 oslab_thread_info_array[16] Idle-thread

17 October 2015 IS1200 Datorteknik föreläsning CE - F913 oslab_thread_info_array idle and 5 threads sp1 1 0 sp2 2 sp3 3 sp4 4 sp5 5 ledig upptagen First created thread Second created thread... oslab_currently_running_thread oslab_current_thread_count = 6 oslab_next_available_thread_id = 6 MAX_THREADS = 17 oslab_thread_info_array[16] Idle-thread

17 October 2015 IS1200 Datorteknik föreläsning CE - F914 Realtidskärna Viktiga begrepp (igen)  Time-Slice# 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!) )

17 October 2015 IS1200 Datorteknik föreläsning CE - F915 CPU-scheduling Exit (System Call) OS Tråd 1 Tråd 2 Tråd 3 time-slice time-out exit time-out Round Robin Tråd 2 borta ur RQ !

17 October 2015 IS1200 Datorteknik föreläsning CE - F916 OS Tråd 1 Tråd 2 Tråd 3 Tråd 4 time-slice time-out Round Robin CPU-scheduling Create (System Call) create Tråd 4 tillkom i RQ ! time-out

17 October 2015 IS1200 Datorteknik föreläsning CE - F917 OS Tråd 1 Tråd 2 Tråd 3 time-slice time-out Sound Robin CPU-scheduling Yield (System Call) yield < time-slice Tråd 2 vilar i RQ !

17 October 2015 IS1200 Datorteknik föreläsning CE - F918 Program-Kod för context switch (repris) contextswitch: 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

17 October 2015 IS1200 Datorteknik föreläsning CE - F919 Kod för context switch mer liknande lab-PM contextswitch: 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

17 October 2015 IS1200 Datorteknik föreläsning CE - F920 Nios-II (repris) Process Control Block - PCB Thread Control Block - TCB r1—r23 r26 (gp) r28 (fp) sp r31 #returadress r29 (ea) 27 register 108 bytes Varje register som en tråd använder ska sparas/skyddas

17 October 2015 IS1200 Datorteknik föreläsning CE - F921 Nios-II: Macro för att pusha register på stacken.macroTCBSAVE# r31, r28, r26, r23-r1, r29 pushr31# returadress pushr28# fp pushr26# gp pushr23... pushr2 pushr1 pushr29# ea.endm

17 October 2015 IS1200 Datorteknik föreläsning CE - F922 Nios-II: Macro för att poppa register på stacken.macroTCBUNSAVE#r29, r1-r23, r26, r28, r31 popr29# ea popr1 popr2... popr23 popr26# gp popr28# fp popr31# returadress.endm

17 October 2015 IS1200 Datorteknik föreläsning CE - F923 Nios-II: Macro för att lagra register till stacken.macroTCBSAVE # r29, r1-r23, r26, r28, r31 subisp, sp, 27*4 # reservera 27 platser stwea, 4*0(sp) # r29 = ea stwr1, 4*1(sp) stwr2, 4*2(sp)... stw r23, 4*23(sp) stwr26, 4*24 (sp) # r24 = gp stwr28, 4*25 (sp) # r26 = fp stwr31, 4*26 (sp) # r31 = ra.endm

17 October 2015 IS1200 Datorteknik föreläsning CE - F924 Nios-II: Macro för att ladda register från stacken.macroTCBUNSAVE #r1-r23, r26, r28, r31, r29 ldwr1, 4*1(sp) ldwr2, 4*2(sp)... ldw r23, 4*23(sp) ldwr26, 4*24(sp) ldwr28, 4*25(sp) ldwr31, 4*26(sp) ldwea, 4*0(sp) # r29 = ea addisp, sp, 27*4 # återlämna 27 platser.endm

17 October 2015 IS1200 Datorteknik föreläsning CE - F925 Exceptions in Nios-II Suggested software structure trap 0x800020:”jmp ExcHand” Int ?Trap ? ExcHand: ElseHand Yes No NoInt: IRQ00IRQ10 IRQ31 error IntHand: No irq00Hand Yes irq10Hand Yes irq31Hand Yes subi r29, r29, 4 eret No trap0 trap1 trapn error TrapHand: No trap0Hand Yes trap1Hand Yes trapnHand Yes eret No instr int No

17 October 2015 IS1200 Datorteknik föreläsning CE - F926 Hemlaboration 3 Suggested software structure trap 0x800020:”jmp ExcHand” Int ?Trap ? ExcHand: ElseHand Yes No NoInt: IRQ10 error IntHand: Yes subi r29, r29, 4 instr int No TimerIntHand: Context Switch 100? Yes eret No

17 October 2015 IS1200 Datorteknik föreläsning CE - F927 OS Tråd 1 Tråd 2 Tråd 3 Tråd 4 time-slice time-out Round Robin CPU-scheduling Create (System Call) create Tråd 4 tillkom i RQ ! time-out

17 October 2015 IS1200 Datorteknik föreläsning CE - F928 oslab_thread_info_array idle and 5 threads sp1 1 Idle 0 sp2 2 sp3 3 sp4 4 sp5 5 ledig upptagen First created thread Second created thread... oslab_currently_running_thread oslab_current_thread_count = 6 oslab_next_available_thread_id = 6 MAX_THREADS = 17 oslab_thread_info_array[16] Idle-thread R

17 October 2015 IS1200 Datorteknik föreläsning CE - F929 oslab_thread_info_array create next thread #6 oslab_thread_info_array[0] sp1 1 Idle 0 sp2 2 sp3 3 sp4 4 sp5 5 oslab_current_thread_count = 7 oslab_next_available_thread_id = 7 oslab_thread_info_array[16] Idle-thread sp6 6

17 October 2015 IS1200 Datorteknik föreläsning CE - F930 Hemlab 3 TCB efter Create_Thread r1—r23 r26 (gp) r28 (fp) sp r31 #returadress r29 (ea) programkod ret ”Object”: inparam r4

17 October 2015 IS1200 Datorteknik föreläsning CE - F931 oslab_thread_info_array exit thread, #2 and #5 oslab_thread_info_array[0] sp1 1 Idle 0 sp3 3 sp4 4 sp6 6 oslab_thread_info_array[16] oslab_next_available_thread_id = 7 oslab_current_thread_count = 5 Idle-thread

17 October 2015 IS1200 Datorteknik föreläsning CE - F932 oslab_thread_info_array create next thread #7 oslab_thread_info_array[0] sp1 1 Idle 0 sp3 3 sp4 4 sp6 6 Idle-thread oslab_thread_info_array[16] sp7 7 oslab_current_thread_count (6) oslab_next_available_thread_id = 8

17 October 2015 IS1200 Datorteknik föreläsning CE - F933 PAUS-RUTA  Snart kommer nästa portion

17 October 2015 IS1200 Datorteknik föreläsning CE - F934 2G1518 Datorteknik Föreläsning 9 Del 2. Semaforer (förberedelse till hemlab 3)

17 October 2015 IS1200 Datorteknik föreläsning CE - F935 Samverkande processer Användning av semaforer vid  Synkronisering  Ömsesidig uteslutning

17 October 2015 IS1200 Datorteknik föreläsning CE - F936 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

17 October 2015 IS1200 Datorteknik föreläsning CE - F937 Semafor korgbollsanalogi KORG BOLL

17 October 2015 IS1200 Datorteknik föreläsning CE - F938 Semafor korgbollsanalogi KORG BOLL SIGNAL är ungefär: Lägg en till boll i korgen (och fortsätt sedan…)

17 October 2015 IS1200 Datorteknik föreläsning CE - F939 Semafor korgbollsanalogi KORG BOLL 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 …)

17 October 2015 IS1200 Datorteknik föreläsning CE - F940 Dijkstra  Signal - Verhogen; V(sem)  Wait - Proberen; P(sem) Egentligen prolaag, short for probeer te verlagen “Försök att minska” Edsger Wybe Dijkstra (May 11, 1930 – August 6, 2002; was a Dutch computer scientist.Dutch computer scientist

17 October 2015 IS1200 Datorteknik föreläsning CE - F941 Samverkan mellan processer med hjälp av semaforer  Synkronisering  Ömsesidig uteslutning (Mutual Exclusion)  Rendez Vous (dubbel synkronisering)

17 October 2015 IS1200 Datorteknik föreläsning CE - F942 Synkronisering: P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

17 October 2015 IS1200 Datorteknik föreläsning CE - F943 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

17 October 2015 IS1200 Datorteknik föreläsning CE - F944 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

17 October 2015 IS1200 Datorteknik föreläsning CE - F945 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

17 October 2015 IS1200 Datorteknik föreläsning CE - F946 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

17 October 2015 IS1200 Datorteknik föreläsning CE - F947 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

17 October 2015 IS1200 Datorteknik föreläsning CE - F948 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

17 October 2015 IS1200 Datorteknik föreläsning CE - F949 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

17 October 2015 IS1200 Datorteknik föreläsning CE - F950 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

17 October 2015 IS1200 Datorteknik föreläsning CE - F951 Ömsesidig uteslutning: P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 och P2 får inte exekveras ”samtidigt”

17 October 2015 IS1200 Datorteknik föreläsning CE - F952 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

17 October 2015 IS1200 Datorteknik föreläsning CE - F953 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

17 October 2015 IS1200 Datorteknik föreläsning CE - F954 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

17 October 2015 IS1200 Datorteknik föreläsning CE - F955 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

17 October 2015 IS1200 Datorteknik föreläsning CE - F956 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

17 October 2015 IS1200 Datorteknik föreläsning CE - F957 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

17 October 2015 IS1200 Datorteknik föreläsning CE - F958 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

17 October 2015 IS1200 Datorteknik föreläsning CE - F959 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

17 October 2015 IS1200 Datorteknik föreläsning CE - F960 Rendez Vous T1 och T2 inväntar varandra innan S1 och S2 exekverar … P1: … signal wait S1 … P2: … signal wait S2 T1: T2:

17 October 2015 IS1200 Datorteknik föreläsning CE - F961 Testprogram (hem-laboration 3)  Producers, p stycken, producerar primtal och skriver till  Buffert (FIFO) med x platser för primtal som sedan läses av  Consumers, c stycken, som konsumerar primtal

17 October 2015 IS1200 Datorteknik föreläsning CE - F962 Producer init:tal := start ploop:räkna ut nästa primtal, tal anropa PUT-FIFO (tal) br ploop

17 October 2015 IS1200 Datorteknik föreläsning CE - F963 Producer ”NiosII-kod” / makron prod:moviar4, start ploop:callNextPrime# subrutin PUTFIFO# macro # yield()??? brploop

17 October 2015 IS1200 Datorteknik föreläsning CE - F964 Producer C-kod enligt hemlab 3 Void Producer ( … ) next = ”startvalue from inparam” while (1) { next = NextPrime(next)// function PutFifo(next)// function //yield()// maybe ? }

17 October 2015 IS1200 Datorteknik föreläsning CE - F965 Consumer ”NiosII-kod” / makron init:vid behov ? cloop:anropa GET-FIFO (tal) konsumera primtalet (skriv ut tal) brcloop

17 October 2015 IS1200 Datorteknik föreläsning CE - F966 Consumer C-kod enligt hemlab 3 Void Consumer ( … ) while (1) { next = GetFifo() // function ”consume” (next)// function //yield()// maybe ? }

17 October 2015 IS1200 Datorteknik föreläsning CE - F967 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 Fråga: Vad är det som är kritiskt ? Svar: Hantering av skrivpekaren wraddr !

17 October 2015 IS1200 Datorteknik föreläsning CE - F968 FIFO Queue, Data Structure (jfr med RQ!) wraddr: rdaddr: FifoEnd: Fifo: ledig upptagen

17 October 2015 IS1200 Datorteknik föreläsning CE - F969 FIFO Queue, Data Structure #defineFifo_Size16 intFifo[Fifo_Size] ; intwraddr = 0 ; intrdaddr = 0 ;

17 October 2015 IS1200 Datorteknik föreläsning CE - F970 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;

17 October 2015 IS1200 Datorteknik föreläsning CE - F971 anrop … wait … wait … wrfifo … signal … signal … retur PUT-FIFO nrempty wrmut nrfull

17 October 2015 IS1200 Datorteknik föreläsning CE - F972 ”Nios-kod” för PUTFIFO (macron eller subrutinanrop) PUTFIFO:WAITnrempty WAITwrmut callwrfifo SIGNALwrmut SIGNALnrfull RETURN

17 October 2015 IS1200 Datorteknik föreläsning CE - F973 Nios-II-kod Macro för System Call.macroSysCallindex moviar4, \index trap.endm

17 October 2015 IS1200 Datorteknik föreläsning CE - F974 Nios-II-kod Macro för Signal och Wait.macroSIGNALsem moviar5, \sem SysCall6# trap med 6 i r4.endm.macroWAITsem moviar5, \sem SysCall7# trap med 7 i r4.endm

17 October 2015 IS1200 Datorteknik föreläsning CE - F975 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 Fråga: Vad är det som är kritiskt ? Svar: Hantering av läspekaren rdaddr !

17 October 2015 IS1200 Datorteknik föreläsning CE - F976 GET-FIFO nrempty rdmut nrfull retur … signal … signal … rdfifo … wait … wait … anrop

17 October 2015 IS1200 Datorteknik föreläsning CE - F977 Nios-kod för GETFIFO (macron eller subrutiner) GETFIFO:WAITnrfull WAITrdmut callrdfifo SIGNALrdmut SIGNALnrempty RETURN

17 October 2015 IS1200 Datorteknik föreläsning CE - F978 CPU-scheduling OS Prod 1 Prod 2 Prod 3 Cons 1 Cons 2 time-slice

17 October 2015 IS1200 Datorteknik föreläsning CE - F979 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 ?)

17 October 2015 IS1200 Datorteknik föreläsning CE - F980 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 ...

17 October 2015 IS1200 Datorteknik föreläsning CE - F981 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:ldwr24, 0(r5)# hämta värde addir24, r24, 1# lägg till en boll stwr24, 0(r5)# skriv värde #EI# NEJ ! eret# medför även EI

17 October 2015 IS1200 Datorteknik föreläsning CE - F982 function: Signal med C-kod inparameter: pekare till semafor void Signal ( int * sem) { oslab_begin_critical_region() ; *sem = *sem + 1 ; oslab_end_critical_region() ; }

17 October 2015 IS1200 Datorteknik föreläsning CE - F983 Wait med Nios-II-kod pekare till semafor i r5  Om anrop görs med TRAP7 är PIE redan =0 trap7: ldwr24, 0(r5)# läs nytt semaforvärde bgtr24, r0, ball# hopp om minst en boll noball:PUSHCTL 1# skydda estatus PUSHr29# skydda ea EI# släpp in TimerInt, OBS OBS ! # YIELD# om så önskas med SysCall 8 DI# hindra TimerInt POPr29# återställ ea POPCTL 1# återställ estatus brtrap7# och leta boll igen ball:subir24, r24, 1# ta en boll stwr24, 0(r5)# semaforvärde skrivs tillbaks eret# medför även EI

17 October 2015 IS1200 Datorteknik föreläsning CE - F984 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() ; }

17 October 2015 IS1200 Datorteknik föreläsning CE - F985 Program-Kod för context switch (uppdaterad repris) contextswitch: 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

17 October 2015 IS1200 Datorteknik föreläsning CE - F986 Yield med Nios-kod  YIELD-anrop görs med TRAP 8  TRAP 8 görs med SysCall 8 Fråga: Vad ska utföras av YIELD ? Svar: Samma sak som context switch !

17 October 2015 IS1200 Datorteknik föreläsning CE - F987 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: pushr29 brcontextswitch

17 October 2015 IS1200 Datorteknik föreläsning CE - F988 EXIT med Nios-kod  EXIT-anrop görs med TRAP (t.ex TRAP9)  TRAP 9 görs med SysCall 9 Fråga: Vad ska utföras av EXIT ? Svar: Tråden ska ej placeras i RQ !

17 October 2015 IS1200 Datorteknik föreläsning CE - F989 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: brexit

17 October 2015 IS1200 Datorteknik föreläsning CE - F990 Hem-laboration 3  En uppgift på 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)

17 October 2015 IS1200 Datorteknik föreläsning CE - F991 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

17 October 2015 IS1200 Datorteknik föreläsning CE - F992 OS Idle (gör inte yield) Prod 1 time-slice Round Robin CPU-scheduling Idle-tråd och en Producer Idle tar cirka 50% av tiden Prod 1 får cirka 50% av tiden

17 October 2015 IS1200 Datorteknik föreläsning CE - F993 OS Idle (Idle gör yield) Prod 1 time-slice Round Robin CPU-scheduling Idle-tråd och en Producer Idle tar cirka 0% av tiden Prod 1 får nästan 100% av tiden

17 October 2015 IS1200 Datorteknik föreläsning CE - F994 OS Idle (Idle gör yield) Proc 1 Proc 2 Proc 3 time-slice Round Robin CPU-scheduling Idle-tråd och tre Processer Proc 1 får cirka 33% av tiden

17 October 2015 IS1200 Datorteknik föreläsning CE - F995 OS Idle Proc 1 Proc 2 Proc 3 Proc 4 Proc 5 time-slice Round Robin CPU-scheduling Idle-tråd och fem Processer Proc 1 får cirka 20% av tiden

17 October 2015 IS1200 Datorteknik föreläsning CE - F996 CPU-scheduling endast Idle-tråd som yieldar OS Idle gör yield time-slice Robin Hood Idle får cirka 100% av tiden (bränner/slösar)

17 October 2015 IS1200 Datorteknik föreläsning CE - F997 Med time-slice 10 millisekunder Hur många instruktioner? $Antag 1 GHz processor $Antag 1 instruktion per CPU-cykel $ instruktioner per sekund $ instruktioner per millisekund $ instruktioner per time slice

17 October 2015 IS1200 Datorteknik föreläsning CE - F998 Windows OS ctrl-alt-del öppnar Windows Task Manager Klicka på Processes och studera längst ner:... System Idle Process SYSTEM många %

17 October 2015 IS1200 Datorteknik föreläsning CE - F999 OS Idle P1 P2 P3 C1 C2 Round Robin Exempel på figur Exempelsamling del 9 time-slice

17 October 2015 IS1200 Datorteknik föreläsning CE - F9100 OS Idle Prod 1 Prod 2 Prod 3 Cons 1 Cons 2 time-slice Round Robin Hemlab 3, figurexempel yield i Consumer och i Wait() Första varvetvarv 3 och senare