Het besturingssysteem genaamd BirdOS

maarten70

Gevestigd lid
Ahhh... Het was me niet opgevallen dat we al op post 140 zaten. Naja bij deze: YAY! we hebben de 140 gehaald. :)
-------------------------------------------UPDATE------------------------------------------------------------

Ik heb me totaal niet gehouden aan de belofte dat er de 23e een update kwam, sorry daarvoor... Anyway, een update! Eindelijk, na 60 jaar wachten.

Introducing:
KMM --> Kernel Memory Manager
SATA apparaten kunnen worden gedetecteerd! (kunnen nog niet worden gelezen of geschreven)
Error 58 --> Unable to find specified PCI device (niet in staat het gespecificeerde PCI apparaat te vinden)

Bug fixes en optimalisaties:
Keyboard handler [optimalisatie]
v0.4.13.0 deed er ~2,088 seconden over om op te starten, huidige versies niet meer [bug fix]
Het verkeerde adres werd gelezen voor info over SATA apparaten, nu niet meer [bug fix]
Een data set voor het geven van commando's aan SATA apparaten was incompleet, nu niet meer [bug fix]

Huidige known issues:
KMM is in sommige gevallen niet in staat een vrije plek te vinden, terwijl deze er wel is, en geeft een error
De functie die SATA apparaten probeert te lezen en faalt, de error die gegeven wordt door het systeem bestaat niet in de functie (komt dus van 'buitenaf', zo lijkt het)
De functie die de fabrikant van de CPU zou moeten ontdekken is niet in staat deze te verkrijgen

KMM
De KMM is een nieuwe soort memory manager, deze regelt enkele memory management taken voor de kernel. Deze is in sommige gevallen succesvol, maar in andere niet en geeft in zo'n geval error 57 ("Failed allocating memory"). Deze memory manager is een extra manager die erbij komt die de kritieke data voor het systeem een plek in de RAM geeft, de oudere memory manager (nu genaamd de GMM, of Global Memory Manager) neemt enkele andere taken op zich en regelt de minder belangrijke data.

SATA apparaten gedetecteerd
Sinds versie 0.4.13.1 is het systeem in staat SATA apparaten te detecteren. Hieronder vallen onder andere HDDs/SSDs en CD-ROMs. Op de afbeelding zie je dat SATA en SATAPI apparaten gedetecteerd zijn, dit zijn respectievelijk HDDs en CD-ROMs. De afbeelding is een afbeelding van versie 0.4.13.2, maar deze versie doet hetzelfde.



Op deze afbeelding zie je ook gelijk de CPU fabrikant bug, in plaats van de fabrikant wordt S gegeven (dit is in de meeste gevallen NULL, oftewel niks). In nieuwere versies van Vireo (het systeem) wordt er maar een deel van de naam van de fabrikant weergegeven.

Error 58
Deze error ontstaat wanneer het systeem de opdracht geeft om een apparaat te zoeken, maar dit apparaat niet gevonden kan worden. Deze error heb ik te vaak gezien toen we dat probleem hadden met dat we PCI niet aan de praat konden krijgen, maar hij heeft wel geholpen (en helpt af en toe nog steeds).

Optimalisatie keyboard handler
Wanneer er op een toets gedrukt wordt op het toetsenbord gaat het systeem die afhandelen, de oude functie had 80+ regels aan code nodig om dit voor elkaar te krijgen. Het werkte ongeveer zo: ga elk karakter af, tot je weet welke het was en geef die door aan de juiste functie en doe er wat mee. Dit is heel inefficiënt omdat je eerst 26 letters, 10 cijfers en ongeveer 8 andere toetsen (dit waren de ondersteunde toetsen) moet vergelijken met de door jou ingedrukte toets. Dit deed ik eigenlijk door veel ja-nee vragen te stellen. Dus voor elke toets die je indrukte werden er in het ergste geval 44 ja-nee vragen gesteld om erachter te komen welke toets je had ingedrukt voor er ook maar iets mee gedaan werd. De nieuwe versie doet dat niet meer. Deze versie zet de code van de toets in een variabele, zo kan elke functie ermee doen wat ze willen en slaan we dus de stap met 44 ja-nee vragen over. De huidige versie ondersteund typen op het scherm niet meer, maar ondersteund bijvoorbeeld wel het wachten tot een toets is ingedrukt. Dit deed de vorige versie ook, maar dan met de 44 ja-nee vragen. Vergelijkend met hoeveel regels dit kost qua het schrijven van code, met behulp van een voorbeeld... Waar de oude versie 80+ regels nodig had voor het wachten tot je op enter hebt gedrukt, doet deze versie dat in 5 regels. Dat is stukke minder. :)

Wat?! 2,088 seconden!
In normale omstandigheden halen alle versies de 0,5 seconden (500ms) niet eens, maar bij deze versie (0.4.13.0) was dat anders. Met vijf keer testen kwam deze versie gemiddeld uit op 2,088 seconden. De kortste tijd met opstarten was 2,057 seconden, de langste was 3,021 seconden. De versie erop was alles weer normaal, wat best raar is. Het is waarschijnlijk verkeerd gegaan bij het omzetten van de menselijke leesbare code in computertaal, dit is vaker het geval geweest.

Bug verkeerde adres SATA info & incomplete data set
Deze waren best simpel, bij het verkeerde adres lezen had ik het verkeerde getal gegeven. Het systeem moet op decimaal adres 36 lezen maar ik gaf het systeem de waarde 9, wat dus het verkeerde adres was dat werd gebruikt. De incomplete data set kwam doordat ik een naam was vergeten in te tikken ergens, dit maakte het voor mij lastig om dingen te doen, maar het klopt weer.
 
Bovenaan Onderaan