Softwareopbouw van een systeem

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Icyzer
  • Registratie: Januari 2009
  • Laatst online: 05-08 16:12
Ik ben de laatste tijd voor school bezig geweest met het onderzoeken van besturingssystemen, een naar mijn idee behoorlijk interessant onderwerp. Ik liep alleen tegen het probleem aan dat ik niet wist hoe een systeem software matig in elkaar zit.

Als je daar meer over opzoekt word je meteen in het diepe gegooit met termen zoals: kernel, drivers, assembly, abstraction layers, firmware etc...

Ik denk dat ik het zelf al redelijk goed begrijp nu alleen ik wil toch graag wat zekerheid. Ik vraag het daarom ook in NOS omdat ik denk dat hier meer mensen zitten die begrijpen hoe het in elkaar zit als in het Windows client forum.

Omdat het geheel naar mijn idee met woorden een beetje lastig uit te leggen is, heb ik een plaatje gemaakt met mijn l33t paint skillz.
Afbeeldingslocatie: http://i50.tinypic.com/n4zb5d.png

Als het totaal niet klopt, flame dan niet te hard :'(, please?

Acties:
  • 0 Henk 'm!

Verwijderd

Het klopt niet helemaal, hoewel je wel een eind op weg bent. Allereerst klopt het dat je begint bij de hardware. Hierboven op heb je firmware getekend, maar eigenlijk zit dat in de hardware, dus die kun je misschien beter als extra laag weghalen. Daarboven zit de kernel. De kernel zorgt voor de communicatie tussen de hardware en de rest van de software. Alle communicatie met hardware gaat dus door de kernel heen. Hier valt ook geheugen beheer onder e.d.. Dit doet de kernel door middel van drivers die direct de hardware aansturen. Verder is het kopje besturingssysteem overbodig. De kernel hoort ook bij het besturingssysteem (je zou ook kunnen zeggen dat dit het besturingssysteem is). Normaliter rekenen we als besturingssysteem het complete plaatje. boven de kernel draait libc. Libc vertaalt calls van user programs naar kernel system calls (dit is ook direct mogelijk, maar ongebruikelijk). Verder draaien er meestal nog een aantal daemons welke dingen monitoren als hardware wat in en uitgeplugt wordt. Deze daemons halen deze informatie uit de kernel en verspreiden dit naar de rest van het systeem. Daarboven draait dan de GUI (GNOME bijvoorbeeld).

Dit is echt heel kort hoe het er ongeveer uit ziet. In werkelijkheid komt er namelijk nog veel meer bij kijken.

[ Voor 4% gewijzigd door Verwijderd op 22-01-2010 00:01 ]


Acties:
  • 0 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 00:12

The Eagle

I wear my sunglasses at night

Als ik me niet vergis wordt bij de meeste OS'en tegenwoordig een soort uienschil / lagen model gebruikt.
Ik weet niet of het boek nog verkocht wordt, maar anders moet je in de bieb van school eens kijken of je Concurrent Systems van Jean Bacon kunt vinden. Staat het redelijk goed in uitgelegd :)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


Acties:
  • 0 Henk 'm!

  • Icyzer
  • Registratie: Januari 2009
  • Laatst online: 05-08 16:12
Alvast bedankt voor het commentaar, ik zal het morgen even goed doornemen. Wat ik met het rechter gedeelte, driver naar hardware device, bedoel is bijvoorbeeld webcams, printers ed. Of gaan die net als hardware ook vanuit de kernel?

En hoe zit dat dan met die drivers? Als die vanuit de kernel komen, hoe komt het dan dat verschillende linux distro's verschillende drivers hebben? En dat windows xp en windows 7, die beide op de windows NT kernel draaien, ook verschillende drivers hebben?

En wat betreft dat het inderdaad een overzichts idee is. Dat klopt, het is meer om goed te kunnen begrijpen wat een OS precies is en hoe het globaal in elkaar zit.

Iniedergeval bedankt voor de informatie, hier kan ik zeker wat mee!

Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 16:58

Kees

Serveradmin / BOFH / DoC
Ik denk dat je het beter zo kan zien:
User -> applicatie -> kernel -> drivers -> hardware

De kernel is eigenlijk niets meer dan een standaard manier voor applicaties (bijvoorbeeld een GUI) om met de hardware te spreken. via zgn syscalls. Het OS zoals je waarschijnlijk bedoeld zijn eigenlijk ook gewoon standaard applicaties en libraries. Drivers zijn vaak modules die je aan de kernel linked, aan de ene kant begrijpen ze de kernel en aan de andere kant praten ze met de hardware (die al dan niet firmware erop heeft staan; wat eigenlijk niet meer is dan een lowlevel driver en/of configuratie).

Een OS als bijvoorbeeld linux heeft vele applicaties, bijvoorbeeld ls, of bash. Dit zijn gewoon applicaties, en die praten tegen de kernel mbv syscalls (of maken gebruik van libraries/api's; wat eigenlijk ook gewoon weer applicaties zijn, alleen standaardizeren die een aantal veel gebruikte commando's). Een syscall gaat naar de kernel, en die kernel vraagt dan aan een driver om die actie uit te voeren.

Een modern besturingssysteem is dus ook gewoon een applicatie, en drivers zitten of in een kernel ingebakken (bv een driver voor de CPU) of zijn modules (bv een driver voor een videokaart).

Dat er verschillende drivers zijn komt doordat de kernel meer mogelijkheden gekregen heeft, die de drivers al dan niet moeten ondersteunen. Vroeger was het bijvoorbeeld genoeg voor een driver om letters op een scherm weer te geven, maar tegenwoordig moeten ze ook plaatjes/textures weer kunnen geven. Of drivers hebben een betere performance gekregen, of ze gebruiken mogelijkheden van de kernel die niet meer bestaan etc.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 07-10 10:42
Je kan je beter in de literatuur verdiepen en inderdaad termel als firmware aanvaarden, want zonder die motivatie ga je nooit begrijpen hoe dingen werken. Ik heb hier een heel mooi boek (en vakje) over: Operating system concepts (ISBN: 0-471-69466-5). Daarin wordt aan de hand van voorbeelden van alles in uitgelegd. Je kan trouwens nooit uitleggen hoe een besturingssysteem werkt, aangezien elke weer anders werkt. Voorbeeld van fundamentele verschillen: monolitische kernel vs. microkernel.

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

Verwijderd

Icyzer schreef op vrijdag 22 januari 2010 @ 00:16:
En hoe zit dat dan met die drivers? Als die vanuit de kernel komen, hoe komt het dan dat verschillende linux distro's verschillende drivers hebben? En dat windows xp en windows 7, die beide op de windows NT kernel draaien, ook verschillende drivers hebben?
Omdat niet elke distro dezelfde kernel versie meelevert. Daarnaast draaien Vista en Wndows 7 niet op de NT kernel. Dat zou ook niet gewenst zijn want NT komt uit 94 oid. De kernel is gebaseerd op de NT kernel. Maar ik denk niet dat dit tegenwoordig nog niets met de oude NT kernel van doen heeft. De kernel van Windows 7 is wel weer gebaseerd op die van Vista, maar ook hier zitten weer behoorlijke verschillen in.

Acties:
  • 0 Henk 'm!

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05 20:45
Ik zou zeggen
[code]
Hardware -> Firmware (incl BIOS) -> Kernel (incl drivers) -> userspace OS -> GUI -> User applicaties -> User

Het OS is dat de Kernel + Userspace onderdelen, zoals configuratie utilities die alles initialiseren zodat hardware het netwerk enz door applicaties gebruikt kunnen worden.

Acties:
  • 0 Henk 'm!

  • Icyzer
  • Registratie: Januari 2009
  • Laatst online: 05-08 16:12
Ik heb het plaatje even opnieuw aangepast:
Afbeeldingslocatie: http://i47.tinypic.com/359n7k9.jpg
Waarbij tussen de kernel en de GUI/Applicaties nog een gedeelte tussen zit met abstractionlayers/libc/userspace.

Acties:
  • 0 Henk 'm!

  • Gleighton
  • Registratie: November 2008
  • Niet online
Die losse tak Firmware en Hardware Device kan weg, die staat immers al in de Firmware, Hardware.

Acties:
  • 0 Henk 'm!

  • Icyzer
  • Registratie: Januari 2009
  • Laatst online: 05-08 16:12
Gleighton schreef op vrijdag 22 januari 2010 @ 17:10:
Die losse tak Firmware en Hardware Device kan weg, die staat immers al in de Firmware, Hardware.
Ik had er toch nog graag die losse tak hardware devices bij omdat ik daarnaar verwijs in mijn verslag als zijnde webcams printers etc...

Acties:
  • 0 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 16:36

heuveltje

KoelkastFilosoof

Icyzer schreef op vrijdag 22 januari 2010 @ 17:16:
[...]

Ik had er toch nog graag die losse tak hardware devices bij omdat ik daarnaar verwijs in mijn verslag als zijnde webcams printers etc...
Vanuit de pc gezien is er geen verschil tussen BV je videokaart en je printer.
Allebei apparaten waarmee het moet commiceren, je zult dus ook goed moeten verantwoorden waarom je die afzonderlijk vernoemt

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • 0 Henk 'm!

  • TIGER79
  • Registratie: December 2001
  • Laatst online: 02-09 12:37
Ik zou ook die applicaties buiten het rooie vierkantje (OS) houden...
Ze maken (de applicaties) natuurlijk gebruik van het OS maar maken daar geen deel van uit...

Acties:
  • 0 Henk 'm!

  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Afbeeldingslocatie: http://upload.wikimedia.org/wikipedia/commons/6/67/OS-structure.svg

Hangt een beetje af van welk OS je probeert te beschrijven.

Hierboven hoort dan nog natuurlijk "GUI" (of shell)

[ Voor 8% gewijzigd door Rainmaker op 23-01-2010 12:46 ]

We are pentium of borg. Division is futile. You will be approximated.


Acties:
  • 0 Henk 'm!

  • Icyzer
  • Registratie: Januari 2009
  • Laatst online: 05-08 16:12
TIGER79 schreef op vrijdag 22 januari 2010 @ 17:26:
Ik zou ook die applicaties buiten het rooie vierkantje (OS) houden...
Ze maken (de applicaties) natuurlijk gebruik van het OS maar maken daar geen deel van uit...
En applicaties als msexplorer dan bijvoorbeeld, die zijn toch echt onderdeel van het besturingssysteem of niet?
Rainmaker schreef op zaterdag 23 januari 2010 @ 12:45:
[afbeelding]

Hangt een beetje af van welk OS je probeert te beschrijven.

Hierboven hoort dan nog natuurlijk "GUI" (of shell)
Bedankt, ziet er heel gedetailleerd uit.
Toch wil ik even vragen of mijn laatste overzicht, ondanks dat het zeer oppervlakkig is, juist is. Want die verslag is voor de middelbare school, niet voor een studie ofzo. Ik vind het zelf al aardig ingewikkeld om te begrijpen en het moet ook goed te begrijpen zijn voor mijn docent en medeleerlingen.

Ook wat betreft drivers, die worden door de fabrikant gemaakt. Maar zijn besturingssysteem afhankelijk toch?
Als in een driver voor windows XP werkt niet bij windows 7 of linux/mac?

[ Voor 8% gewijzigd door Icyzer op 23-01-2010 16:21 . Reden: driver vraag ]


Acties:
  • 0 Henk 'm!

Verwijderd

drivers zijn inderdaad besturingssysteem afhankelijk. Dit komt omdat ze voor een bepaalde kernel worden geschreven. De kernel van Vista en Windows 7 zijn verschillend. Zelfde geldt voor de verschillende LInux versies. Als echter de wijzigingen niks betreffen van wat de drivers nodig hebben dan kunnen drivers wel een paar kernel versies mee gaan.

Acties:
  • 0 Henk 'm!

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05 20:45
Verwijderd schreef op zaterdag 23 januari 2010 @ 20:24:
drivers zijn inderdaad besturingssysteem afhankelijk. Dit komt omdat ze voor een bepaalde kernel worden geschreven.
Niet helemaal waar: veel drivers zijn grotendeels hetzelfde. Een driver is een software bibliotheek die zorgt dat de juiste commando's naar een device worden gestuurd, en die commando's zijn alleen van de hardware afhankelijk. Alleen de de buitenkant, de interface met de kernel, is platform afhankelijk. Laat stond er op osnews.com geen heel verhaal over de closed source nvidia drivers. Als ik het met goed herinner 97% platform onafhanklijk.

Acties:
  • 0 Henk 'm!

  • Icyzer
  • Registratie: Januari 2009
  • Laatst online: 05-08 16:12
Sir Isaac schreef op zaterdag 23 januari 2010 @ 21:21:
[...]

Niet helemaal waar: veel drivers zijn grotendeels hetzelfde. Een driver is een software bibliotheek die zorgt dat de juiste commando's naar een device worden gestuurd, en die commando's zijn alleen van de hardware afhankelijk. Alleen de de buitenkant, de interface met de kernel, is platform afhankelijk. Laat stond er op osnews.com geen heel verhaal over de closed source nvidia drivers. Als ik het met goed herinner 97% platform onafhanklijk.
De gehele driver, inclusief de interface met de kernel eromheen, is dus wel kernel afhankelijk?

Acties:
  • 0 Henk 'm!

  • Airdack
  • Registratie: Juni 2001
  • Laatst online: 01-10 11:25
Ik raad je aan om het boek operating system concepts van Silberschatz,Galvin en Gagne te kopen en te lezen, dan weet je 100% zeker hoe het zit ;) Goed boek, simpel geschreven

Gamen op een laptop is best ok .... echt


Acties:
  • 0 Henk 'm!

Verwijderd

Sir Isaac schreef op zaterdag 23 januari 2010 @ 21:21:
[...]

Niet helemaal waar: veel drivers zijn grotendeels hetzelfde. Een driver is een software bibliotheek die zorgt dat de juiste commando's naar een device worden gestuurd, en die commando's zijn alleen van de hardware afhankelijk. Alleen de de buitenkant, de interface met de kernel, is platform afhankelijk. Laat stond er op osnews.com geen heel verhaal over de closed source nvidia drivers. Als ik het met goed herinner 97% platform onafhanklijk.
Uiteraard is het gedeelte naar de hardware toe afhankelijk van de hardware, de hardware weet immers niks van de bovenliggende software. Alleen verwacht de kernel dat elke driver een specifieke interface aanhoudt, anders weet de kernel niet hoe deze er tegen aan moet lullen. Doormiddel van deze interface kan er een abstractie laag omheen gebouwd worden welke een interface biedt voor de rest van de kernel en userspace. Zo zijn de systemcalls voor elke disk controller hetzelfde en wordt pas op het laatste moment de conversie naar daadwerkelijke hardware calls gemaakt.

Deze interface wil alleen nog wel eens wijzigen. Daarnaast veranderen de wensen van de kernel developers ook nog wel eens (denk aan KMS bijvoorbeeld). Verder zit je nog met specifieke platform dingen als /proc bijvoorbeeld welke dan weer niet onder Windows bestaat. De kant naar de hardware toe is altijd hetzelfde. De kant naar de kernel abstractie laag echter niet.
Pagina: 1