• De community van 'PiepComp Support - dat andere PC-Helpforum' staat voor u klaar, om hulp bij computerproblemen te geven,
    zoals traagheid, malware, BlueScreensOfDeath, netwerkproblemen, crashes, updateproblemen en nog veel meer!

Discussie Vireo II

m44rtn

Gevestigd lid
Lid geworden
16 jan 2018
Berichten
450
Waarderingsscore
91
Punten
28
Leeftijd
17
Website
github.com
Zoals aangegeven in het voorgaande topic Vireo kernel, wilde ik beginnen aan een nieuwe, verbeterde Vireo kernel. Hier wil ik graag in dit nieuwe topic dieper op in gaan. Verder wil ik ook graag vragen beantwoorden, en naar feedback luisteren. Voor feedback hoef je niks te weten over programmeren en alle feedback is welkom: kwaliteit van de documentatie bij Vireo, de doelen van Vireo, wat jullie zelf graag zouden willen zien, etc. Zelfs feedback over de updates op dit forum mag je hier kwijt.

De Vireo kernel bestaat sinds deze maand uit twee smaken: de oude Vireo I en de nieuwe Vireo II. Ik wil in deze post weer even kort herhalen wat er nou aan de hand was met Vireo I en daarnaast ook nog wat extra informatie geven over waar je het nu kan vinden en wat ermee gaat gebeuren. De rest van deze post ga ik besteden aan Vireo II en hoe ik daar verder mee wil gaan.

Vireo I: in het kort
De eerste kernel, Vireo I, bestaat sinds 2015. Ik heb met die kernel leren programmeren, wat betekent dat er veel problemen mee zijn. Als je net begint met houtbewerken zal je eerste bijzet tafeltje ook niet de mooiste zijn. Dit principe zie je terug in Vireo I.

Een aantal problemen met Vireo I was dat er niet van tevoren gepland werd wat ik nou van de kernel wilde, of hoe het ging werken. Ik had ook geen documentatie geschreven voor mijn code, wat soms betekende dat ik niet meer goed wist hoe het werkte of wat het verwachte. Door al deze dingen was ik meer bezig met onderhoud van de kernel dan nieuwe dingen schrijven, en het is ook gewoon niet fijn om in een rommelige kernel te werken en dat je soms niet eens meer weet wat je zelf gemaakt hebt.

Vireo I: Hoe nu verder?
Vireo I is niet meer ondersteund en er zal niet meer actief aan gewerkt worden. De code en binaries zijn nog wel verkrijgbaar op GitHub, alleen ergens anders (master branch op GitHub is niet meer de default branch). Dit betekent verder niet zoveel. Zelf zou je het kunnen downloaden en aanpassen, kunnen verbeteren of er iets nieuws mee maken. Je kan het ook een keer uitproberen in een virtuele machine, ook al zal het niet zo heel erg interessant zijn.

Vireo I kon al best veel, alleen was er niet iets voor gebruikers zodat ze het konden gebruiken.

Vireo II: Wat is het?
Vireo II is een verbeterde versie van Vireo I, die zal bestaan uit (op)nieuw gechreven code en ge-re- of ge-upcyclede code. Er zijn ook wat verbeteringen op de achtergrond die het voor mij makkelijker maken om het te maken.

Vireo II: Status update
Vireo II kan ook gevonden worden op GitHub: https://github.com/m44rtn/vireo-kernel. Er is voor Vireo II documentatie: de vireo_kernel_refman.html (Engels), de refman tot nu toe kan je vinden op GitHub. In de bijlage kan je ook de refman vinden tot nu toe. De kernel kan weer simpele text mode dingen op het scherm doen, met een resolutie van 80x25x2. Die resolutie is standaard en wordt geinitialiseerd door de BIOS. Met text mode kan je alleen maar tekst laten zien. Afbeelding:



Vireo II stopt ook met de versie nummers die Vireo I gebruikte (zoals de release.major.minor.build en major.minor.build nummers). In plaats daarvan zal er alleen een build nummer zijn bij Vireo II.


Vireo II: Hoe nu verder?

Ik ga me bezig houden met alles wat in Vireo I zat weer in Vireo II te proppen. Ik kan me voorstellen dat dit saai is, aangezien jullie het al een keer gezien hebben. Daarom zal ik gedurende die tijd minder updates plaatsen, en misschien af en toe een keertje een progress report. Wanneer alles er weer in zit, ga ik kijken hoe ik de updates verder ga brengen (of dat weer eens per maand is, op de 23ste, of op een andere manier zoals met elke nieuwe interessante toevoeging). Misschien hebben jullie hier ideeen over?


Als er vragen zijn beantwoord ik ze graag, als er feedback is hoor ik het graag. Dit topic heeft niet voor niets de discussie prefix. ;)
 

Bijlagen

m44rtn

Gevestigd lid
Lid geworden
16 jan 2018
Berichten
450
Waarderingsscore
91
Punten
28
Leeftijd
17
Website
github.com
Bij Vireo II gaat alles velen malen sneller, ik kan nu met memory management aan de gang terwijl het in Vireo I iets van 2 a 3 jaar duurde totdat ik daarmee aan de gang kon.

Ik denk dat dit komt omdat ik toen nog niet zo goed kon programmeren, maar ook niet goed wist wat ik deed. Ik denk ook dat het helpt dat Vireo II iets meer geplant wordt. Maar met Vireo I had ik ook mijn tijd verknalt met een shell proberen te maken. Hier een screenshot van de huidige kernel:






















En hier van de 'done' lijst in Trello:
 

Roxmarie

Bekend gezicht
Lid geworden
28 mei 2019
Berichten
727
Waarderingsscore
276
Punten
63
Gaat me een beetje boven mijn pet, maar ik vind het knap dat je dit kunt, en ik wens je heel veel succes.
 

Abraham54

Administrator
Lid geworden
2 aug 2016
Berichten
13.136
Waarderingsscore
1.868
Punten
113
Leeftijd
65
Hoi Maarten, fijn dat je weer een stuk verder bent.
Maar ik schat dat er in de toekomst een Vireo III komt, die misschien ook 64 bit is.
 

m44rtn

Gevestigd lid
Lid geworden
16 jan 2018
Berichten
450
Waarderingsscore
91
Punten
28
Leeftijd
17
Website
github.com
de helft van memory allocation is klaar, malloc werkt (ofwel geheugen toeschrijven). maar ik moet nog beginnen aan demalloc.

Dus dat betekent bijna PCI, en dat betekent bijna harddrives dus... 'bijna'
Kan nog wel even duren, maar goed.
 

m44rtn

Gevestigd lid
Lid geworden
16 jan 2018
Berichten
450
Waarderingsscore
91
Punten
28
Leeftijd
17
Website
github.com
Demalloc werkt inmiddels. Ik ben ook begonnen aan paging, wat ik in de vorige kernel niet aan de praat kon krijgen. Nu werkt het wel. Het is nog niet klaar, maar de basis is er.

Paging zorgt voor veiligheid en dat je makkelijker meer RAM kan gebruiken doordat je bijvoorbeeld delen uit het RAM naar de hardeschijf kan schrijven en dus ruimte kan maken voor andere dingen zonder dat je het kwijt bent.

Vireo II wordt beter dan Vireo I ooit geweest is. :)

 

Abraham54

Administrator
Lid geworden
2 aug 2016
Berichten
13.136
Waarderingsscore
1.868
Punten
113
Leeftijd
65
Mooi zo, weer meer ervaring opgedaan.
Dat gaat nog wat worden met jou.
 

m44rtn

Gevestigd lid
Lid geworden
16 jan 2018
Berichten
450
Waarderingsscore
91
Punten
28
Leeftijd
17
Website
github.com
Niet te enthousiast worden, nou he.
 

m44rtn

Gevestigd lid
Lid geworden
16 jan 2018
Berichten
450
Waarderingsscore
91
Punten
28
Leeftijd
17
Website
github.com
Okay, paging is nu echt zo'n beetje klaar (behalve een aantal kleinere dingen die voor later zijn). Hier is kort uitgelegd wat paging is... (Voor context, waar ik over praat in dit bericht is memory (RAM) en niet je hardeschijf.)

Kort gezegd, paging is een systeem dat ervoor zorgt dat een programma (of proces) alleen een bepaald 'hokje' van 4096 bytes kan zien en daarbinnen dingen kan doen. Bij Vireo I kon ik paging niet aan de praat krijgen. Vireo I was daardoor veel minder veilig omdat elk proces (afgezien van het feit dat er nog geen echte processen op konden draaien) overal bij kon en alles kon overschrijven. Bij Vireo II kan dit niet meer, omdat paging ervoor zorgt dat een proces alleen binnen zijn eigen vakje kan schrijven. Maar het maakt ook een aantal andere dingen net iets makkelijker.

Paging bestaat uit een page directory van 1024 entries (elk 4 bytes). Elke entry binnen die page directory wijst naar een page table die ook 1024 entries heeft. Elke entry binnen een page table wijst naar een fysiek adres dat bij een bepaald virtueel adres hoort. Als je alle entries gebruikt kan je 4 GiB aan geheugen pagen, het volledige verhaal (de page directory en alle 1024 page tables) kost je dan zo'n 4 MiB als je niet oplet (4 * 1024 * 1024 bytes). Maar niet elk systeem heeft 4 GiB RAM, dus het liefst heb je dat je alleen ruimte bewaart voor zoveel page tables als je daadwerkelijk nodig hebt. En ra ra wat de Vireo II doet...

De kernel bepaald eerst hoeveel page tables er nodig zijn en reserveerd ruimte voor ze. en voila.

Op een systeem met 12 MB kost deze techniek je 16 KiB, in plaats van de 4 MiB die het anders had opgenomen. Dat bespaart je dus (grofweg gerekend) zo'n 3,9 MB. Dat is bijna 1/3 van je gehele geheugen dat je bespaart!
 
Bovenaan Onderaan