Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [OS] Microkernel concept (https://forum.scholieren.com/showthread.php?t=1046654)

dragonstorm 18-12-2004 16:00

[OS] concept
 
FF voor alle duidelijkheid, dit is 100% een concept, een idee, ik heb hiervan nog niets geschreven, heb ook totaal geen ervaring met het schrijven van hardwarecommunicatie, dus verwacht niet van mij binnen een half jaar een werkende versie te zien..

Het concept

Ik had 'n ideetje, namelijk om 'n besturingsysteem te maken zonder kernel, maar met servers die alle functies van het OS overnemen.

Dit zou bestaan uit minimaal de volgende servers:

-hardware abstraction layer server - een server die hardware voorstelt als objecten, zodat processen hier geen kennis van hoeven te hebben. Alle directe hardwarecommunicatie gaat via deze server. Ieder modern OS heeft zo'n ding.
-memoryserver - hoewel ik niet weet of deze direct nodig is, denk ik dat het voor de elegantie wel handig is om 'n memoryserver te maken, deze communiceert met de halserver
-messageserver - dit is wel essentieel. Hiervoor heb k al een hele hoop regels uitgedacht. Het idee is een enkele server waarin ieder proces messages kan lezen en schrijven.
-timesplitter & controleserver - deze server zorgt voor preemptive multitasking, en controleert of ieder proces nog werkt. Dit kan eenvoudig door ieder proces aan t einde van 'n cyclus een message te laten achterlaten met 'ik werk nog' in de message server. Gebeurt dit niet, dan is eenvoudigweg het proces vastgelopen.

Hierin kunnen andere servers worden toegevoegd (filesystem, netwerk etc) die als 'gelijkwaardige servers' kunnen worden behandeld. Of een proces kan gewoon in userspace draaien.

Met een initial ramdisk en een startup script is dit wel te booten.


Waarom deze aanpak?

-proof of concept. Ik wil kijken of het kan werken. Ik zat aan het hele idee van een 'no-kernel' systeem te denken, en bedacht dat het met verschillende servers wellict wel zou kunnen
-het geeft mogelijkheden, en het word nog leuker wanneer iedere server met modules kan werken. Dit levert een extreem flexibel systeem op. Een gebruiker kan ieder mogelijk programma als server gebruiken, zolang deze maar fatsoenlijk communiceert met de andere servers. Bovendien is het makkelijk te updaten. Alles wat gedaan hoeft te worden is de nieuwere server opstarten, de variabelen overplaatsen, de pid overplaatsen en de oude server af te sluiten. On the fly 'kernel' vernieuwing, ik vind het wel sexy.

Graag reacties.

Fade of Light 18-12-2004 16:22

gedistribueerde servers?

phoxetis 18-12-2004 18:15

euh, hoe wou je dat spul starten?
met een opstartmodule dan zeker?
kijk, daar is je kernel ;)

edit: wel leuk idee overigens

deadlock 18-12-2004 19:48

Met de huidige hardware is een non-kernel systeem niet mogelijk, tenzij je deze in de hardware zou inbakken, voor zover ik weet.
Je moet namelijk iets hebben wat de communicatie verzorgd en de HAL kan dat niet. De HAL zorgt ervoor dat software niet direct met hardware kan communiceren.

Manuzhai 18-12-2004 19:53

Zulk soort systemen worden micro-kernels/nano-kernels genoemd. Het idee daarachter is dat je een zo simpel mogelijke kernel heeft, die, zoals jij voorstelt, allemaal servers heeft die de taken uitvoeren. Kijk bijvoorbeeld eens naar Minix, of Plan 9. Dit zijn Operating Systems die al dergelijke eigenschappen bezitten. Dat werkt misschien beter dan het opnieuw beginnen from scratch.

Een belangrijke probleem met deze aanpak blijkt wel te zijn dat communicatie tussen een server en de kernel performance-wise veel minder lekker loopt dan binnen een kernel. Daar zijn volgens mij al een paar soortgelijke initiatieven op stukgelopen.

deadlock 18-12-2004 20:04

Maar dat gaat dus niet werken. Monolithische kernels hebben hun nut bewezen. Microkernels worden naarmate het ontwikkeltraject verder komt, steeds gecompliceerder totdat het monolitische kernels worden. Ook al zijn ze dan nog steeds modulair opgebouwd.

dragonstorm 18-12-2004 21:24

goed, laat me dat idee van opstarten even wat duidelijker maken...
het idee is om een soort initial ramdisk te maken met al deze servers. Deze servers hebben elkaar nodig en moeten dus tegelijk geladen worden. Dit kan met een eenvoudig startupscriptje die aan het einde bash starts (of iets dergelijks)

Ik ben zelf ook voor 'n monolithische kernel met modules, dit is technisch de beste oplossing tussen 'n microkernel en een ouderwetse monolithische kernel.

Ik denk dat met 'n gecentraliseerde messageserver het probleem met communicatie wel kan worden opgelost.

Btw, microkernels werken wel, daar werkt windows nt nog op :), en BeOS, hoewel dat meer een hybride kernel is.

Manuzhai 19-12-2004 12:11

Windows NT is zeker geen microkernel, maar juist een monolithische kernel. Ik zat net nog te lezen in een boek van Tanenbaum (een van de grote OS-wetenschappers, heeft Minix geschreven), en hij geeft aan dat er voor een echte microkernel een performance penalty van 20% geldt. Dat is nogal wat!

deadlock 19-12-2004 13:15

Ja exact; Tanenbaum vs Thorvalds:
http://groups.google.nl/groups?hl=nl...cs.vu.nl#link1
Thorvalds is Monolithic en Tanenbaum Microkernel.

Thorvalds veegt de vloer aan met tanenbaum.
Zoals gewoonlijk (CISC & RISC Discussie, 3DNow vs MMX etc) zal een hybride vorm het beste zijn.

dragonstorm 19-12-2004 14:11

wikipedia beweert dat nt een hybride kernel is, in ieder geval - ik weet het ook niet precies

Waar microkernels wel goed voor zijn, is ontwikkeling. Als t niet werkt kun je de meeste services gewoon weer herstarten :)

deadlock 19-12-2004 14:15

Hehe. Dat klopt. Maar Linux is geen hybride kernel, volgens thorvalds een monolitische kernel. Toch kan je al je network services bijvoorbeeld opnieuw starten, remote via een terminal. Dat is vrij geniaal.
En toch zitten deze modules vrij dichtbij zo niet in de kernel.

dragonstorm 23-12-2004 14:00

http://en.wikipedia.org/wiki/Mach_kernel

intressant dit stuk, vertelt 'n hoop over het gedoe met microkernels :)

Lethalis 23-12-2004 14:20

http://www.gnu.org/software/hurd/hurd.html

Chimera 23-12-2004 14:37

Citaat:

dragonstorm schreef op 18-12-2004 @ 17:00 :
On the fly 'kernel' vernieuwing, ik vind het wel sexy.

Uhuh. Dingen als memory of hardwarestates zet je ook zo even over natuurlijk :)

dragonstorm 23-12-2004 21:35

bij een modulaire, uit servers bestaande 'kernel' kan dit, ja :)

Manuzhai 24-12-2004 09:14

Alleen vertelde RMS dat GNU/Hurd helemaal van de Mach-kernel afgaat, en overstapt op iets dat ze L4 noemen.

Lethalis 24-12-2004 09:32

Citaat:

Manuzhai schreef op 24-12-2004 @ 10:14 :
Alleen vertelde RMS dat GNU/Hurd helemaal van de Mach-kernel afgaat, en overstapt op iets dat ze L4 noemen.
Tsja, dat is al jaren bekend.

Ze gebruiken de Mach-kernel puur om snel tot een draaiend systeem te komen en een userbase te krijgen van programmeurs die helpen het systeem verder te ontwikkelen.

Verder heb ik het idee dat GNU/Hurd grotendeels vertegenwoordigt waar de TS het over heeft.

@TS:
Wordt alsjeblieft niet programmeur 1039291 die zijn eigen systeem gaat programmeren en het uiteindelijk ergens in een stoffige hoek van cyberspace laat verkomen, maar ondersteun een bestaand project. Platformen als GNU/Hurd kunnen alle hulp gebruiken.

dragonstorm 24-12-2004 12:19

@ ********: dat was ik al eigenlijk niet van plan, weet nog niet zoveel van hardware programmeren dat ik het zou kunnen doen

Maar om nog ff een punt te maken over monolithische kernels vs microkernels, als ik wikipedia moet geloven is het ongeveer zo:

-linux is monolitisch, evenals *BSD
-Win NT is hybride, dwz een microkernell met extra functies, BeOS en DragonflyBSD ook
-Darwin is microkernel, mach om precies te zijn

dus ik zou zeggen dat het debat over hoe een kernel opgebouwd moet worden nog lang niet over is :)

Lethalis 24-12-2004 12:26

Citaat:

dragonstorm schreef op 24-12-2004 @ 13:19 :
Darwin is microkernel, mach om precies te zijn
Nope.

http://www.opendarwin.org/pipermail/...il/003805.html

"Mach is not "the OS"; mach mechanisms are used in support of the BSD OS component; Darwin is a monolithic kernel."

deadlock 28-12-2004 19:13

GNU/Hurd? Dat wordt nooit wat! Tis een expirement.


Alle tijden zijn GMT +1. Het is nu 10:56.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.