Datalogi 1F: Multiprogrammering[4] 1 Planen for i dag Repetition af kerner med afbrydelser Kerner med tvungent processkift Præsentation af K1.

Slides:



Advertisements
Lignende præsentationer
HUNDE SPEED km h 34,4 HUNDE SPEED km h 34,1 HUNDE SPEED km h 32,8 HUNDE SPEED km h 31,9 HUNDE SPEED km h 31,8 HUNDE SPEED km h 30,9.
Advertisements

Den danske befolknings syn på handicappedes rettigheder
SMUT PAKKE 2 VIDEN OM SUKKERSYGE.
VMS data Geografisk og tidsmæssig udvikling af indsatsen i tobisfiskeriet v/ dataspecialist Josefine Egekvist Sekretariat for myndighedsbetjening.
Atomer Et programmeret forløb. En måde at lære på.
Du skal vide nogen om blodtrykket, fordi det fortæller noget om hvordan dit hjerte har det. HUSK - at hjertet ikke er til at undvære ligesom bilen.
SharePoint /36 2 General SettingsPermissions and ManagementCommunications Titel, description and navigation Versioning settings Advanced settings.
Børns indflydelse på familiens købsbeslutninger
NemID og Fællesskema 2014 v/Signe Hansen Blegmand
Du skal vide nogen om blodtrykket, fordi det fortæller noget om hvordan dit hjerte har det. HUSK - at hjertet ikke er til at undvære ligesom bilen.
Prospekt. Ideen •Casa della filosofia er navnet på en forening, der giver almin- delige mennesker mulighed for at have brugsret til et hus i Italien på.
Torbenfeldvej Vallensbæk strand Tlf.: – – dagligt brug af vores hjemmeside •AGEN LYS har en stor og omfattende.
Niveauer af abstrakte maskiner
OS[2]: Processor, tråde og skedulering
1 Alder år 55 % år 24 % år 17 % Hvor længe på VUC? 1 år 93%
Kap. 2 Fiskeri med trawl 2.1 · En smakke med trawlet ude.
Hvem er vi? •Vi er organiseret i KBH Amts behandlingscenter for stofbrugere. •Vi er 3 år gamle. •Hjulpet i gang af fokus på Ecstasy. •Hjulpet i gang af.
Velkommen hos Juvel A/S
Bolig selskabernes Landsforening– Almene lejeboliger - Maj/Juni Almene lejeboliger - Danmarkspanelet - Maj/Juni 2010.
Analyse for Ældre Sagen: Trafikundersøgelse: Cykel, cykelhjelm mv Rapport Marts 2010.
Tidlig skriftsprog i dagtilbud
Trivselsundersøgelse og ledelsesevaluering
SMUT PAKKE 4 VIDEN OM MOTION.
SEO PÅ AU.
Statistik.
Multiprogrammering[1]: Ydre enheder og multiprogrammer Datalogi 1F: Forår 2003 Jørgen Sværke Hansen
Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov.
Semaforer Hvordan virker semop() hvis der er flere operationer ? I hvilken rækkefølge vækkes blokerede semaforer ? man semop.. The system call semantic.
Representations for Path Finding in Planar Environments.
Grundlæggende regnskabsforståelse
Multiprogrammering[2] Datalogi 1F Forår 2003 Synkronisering og grænseflader Jørgen Sværke Hansen
Datalogi 1F: Multiprogrammering[2]
Opslagsfelter (Access, del 6). RHS – Informationsteknologi 2 Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser vores.
HUSKESPIL – den lille tabel
Titel: Arial, fed, skriftstr. 20, mørkegrå. Tekst: Arial, normal, fed eller kursiv, skriftstr. 10, 12 og 14 til print – 16 og 18 til projektor – mørkegrå.
 2 3  3 =  83  43  53  63  73  93  10 4.
1 Dagens gang Repeter systemvalg Gennemgang af klasser og strukturer (kap. 3+4 OOA+D) Tavle opgave Gruppe opgave til næste gang.
Pleje og Sundhed Gennemførte719 Inviterede895 Svarprocent80% FREDERICIA KOMMUNE MTU og Psykisk APV 2012 Rapportspecifikationer.
1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.
Operativsystemer [3]: Synkronisering og baglåse Datalogi 1F: Forår 2003 Jørgen Sværke Hansen
1 Powerpointserie om In-line færdiggørelse ved Heatsettrykning Avisrotation Magasindybtryk Den Grafiske Højskole.
Datalogi 1F Forår 2003 Multiprogrammering[4] Kerner og processer Jørgen Sværke Hansen
Trivselsundersøgelse og ledelsesevaluering Anæstesiologisk Afdeling Flere ledere
Datalogi 1F Forår 2003 Operativsystemer og multiprogrammering Jørgen Sværke Hansen
ETU 2008 | Elevtilfredshedsundersøgelse Erhvervsskolen Nordsjælland HTX (Teknisk Gymnasium) - Hillerød Baseret på 313 besvarelser.
1 Borgerpanelet i Silkeborg Kommune.
Program for fremlæggelse
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Matematik B 1.
Datalogi 1F Forår 2003 Multiprogrammering[3] Eksempler på multiprogrammeringskerner Jørgen Sværke Hansen
Claus Brabrand, ITU, Denmark Mar 10, 2009EFFECTIVE JAVA Effective Java Presentation Workshop Claus Brabrand [ ] ( “FÅP”: First-year Project.
MSBuild & Team Build i C#/C++ solutions VSTS ERFA d. 25 November.
Rapporter (Access, del 5). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller, og.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Grunde til at jeg elsker dig
Januar 2009 MandagTirsdagOnsdagTorsdagFredagLørdagSøndag Uge 2. Anette Ø. Kl Tina H. Lone M. 6 Kl Britt H. 7 Kl Vinnie G. Gerda.
Fundamentale datastrukturer
Opslagsfelter (Access, del 6). RHS – Informationsteknologi – Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Procestræ under afvikling af cp init login shell cp cp src dest.
Process Control Hardware baggrund Process begrebet i et OS Process tilstande Context switching.
Per Printz Madsen 1 Linux kernen Monolithic kernel Support for dynamiske moduler Få kerne tråde Preemptive.
Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
Datalogi 1F: Multiprogrammering[3] 1 Planen for idag Kerner uden afbrydelser (KB4 kap. 6): –akernen: kerne med decentralt processkift –bkernen: kerne med.
DAIMIProgrammering af Store Systemer1 Concurrency i Java – Samarbejdende tråde.
Quiz Uge 2 – mandag.
Quiz Uge 2 – mandag.
Quiz Uge 2 – mandag.
Præsentationens transcript:

Datalogi 1F: Multiprogrammering[4] 1 Planen for i dag Repetition af kerner med afbrydelser Kerner med tvungent processkift Præsentation af K1

Datalogi 1F: Multiprogrammering[4] 2 Kerner med afbrydelser Vi erstattede aktiv venten med: –ventende processer placeres i ventekøer –afbrydelser aktiverer ventede processer ved at flytte dem til klarkøen Bedre udnyttelse af CPU Introduktion af parallelisme i kernen: –afbrydelsesroutiner kan udføres når som helst (undtagen når vi lukker for afbrydelser) –fokus på kritiske regioner

Datalogi 1F: Multiprogrammering[4] 3 Kerne med afbrydelser KInitProc(…)KReadyQ KSleep() KCurProc KPause() KSelectNewProcess() KInterruptHandler() KInitSem() KReadChar() KWait() KWriteChar() KSignal() KReadLine() KWriteLine() readerProc writerProc KReadQ KWriteQ

Datalogi 1F: Multiprogrammering[4] 4 Tætkoblede drivprogrammer Hver slags hændelse (tegn skrevet, tegn læst, …) er tilknyttet en ventekø: char KReadChar() { while(!(rdio(com1lsr) & 0x01)) KPause(KReadQ); return rdio(com1Rbr); }

Datalogi 1F: Multiprogrammering[4] 5 Synkronisering med ydre enheder void KInterruptHandler() { if( rdio(com1Iir) & 2) while(!KReadQ.isEmpty()) KReadyQ.Put(KReadQ.Get()); else if( rdio(com1Iir) & 4) while(!KWriteQ.isEmpty()) KReadyQ.Put(KWriteQ.Get()); }

Datalogi 1F: Multiprogrammering[4] 6 Uheldig rækkefølge while(!(rdio(com1lsr) & 0x01)) sætter ready-bit while(!KWaitQ.isEmpty()) KPause(KReadQ); AAAAARGH: vi opdager ikke at tegnet er læst

Datalogi 1F: Multiprogrammering[4] 7 Problem Vi har to parallelle processer: –brugerproces –afbrydelsesroutine der deler data: –kontrolregistre –proceskøer Vi må sikre udelelig udførsel af kritiske regioner

Datalogi 1F: Multiprogrammering[4] 8 Implementering af udelelighed Luk for afbrydelser: char KReadChar() { forbid(); while(!(rdio(com1lsr) & 0x01)) KPause(KReadQ); char ch = rdio(com1Rbr); permit(); return ch; } Nu bliver vi ikke afbrudt mellem check af statusregister og KWaitQ.Put() Vi åbner for afbrydelser i KPause()

Datalogi 1F: Multiprogrammering[4] 9 Ny KPause KPause skal skifte afbrydelsesniveau (ipl er en del af processens tilstand): void KPause() { ; }

Datalogi 1F: Multiprogrammering[4] 10 Andre routiner der skal beskyttes? Afbrydelsesroutiner og alm. kernefunktioner deler køstrukturer Beskyt køoperationerne: int isEmpty() { int oldipl = forbid(); int b = (size == 0); permit(oldipl); return b; };

Datalogi 1F: Multiprogrammering[4] 11 Kerner med tvungent processkift Indtil nu har vi kun set på kerner med frivilligt processkift via KPause() En afbrydelsesroutine sætter processen i klarkøen, men der kan gå lang tid inden den aktive proces opgiver CPU’en Vi vil tvinge et processkift som en del af afbrydelsen: –dette sikrer hurtigere behandling af afbrydelser

Datalogi 1F: Multiprogrammering[4] 12 Ny afbrydelsesprocedure void KInterruptHandler() { if(rdio(com1Iir) & 2) KSleep (KReadyQ, KWriteQ); else if(rdio(com1Iir) & 4) KSleep (KReadyQ, KReadQ); …… }

13 KSleep og venner Queue * KPutQ, KGetQ; void KSleep(Queue & put, Queue & get) { KPutQ = &put, KGetQ = &get; KPause(); } Registers* KSelectNewProcess (Registers* sp) { KCurProc->sp = sp; KPutQ->Put(KCurProc); KCurProc = KGetQ->Get(); return KCurProc->sp; }

14 Tvungent processkift - eksempel AP: printl() AP: KWriteChar AP:BP1_start() AP: KPause BP1 sp AP: Wait(sem) AP:BP2_start() BP2 sp AP: ent_int AP: KInterruptH… PAL stakramme P2 AP: KPause Registre P2 AP: KSelectNewP… AP: KSleep AP: KWriteLine AP: KSelectNewP… afbrydelse Skift: stakpeger afbrydelsesniveau Processkift sker EFTER behandling af og kvittering for afbrydelse a2 a1 a0 gp pc ps

Datalogi 1F: Multiprogrammering[4] 15 Semaforroutiner Nu kan vores semaforroutiner også blive afbrudt: void KWait (KSem *sem) { if (!sem->value) KSleep(sem->WaitQ, KReadyQ); sem->value--; } Førhen var dette sikkert fordi afbrydelser ikke rørte ved semaforerne Men nu kan en vilkårlig proces blive afbrudt

En anden uheldig rækkefølge if(!sem->value) value == 1> KPause(KReadyQ, KReadQ);... if(!sem->value) value stadig == 1> sem->value--; KPause(KReadyQ, KWriteQ);... sem->value--; UUUPS: der er 2 processer i kritisk region!!

Datalogi 1F: Multiprogrammering[4] 17 Nye semaforroutiner Nu kan vores semaforroutiner ikke mere blive afbrudt: void KWait (KSem *sem) { forbid(); if (!sem->value) KSleep(sem->WaitQ, KReadyQ); sem->value--; permit(); }

Datalogi 1F: Multiprogrammering[4] 18 Andre routiner der har problemer? Måske KSleep generelt? Kan vi klare at skifte proces mens vi skifter proces? Registers* KSelectNewProcess (Registers* sp) { KCurProc->sp = sp; KPutQ->Put(KCurProc); KCurProc = KGetQ->Get(); return KCurProc->sp; } De to globale variable KPutQ og KGetQ ser suspekte ud

Datalogi 1F: Multiprogrammering[4] 19 Endnu en uheldig rækkefølge... < Sætter sig selv på KReadQ men aktiverer proces fra KReadyQ >

Datalogi 1F: Multiprogrammering[4] 20 Morale Man skal være forsigtig!!!! Identificer alle variable der deles mellem afbrydelsesroutiner og alm. kerneroutiner Foretag sikring af kritiske regioner Ved aflusning af kerner (f.eks. K1) kan det være en god ide at starte med helt at lukke for afbrydelser i kernen og så langsom bløde det op

Datalogi 1F: Multiprogrammering[4] 21 Kerner med periodisk processkift Hidtil har vi udskiftet den kørende proces ved afbrydelse fra I/O enhed: –Har vi kun en CPU tung proces, er det fint nok, da den vil blive afbrudt –Men hvis vi har flere, kan der stadig gå lang tid inden en ventende proces ”kommer til fadet” KPause() kaldes typisk som led i et systemkald: –ved hvert systemkald kunne man undersøge om en proces har kørt for længe, og derefter kalde KPause Hvad med beregningstunge processer, der sjældent bruger systemkald? –Kræv at de skal indsætte frivillige processkift –Tving dem væk fra CPU’en

Datalogi 1F: Multiprogrammering[4] 22 Implementering af periodisk processkift void KInterruptHandler (ulong a0) { if ( a0 & 0x01) KSleep(KReadyQ, KReadyQ); else } Hver gang uret afbryder puttes den aktive proces bagerst i klarkøen (round robin) Men hvad hvis der ingen aktiv proces er?

Datalogi 1F: Multiprogrammering[4] 23 Tomgangsprocessen For at sikre, at der altid er en proces i klarkøen, har vi en tomgangsproces: void KIdleProcess { for(;;;) KSleep(KReadyQ,KReadyQ); } men man kunne nu stadig bruge en venteløkke i selve KSelectNewProcess

Datalogi 1F: Multiprogrammering[4] 24 Brug af to sikkerhedsniveauer Hardware indeholder en eller flere bits, der viser sikkerhedsniveau, f.eks. (0) brugertilstand og (1) kernetilstand Ved afbrydelser skiftes til kernetilstand, f.eks. ved en trap operation Specielle privilegerede instruktioner kan kun udføres i kernetilstand, typisk instruktioner der har med ressourcedeling at gøre kernetilstand brugertilstand trap/ exception skift til brugerniveau

Datalogi 1F: Multiprogrammering[4] 25 2 slags stakke Når brugerprogrammer udføres i brugertilstand benytter de en brugerstakpeger Systemkald samt afbrydelser udføres i kernetilstanden og benytter en kernestakpeger Kernestakpegeren peger på et andet lagerområde end brugerstakpegeren Kerne sp vil typisk være beskyttet mod skrivning og læsning fra brugertilstand Skiftet mellem stakpegerne foretages på Alphaerne af PAL koden ved skift mellem bruger og kernetilstand

Datalogi 1F: Multiprogrammering[4] 26 Brugerstak og kernestak eksempel AP: findmin() AP: ent_int AP: findmin() AP: KInterruptH… AP:BP1_start() PAL stakramme BP1 sp kerne sp PAL registre: bruger sp: BP1 sp kerne sp: 0x BP1_start(void) { findmin(t3_root); } PAL registre: bruger sp: ikke def. kerne sp: 0x afbrydelse $sp = kerne spkerne sp = $sp$sp = bruger sp

Datalogi 1F: Multiprogrammering[4] 27 Processkift i afbrydelsesprocedure Hvis vi ønsker at skifte proces i en afbrydelsesprocedure skal vi dels: –gemme kørende proces’ tilstand –ændre brugerstakpeger i PAL register –gendanne nye proces’ tilstand Ændring af bruger sp er nemt: –PAL_rdusp læser bruger stakpeger fra PAL register –PAL_wrusp skriver en ny bruger stakpeger til PAL register Men processernes tilstande omfatter: –PAL stakramme –Registre gemt af ent_int (afbrydelsesniveau)

Datalogi 1F: Multiprogrammering[4] 28 Skift mellem stakke ved processkift under afbrydelse Vi ser på fire eksempler Skift mellem processer i brugertilstand: –én kernestak –en kernestak pr proces Processkift med en proces i systemtilstand og en i brugertilstand Processkift ved indlejrede afbrydelser, f.eks.: –først afbrydelse fra UART (ipl 3) –KInterruptHandler afbrydes af uret (ipl 5)

29 PAL registre: bruger sp: XXXXX kerne sp: 0x processer i brugertilstand: én kernestak AP: calc() AP: ent_int AP: calc() AP: KInterruptH… AP:BP1_start() PAL stakramme P2 AP: KSelectNewP… BP1 sp kerne sp AP: calc() AP:BP2_start() BP2 sp PAL registre: bruger sp: BP2 sp kerne sp: 0x PAL registre: bruger sp: BP1 sp kerne sp: 0x afbrydelse Registre P2 PAL stakramme P1 Registre P1 Gem kopi af BP2s kernestak (f.eks. på brugerstakken) Gendan kopi af BP1s kernestak

30 2 processer i brugertilstand: en kernestak per proces AP: calc() AP: ent_int AP: calc() AP: KInterruptH… AP:BP1_start() AP: KSelectNewP… BP1 sp BP1 kerne sp AP: calc() AP:BP2_start() BP2 sp afbrydelse PAL stakramme P1 Registre P1 AP: ent_int AP: KInterruptH… PAL stakramme P2 AP: KSelectNewP… BP2 kerne sp Registre P2 PAL registre: bruger sp: BP2 sp kerne sp: 0x PAL registre: bruger sp: BP1 sp kerne sp: 0x PAL registre: bruger sp: XXXXX kerne sp: 0x PAL registre: bruger sp: BP1 sp kerne sp: 0x200000

31 2 processer: en i brugertilstand og en i kernetilstand AP: ent_sys AP: printl() AP: KWriteChar AP:BP1_start() AP: KPause BP1 sp BP1 kerne sp AP: calc() AP:BP2_start() BP2 sp afbrydelse PAL stakramme P1 Registre P1 AP: ent_int AP: KInterruptH… PAL stakramme P2 AP: KSelectNewP… BP2 kerne sp Registre P2 AP: KSelectNewP… AP: KPause Skift: brugerstakpeger aktiv stakpeger afbrydelsesniveau

32 Indlejrede afbrydelser AP: ent_int AP: KInterruptH… PAL stakramme P2 kerne sp Registre P2 AP: ent_int AP: KInterruptH… PAL stakramme P2 Registre P2 AP: KSelectNewP… AP: KPause AP: calc() AP:BP2_start() BP2 sp afbrydelse Er flag for processkift sat og er vi den sidste afbrydelse? AP: KSelectNewP… AP: KPause Så kan vi skifte til en anden proces afbrydelse Vi sætter et flag, der fortæller at vi skal foretage et processkift Duer ikke – vi var allerede i gang med at behandle et interrupt

Datalogi 1F: Multiprogrammering[4] 33 Indlejrede afbrydelser Hvordan ved man at man er det ”eneste” interrupt? På stakken ligger et statusregister, der fortæller hvad afbrydelsesniveau var inden den aktuelle afbrydelse: –ipl == 0 => ingen forudgående afbrydelser

Datalogi 1F: Multiprogrammering[4] 34 Opsummering Kerner med afbrydelser: –introduktion af parallelisme i kernen –implementation af udelelighed ved styring af afbrydelsesniveau Tvungent processkift: –øget parallelisme i kernen (alle processer kan afbrydes) –periodisk processkift –indlejrede afbrydelser

Datalogi 1F: Multiprogrammering[4] 35 K1: Multiprogrammeringskerne med prioriteret skedulering Udvikling af en multiprogrammeringskerne: –procesafvikling –procesadministration –synkronisering –I/O der skal kunne afvikle et sæt brugerprogrammer

Datalogi 1F: Multiprogrammering[4] 36 Procesafvikling Brugerprocesser skal køre i brugertilstand og kernefunktioner afvikles i kernetilstand: –i modsætning til kernerne i kursusbog bind 4 hvor alt foregår i kernetilstand En konsekvens (og et krav) er at alle kernefunktioner skal aktiveres vha. alpha’ernes systemkaldsmekanisme: –PAL_callsys, PAL_rti Kernen skal implementere tvungen tidsdeling: –uret afbryder 1024 gange i sekundet –processkift under udførsel af kerneoperationer

Datalogi 1F: Multiprogrammering[4] 37 Procesadministration start_proc : starter en proces exit : terminerer en proces sleep :sætter proces til at vente i X 1/1024 sekunder yield :frivilligt processkift Ved kernens start overgives kontrollen til processen INIT(), der starter de resterende brugerprocesser.

Datalogi 1F: Multiprogrammering[4] 38 Skedulering Prioritetsbaseret skedulering: –32 prioritetsniveauer: 0 – højest, 31 – lavest –round-robin indenfor hvert prioritetsniveau –ældning af lavprioritetsprocesser for at undgå udsultning Systemkald: set_priority(unsigned int priority) sætter processens prioritet unsigned int get_priority() returnerer processens aktuelle prioritet

Datalogi 1F: Multiprogrammering[4] 39 Synkronisering Klassisk tællesemafor: struct KSem { unsigned int value; Queue queue; } med operationerne: –KSem *new_sem(int i) –wait_sem(KSem *) –signal_sem(KSem *) –free_sem(KSem *)

Datalogi 1F: Multiprogrammering[4] 40 Prioritetsinvertering I systemer med prioritetsbaseret skedulering kan der optræde prioritetsinvertering: –en højprioritetsproces venter på en kritisk region, der er låst af en lavprioritetsproces

Datalogi 1F: Multiprogrammering[4] 41 Prioritetsinvertering - eksempel P1 P2 P3 høj medium lav S1S2S3 aktiv S3

Datalogi 1F: Multiprogrammering[4] 42 Prioritetsnedarvning For at undgå prioritetsinvertering: –arver en proces i en kritisk region prioriteten fra den højest prioriterede proces associeret med den kritiske region Prioritetsnedarvning er transitiv: –P1 (pri = 0) venter på P2 (pri = 15) –P2 venter på P3 (pri = 31) –P3 skal arve prioritet = 0 Indlejrede kritiske regioner

Datalogi 1F: Multiprogrammering[4] 43 Kritiske regioner Kritiske regioner synliggøres overfor kernen ved hjælp af en speciel mutex semafor med operationerne: –KSem *new_mutex() –wait_mutex(KSem *) –signal_mutex(KSem *) –free_mutex(KSem *) Prioritetsnedarvning kan knyttes til wait_mutex og signal_mutex

Datalogi 1F: Multiprogrammering[4] 44 I/O readdata :indlæser et antal tegn fra COM og returnerer hurtigst muligt writedata :udskriver et antal tegn på COM readpacket :indlæser en pakke fra ETH0 readline :indlæser en linie fra COM writeline :udskriver en linie på COM I/O operationer skal foregå udeleligt

Datalogi 1F: Multiprogrammering[4] 45 Afbrydelser Kernen skal håndtere afbrydelser fra COM, ETH0 samt uret Kernen skal kunne håndtere indlejrede afbrydelser Drivprogramskoden til Ethernet kortet og uret udleveres

Datalogi 1F: Multiprogrammering[4] 46 Sporingsmekanisme Sporingsmekanisme udviklet af Søren Debois: –en cyklisk hændelsesbuffer: systemkald afbrydelser returnering fra systemkald –brug den fra starten af!!

Datalogi 1F: Multiprogrammering[4] 47 Milepæle 1.Start med at få brugerprocesser til at køre i brugertilstand: 1.Start uden afbrydelser 2.INIT i brugertilstand 3.Systemkaldsgrænseflade med simpelt kald 4.Slå afbrydelser til 2.Udvid systemkald 1.Dynamisk lagerallokering 2.Procesoprettelse 3.Prioriteret skedulering 3.Tvungent processkift 1.Tillad afbrydelser fra uret uden processkift 2.Tillad processkift ved urafbrydelse i brugertilstand 3.Tillad processkift ved urafbrydelse i begge tilstande

Datalogi 1F: Multiprogrammering[4] 48 Instruktorvagter Fra på mandag vil der være instruktorvagter alle hverdage Lørdag den 27. marts er der også instruktorvagt Kernemaskinen archimedes er reserveret til instruktorvagten under instruktorvagten Der er ingen øvelser i de næste 3 uger

Datalogi 1F: Multiprogrammering[4] 49 Kilder Disse slides er baseret på indholdet i Datalogi 1F kursusbog bind 4, kapitlerne 7 & 8.