Hoe maak je een computerbesturingssysteem

Schrijver: Gregory Harris
Datum Van Creatie: 11 Lang L: none (month-011) 2021
Updatedatum: 3 Kunnen 2024
Anonim
Hoe maak je een herstelpunt in Windows 10 (Systeemherstel)
Video: Hoe maak je een herstelpunt in Windows 10 (Systeemherstel)

Inhoud

Andere secties

Deze wikiHow leert je hoe je een besturingssysteem moet plannen en ontwikkelen als je niet weet hoe je moet coderen in C of C ++. Besturingssystemen beheren computerhardware en bieden de bronnen 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 codebeheerpraktijken.

Stappen

Deel 1 van 2: De basis leren

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

  2. Leer een programmeertaal op hoog niveau zoals C. Als je eenmaal een solide basiskennis van informatica hebt, is de volgende stap het beheersen van C en / of C ++. Net als leren over informatica, is het beheersen van een taal niet optioneel. U kunt geen besturingssysteem coderen als u geen solide applicaties kunt schrijven.
    • Als je helemaal nieuw bent bij C, bekijk dan de cursus C Programming: Getting Started van Dartmouth, die gratis is via EDX. Als je die cursus eenmaal hebt afgerond, kun je de volgende cursus in de reeks volgen: C Programming: Language Foundations. Ga vervolgens verder met vervolgcursussen zoals Modulair programmeren en geheugenbeheer en Pointers en geheugenbeheer.

  3. Leer een assembleertaal. Assemblagetalen zijn talen op laag niveau die zijn ontworpen om met verschillende processors te communiceren. Omdat assemblage verschilt voor verschillende processortypen (bijv. X86-assembleertaal voor Intel, AMD, VIA en andere processors), moet je de versie leren kennen voor het type processor waarvoor je codeert.
    • Dit open-sourceboek, als het in zijn geheel wordt gelezen, kan u voldoende begrip geven voor het bouwen van een besturingssysteem.
    • The Art of Assembly Language is een sterk aanbevolen boek over montage dat zowel online als offline beschikbaar is.
    • Je moet ook veel onderzoek doen naar het type processor (s) waarop je besturingssysteem moet draaien. De handleidingen voor processorarchitectuur kunnen gemakkelijk worden gevonden met een Google-zoekopdracht ("Intel-handleidingen", "ARM-handleidingen", enz.).

  4. Voltooi een zelfstudie over het besturingssysteem. OS-zelfstudies helpen u bij het maken van een basisbesturingssysteem. Dit raakt je aan het proces gewend en helpt je erachter te komen of er stukjes zijn die je mist. Nadat u een of twee tutorials heeft voltooid, bent u goed op weg om uw 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 u helpt bij het maken van uw eigen Linux-besturingssysteem.
    • Besturingssystemen van 0 tot 1 is een gratis boek over het maken van verschillende besturingssystemen van begin tot eind.
  5. Zoek uit wat uw besturingssysteemdoelen zijn. Wat wil je dat je besturingssysteem doet? Hoe zou het eruit moeten zien? Moet je echt een heel besturingssysteem schrijven of ben je gewoon op zoek naar een bepaalde look voor je desktop? Dit zijn allemaal dingen die u moet overwegen voordat u begint met coderen.
    • Overweeg om samen met een team van andere programmeurs te ontwikkelen. Als een team van ontwikkelaars aan het project werkt, wordt de ontwikkeltijd aanzienlijk verkort.
    • Voeg uw projectdoelen, plannen en vragen toe aan uw openbare opslagplaats, zodat anderen u gemakkelijk kunnen helpen.

Deel 2 van 2: Uw besturingssysteem bouwen

  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 variant van UNIX. Als u Windows gebruikt, is het een goed idee om een ​​UNIX-omgeving zoals Cygwin of MinGW te installeren. Over het algemeen moet 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 u Windows gebruikt, kunt u het in Cygwin installeren.
    • Een goede teksteditor. Vim en emacs worden vaak gebruikt in UNIX-omgevingen. Windows-gebruikers kunnen Notepad gebruiken of Notepad ++ bekijken voor een upgrade met meerdere tabbladen.
    • Perl en / of Python. Een of beide worden aanbevolen voor stringmanipulatie.
  2. Stel uw versiebeheersysteem in. Als u een besturingssysteem schrijft, maakt u waarschijnlijk honderden (of duizenden!) Regels code. Als u aan revisies werkt, kan dit verwarrend zijn. Enkele opties om uit te checken zijn CVS, Mercurial en Subversion.
  3. Beslis over een bootloader. Als je niet je eigen wilt maken, kun je een bestaande gebruiken, zoals Grand Unified Bootloader (GRUB). Als je genoeg lef hebt om een ​​bootloader te programmeren, ga dan naar Rolling Your Own Bootloader op OSDev.org.
  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 kernels en micro-kernels. 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.
  5. Begin klein. Begin met kleine dingen, zoals het weergeven van tekst en interrupts, voordat u verder gaat met zaken als geheugenbeheer en multitasking. U kunt ook proberen een eenvoudig 16-bits besturingssysteem te maken in plaats van een grote sprong te wagen.
    • Je hebt binnen twee weken geen volledig systeem. Begin met een besturingssysteem dat opstart en ga dan verder met de coole dingen.
  6. Test uw nieuwe besturingssysteem met een virtuele machine. Gebruik een virtuele machinetoepassing in plaats van uw computer opnieuw op te starten telkens wanneer u wijzigingen aanbrengt of de bestanden van uw ontwikkelcomputer naar uw testmachine moet overbrengen. VMWare is een veelgebruikte optie die werkt met zowel Windows als Linux, en dat geldt ook voor Bochs. Controleer op mogelijke deadlocks en andere bugs en repareer deze indien nodig.
  7. Geef een "release candidate."U kunt dit doen door uw geteste code te uploaden naar uw openbare repository. Hierdoor kunnen mensen uw besturingssysteem testen en verslag uitbrengen over eventuele problemen die ze tegenkomen.
  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 idee hebt gekregen van het ontwikkelen van een basisbesturingssysteem, lees je bestaande berichten om te zien wat voor soort dingen er tijdens het ontwikkelingsproces naar boven komen.

Vragen en antwoorden van de gemeenschap



Kan ik dit doen als ik geen programmeerervaring heb?

Alleen als je bereid bent veel te leren. Je hebt een volledig begrip nodig van ten minste assemblagecode en de motivatie om meer te leren. Het bouwen van uw eigen besturingssysteem is geen kleine taak.


  • Wat moet mijn eerste stap zijn?

    Leer programmeertalen en concepten, en oefen om een ​​zeer sterke programmeur te worden.


  • Welke applicaties kan ik gebruiken om mijn besturingssysteem te programmeren?

    Dat hangt af van de programmeertaal die u gebruikt. Het wordt echter aanbevolen om een ​​IDE of Integrated Development Environment te gebruiken om uw besturingssysteem te programmeren, aangezien IDE's ingebouwde tools en functies hebben om de ontwikkeling te vergemakkelijken. Niet alle IDE's ondersteunen echter elke taal, dus u zult specifiek willen zoeken naar IDE's die de taal (of talen) die u gebruikt, ondersteunen.


  • Is het coderen van mijn eigen kernel beter dan het gebruik van een bestaande kernel?

    Een open source-kernel krijgen is beter dan er een te coderen als u zich in de uni of zoiets bevindt, omdat u niet helemaal opnieuw hoeft te beginnen of ervoor hoeft te betalen, aangezien het open source is. Het coderen van een bewijst echter een hogere kennis van programmeren, wat u misschien verkiest.


  • Kan ik de besturingssystemen Windows en Android samenvoegen?

    Dat kan, maar het zijn beide twee verschillende besturingssystemen en het vereist veel programmeerervaring en werk. Dus probeer het niet, tenzij u in staat bent om te programmeren.


  • Hoe kan ik Windows- en Android-besturingssystemen samenvoegen?

    Windows is een ongestructureerd besturingssysteem, om nog maar te zwijgen van het feit dat het geen open source is, het toevoegen van functionaliteit aan Windows is een behoorlijk moeilijke taak. Hoewel Android kan worden beschouwd als een variant van Linux, een gestructureerd en open-source besturingssysteem, is het toevoegen van functionaliteitlagen eenvoudig, maar te veel lagen resulteren in een slechte gebruikerservaring. Terug naar de vraag, het zou zeker vereisen dat je uitgebreide kennis van Android hebt (je kunt proberen een Android-rom te koken) en voorkennis van hoe sommige kerncomponenten van Windows werken, dus wat krijg je na het samenvoegen van deze twee besturingssystemen, nietwaar? om te beginnen gestructureerd of ongestructureerd zijn? Er is te veel onduidelijkheid!


  • Hoeveel tijd zou het kosten om een ​​nieuw besturingssysteem te bouwen?

    Het zou maanden, zo niet jaren duren om een ​​besturingssysteem te maken dat goed werkt met veel functionaliteit. Het is onmogelijk om binnen een paar weken of dagen een besturingssysteem op te bouwen.


  • Kan ik een besturingssysteem maken met alleen Java?

    Ja, dat heeft iemand eerder gedaan. Als u echter wilt dat mensen uw besturingssysteem ook daadwerkelijk gebruiken, gebruik dan geen java. Het zal niet alleen veel, veel langer duren, maar het zal ook niet zo goed zijn als een besturingssysteem gemaakt van een andere codeertaal. Dus je kunt, ja, maar zou je? Waarschijnlijk niet.


  • Wat zijn enkele essentiële vaardigheden voor het ontwikkelen van een besturingssysteem?

    Je hebt VEEL kennis nodig over assemblage en een taal op laag niveau, zoals C. Je hebt ook uitgebreide kennis nodig over het omgaan met geheugen en je zult in staat moeten zijn om verbindingen met apparaten en randapparatuur te verwerken.


  • Kunt u mij meer informatie geven over afbeeldingen en waar ik moet beginnen?

    U kunt de afbeeldingen zelf maken en u kunt op elk moment en waar u maar wilt beginnen. Het enige wat je nodig hebt is wat programmeerkennis en wat software om het mee te programmeren. Als je niet zeker weet wat je moet doen, kan het helpen om een ​​online tutorial te doen met plaatsen als Code Academy of Khan Academy.

  • Tips

    • Zorg ervoor dat u beveiligingsfuncties implementeert als uw topprioriteit als u ooit wilt dat uw systeem levensvatbaar is.
    • Nadat alle ontwikkeling is voltooid, moet u beslissen of u de code als open source of als eigendom wilt vrijgeven.
    • Om ervoor te zorgen dat een besturingssysteem meerdere processors kan verwerken, moet uw geheugenbeheerder "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 op een bepaald moment toegang heeft tot een kritieke bron en dat alle andere 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 standaardmanier om dit soort problemen op te lossen; als programmeur wordt van je verwacht dat je bekwaam 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 zijn.
    • Doe niet mee de OSDev.org-forums en begin met het stellen van voor de hand liggende vragen. Het zal gewoon resulteren in "Lees de handleiding" antwoorden. Probeer Wikipedia en de handleidingen voor de verschillende tools die u wilt gebruiken te lezen.
    • Start niet een besturingssysteemproject om te beginnen met het leren programmeren. Als u C, C ++, Pascal of een andere geschikte taal nog niet van binnen en van buiten kent, inclusief pointermanipulatie, bitmanipulatie op laag niveau, bitverschuiving, inline assembleertaal, etc., bent u nog niet klaar voor de ontwikkeling van een besturingssysteem .
    • Als je iets onverstandigs doet, zoals het schrijven van willekeurige bytes naar willekeurige I / O-poorten, crash je je besturingssysteem en kun je (in theorie) je hardware frituren.

    Hoe maak je een kittenkostuum

    Vivian Patrick

    Kunnen 2024

    Heb je ooit een la t minute ko tuum nodig gehad? Of ben je dol op katten en wil je je al een kat kleden voor Halloween? Hoe dan ook, het i heel gemakkelijk om je al kat te verkleden. Met een beetje ma...

    Hoe een Xbox te demonteren

    Vivian Patrick

    Kunnen 2024

    Wa je het lachtoffer van de gevree de Red Ring of Death? Wil je Micro oft gek maken door je Xbox nog ongelooflijker te maken door de magie van aanpa ingen? Al je geduld en vaardigheid hebt en moedig g...

    Wij Adviseren