Een computerbesturingssysteem maken (met afbeeldingen)

Inhoudsopgave:

Een computerbesturingssysteem maken (met afbeeldingen)
Een computerbesturingssysteem maken (met afbeeldingen)

Video: Een computerbesturingssysteem maken (met afbeeldingen)

Video: Een computerbesturingssysteem maken (met afbeeldingen)
Video: How to Downgrade from Windows 8 to Windows 7 2024, Mei
Anonim

Het besturingssysteem stelt de gebruiker in staat om te communiceren met de computerhardware. Het systeem bestaat uit honderdduizenden regels code. Meestal wordt het besturingssysteem gemaakt met behulp van de programmeertalen C#, C, C++ en assembly. Met het besturingssysteem kunt u door uw computer bladeren terwijl u opdrachten opslaat en uitvoert. Denk niet dat het maken van een besturingssysteem eenvoudig is. Er is veel kennis voor nodig om het te maken.

Stap

Maak een computerbesturingssysteem Stap 1
Maak een computerbesturingssysteem Stap 1

Stap 1. Leer allereerst over programmeren

Assembleertaal is erg belangrijk; het wordt ten zeerste aanbevolen dat u een andere aanvullende taal op hoog niveau leert, zoals de C-taal.

Maak een computerbesturingssysteem Stap 2
Maak een computerbesturingssysteem Stap 2

Stap 2. Bepaal welke media u wilt gebruiken om het besturingssysteem te laden

Dit medium kan een cd-station, dvd-station, flashstation, harde schijf, diskette of een andere pc zijn.

Maak een computerbesturingssysteem Stap 3
Maak een computerbesturingssysteem Stap 3

Stap 3. Definieer het kernidee van een SO

Op Windows is het kernidee bijvoorbeeld een gebruiksvriendelijke GUI en veel beveiliging.

Maak een computerbesturingssysteem Stap 4
Maak een computerbesturingssysteem Stap 4

Stap 4. Bepaal welk processorplatform uw besturingssysteem ondersteunt

IA-32, ARM en x86_64 zijn de meest voorkomende platforms voor personal computers. Dus ze zijn allemaal uw beste keuze.

Maak een computerbesturingssysteem Stap 5
Maak een computerbesturingssysteem Stap 5

Stap 5. Beslis of je alles zelf wilt doen vanaf het begin, of dat er al een kernel beschikbaar is waarop je wilt bouwen

Linux from scratch is bijvoorbeeld een project voor mensen die hun eigen Linux-distro willen bouwen.

Maak een computerbesturingssysteem Stap 6
Maak een computerbesturingssysteem Stap 6

Stap 6. Bepaal of je je eigen bootloader wilt gebruiken of een vooraf gebouwde zoals de Grand Unified Bootloader (GRUB)

Het zelf coderen van de bootloader vereist uitgebreide kennis van hardware en BIOS. Als gevolg hiervan kan deze stap het eigenlijke programmeringsschema van de kernel belemmeren.

Een computerbesturingssysteem maken Stap 7
Een computerbesturingssysteem maken Stap 7

Stap 7. Bepaal welke programmeertaal u wilt gebruiken

Het is prima om een besturingssysteem te hebben in een taal als Pascal of BASIC, maar je moet C of Assembly gebruiken. Assembleren is zeer noodzakelijk, omdat sommige belangrijke onderdelen van een besturingssysteem dit vereisen. Aan de andere kant bevat de C ++ -taal trefwoorden waarvoor andere volledige SO nodig is om te worden uitgevoerd.

Om een besturingssysteem uit C- of C++-code te compileren, gebruikt u natuurlijk de ene of de andere compiler. Daarom is het een goed idee om de gebruikershandleiding/handleiding/documentatie voor de C/C++-compiler van uw keuze te raadplegen, ongeacht of deze is opgenomen in de software of beschikbaar is op de website van de distributeur. Je moet veel ingewikkelde dingen weten over de compiler en voor de ontwikkeling van C++ moet je weten wat het mangling-schema van de compiler en zijn ABI is. Er wordt van je verwacht dat je de verschillende uitvoerbare formaten (ELF, PE, COFF, basic binary, etc.) begrijpt en begrijpt dat het exclusieve Windows-formaat, PE (.exe), auteursrechtelijk beschermd is

Een computerbesturingssysteem maken Stap 8
Een computerbesturingssysteem maken Stap 8

Stap 8. Definieer uw Application Programming Interface (API)

Een goede API om uit te kiezen is POSIX omdat het goed gedocumenteerd is. Alle Unix-systemen hebben ten minste gedeeltelijke ondersteuning voor POSIX. Dus het aansluiten van Unix-programma's op uw besturingssysteem zou eenvoudig moeten zijn.

Een computerbesturingssysteem maken Stap 9
Een computerbesturingssysteem maken Stap 9

Stap 9. Bepaal je ontwerp

Er bestaat zoiets als een monolithische kern en een microkernel. Monolithische kernels implementeren alle services in de kernel, terwijl micro-kernels kleine kernels hebben die zijn gebundeld met deployment-services voor gebruikersdaemons. Over het algemeen zijn monolithische kernels sneller, maar microkernels hebben een betere foutisolatie en betrouwbaarheid.

Een computerbesturingssysteem maken Stap 10
Een computerbesturingssysteem maken Stap 10

Stap 10. Overweeg om je te ontwikkelen en in een team te werken

Op die manier kost het minder tijd om meer problemen op te lossen, wat waarschijnlijk het bouwen van een beter besturingssysteem zal versnellen.

Een computerbesturingssysteem maken Stap 11
Een computerbesturingssysteem maken Stap 11

Stap 11. Wis uw harde schijf niet volledig

Onthoud dat als u een schijf verwijdert, alle gegevens erop onomkeerbaar worden gewist! Gebruik GRUB of een andere bootmanager om je systeem dubbel op te starten met een ander besturingssysteem totdat je besturingssysteem volledig functioneel is.

Een computerbesturingssysteem maken Stap 12
Een computerbesturingssysteem maken Stap 12

Stap 12. Begin klein

Begin met kleine dingen zoals het weergeven van tekst en pauzeer voordat u verder gaat met zaken als geheugenbeheer en samengesteld werk. Zorg er ook voor dat je de 32 bit en 64 bit versies maakt.

Een computerbesturingssysteem maken Stap 13
Een computerbesturingssysteem maken Stap 13

Stap 13. Bewaar een back-up van de laatst werkende broncode

Deze stap is handig als beveiliging voor het geval er iets misgaat met de huidige versie van SO of ontwikkeling. Als je computer crasht en niet wil opstarten, is het een goed idee om een tweede exemplaar te hebben om mee te werken, zodat je het probleem kunt oplossen.

Een computerbesturingssysteem maken Stap 14
Een computerbesturingssysteem maken Stap 14

Stap 14. Overweeg om uw nieuwe besturingssysteem te testen met een virtuele machine

In plaats van uw computer telkens opnieuw op te starten als u wijzigingen aanbrengt of na het verzenden van bestanden van uw ontwikkelcomputer naar uw testmachine, kunt u een virtuele machinetoepassing gebruiken om uw besturingssysteem uit te voeren terwijl uw huidige besturingssysteem draait. Huidige VM-applicaties zijn onder meer: VMWare (dat ook een gratis serverproduct heeft), open source-alternatieven, Bochs, Microsoft Virtual PC (niet compatibel met Linux) en Oracle VirtualBox.

Een computerbesturingssysteem maken Stap 15
Een computerbesturingssysteem maken Stap 15

Stap 15. Start de "release candidate" of Beta versie

Met deze stap kan de gebruiker u op de hoogte stellen van mogelijke problemen met uw besturingssysteem.

Een computerbesturingssysteem maken Stap 16
Een computerbesturingssysteem maken Stap 16

Stap 16. Het besturingssysteem moet ook gebruiksvriendelijk zijn

Zorg ervoor dat u gebruiksvriendelijke functies toevoegt, maak deze een integraal onderdeel van uw ontwerp.

Tips

  • Controleer op mogelijke impasses en andere bugs. Bugs, impasses en andere problemen zijn van invloed op het bouwproject van uw besturingssysteem.
  • Zorg ervoor dat u beveiligingsfuncties als topprioriteit implementeert als u wilt dat het systeem goed werkt.
  • Gebruik websites zoals OSDev en OSDever om u te helpen uw eigen besturingssysteem te ontwikkelen. Houd er rekening mee dat voor de meeste doeleinden de OSDev.org-gemeenschap meer dan blij zal zijn als je hun wiki gebruikt en niet lid wordt van het forum. Als je besluit om lid te worden van een forum, is er een voorwaarde: je moet echt iets weten over C of C++ en de assembleertaal x86. Je moet ook algemene en complexe programmeerconcepten begrijpen, zoals gekoppelde lijsten, wachtrijen, enz. De OSDev-gemeenschap stelt in haar regelgeving expliciet dat haar gemeenschap niet is opgericht om nieuwe programmeurs te koesteren.
  • Doe niet mee met het OSDev.org-forum en stel vervolgens de voor de hand liggende vraag. U wordt alleen gevraagd om de gids te lezen. Lees Wikipedia en de instructies voor de apparatuur die u wilt gebruiken.
  • Als je een besturingssysteem probeert te ontwikkelen, wordt je zeker beschouwd als de "god" van het programmeren.
  • Je zou ook de processorhandleiding moeten lezen voor de processorarchitectuur die je hebt geselecteerd; of x86 (Intel), ARM, MIPS, PPC, enz. Handleidingen voor processorarchitecturen zijn gemakkelijk te vinden met een Google-zoekopdracht ("Intel-handleiding", "ARM-handleiding", enz.).
  • Zodra al het ontwikkelingswerk is voltooid, beslist u of u de code als open code of auteursrechtelijk wilt vrijgeven.
  • Begin niet een besturingssysteemproject om te beginnen met leren programmeren. Als je C, C++, Pascal of een andere geschikte taal niet van binnen en van buiten kent, inclusief aanwijzermanipulatie, bitmanipulatie op laag niveau, bitverschuiving, inline-assembleertalen, enz., Ben je niet klaar voor het besturingssysteem ontwikkeling.
  • Het maken van een geheel nieuwe partitie om SO te 'uitbreiden' zou een goede optie kunnen zijn.
  • Als je een gemakkelijke manier wilt, overweeg dan Linux-distributies zoals Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS Mk LiveCD of SUSE Studio en SUSE KIWI. Het besturingssysteem dat u maakt, behoort echter toe aan het bedrijf dat de service als eerste heeft gestart (hoewel u het recht hebt om het vrijelijk te verspreiden, te wijzigen en uit te voeren zoals u wilt onder de GPL).

Waarschuwing

  • Je krijgt niet binnen twee weken een volledig besturingssysteem. Begin met een opstartbare SO en ga dan verder met koelere dingen.
  • Het onzorgvuldig schrijven van uw besturingssysteem op een harde schijf kan deze volledig beschadigen. Doe voorzichtig.
  • Als je iets doet dat niet wordt aanbevolen, zoals het schrijven van willekeurige bytes op willekeurige I/O-poorten, zal je besturingssysteem crashen en (in theorie) je hardware verschroeien.
  • Verwacht niet dat het besturingssysteem eenvoudig te bouwen is. Er zijn veel gecompliceerde onderlinge afhankelijkheden. Als u bijvoorbeeld een besturingssysteem wilt maken dat meerdere processors aankan, moet uw Memory Manager een "vergrendelingsmechanisme" hebben om te voorkomen dat meerdere processors tegelijkertijd toegang hebben tot dezelfde bron. Het "slot" dat hiervoor wordt gebruikt, vereist een planner om ervoor te zorgen dat slechts één processor tegelijkertijd toegang heeft tot kritieke bronnen en dat alle anderen moeten wachten. In feite is de planner afhankelijk van de aanwezigheid van de Memory Manager. Dit is een voorbeeld van een doodlopende afhankelijkheid. Er is geen standaard manier om dit soort problemen op te lossen; van elke programmeur van een besturingssysteem wordt verwacht dat hij bekwaam genoeg is om er op zijn eigen manier mee om te gaan.

Aanvullende bronnen

  • Richtlijnen: Linux vanaf nul
  • Bootloader: GRUB
  • Toepassingen van virtuele machines: Bochs, VM Ware, XM Virtual Box.
  • Processorhandleiding: Intel-handleiding
  • SO-ontwikkelingssites: OSDev, OSDever

Aanbevolen: