Een computerbesturingssysteem maken: 13 stappen (met afbeeldingen)

Inhoudsopgave:

Een computerbesturingssysteem maken: 13 stappen (met afbeeldingen)
Een computerbesturingssysteem maken: 13 stappen (met afbeeldingen)

Video: Een computerbesturingssysteem maken: 13 stappen (met afbeeldingen)

Video: Een computerbesturingssysteem maken: 13 stappen (met afbeeldingen)
Video: How to Install Ubuntu - Step by Step Tutorial 2024, April
Anonim

Deze wikiHow leert je hoe je een besturingssysteem kunt plannen en ontwikkelen als je niet weet hoe je moet coderen in C of C++. Besturingssystemen beheren computerhardware en bieden de middelen die applicaties nodig hebben om te draaien. Het helemaal opnieuw schrijven van een besturingssysteem vereist een sterke beheersing van informatica, een programmeertaal zoals C of C++, assemblage en codebeheer.

Stappen

Deel 1 van 2: De basis leren

Maak een computerbesturingssysteem Stap 1
Maak een computerbesturingssysteem Stap 1

Stap 1. Volg enkele basiscursussen informatica

In tegenstelling tot het ontwikkelen voor het web, vereist het maken van een besturingssysteem een goed begrip van algoritmen, gegevensstructuren, computerhardware en resourcebeheer. Mensen halen hier diploma's in, dus verwacht niet dat je een heel besturingssysteem gaat schrijven na het lezen van een online tutorial! Harvard's Intro to Computer Science-cursus is gratis online beschikbaar via EDX.

Maak een computerbesturingssysteem Stap 2
Maak een computerbesturingssysteem Stap 2

Stap 2. Leer een programmeertaal op hoog niveau zoals Python

Als je eenmaal een solide basiskennis van informatica hebt, is de volgende stap om C en/of C++ onder de knie te krijgen. Net als leren over informatica, is het beheersen van een taal niet optioneel - je kunt geen besturingssysteem coderen als je geen solide applicaties kunt schrijven.

Als je helemaal nieuw bent bij C, bekijk dan Dartmouth's C Programming: Getting Started-cursus, die gratis is via EDX. Als je die cursus hebt afgerond, kun je de volgende cursus in de reeks volgen: C Programmeren: Language Foundations. Ga dan verder met vervolgcursussen zoals modulair programmeren en geheugenbeheer en aanwijzers en geheugenbeheer

Maak een computerbesturingssysteem Stap 4
Maak een computerbesturingssysteem Stap 4

Stap 3. Leer een assembler

Assemblertalen zijn talen op een laag niveau die zijn ontworpen om met verschillende processors te communiceren. Aangezien assemblage voor verschillende soorten processors verschilt (bijv. x86-assemblagetaal voor Intel, AMD, VIA en andere processors), moet u de versie leren voor het type processor waarvoor u codeert.

  • Dit open-sourceboek, als je het in zijn geheel leest, kan je voldoende inzicht geven in het bouwen van een besturingssysteem.
  • The Art of Assembly Language is een zeer aan te bevelen boek over montage dat zowel on- als offline beschikbaar is.
  • Je moet ook veel onderzoek doen naar het type processor(s) waarop je besturingssysteem moet draaien. De handleidingen voor de processorarchitectuur zijn gemakkelijk te vinden met behulp van een Google-zoekopdracht ("Intel-handleidingen, " "ARM-handleidingen", enz.).
Maak een computerbesturingssysteem Stap 5
Maak een computerbesturingssysteem Stap 5

Stap 4. Voltooi een zelfstudie over het besturingssysteem

OS-tutorials leiden u door het proces van het maken van een basisbesturingssysteem. Dit laat je wennen aan het proces en helpt je erachter te komen of er onderdelen zijn die je mist. Als je eenmaal een paar tutorials hebt voltooid, ben je goed op weg om je eigen besturingssysteem te maken.

  • Bare Bones is een tutorial die je helpt bij het schrijven van je eerste simpele 32-bit kernel. Na het voltooien van de tutorial, is de volgende stap om Meaty Skeleton te gebruiken om je eigen besturingssysteem te structureren.
  • Linux from Scratch is een online boek dat je helpt bij het maken van je eigen Linux-besturingssysteem.
  • Besturingssystemen van 0 tot 1 is een gratis boek over het maken van verschillende besturingssystemen van begin tot eind.
Maak een computerbesturingssysteem Stap 3
Maak een computerbesturingssysteem Stap 3

Stap 5. Bepaal de doelen van uw besturingssysteem

Wat wil je dat je besturingssysteem doet? Hoe moet het eruit zien? Moet je echt een heel besturingssysteem schrijven of wil je gewoon een bepaalde look voor je desktop creëren? Dit zijn allemaal dingen om te overwegen voordat u begint te coderen.

  • Overweeg om samen met een team van andere programmeurs te ontwikkelen. Het hebben van een team van ontwikkelaars die aan het project werken, zal de ontwikkeltijd aanzienlijk verkorten.
  • Voeg uw projectdoelen, plannen en vragen toe aan uw openbare repository, zodat anderen u gemakkelijk kunnen helpen.

Deel 2 van 2: Uw besturingssysteem bouwen

Veel computerplezier Stap 16
Veel computerplezier Stap 16

Stap 1. Kies een ontwikkelomgeving

Dit is het platform dat u gaat gebruiken om uw nieuwe besturingssysteem te coderen. Het is een kwestie van persoonlijke voorkeur, maar de meeste mensen gebruiken Windows of een soort UNIX. Als u Windows gebruikt, is het een goed idee om een UNIX-omgeving zoals Cygwin of MinGW te installeren. Over het algemeen wilt u ervoor zorgen dat de omgeving die u gebruikt, het volgende bevat:

  • GCC (de Gnu-compiler). Als u Windows gebruikt, kunt u het installeren in Cygwin of MinGW.
  • Binutils is een verzameling tools die worden gebruikt voor het manipuleren van objectbestanden. Nogmaals, als je Windows gebruikt, kun je het in Cygwin installeren.
  • Een goede tekstverwerker. Vim en emacs worden vaak gebruikt in UNIX-omgevingen. Windows-gebruikers kunnen Kladblok gebruiken of Notepad++ bekijken voor een upgrade met meerdere tabbladen.
  • Perl en/of Python. Een of beide worden aanbevolen voor het manipuleren van strings.
Een computerbesturingssysteem maken Stap 13
Een computerbesturingssysteem maken Stap 13

Stap 2. Stel uw versiebeheersysteem in

Het schrijven van een besturingssysteem betekent dat je waarschijnlijk honderden (of duizenden!) regels code gaat maken. Wanneer u aan revisies werkt, kan dit verwarrend zijn. Sommige opties om uit te checken zijn CVS, Mercurial en Subversion.

Maak een computerbesturingssysteem Stap 6
Maak een computerbesturingssysteem Stap 6

Stap 3. Kies een bootloader

Als je er geen wilt maken, kun je een bestaande gebruiken zoals Grand Unified Bootloader (GRUB). Als je de moed hebt om een bootloader te coderen, bekijk dan Rolling Your Own Bootloader op OSDev.org.

Een computerbesturingssysteem maken Stap 9
Een computerbesturingssysteem maken Stap 9

Stap 4. Kies een kernelontwerp

De kernel is de kern van uw besturingssysteem en biedt een interface tussen de gebruiker en de computerhardware. Er zijn monolithische pitten en micro-kernen. Monolithische kernels implementeren alle services in de kernel, terwijl microkernels een kleine kernel hebben in combinatie met gebruikersdaemons die services implementeren. Over het algemeen zijn monolithische kernels sneller, maar microkernels hebben een betere foutisolatie en betrouwbaarheid.

Een computerbesturingssysteem maken Stap 12
Een computerbesturingssysteem maken Stap 12

Stap 5. Begin klein

Begin met kleine dingen, zoals het weergeven van tekst en interrupts, voordat u verder gaat met zaken als geheugenbeheer en multitasking. Je kunt ook proberen een eenvoudig 16-bits besturingssysteem te maken, in plaats van een grote sprong te maken.

Je hebt niet binnen twee weken een vol systeem. Begin met een besturingssysteem dat opstart en ga dan verder met de coole dingen

Een computerbesturingssysteem maken Stap 14
Een computerbesturingssysteem maken Stap 14

Stap 6. Test uw nieuwe besturingssysteem met een virtuele machine

Gebruik een toepassing voor virtuele machines in plaats van elke keer dat u wijzigingen aanbrengt of de bestanden van uw ontwikkelcomputer naar uw testmachine moet overzetten, uw computer opnieuw op te starten. VMWare is een veelgebruikte optie die zowel met Windows als Linux werkt, en dat geldt ook voor Bochs. Controleer op mogelijke impasses en andere bugs en repareer ze indien nodig.

Een computerbesturingssysteem maken Stap 15
Een computerbesturingssysteem maken Stap 15

Stap 7. Laat een "release candidate

U kunt dit doen door uw geteste code naar uw openbare repository te uploaden. Hierdoor kunnen mensen uw besturingssysteem testen en rapporteren over eventuele problemen die ze tegenkomen.

Veel computerplezier Stap 28
Veel computerplezier Stap 28

Stap 8. Netwerk met andere ontwikkelaars van besturingssystemen

Er is een hele gemeenschap van ontwikkelaars van besturingssystemen die samenkomen op verschillende forums, waaronder /r/osdev op Reddit en de Software Engineering Stack Exchange. Als je een greep hebt gekregen op het ontwikkelen van een basisbesturingssysteem, lees dan bestaande berichten om te zien wat voor soort dingen er tijdens het ontwikkelingsproces naar voren komen.

Video - Door deze service te gebruiken, kan bepaalde informatie worden gedeeld met YouTube

Tips

  • Zorg ervoor dat u beveiligingsfuncties als uw topprioriteit implementeert als u ooit wilt dat uw systeem levensvatbaar is.
  • Nadat alle ontwikkeling is voltooid, besluit u of u de code als open source of propriëtair wilt vrijgeven.
  • Om een besturingssysteem in staat te stellen meerdere processors aan te kunnen, moet uw Memory Manager "vergrendelingsmechanismen" hebben om te voorkomen dat meerdere processors tegelijkertijd toegang hebben tot dezelfde bron. De "vergrendelingen" die hiervoor worden gebruikt, vereisen de aanwezigheid van een planner om ervoor te zorgen dat slechts één processor tegelijkertijd toegang heeft tot een kritieke bron en dat alle anderen moeten wachten. Toch is de planner afhankelijk van de aanwezigheid van een Memory Manager. Dit is een geval van een vastgelopen afhankelijkheid. Er is geen standaard manier om dit soort problemen op te lossen; als programmeur wordt van je verwacht dat je vaardig genoeg bent om zijn eigen manier te bedenken om ermee om te gaan.
  • Een besturingssysteem kan ook gebruiksvriendelijk zijn. Zorg ervoor dat u gebruiksvriendelijke functies toevoegt, zodat deze een integraal onderdeel van uw ontwerp worden.
  • Doe niet mee de OSDev.org-forums en begin voor de hand liggende vragen te stellen. Het zal gewoon resulteren in "Lees de handleiding" antwoorden. Probeer Wikipedia te lezen en de handleidingen voor de verschillende tools die je wilt gebruiken.
  • Start niet een besturingssysteemproject om te beginnen met leren programmeren. Als u C, C++, Pascal of een andere geschikte taal nog niet van binnen en van buiten kent, inclusief manipulatie van aanwijzers, bitmanipulatie op laag niveau, bitverschuiving, inline assembleertaal, enz., bent u nog niet klaar voor de ontwikkeling van besturingssystemen.
  • Als je iets onverstandigs doet, zoals het schrijven van willekeurige bytes naar willekeurige I/O-poorten, zal je besturingssysteem crashen en (in theorie) je hardware frituren.

Aanbevolen: