Oplossing Computer Architectuur vraag A2 a) bespreek de drie meest typische kenmerken van moderne besturingssystemen. b) in hoeverre beantwoorden UNIX, Linux en Windows NT hieraan? Geef hierbij de belangrijkste elementen van de detailstructuur van deze besturingssystemen. a) multitasking en multithreading multitasking processoren hebben een groot deel vd tijd niets te doen: processorgebonden perioden worden afgewisseld met I/O gebonden perioden, waarbij de CPU deze laatste periode niet voldoende benut (zelfs niet met interrupts) oplossing: multitasking/multiprocessing: bij onderbreking van een programma door een interrupt, kan de routine voor interruptafhandeling na verwerken van de interrupt de besturing onmiddellijk teruggeven aan het onderbroken programma, of aan een ander programma overdragen. de volgorde van verwerking van programma's door hun relatieve prioriteit. interleaving: processorgebonden perioden van meerdere programma's met elkaar verweven. elk individueel programma heeft de illusie als enige de systeembronnen te gebruiken (door transparantie van gedeeld gebruik van processortijd, geheugen en andere bronnen door OS) multithreading geavanceeerde vorm van multitasking en verschilt van multiprocessing multiprocessing:systeem bevat meerdere processoren, twee processoren kunnen hetzelfde tijdstip elk een proces uitvoeren. multithreading: meerdere gelijktijdige threads voor uitvoering van instructies proces heeft meerdere programmatellers: voor elke thread specifieke teller alle threads delen alle bronnen a/h proces toegewezen alle threads binnen proces zijn evenwaardig (geen ouder-kind relatie) symmetrische multiprocessing assymetrische multiprocessing: één master processor waar de kernel van het OS wordt uitgevoerd, andere processoren voor gebruikersprogramma's en hulpprogramma's. master verantwoordelijk voor scheduling. indien processor een dienst nodig heeft (bvb I/O oproep): verzoek sturen naar master, wachten tot dienst uitgevoerd is: master vormt bottleneck voor het systeem. vereist weinig aanpassingen aan het OS. symmetrische multiprocessing: kernel uitgevoerd op elke processor. ofwel kernel opgebouwd als meerdere processoren, waardoor gedeelten van kernel parallel kunnen worden uitgevoerd door verschillende processoren. ofwel voert elke processor volledige kopie van OS uit. in beide gevallen kan scheduling van taken op elke processor worden uitgevoerd. hogere eisen aan OS: communicatie tussen processoren en synchroniseren van aanspraken op bronnen. ruime mogelijkheden op het gebied van beschikbaarheid en uitbreidingsmogelijkheden. performantie stijgt niet lineair met aantal processoren:niet altijd genoeg programma's die effectief van processor gebruik kunnen maken. modulair ontwerp OS software moet regelmatig aangepast worden voor verbetering van fouten, invoeren van diensten of compatibiliteit met nieuwe hardware: noodzaak voor modulair ontwerp. verschillende manieren voor verdeling in modules hiërarchisch gescheiden lagen: interactie hardware op onderste niveau ; gebruikersinterface op hoogste niveau elk niveau verzorgt diensten voor het volgende niveau en verbergt implementatiedetails theoretisch model voor hiërarchisch OS in 13 niveaus (cfr OSI 7 model) volledige kernel blijft draaien in kernelmodus waardoor elke laag rechtstreeks toegang heeft tot hardware. Strikte volgorde bij lagenmodel onmogelijk. correcte oplossing waarbij interactie tussen twee niveaus door elke tussenliggende laag wordt doorgegeven: niet efficiënt. in OS geen concrete implementaties van dit gelaagd model. wel toegepast op schaal in bepaalde deelmodules, oa. I/O subsystemen microkernelarchitectuur: client/server model: enkele essentiële functies vh OS worden toegewezen aan kernel. kernel wordt klein gehouden; andere diensten worden verzorgd door processen (~servers) die in gebruikersmodus worden uitgevoerd. serverprocessen hebben geen rechtstreekse toegang tot de hardware. Ze werken onderling samen adhv doorgeven van berichten via kernel. microkernel maakt modulaire ontwikkeling van kernel en servers wel mogelijk. nieuwe servers en meerdere servers in hetzelfde functionele gebied kunnen toegevoegd worden ; bestaande servers kunnen weggelaten worden (gereduceerde implementaties zoals Windows XP embedded) alle hardware afhankelijkheid zit in microkernel. geschikt voor gedistribueerde systemen: cluster van afzonderlijke computers: processen op verschillende computers sturen onderling berichten zonder te weten op welke machine deze draaien. nadeel: weinig performant door belasting van berichtenuitwisseling. huidig systeem: hoofdmodule (kernel) zorgt voor basisdiensten ; deelmodules geladen indien functionaliteit ervan noodzakelijk is. Deze modules hebben afgeschermde interfaces, en kunnen zelf nieuwe modules oproepen. Er is ook communicatie mogelijk tussen hoofdmodule en deelmodules. b) Windows NT volgens microkernelarchitectuur NT bestaat uit een microkernel en een aantal modules Elke systeemfunctie wordt door slechts één component beheerd met een gestandaardiseerde interface elke module kan onafhankelijk van de anderen worden vervangen aantal modules worden in kernelmodus uitgevoerd (performantie: snellere toegang hardware): Executive (gelaagde structuur) Hardware Abstraction Layer: vertaling van algemene opdrachten naar instructies, geheugenmapping, configuratie bussen, afhandeling DMA microkernel: scheduling, synchronisatie processen, traps en interrupts, herstel na stroomonderbreking executieve diensten: NT modules in kernelmodus, geïmplementeerd door systeemthreads I/O manager (I/O verzoeken) Cache manager (schrijfcache beheren) Security Reference Monitor (toegangcontrole) Object Manager (objectbeheer) Proces Manager (proces/threadobjectenbeheer) Virtual Memory Manager (vertaling virtuele->fysieke geheugenadressen) modules in gebruikersmodus: omgevingssubsystemen en afschermingssubsystemen aparte adresruimte controle identiteit generatie toegangstokens versleuteling gegevens beveilingsbeleid (Local Security Authority Subsystem) zorgt voor interactie gebruiker dmv API elk programma: 1 omgevingssubsysteem (indien niet actief: dynamisch opgestart) POSIX subsysteem: UNIX compatibele software compileren en uitvoeren uitgevoerd als proces (Local Procedure Call: aanvraag (bericht) van client via Executive naar juiste server en van die server via Executive terug naar client). LPC beschikbaar via DLL's. objectgeörienteerde principes zonder uitsluitend objectgeörienteerde methoden te gebruiken grotendeels geïmplementeerd in C/Assembler objecten krijgen een naam (padnaam in dezelfde abstracte naamruimte met 1 enkele root) in gebruikersruimte: toegang tot object indirect via gebruikersfuncties en een objecthandle (beheerd door Object Manager van Executive) objecten gebruikt voor gegevensstructuren binnen Executive (voor toegang in gebruikersruimte) toegang tot gegevens die gedeeld of beveiligd zijn (via Security Descriptors) kernelobjecten/dispatchterobjecten (semaforen, processen, threads) bestanden, geheugensegmenten, I/O poorten berichtenuitwisseling LPC mechanisme UNIX bestaat uit twee interfaces: kernel (isoleert hardware van gebruiker en toepassingen) gebruikersdiensten (shell, interfacesoftware, componenten C compiler) kernel van oudere UNIX versies is weinig modulair opgebouwd (niets voorzien om gegevensstructuren te beschermen tegen gelijktijdige toegang door meerdere processoren) bestaat ook uit twee subsystemen: procesbeheer: geheugenbeheer, scheduling en communicatie tussen processen bestandbeheer en I/O: lagere niveaus binnen dit subsysteem bevat machineafhankelijke code: routines voor interruptafhandeling en apparaatstuurprogramma's ontwikkeld in C -> vrij eenvoudig om UNIX naar nieuwe hardware over te brengen. Linux modulaire architectuur (kleine kern, aangevuld met andere modules): elke module kan onafhankelijk van elkaar worden geïmplementeerd, op voorwaarde dat externe interfaces van de routines ongewijzigd blijven. hoofddoel: zoveel mogelijk functionaliteit met beperkte bronnen. voldoen aan POSIX compatibiliteit algemeen ontwerp van de kernel lijkt sterk op traditionele vorm UNIX: monolithische kernel modulaire benadering via Loadable Kernel Modules (stuurprogramma's, netwerkprotocol, bestandssysteem): dynamisch linken en verwijderen aan actieve kernel draaien in kernelmodus en dus volledige toegang tot hardware