Presentation laddar. Vänta.

Presentation laddar. Vänta.

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.

Liknande presentationer


En presentation över ämnet: "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."— Presentationens avskrift:

1 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 D-3 m.fl.

2 4 June 20152G1518, Förel 9 ht2005 (D3)2 2G1518 Datorteknik Föreläsning 9 1. CPU-scheduling (förberedelse till hemlab 3)

3 4 June 20152G1518, Förel 9 ht2005 (D3)3 Realtidskärna Viktiga begrepp (en del) zKursboken kap 5.4 - 5.7 zCPU - scheduling zTime Slice zTimer Interrupt zContext Switch (process/thread switch) zProcess Control Block / Thread Control Block zReady Queue zRound Robin

4 4 June 20152G1518, Förel 9 ht2005 (D3)4 CPU-scheduling Round Robin OS Tråd 1 Tråd 2 Tråd 3 time-slice time-out time-ut time-out context switches...

5 4 June 20152G1518, Förel 9 ht2005 (D3)5 Åtgärder vid Context Switch zSave PCB: Spara undan viktig information, dvs allt som behövs för att kunna fortsätta exekvering vid senare tidpunkt. zPut in RQ: Placera processen i Ready-Queue zGet from RQ: Välj en ny, viktig, process/tråd ur Ready- Queue zUnsave PCB: Kopiera in dess PCB till processorn zReturn: Starta/fortsätt exekvering av den nyhämtade processen/tråden

6 4 June 20152G1518, Förel 9 ht2005 (D3)6 Program-Kod för context switch Hit kommer man vid interrupt från Timern zDenna kod exekveras med PIE=0, avbrott avstängda timerint: pushr29# skydda returadress på stacken …# kvittera timern med mera ”cmpcond r24, ri, rj”# har det gått en time-slice bner24, r0,contextswitch# så gör contextswitch # annars... cswret:popr29# återställ returadress subiR29, r29, 4# justera återhoppsadress eret# tillbaks till samma tråd/process

7 4 June 20152G1518, Förel 9 ht2005 (D3)7 Program-Kod för context switch contextswitch: pushr31# skydda returadress i r31 bsr PCBSAVE# spara PCB på lokal stack move r4, sp# kopiera sp till r4 bsr RQPUT# skriv sp i Ready Queue # här görs språnget mellan 2 processer/trådar bsr RQGET # läs ny %sp från Ready Queue move sp, r2# kopiera r2 till sp bsr PCBUNSAVE # kopiera PCB till processorn popr31# återställ r31... cswret:popr29# återställ returadress subiR29, r29, 4# justera återhoppsadress eret# tillbaks till samma tråd/process

8 4 June 20152G1518, Förel 9 ht2005 (D3)8 Nios-II Process Control Block - PCB Thread Control Block - TCB r1—r26 r28, r30 ctrl2 # bstatus sp r29 #returadress r31 #returadress ctrl3 # ienable ctrl1 # estatus

9 4 June 20152G1518, Förel 9 ht2005 (D3)9 Realtidskärna Viktiga begrepp (igen) zTime-Slice#10-100 millisekunder zPCB Save # spara undan Process Control Block zRQ Put# pekare till tråd läggs i Ready Queue zRQ Get# pekare till tråd tas ur Ready Queue zPCB Unsave # återställ Process Control Block zExit# avsluta en tråd zCreateThread (Addr, SP, PRIO) # initiera ett Process Control Block zYield# släpp resten av en Time-Slice’ z(Sleep# ”sov en stund” (inte nu!) )

10 4 June 20152G1518, Förel 9 ht2005 (D3)10 OS Tråd 1 Tråd 2 Tråd 3 time-slice time-out Round Robin CPU-scheduling Create (System Call) create Tråd 2 tillkom i RQ !

11 4 June 20152G1518, Förel 9 ht2005 (D3)11 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 !

12 4 June 20152G1518, Förel 9 ht2005 (D3)12 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 !

13 4 June 20152G1518, Förel 9 ht2005 (D3)13 Ready Queue Current Thread and PCB:s PCB2 Process Control Block PCB4 Process Control Block PCB6 Process Control Block PCB1 Process Control Block Ready Queue Ready Queue innehåller (stack-) pekare till PCB:er Current Thread (5)

14 4 June 20152G1518, Förel 9 ht2005 (D3)14 Ready Queue PCB Save PCB2 Process Control Block PCB4 Process Control Block PCB1 Process Control Block Ready Queue Current Thread (5) sp PCB5 Process Control Block PCB6 Process Control Block

15 4 June 20152G1518, Förel 9 ht2005 (D3)15 Ready Queue RQ Put PCB2 Process Control Block PCB4 Process Control Block PCB1 Process Control Block Ready Queue Current Thread (5) PCB5 Process Control Block PCB6 Process Control Block

16 4 June 20152G1518, Förel 9 ht2005 (D3)16 Ready Queue Select new Process/Thread PCB2 Process Control Block PCB4 Process Control Block PCB1 Process Control Block Ready Queue PCB5 Process Control Block PCB6 Process Control Block Current Thread (2)

17 4 June 20152G1518, Förel 9 ht2005 (D3)17 Ready Queue RQ Get PCB2 Process Control Block PCB4 Process Control Block PCB6 Process Control Block PCB1 Process Control Block Ready Queue PCB5 Process Control Block Current Thread (2) sp

18 4 June 20152G1518, Förel 9 ht2005 (D3)18 Ready Queue, Data Structure Circular Buffer, FIFO WRADDR: RDADDR: RQEND: QUEUE: ledig upptagen Utanför queue

19 4 June 20152G1518, Förel 9 ht2005 (D3)19 Ready Queue, Data Structure.equMAX_THREADS, 16.data.align2# 2 2 wraddr:.wordqueue# *skrivadress rdaddr:.wordqueue# *läsadress queue:.fillMAX_THREADS, 4, 0 rqend:.word# slutmärke

20 4 June 20152G1518, Förel 9 ht2005 (D3)20 Ready Queue, Data Structure Circular Buffer, FIFO WRADDR: RDADDR: RQEND: QUEUE: ledig upptagen Utanför queue

21 4 June 20152G1518, Förel 9 ht2005 (D3)21 Nios-II: Subrutinen rqinit rqinit:moviar8, queue moviar9, wraddr moviar10, rdaddr str8, 0(r9) str8, 0(r10) ret

22 4 June 20152G1518, Förel 9 ht2005 (D3)22 Nios-II: Subrutinen RQPUT RQPUT:moviar8, wraddr ldwr9, 0(r8) stwr4, 0(r9)# skriv från r4 addir9, r9, 4# öka wraddr moviar10, rqend bner9, r10, putend moviar9, queue putend:stwr9, 0(r8) ret

23 4 June 20152G1518, Förel 9 ht2005 (D3)23 Nios-II: Subrutinen RQGET RQGET:moviar8, rdaddr ldwr9, 0(r8) ldwr2, 0(r9)# skriv från r4 addir9, r9, 4# öka wraddr moviar10, rqend bner9, r10, getend moviar9, queue getend:stwr9, 0(r8) ret

24 4 June 20152G1518, Förel 9 ht2005 (D3)24 Program-Kod för context switch contextswitch: pushr31# skydda returadress i r31 bsr PCBSAVE# spara PCB på lokal stack move r4, sp# kopiera sp till r4 bsr RQPUT# skriv sp i Ready Queue # här görs språnget mellan 2 processer/trådar bsr RQGET # läs ny sp från Ready Queue move sp, r2# kopiera r2 till sp bsr PCBUNSAVE # kopiera PCB till processorn popr31# återställ r31 cswret:popr29 subir29, r29, 4 eret

25 4 June 20152G1518, Förel 9 ht2005 (D3)25 Kod för context switch mer liknande boken sid 201 contextswitch: pushr31# skydda returadress i r31 bsr PCBSAVE# spara PCB på lokal stack move r4, sp# kopiera sp till r4 bsr ITS_scheduler# RQPUT och RQGET i C-kod move sp, r2# kopiera r2 till sp bsr PCBUNSAVE # kopiera PCB till processorn popr31# återställ r31 cswret:popr29 subir29, r29, 4 eret

26 4 June 20152G1518, Förel 9 ht2005 (D3)26 Nios-II Process Control Block - PCB Thread Control Block - TCB r1—r26 r28, r30 ctrl2 # bstatus sp r29 #returadress r31 #returadress ctrl3 # ienable ctrl1 # estatus

27 4 June 20152G1518, Förel 9 ht2005 (D3)27 Nios-subrutin spara PCB å stacken PCBSAVE: PUSHALL# alla utom r0, r27, r29 och r31 PUSHCTL 3# pusha ienable PUSHCTL 2# pusha ienable PUSHCTL 1# pusha estatus ret# jmp r31 PCBUNSAVE: POPCTL 1# poppa estatus POPCTL 2# poppa bstatus POPCTL 3# poppa ienable POPALL# alla utom r0, r27, r29 och r31 ret# jmp r31

28 4 June 20152G1518, Förel 9 ht2005 (D3)28 Nios-II: Macro för controlreg   stacken # ändrar innehåll i r24.macroPUSHCTLnum rdctlr24, ctl\num pushr24.endm # ändrar innehåll i r24.macroPOPCTLnum popr24 wrctlr24, ctl\num.endm

29 4 June 20152G1518, Förel 9 ht2005 (D3)29 Nios-II: Macro för att pusha register på stacken.macroPUSHALL #except r0, r27, r29, r31 pushr1 pushr2... pushr25 pushr26 pushr28 pushr30.endm

30 4 June 20152G1518, Förel 9 ht2005 (D3)30 Nios-II: Macro för att poppa regisster på stacken.macroPOPALL #except r0, r27, r29, r31 popr30 popr28 popr26 popr25... popr2 popr1.endm

31 4 June 20152G1518, Förel 9 ht2005 (D3)31 Nios-II, Statusregister 0 och 1 status och estatus 31 2 1 0 U PIE PIE = Processor Interrupt Enable (1=enable, 0=disable) U = User Mode (1=User Mode, 0=Supervisor Mode 31 2 1 0 EU EPIE EPIE = Processor Interrupt Enable (1=enable, 0=disable) EU = User Mode (1=User Mode, 0=Supervisor Mode ctl0 - status ctl1 - estatus

32 4 June 20152G1518, Förel 9 ht2005 (D3)32 Nios-II Statusregister 3 ienable, ctl3 För var och en av de 32 IRQ-signalerna finns en maskbit vars zvärde 0 förbjuder avbrott (disable) zvärde 1 tillåter avbrott (enable)

33 4 June 20152G1518, Förel 9 ht2005 (D3)33 initera ”tom” PCB å stacken.macroINITPCB PUSHr4# pusha start-adress PUSHr31# reservera ”dummy” plats PUSHALL# alla reg utom 0, 27, 29, 31... PUSHCTL3# push ienable... PUSHCTL2# push bstatus PUSHCTL1# push estatus.endm

34 4 June 20152G1518, Förel 9 ht2005 (D3)34 Create_Thread med en PCB å stacken.macroCreateThread Startaddress, Stackinit moviasp, \Stackinit# initiera r27=sp moviar4, \Startaddress# returadress på plats INITPCB# MACRO, ny variant PUTRQ# placera i Ready Queue.endm

35 4 June 20152G1518, Förel 9 ht2005 (D3)35 2G1518 Datorteknik Föreläsning 9 2. Semaforer (förberedelse till hemlab 3)

36 4 June 20152G1518, Förel 9 ht2005 (D3)36 Samverkande processer Användning av semaforer

37 4 June 20152G1518, Förel 9 ht2005 (D3)37 Semafor, vad är det zEn heltalsvariabel (0, 1, 2, 3 … -1, -2 ??) zSpeciella egenskaper zOperationer (atomära - odelbara) zsignal (sem) ~ öka med 1 zwait (sem) ~ minska med 1 om det går (annars ”vänta” tills det går) zBinär semafor, kan anta värde 0 eller 1

38 4 June 20152G1518, Förel 9 ht2005 (D3)38 Semafor korgbollsanalogi KORG BOLL

39 4 June 20152G1518, Förel 9 ht2005 (D3)39 Semafor korgbollsanalogi KORG BOLL SIGNAL är ungefär: Lägg en till boll i korgen (och fortsätt sedan…)

40 4 June 20152G1518, Förel 9 ht2005 (D3)40 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 …)

41 4 June 20152G1518, Förel 9 ht2005 (D3)41 Dijkstra zSignal - Verhogen; V(sem) zWait - Proberen; P(sem)

42 4 June 20152G1518, Förel 9 ht2005 (D3)42 Samverkan mellan processer med hjälp av semaforer zSynkronisering zÖmsesidig uteslutning (Mutual Exclusion) zRendez Vous (dubbel synkronisering)

43 4 June 20152G1518, Förel 9 ht2005 (D3)43 Synkronisering: P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

44 4 June 20152G1518, Förel 9 ht2005 (D3)44 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

45 4 June 20152G1518, Förel 9 ht2005 (D3)45 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

46 4 June 20152G1518, Förel 9 ht2005 (D3)46 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

47 4 June 20152G1518, Förel 9 ht2005 (D3)47 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

48 4 June 20152G1518, Förel 9 ht2005 (D3)48 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

49 4 June 20152G1518, Förel 9 ht2005 (D3)49 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

50 4 June 20152G1518, Förel 9 ht2005 (D3)50 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

51 4 June 20152G1518, Förel 9 ht2005 (D3)51 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

52 4 June 20152G1518, Förel 9 ht2005 (D3)52 Ö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”

53 4 June 20152G1518, Förel 9 ht2005 (D3)53 Ö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”

54 4 June 20152G1518, Förel 9 ht2005 (D3)54 Ö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”

55 4 June 20152G1518, Förel 9 ht2005 (D3)55 Ö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”

56 4 June 20152G1518, Förel 9 ht2005 (D3)56 Ö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”

57 4 June 20152G1518, Förel 9 ht2005 (D3)57 Ö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”

58 4 June 20152G1518, Förel 9 ht2005 (D3)58 Ö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”

59 4 June 20152G1518, Förel 9 ht2005 (D3)59 Ö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”

60 4 June 20152G1518, Förel 9 ht2005 (D3)60 Ö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”

61 4 June 20152G1518, Förel 9 ht2005 (D3)61 Rendez Vous T1 och T2 inväntar varandra innan S1 och S2 exekverar … P1: … signal wait S1 … P2: … signal wait S2 T1: T2:

62 4 June 20152G1518, Förel 9 ht2005 (D3)62 Testprogram (hem-laboration 3) zProducers, p stycken, producerar primtal zConsumers, c stycken, konsumerar primtal zFIFO (buffert) med x platser för primtal

63 4 June 20152G1518, Förel 9 ht2005 (D3)63 Producer init:tal := start ploop:räkna ut nästa primtal, tal anropa PUT-FIFO (tal) br ploop

64 4 June 20152G1518, Förel 9 ht2005 (D3)64 Producer ”Nios-kod” / makron prod:moviar4, start ploop:bsrNextPrime# subrutin PUTFIFO# macro brploop

65 4 June 20152G1518, Förel 9 ht2005 (D3)65 Consumer init:vid behov ? cloop:anropa GET-FIFO (tal) konsumera primtalet (skrivut tal) bracloop

66 4 June 20152G1518, Förel 9 ht2005 (D3)66 Consumer ”Nios-kod” / makron cons:nop cloop:GETFIFO# macro bsrPrintPrime# subrutin brcloop

67 4 June 20152G1518, Förel 9 ht2005 (D3)67 PUT-FIFO Skriv data till FIFO-buffert på ett säkert sätt zDet måste finnas minst en ledig plats zSamtidig skrivning är kritisk Vad är det som är kritiskt ? Hantering av skrivpekaren wraddr !

68 4 June 20152G1518, Förel 9 ht2005 (D3)68 FIFO Queue, Data Structure (jfr med RQ!) WRADDR: RDADDR: fifoend: FIFO: ledig upptagen

69 4 June 20152G1518, Förel 9 ht2005 (D3)69 FIFO Queue, Data Structure.equnrfifo, 16.data.align4 wraddr:.wordfifo rdaddr:.wordfifo fifo:.fillnrfifo, 4, 0 fifoend:.word

70 4 June 20152G1518, Förel 9 ht2005 (D3)70 Nios-II: Subrutinen fifoinit fifoinit:moviar8, fifo moviar9, wraddr moviar10, rdaddr str8, 0(r9) str8, 0(r10) ret

71 4 June 20152G1518, Förel 9 ht2005 (D3)71 Nios-II: Subrutinen wrfifo wrfifo:moviar8, wraddr ldwr9, 0(r8) stwr4, 0(r9)# skriv från r4 addir9, r9, 4# öka wraddr moviar10, fifoend bner9, r10, wrend moviar9, fifo wrend:stwr9, 0(r8) ret

72 4 June 20152G1518, Förel 9 ht2005 (D3)72 Nios-II: Subrutinen rdfifo rdfifo:moviar8, rdaddr ldwr9, 0(r8) ldwr2, 0(r9)# skriv från r4 addir9, r9, 4# öka wraddr moviar10, fifoend bner9, r10, rdend moviar9, fifo rdend:stwr9, 0(r8) ret

73 4 June 20152G1518, Förel 9 ht2005 (D3)73 anrop … wait … wait … wrfifo … signal … signal … retur PUT-FIFO nrempty wrmut nrfull

74 4 June 20152G1518, Förel 9 ht2005 (D3)74 ”Nios-kod” för PUTFIFO (bara en massa macron) PUTFIFO:WAITnrempty WAITwrmut bsrwrfifo SIGNALwrmut SIGNALnrfull RETURN

75 4 June 20152G1518, Förel 9 ht2005 (D3)75 Nios-II-kod Macro för System Call.macroSysCallindex moviar4, \index trap.endm

76 4 June 20152G1518, Förel 9 ht2005 (D3)76 Nios-kod Macro för Wait och Signal.macroSIGNALsem moviar5, \sem SysCall6# trap med 6 i r4.endm.macroWAITsem moviar5, \sem SysCall7# trap med 7 i r4.endm

77 4 June 20152G1518, Förel 9 ht2005 (D3)77 GET-FIFO Läs data från FIFO-buffert på ett säkert sätt zDet måste finnas minst en upptagen plats zSamtidig läsning är kritisk Vad är det som är kritiskt ? Hantering av rdaddr !

78 4 June 20152G1518, Förel 9 ht2005 (D3)78 GET-FIFO nrempty rdmut nrfull retur … signal … signal … rdfifo … wait … wait … anrop

79 4 June 20152G1518, Förel 9 ht2005 (D3)79 Nios-kod för GETFIFO (bara en massa macron) GETFIFO:WAITnrfull WAITrdmut bsrrdfifo SIGNALrdmut SIGNALnrempty RETURN

80 4 June 20152G1518, Förel 9 ht2005 (D3)80 CPU-scheduling OS Prod 1 Prod 2 Prod 3 Cons 1 Cons 2 time-slice

81 4 June 20152G1518, Förel 9 ht2005 (D3)81 En process kan göra yield zLämna bort resten av sin time-slice zSpeciellt vid wait-operation på semafor zNästa thread bör få en hel time-slice zVid en semafor finns ”väntande threads” zEn signal kan flytta en thread till RQ zDet finns olika varianter vid signal (vilken tråd ska fortsätta efter signal ?)

82 4 June 20152G1518, Förel 9 ht2005 (D3)82 Några sidor om zSIGNAL som System Call med TRAP 6 zWAIT som System Call med TRAP 7 zYIELD som System Call med TRAP 8 zEXIT som System Call med TRAP 9 zNios-kod för signal, wait och yield z...

83 4 June 20152G1518, Förel 9 ht2005 (D3)83 Signal med Nios-II-kod pekare till semafor i r5 zOm anrop görs med TRAP6 är PIE redan= 0 #DI# enter critical trap6:ldwr24, 0(r5)# hämta semafor addir24, r24, 1# lägg i en boll stwr24, 0(r5)# semafor tillbaks #EI eret# medför även EI

84 4 June 20152G1518, Förel 9 ht2005 (D3)84 Wait med Nios-II-kod pekare till semafor i r5 zOm anrop görs med TRAP7 är PIE redan =0 trap7: ldwr24, 0(r5)# läs nytt semaforvärde bgtr24, r0, ball# hopp om boll, minst en noball:PUSHCTL 1# skydda estatus PUSHr29# skydda ea EI# släpp in TimerInt, OBS OBS ! # YIELD# om så önskas med TRAP8 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

85 4 June 20152G1518, Förel 9 ht2005 (D3)85 Program-Kod för context switch (repris) contextswitch: pushr31# skydda returadress i r31 bsr PCBSAVE# spara PCB på lokal stack move r4, sp# kopiera sp till r4 bsr RQPUT# skriv sp i Ready Queue # här görs språnget mellan 2 processer/trådar exit:bsr RQGET # läs ny sp från Ready Queue move sp, r2# kopiera r2 till sp bsr PCBUNSAVE # kopiera PCB till processorn popr31# återställ r31 popr29 subir29, r29, 4 eret

86 4 June 20152G1518, Förel 9 ht2005 (D3)86 Yield med Nios-kod zYIELD-anrop görs med TRAP (t.ex TRAP8) zVad ska utföras av YIELD zSamma sak som context switch

87 4 June 20152G1518, Förel 9 ht2005 (D3)87 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: brcontextswitch

88 4 June 20152G1518, Förel 9 ht2005 (D3)88 EXIT med Nios-kod zEXIT-anrop görs med TRAP (t.ex TRAP9) zVad ska utföras av EXIT zTråden ska ej placeras i RQ

89 4 June 20152G1518, Förel 9 ht2005 (D3)89 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

90 4 June 20152G1518, Förel 9 ht2005 (D3)90 Hem-laboration 3 ingår i kursen våren 2005 zMaterial ingår i tentamen (se extentor) zLab-PM finns på hemsidan zLabben körs på MIPS-simulatorn ! zLabben ska redovisas muntligt zEnsam eller i grupp om 2 (ev 2 grupper)

91 4 June 20152G1518, Förel 9 ht2005 (D3)91 Hem-laboration 3 CPU-scheduling / semaforer zIdle-tråd kan göra Yield zProducer skriver primtal till FIFO zConsumer läser primtal från FIFO zAntal Producers varieras zAntal Consumers varieras zAntal platser i FIFO varieras zBeteende vid WAIT varieras

92 4 June 20152G1518, Förel 9 ht2005 (D3)92 CPU-scheduling endast Idle-tråd OS Idle time-slice Round Robin

93 4 June 20152G1518, Förel 9 ht2005 (D3)93 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

94 4 June 20152G1518, Förel 9 ht2005 (D3)94 OS 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

95 4 June 20152G1518, Förel 9 ht2005 (D3)95 OS 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

96 4 June 20152G1518, Förel 9 ht2005 (D3)96 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

97 4 June 20152G1518, Förel 9 ht2005 (D3)97 CPU CHIPSET Grafik MHz-GHz L2 cache L1 I-cache RAM/DRAM PCIBUS ISA/EISABUS IDEBUS(sar) PS2BUS SCSI-BUS PCI/USB DVD ZIP L1 D-cache HDD CDRW

98 4 June 20152G1518, Förel 9 ht2005 (D3)98 Tips om kul program Det finns ett nedladdningsbart program som visar hur just din dator är utrustad när det gäller processor och cache-minnen med mera Sök på google efter wcpuid och ladda hem på egen risk


Ladda ner ppt "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."

Liknande presentationer


Google-annonser