Operating Systems- Week 1 1 Memory Computersystemen .. . Instruction Instruction Instruction .. Data Data Dat a Data .. . 2 Processor 3 Registers CPU (core) bevat registers met speciale functies: • Rekenregisters, algemene registers • Adresregisters • Segmentregisters (Intel) • Stackpointer(s) • Statusregister • Instructiepointer 4 Instructies Speciaal register: IP (instruction pointer) Ook wel genoemd: PC (program counter) Bevat het adres van de volgende uit te voeren machine-instructie 5 Instructies De processor is voortdurend bezig in een ‘loop:’ 1.Haal instructie op via IP, Instruction Pointer 2.Verhoog IP 3.Decodeer instructie en voer uit. Eén van: • • • • ALU-operatie Geheugenoperatie I/O-operatie Branch-operatie (spronginstructie) 6 Sprong-instructies IP wordt nooit expliciet benaderd, maar opgehoogd na elke instructie en verder gewijzigd door: – – – – – Een absolute sprong Een relatieve sprong Een functieaanroep Een interrupt Een return-instructie 7 Sprong-instructies Bekijk de volgende functie: int extern telrond(unsigned int waarde) { if(waarde >= 60) waarde = 0; else waarde++; return waarde; } 8 address instruction operands int extern telrond(unsigned int waarde) { 00AB1410 push ebp 00AB1411 mov ebp,esp if(waarde >= 60) 00AB142E cmp dword ptr [ebp+8],3Ch 00AB1432 jb 00AB143D ; VOORWAARDELIJKE SPRONG waarde = 0; 00AB1434 mov dword ptr [ebp+8],0 else 00AB143B jmp 00AB1440 ; ABSOLUTE SPRONG waarde++; 00AB143D inc dword ptr [ebp+8] return waarde; 00AB1440 mov eax,dword ptr [ebp+8] } 00AB1446 mov esp,ebp 00AB1448 pop ebp 9 00AB1449 ret Spronginstructies: Functieaanroep address instruction int k = telrond(8); 00AB14D6 push 00AB14D8 call 00AB14DD add 00AB14E0 mov operands 8 00AB1410 esp,4 dword [ebp-0Ch],eax 10 Spronginstructies: Interruptafhandeling Na een externe interrupt: • Huidig proces wordt onderbroken • Alle registers en vlaggen worden veiliggesteld • IP wijst naar interrupt-service routine • Na een return-from-interrupt (IRET) wordt alles weer teruggezet • Oorspronkelijk proces loopt weer verder 11 Sprong-instructies (Jump, Branch) adres 1204 1207 … 1350 … Waarde E4 00 14 32 betekenis MOV EAX, 1400 JMP EAX 22 00 14 JMP 1400 1400 1402 1403 1405 43 30 50 54 40 75 02 44 30 50 MOV INC ADD MOV EBX, [5030] EBX EBX, EDX [5030], EBX 12 Subroutine-aanroep (Call, Branch Subroutine) adres 1830 1833 1836 … waarde E5 00 01 78 00 16 44 betekenis MOV EBX, 100 CALL 1600 DEC EBX 1600 1602 1604 … 1698 1690 43 34 54 40 F5 MOV ADD PUSH EBP, ESP ESP, 40 EBP E5 30 POP RET EBP 13 Interrupt service routine adres 1400 1402 1403 1405 2304 2305 … 2376 2377 waarde 43 30 50 54 40 75 02 44 30 50 E9 54 40 E8 31 betekenis MOV EBX, [5030] INC EBX Interrupt vector table ADD EBX, EDX MOV [5030], EBX 0 2101 PUSHA MOV ESP, 2400 POPA IRET 1 5040 2 21F5 3 2304 4 7710 5 5868 6 … 14 I/O-communicatietechnieken Geprogrammeerde I/O Een programma gaat in een lus na: - Of er data klaar staat - Of er data geschreven kan worden Er is ‘handshaking’ tussen randapparaat en proces via een ready-bit. Deze vorm van I/O heet ook: ”polling” of “busy waiting” 15 I/O-communicatietechnieken Interruptgedreven I/O Het lopende proces wordt onderbroken De hardware zorgt dat de processor automatisch naar een interruptroutine springt om daar de I/O af te handelen. Na afhandeling gaat oorspronkelijk proces weer verder 16 I/O-communicatietechnieken Direct Memory Access - DMA De processor initialiseert de I/O-transfer De DMA-controller handelt de I/O volledig zelfstandig af DMA heeft altijd een hogere prioriteit op de bus dan de processor. 17 Device driver Set van routines met de volgende functionaliteit: – – – – – initialisatie van de hardware output data input data (her)configuratie van de hardware afhandeling van interrupts Soms gemeenschappelijk te gebruiken door middel van een Device Descriptor 18 Hoe kunnen programma’s het OS bereiken? System Calls Users and User Programs Operating System CPU & Memory I/O Devices Hardware 19 I/O management proces proces proces User mode I/O System call Kernel mode KERNEL I/O manager (HAL) Device drivers descriptors CPU, MMU, Memory, ... Devices 20 Hoofdstuk 3 Besturing van processen • • • • • • Een Proces Het Two-State Model Het Five-State Model Het Seven-State Model Besturingsstructuren in het OS Aanroepen van de kernel 21 Multiprocessor 22 Multicore SMP – Symmetric MultiProcessor 23 Wat is een proces ? • Een programma in uitvoering • De eenheid die aan een processor kan worden toebedeeld (door het operating system) • Een eenheid van activiteit dat bestaat uit – Een set van instructies (het programma) – Een toestand – Een set van resources die het proces gebruikt 24 Eisen aan het besturingssysteem • Processen creëren • Meerdere processen concurrent uitvoeren – Optimaal processorgebruik – Optimale responstijd • Bronnen toewijzen aan de processen • Communicatie tussen processen ondersteunen 25 Standaardfuncties van een kernel Proces Management • Creëren en beëindigen van processen • Inroosteren en toedelen van processen (scheduling en dispatching) • Wisselen van processen • Het synchroniseren van processen en ondersteunen communicatie tussen processen • Beheer van proces-besturingsblokken Memory Management • Toewijzen van adresruimte aan processen • Swapping • Beheren van pagina’s en segmenten I/O Management • Beheren van Buffers • Toewijzen van I/O kanalen en apparaten aan processen Support Functions • Afhandelen van Interrupts • Administratie • Monitoring 26 Proces • Wordt ook taak genoemd • Executie van een individueel programma • Kan worden weergegeven in een trace (reeks van uitgevoerde instructies) 27 Two-state process model 28 Onderbreken van Processen • De processor is sneller dan I/O daarom kunnen alle processen wachten op I/O • Haal processen die niet verder kunnen van de processor om andere processen de kans te geven. • Hiervoor is een nieuwe state nodig: De blocked state 29 Five-State Process Model Dispatch New Admit Release Ready Running Exit Time-out Event Occurs Event Wait Blocked 30 Eén geblokkeerde wachtrij Ready Queue vrijgeven Dispatch Toelaten Processor Time-out Event Wait Event Occurs Blocked Queue 31 32 Wanneer wisselt een proces? • Interrupts – Clock – het proces heeft de maximale time slice gebruikt – I/O • Page fault – het geheugenadres is niet gevonden in het virtuele geheugen, daarom moet het uit het hoofdgeheugen gehaald worden • Trap – error treedt op – het proces heeft een exit uitgevoerd • Soms ook bij aanroep van OS API – zoals open file 33 Uitswappen van Processen • Er kunnen zoveel processen bestaan dat er een gebrek aan werkgeheugen ontstaat. • Swap deze processen naar disk om meer geheugen vrij te krijgen • De state wordt suspend (uitgesteld) state wanneer het proces geswapt is naar disk • Twee nieuwe states – Blocked, suspend – Ready, suspend 34 A Seven-state Process Model Context-switch De status van een ander proces wordt teruggezet. 35 Wanneer stopt een Proces ? • Proces is klaar • Beëindigen parent • Verzoek van parent • • • • Tijdslimiet overschreden Event time-out Memory unavailable I/O failure • • • • Protection error Arithmetic error Invalid instruction Privileged instruction 36 Tabellen • Geheugen – Het toewijzen van het hoofdgeheugen aan processen – Het toewijzen van secundair geheugen aan processen – Protectie-attributen voor toegang tot gedeeld geheugen – Informatie nodig voor het besturen van virtueel geheugen • I/O – I/O device is beschikbaar of toegewezen – De status van een I/O operatie – Locatie in het hoofdgeheugen die wordt gebruikt voor de bron of bestemming van de I/O data transfer • Bestand (file handle) – – – – Alleen geopende bestanden: Plaats in op schijf Huidige pointers Huidige toestand • Proces – Proces control block 37 Process Control Block • Procesidentificatie – Unieke numerieke identifier – Dit kan de index in de primaire proces tabel zijn – User identifier – Identificatiecode parent • Procestoestand – De inhoud van de processor registers – User-visible registers – Control and status registers – Stack pointers – Program status word (PSW) • Procesbesturingsinformatie Mode-switch Toegevoegde informatie nodig voor OS proces heeft meer om privileges het operating system de dan andere processen. actieve processen te besturen en te coördineren – Scheduling en state informatie – Gegevensstructuur – Communicatie tussen processen – Procesprivileges – Geheugenbeheer – Eigendom en gebruik van bronnen – bevat status informatie – Bijvoorbeeld: de EFLAGS register op de Pentium processor 38 Uitvoering van het besturingssysteem Aparte Kernel (zoals vroeger) • Het concept proces bestaat alleen bij de gebruikerprogramma’s • De OS code wordt uitgevoerd als een aparte entiteit in de privilege mode • OS code wordt nooit uitgevoerd binnen een proces 39 Uitvoering binnen gebruikersprocessen • Vrijwel alle software van het besturingssysteem wordt in de context van het gebruikersproces uitgevoerd. • Bij het optreden van Interrupts, Traps, System calls wordt de CPU in de kernel mode gezet en wordt de OS routine uitgevoerd in de context van het gebruikersproces (mode switch) • Wordt vastgesteld dat er een proceswisseling moet plaatsvinden, dan wordt de besturing overgedragen aan de proceswisselroutine 40 Operating Systems • Theorie: – Wat doet een OS ? – Hoe doen OS-en die dingen – – – – Processen beheren Geheugenbeheer I/O Bestandssystemen • Practicum: – Stackframes – Multithreading 41 Moore’s Law • Sinds 1965 gold de volgende wetmatigheid: – Computersystemen verdubbelen hun snelheid grofweg elke 2 jaar. 42 Moore’s Law • Deze wetmatigheid heeft veel invloed gehad op de manier waarop software zich ontwikkeld heeft: – Er kwamen nieuwe high-level talen (zoals Java en C#) die performance inruilen voor gebruiksgemak en portabiliteit. – Er wordt steeds meer gebruik gemaakt van frameworks om de complexiteit van software op te vangen ten koste van overhead. – Veel software die uitkwam was te langzaam voor de hardware van dat moment. • Ook van invloed op ‘mindset’ van softwareontwikkelaars: – “Het is niet erg dat mijn software (te) langzaam is. Volgend jaar is dit (met nieuwe hardware) vanzelf verholpen.” 43 Moore’s Law is dead ? 44 Moore’s law is alive ! 45 Amdahl’s Law 46 “The free lunch is over” • De mythe dat het probleem van langzame software automatisch wordt verholpen door snellere hardware in de toekomst is voorbij. • We zullen in softwareontwikkeling ons moeten richten op het vergroten van parallelisme (multi-threading) indien we meer performance willen. Single Core [1] Multicore [2-16] GPU processing (CUDA, OpenCL) [100+] Graphics (DirectX, OpenGL) [100+] 47 Studieaanwijzing • Hoofdstuk 1: Paragraaf 1.4 Interrupts komt in week 3 aan bod • Hoofdstuk 2: In ieder geval paragraaf 2.1 t/m 2.7 • Hoofdstuk 3: In ieder geval paragrafen 3.1 t/m 3.5 48