Dezvoltați propriul sistem de operare

Un sistem de operare permite utilizatorului să interacționeze cu hardware-ul calculatorului. Se compune din câteva sute de mii de linii de cod și este în general dezvoltată folosind limbi de programare cum ar fi C, C ++ sau asamblor.

metodă

Imaginea cu titlul Creați un sistem de operare pentru computer Pasul 1
1
Înainte de a începe, trebuie să vă familiarizați cu programarea. Cunoștințele din Asamblare sunt indispensabile și, în plus, este recomandat un alt limbaj de programare orientat spre mașină, cum ar fi C.
  • Imaginea cu titlul Creați un sistem de operare pentru computer Pasul 2
    2
    Decideți pe ce mediu trebuie să încărcați sistemul de operare. Puteți face acest lucru cu o unitate CD / DVD / Flash, unitatea hard disk sau alt computer.
  • Imagine cu denumirea Creați un sistem de operare pentru computer Pasul 3
    3
    Decideți ce sarcini ar trebui să faceți sistemul dvs. de operare. Înainte de a începe ar trebui să stabilească un plan dur, dacă doriți să dezvolte un sistem de operare complet funcțional cu propria interfață grafică de utilizator (GUI) sau mai degrabă ceva Simpleres.
  • Imaginea cu titlul Creați un sistem de operare pentru computer Pasul 4
    4
    Determinați ce arhitectură de procesor suportă sistemul dvs. de operare. AI-32 și x86_64 sunt cele mai frecvent utilizate arhitecturi pe mașinile normale și probabil că sunt cel mai bun pariu.
  • Imaginea cu titlul Creați un sistem de operare pentru computer Pasul 5
    5
    Decideți dacă doriți să porniți sistemul de operare de la zero sau dacă doriți să construiți pe un kernel existent. Linux de la zero este, de exemplu, un proiect interesant pentru cei care doresc să-și dezvolte propria distribuție Linux.
  • Imagine cu denumirea Creați un sistem de operare pentru computer Pasul 6
    6
    Determinați dacă doriți să utilizați propriul bootloader sau un software dezvoltat anterior, cum ar fi GRUB (Grand Unified Bootloader). Deoarece programarea propriului încărcător de încărcare necesită o mulțime de cunoștințe hardware și BIOS, poate întârzia programul de dezvoltare al kernelului în sine.
  • Imaginea cu titlul Creați un sistem de operare pentru computer Pasul 7
    7
    Alegeți un limbaj de programare. Deși este destul de posibil să se dezvolte un sistem de operare în limbi precum Pascal sau BASIC, veți fi mai bine consiliați să utilizați C sau Assembler. Asamblatorul este absolut necesar, pe măsură ce anumite componente esențiale ale sistemului de operare se bazează pe acesta. În schimb, C ++ utilizează câteva cuvinte cheie care necesită rularea unui sistem de operare existent.
  • Desigur, pentru a compila un sistem de operare din codul C sau C ++, veți avea nevoie de un compilator. Prin urmare, trebuie să obțineți instrucțiuni / manual / documentația de C / C ++ compilator dvs. selectat pentru a citi, indiferent dacă au venit cu pachetul software sau este disponibil pe site-ul web al dezvoltatorului. Aveți nevoie de o cunoaștere foarte cuprinzătoare a compilatorului dvs. Când se dezvoltă în C ++, trebuie să știi și numele Mangling și ABI ale compilatorului. Este de așteptat ca să înțelegeți diferitele formate executabile (ELF, PE, COFF, binar, etc) și de mai sus știu că va recomanda ca formatul pentru Windows (.exe) drepturile de autor.
  • Imaginea cu titlul Creați un sistem de operare pentru computer Pasul 8
    8
    Blocați-vă pe un API (interfață de programare a aplicațiilor). O alegere bună este POSIX, deoarece este bine documentată. Toate sistemele Unix suportă cel puțin parțial POSIX, care ar putea porni cu ușurință programele Unix în sistemul dvs. de operare.
  • Imaginea cu titlul Creați un sistem de operare pentru computer Pasul 9
    9
    Planificați structura sistemului de operare. Există kernel monolit și microkernel. În timp ce cu kerneluri monolitice toate serviciile sunt integrate în kernel, microkernelul are doar funcții de bază și toate celelalte servicii sunt integrate ca procese în modul utilizator. În general, kernelurile monolitice sunt mai rapide, dar microkernele au o localizare mai bună a erorilor și o fiabilitate mai bună.


  • Imagine cu denumirea Creați un sistem de operare pentru computer Pasul 10
    10
    Luați în considerare dezvoltarea într-o echipă. Acest lucru necesită mai puțin timp pentru a rezolva mai multe probleme, permițând astfel crearea unui sistem de operare mai bun în mai puțin timp.
  • Imaginea cu titlul Creați un sistem de operare pentru computer Pasul 11
    11
    Nu ștergeți complet hard diskul. Rețineți că formatarea unității va șterge toate datele iremediabil. Utilizați GRUB sau alt încărcător de boot pentru a vă rula sistemul în modul de încărcare duală cu un alt sistem de operare până când propriul sistem de operare este complet dezvoltat.
  • Imaginea cu titlul Creați un sistem de operare pentru computer Pasul 12
    12
    Începeți puțin. Începeți cu lucruri simple cum ar fi afișarea unui text sau întreruperea înainte de a vă aventura în lucruri precum gestionarea memoriei și multitasking.
  • Imagine cu denumirea Creați un sistem de operare pentru computer Pasul 13
    13
    Creați o copie de rezervă a ultimului cod sursă de lucru. Aceasta este o măsură de securitate în cazul în care ceva merge prost greșit cu versiunea curentă a sistemului de operare sau de dezvoltare. În cazul în care computerul se blochează, având oa doua copie pentru depanare este o idee bună.
  • Imaginea cu titlul Creați un sistem de operare pentru computer Pasul 14
    14
    Luați în considerare efectuarea testelor sistemului dvs. de operare în interiorul unei mașini virtuale. În loc de a avea pentru a reporni computerul după fiecare modificare sau după fiecare transfer de date de pe computer de dezvoltare la computer de testare, puteți configura o mașină virtuală care afișează sistemul de operare în cadrul sistemului de operare curent. Aceste aplicații VM includ VMWare (ofera un produs server erhältiches gratuit), aplicația open source Bochs, Microsoft Virtual PC (nu Linux-compatibil) și xVM VirtualBox.
  • Imagine cu denumirea Creați un sistem de operare pentru computer Pasul 15
    15
    Publicați un candidat final de lansare. Acest lucru permite utilizatorilor să vă informeze despre posibilele probleme legate de sistemul dvs. de operare.
  • Imaginea cu titlul Creați un sistem de operare pentru computer Pasul 16
    16
    Acordați atenție utilizabilității sistemului dvs. și încercați să faceți aceste funcții parte integrantă a sistemului dvs. de operare.
  • Sfaturi

    • Asigurați-vă că implementarea funcțiilor de securitate este prioritatea de vârf, dacă sistemul de operare ar trebui să fie vreodată practic.
    • După terminarea dezvoltării, ar trebui să vă gândiți dacă protejați codul sursă sau îl accesați în mod deschis.
    • Nu încercați chiar la început cariera de programare pentru a aborda dezvoltarea unui sistem de operare. Dacă nu deja stăpânesc C, C ++, Pascal sau o programare la fel de adecvat în timpul somnului, inclusiv manipulare pointer, mașină de biți manipulare, bit-shifting, codul de asamblare în linie, astfel încât să nu sunteți pregătit pentru dezvoltarea unui sistem de operare.
    • Utilizați site-uri web ca OSDev și OSDever pentru a vă ajuta să vă dezvoltați propriul sistem de operare. Rețineți, totuși, că comunitatea OSDev.org ar prefera să utilizați wiki-ul pentru ajutor și să nu vă înscrieți în forum. Dacă decideți să vrea să fie o parte din forum, se aplică următoarele cerințe: Ai nevoie de o cunoaștere cuprinzătoare a C sau C ++ și limbaj de programare de asamblare x86. De asemenea, aveți nevoie de o înțelegere generală a unor concepte complexe de programare, cum ar fi Linked Liste, cozi, etc. Comunitatea OSDev pune principiile sale în mod clar că comunitatea nu se rotește cu privire la luarea de noi programatori la îndemână. Dacă îndrăznești să dezvolți un sistem de operare, te așteaptă automat să fii "Dumnezeu de programare". Mai mult, trebuie să aveți manualul pentru arhitectura procesorului selectat citit (Intel x86, ARM, MIPS, PPC, etc.) Aceste manuale pot fi utilizând o căutare Google găsi cu ușurință ( „Intel Manuale“, „ARM Manuale“, etc.) găsiți . Nu lovi cu piciorul forumul OSDEV și începeți să adresați întrebări evidente. Acest lucru are ca rezultat răspunsuri precum "Citiți al naibii Instrucțiuni ". Pentru majoritatea întrebărilor, puteți citi Wikipedia sau manualele legate de instrumentele folosite.
    • Dacă doriți o modalitate ușoară de a vă rugăm să ia în considerare utilizarea de auditor de distribuții Linux, cum ar fi Fedora, personalizate Suplu X Puppy remasterizată, PCLinuxOS mklivecd, SUSE Studio și KIWI SUSE. Dar, atunci sistemul de operare este parte a companiei pe care acest serviciu a oferit mai întâi (deși îl distribuiți sub licența GNU General Public, modifica și poate executa).
    • Verificați eventualele surse de eroare și alte erori. Acestea, de obicei, nu pot fi complet eliminate într-un proiect atât de complex.
    • Poate fi o idee bună să creați o nouă partiție completă pentru dezvoltarea sistemului dvs. de operare.

    avertismente

    • Nu veți putea crea un sistem complet în două săptămâni. Începeți cu un sistem de operare care poate porni singur, apoi începeți cu caracteristicile reci.
    • Scrierea neglijentă a sistemului de operare de pe hard disk îl poate face necitită. Fii atent.
    • Nu vă așteptați ca un program de operare decent să fie ușor de programat. Există o multitudine de interacțiuni complexe. În cazul în care sistemul de operare este de a fi, de exemplu, să fie capabil de a suporta mai multe nuclee, managerul de memorie trebuie să aibă un mecanism de „blocare“, au mai multe nuclee, care împiedică să acceseze în același timp, pe aceeași resursă. Încuietorile de acces necesită prezența unui program de control care să asigure că numai un nucleu de procesor, în același timp, are acces la o resursă importantă, în timp ce toate celelalte miezuri trebuie să aștepte. Acest program de control necesită din nou un manager de memorie. Acest caz ilustrează dependențele blocate. Nu există o soluție clară la aceste probleme, fiecare programator al unui sistem de operare este de așteptat să fie suficient de calificat pentru a-și dezvolta propria soluție.
    • Dacă efectuați o acțiune fără grijă, cum ar fi trimiterea de octeți aleatorii la porturile aleatoare de I / O, sistemul dvs. de operare se va prăbuși și ar putea (în teorie) să vă deterioreze hardware-ul.

    Resurse suplimentare

    Ce ai nevoie

    • Un calculator
    • Un procesor cu arhitectura pentru care vă dezvoltați sistemul de operare
    • Ample RAM pentru mașina dvs. virtuală
    • Un sistem de operare "gazdă" (pentru dezvoltarea codului sursă în asamblare și în alte limbi de programare și în stadiile incipiente pentru compilarea și construirea pachetelor de programe până când sistemul dvs. de operare se poate găzdui).
    • Un editor de coduri cu marcatori de sintaxă de culoare (dacă nu aveți un mediu de dezvoltare integrat)
    • Un compilator
    • O unitate CD / DVD
    Distribuiți pe rețelele sociale:

    înrudit