PDF download Pdf downloaden PDF download Pdf downloaden

Besturingssystemen maken het voor mensen mogelijk om te communiceren met de hardware van een computer; ze bestaan uit honderdduizenden regels code. Meestal worden ze gemaakt met C#, C, C++ en assembler programmeertalen. Besturingssystemen bieden je de mogelijkheid om te navigeren op een computer, gegevensopslag mogelijk te maken en opdrachten uit te laten voeren. Denk niet dat het gemakkelijk is om een besturingssysteem te maken. Het vereist veel kennis.

  1. Assembly is van essentieel belang en een andere, aanvullende hoge programmeertaal zoals C, wordt sterk aanbevolen.
  2. Dit kan een CD-station, DVD-station, flashdrive, vaste schijf, diskette of een andere PC zijn.
  3. In Windows, bijvoorbeeld, is een eenvoudig te gebruiken GUI en sterke beveiliging de kerngedachte.
  4. IA-32, ARM en x86_64 zijn de meest voorkomende architecturen voor personal computers, dus zijn die je beste gok.
  5. Beslis of je het allemaal zelf vanaf de grond wilt opbouwen, of dat er een bestaande kernel is waar je op voort wilt borduren. Linux From Scratch is een voorbeeld van een project voor degenen die hun eigen Linux distro willen bouwen.
  6. Aangezien codering van je eigen bootloader uitgebreide kennis van de hardware en het BIOS vereist, kan dit de planning voor de programmering van de daadwerkelijke kernel vertragen.
  7. Hoewel het mogelijk is om een besturingssysteem in een taal zoals Pascal of BASIC te maken, ben je beter af met C of Assembly. Assembly is absoluut noodzakelijk, omdat dit voor sommige vitale onderdelen van een besturingssysteem wordt vereist. C++ aan de andere kant, bevat taalelementen die een ander volwaardig OS vereisen om uit te kunnen voeren.
    • Om een besturingssysteem vanuit C of C++ code te kunnen compileren heb je uiteraard de een of andere compiler nodig. Je moet daarom de gebruikersgids/handleidingen/documentatie voor je gekozen C/C++ compiler lezen, of die nu bij de software is geleverd of beschikbaar is op de website van de distributeur. Je zult veel ingewikkelde dingen over je compiler moeten weten en, voor het ontwikkelen in C++, zal je kennis moeten hebben van het mangling-schema van de compiler en de ABI. Je zult de verschillende uitvoerbare formaten (ELF, PE, COFF, gewone binary, enz.), moeten begrijpen evenals het feit dat de Windows-eigen indeling, PE (.exe), auteursrechtelijk is beschermd.
  8. Een goede API om te kiezen is POSIX, aangezien goed is gedocumenteerd. Alle Unix-systemen hebben op zijn minst gedeeltelijke ondersteuning voor POSIX, dus het zou triviaal zijn om Unix-programma's naar je OS te porteren.
  9. Er zijn monolithische kernels en microkernels. Monolithische kernels voeren alle diensten uit in de kernel, terwijl microkernels een kleine kernel combineren met een gecombineerd met gebruikers-daemons die services implementeren. In het algemeen zijn monolithische kernels sneller, maar microkernels hebben een betere foutisolatie en betrouwbaarheid.
  10. Op die manier is er minder tijd nodig om meer problemen op te lossen, wat sneller een beter OS kan produceren.
  11. Vergeet niet dat het wissen van je schijf alle gegevens onherroepelijk verwijdert! Gebruik GRUB- of een andere bootmanager voor het instellen van een dual-boot met een ander besturingssysteem, totdat je eigen systeem volledig functioneel is.
  12. Begin met kleine dingen zoals het weergeven van tekst en interrupts alvorens verder te gaan met de grotere opgaven, zoals geheugenbeheer en multitasking. Zorg ook dat je een 32-bits en 64-bits versie maakt.
  13. Dit biedt een zekere mate van bescherming in het geval er iets vreselijk mis gaat met de huidige versie van je besturingssysteem of de ontwikkeling ervan. Als je computer crasht en niet meer in staat is om op te starten, dan is het een uitstekend idee om een tweede exemplaar te hebben om mee te werken, zodat je fouten op kunt sporen.
  14. In plaats van je computer telkens wanneer je wijzigingen aanbrengt opnieuw te moeten opstarten, of bestanden moet overdragen van je ontwikkelcomputer naar je testmachine, kun je een virtuele machine gebruiken om je OS te laten draaien onder je huidige OS. Een aantal VM-programma's zijn VMWare (heeft ook vrij beschikbare serversoftware), het open-source alternatief Bochs, Microsoft Virtual PC (niet compatibel met Linux) en Oracle VirtualBox.
  15. Hierdoor zullen gebruikers je kunnen wijzen op potentiële problemen met je besturingssysteem.
  16. Een besturingssysteem kan ook gebruiksvriendelijk zijn, dus zorg ervoor om gebruikersvriendelijke functies toe te voegen, waardoor deze een integraal onderdeel van je ontwerp worden.
    Advertentie

Tips

  • Controleer op mogelijke deadlocks en andere fouten. Fouten, deadlocks en andere problemen zullen zich voor gaan doen in je besturingssysteem-project.
  • Zorg dat je beveiligingsvoorzieningen implementeert als je hoogste prioriteit, als je ooit wilt dat je systeem levensvatbaar is.
  • Met websites zoals OSDev en OSDever kun je je eigen besturingssysteem te ontwikkelen. Let op: voor de meeste doeleinden heeft de OSDev.org gemeenschap liever dat je voor vragen hun wiki consulteert, en niet deelneemt aan het forum. Als je besluit om lid te worden van het forum, dan zijn er vereisten: je bent verplicht om grondige kennis te hebben van C of C++ en x86 assembler. Je moet ook algemene en complexe programmeringsconcepten begrijpen, zoals gekoppelde lijsten, wachtrijen, enz. De OSDev Gemeenschap stelt in haar reglement uitdrukkelijk dat de Gemeenschap niet bedoeld is voor het babysitten van nieuwe programmeurs.
  • ' Word geen lid van de OSDev.org forums om meteen daarna voor de hand liggende vragen te gaan stellen. Dit zal simpelweg resulteren in antwoorden als ""lees de handleiding/read the manual" . Lees Wikipedia en de handleidingen voor de verschillende tools die je wilt gebruiken.
  • Als je probeert om een besturingssysteem te ontwikkelen, dan spreekt het voor zich dat er van je verwacht wordt dat je een programmeer'god' bent .
  • Je moet ook de processorhandleidingen voor de processorarchitectuur die je hebt gekozen hebben gelezen; of dit nu x86 (Intel), ARM, MIPS, PPC, etc. is. De handleidingen voor de architectuur van een processor kun je gemakkelijk vinden met behulp van een Google-zoekopdracht ("Intel manuals", "ARM manuals" etc.).
  • Nadat al het ontwikkelen is afgerond kun je beslissen of je de code wilt vrijgeven als open source, of in eigendom.
  • Begin niet met een besturingssysteem-project om te leren programmeren. Als je nog geen grondige kennis hebt van C, C++, Pascal of een andere geschikte taal, met inbegrip van pointer manipulation, low-level bit manipulation, bit shifting, inline assembly language, etc., dan ben je echt nog niet klaar voor de ontwikkeling van een eigen besturingssysteem.
  • Het kan verstandig zijn om een volledig nieuwe partitie te maken voor de 'ontwikkeling' van het OS.

Het besturingssysteem dat je maakt behoort dan namelijk wel toe aan het bedrijf dat die de service al eerste heeft gestart (ook al heb je wel het recht op vrije distributie, en het naar wens wijzigen en uitvoeren ervan onder de GPL).

Advertentie

Waarschuwingen

  • Je zult niet binnen twee weken een volledig besturingssysteem hebben gecreëerd. Begin met een OS dat kan opstarten, en ga dan verder met de leuke dingen.
  • Als je zoiets onverstandigs doet als willekeurige bytes schrijven naar willekeurige I/O poorten, dan zal je OS crashen en kun je (in theorie) je hardware beschadigen.
  • Verwacht niet dat het gemakkelijk is om een goed werkend besturingssysteem te bouwen. Er zijn allerlei ingewikkelde onderlinge afhankelijkheden. Bijvoorbeeld, om een besturingssysteem om te laten gaan met meerdere processors zal je 'vergrendelingsmechanismen' voor het geheugenbeheer moeten gebruiken om te voorkomen dat meerdere processoren een en dezelfde bron/resource op hetzelfde moment gebruiken. De "sloten" die hiervoor worden gebruikt vereisen de aanwezigheid van een scheduler/planner om ervoor te zorgen dat slechts één processor op een bepaald moment toegang heeft tot een kritieke resource, waarbij alle anderen moeten wachten. Maar de scheduler is weer afhankelijk van de aanwezigheid van een Memory Manager. Dit is een geval van een vastgelopen (deadlock) afhankelijkheid. Er is geen standaardmanier om problemen zoals dit op te lossen; elke programmeur van een besturingssysteem wordt verwacht bekwaam genoeg te zijn om een eigen manier te vinden om hiermee om te gaan.
  • Onzorgvuldig schrijven van je besturingssysteem naar de vaste schijf kan deze volledig beschadigen. Wees voorzichtig.
Advertentie

Benodigdheden

  • Een computer
  • Een CPU voor de architectuur die je zal ontwikkelen
  • Voldoende geheugen (RAM) voor een virtuele machine
  • Een 'host'-OS (gebruikt om de Assembler (en anderen) broncode te ontwikkelen, evenals het bouwen en inpakken ervan terwijl het nog in een vroeg stadium verkeert, uiteindelijk kan je OS de host zijn voor zichzelf)
  • Een programmeereditor met kleurencodes (gebruik dit als je niet beschikt over een IDE - Integrated Development Environment)
  • Een compiler
  • Een CD/DVD-station

Bronnen

  1. Handleiding: Linux From Scratch
  2. Bootloader: GRUB
  3. Virtual machine applicaties: Bochs , VM Ware , XM Virtual Box .
  4. Processorhandleidingen: Intel manuals
  5. Websites over OS-ontwikkeling: OSDev , OSDever

Over dit artikel

Deze pagina is 5.353 keer bekeken.

Was dit artikel nuttig?

Advertentie