Paano Gumawa ng isang Computer Operating System: 13 Mga Hakbang (na may Mga Larawan)

Talaan ng mga Nilalaman:

Paano Gumawa ng isang Computer Operating System: 13 Mga Hakbang (na may Mga Larawan)
Paano Gumawa ng isang Computer Operating System: 13 Mga Hakbang (na may Mga Larawan)

Video: Paano Gumawa ng isang Computer Operating System: 13 Mga Hakbang (na may Mga Larawan)

Video: Paano Gumawa ng isang Computer Operating System: 13 Mga Hakbang (na may Mga Larawan)
Video: Paano iinstall ang git sa Ubuntu Xfce Linux - mga Beginner lang to 2024, Abril
Anonim

Itinuturo sa iyo ng wikiHow na ito kung paano magplano at bumuo ng isang operating system kung hindi mo alam kung paano mag-code sa C, o C ++. Ang mga operating system ay namamahala sa hardware ng computer at nagbibigay ng mga mapagkukunan na kailangang tumakbo ng mga application. Ang pagsulat ng isang operating system mula sa simula ay nangangailangan ng isang malakas na utos ng computer science, isang wikang nagprograma tulad ng C o C ++, pagpupulong, at mga kasanayan sa pamamahala ng code.

Mga hakbang

Bahagi 1 ng 2: Pag-aaral ng Mga Pangunahing Kaalaman

Gumawa ng isang Computer Operating System Hakbang 1
Gumawa ng isang Computer Operating System Hakbang 1

Hakbang 1. Kumuha ng ilang mga pangunahing kurso sa Computer Science

Hindi tulad ng pagbuo para sa web, ang paglikha ng isang operating system ay nangangailangan ng isang malakas na pag-unawa sa mga algorithm, istruktura ng data, hardware ng computer, at pamamahala ng mapagkukunan. Ang mga tao ay nakakakuha ng mga degree sa bagay na ito, kaya huwag asahan na magsulat ng isang buong operating system pagkatapos basahin ang isang online tutorial! Ang kurso sa Harvard's Intro to Computer Science ay magagamit online sa pamamagitan ng EDX nang walang gastos.

Gumawa ng isang Computer Operating System Hakbang 2
Gumawa ng isang Computer Operating System Hakbang 2

Hakbang 2. Alamin ang isang mataas na antas ng wika ng programa tulad ng Python

Sa sandaling nakuha mo ang isang matatag na pang-unawaang pang-unibersidad ng agham ng computer, ang susunod na hakbang ay upang makabisado ang C at / o C ++. Tulad ng pag-aaral tungkol sa computer science, ang mastering ng isang wika ay hindi opsyonal-hindi mo mai-code ang isang operating system kung hindi ka makakasulat ng mga solidong application.

Kung bago ka sa C, tingnan ang C Programming ng Dartmouth: Pagsisimula ng kurso, na libre sa pamamagitan ng EDX. Kapag nakumpleto mo na ang kurso, maaari kang kumuha ng susunod na kurso sa serye: C Programming: Mga Pundasyon ng Wika. Pagkatapos, magpatuloy sa mga kasunod na kurso tulad ng Modular Programming at Memory Management at Pointers at Memory Management

Gumawa ng isang Computer Operating System Hakbang 4
Gumawa ng isang Computer Operating System Hakbang 4

Hakbang 3. Alamin ang isang wika ng pagpupulong

Ang mga wika sa Assembly ay mga mababang antas na wika na idinisenyo upang makipag-usap sa iba't ibang mga processor. Dahil ang pagpupulong ay naiiba para sa iba't ibang mga uri ng processor (hal., X86 na wika ng pagpupulong para sa Intel, AMD, VIA, at iba pang mga processor), kakailanganin mong malaman ang bersyon para sa uri ng processor na iyong pinag-coding.

  • Ang librong bukas na mapagkukunan na ito, kung basahin ang kabuuan nito, ay maaaring magbigay sa iyo ng sapat na sapat na pag-unawa para sa pagbuo ng isang operating system.
  • Ang Art of Assembly Language ay isang lubos na inirekumenda na libro tungkol sa pagpupulong na magagamit sa parehong at offline.
  • Dapat mo ring gawin ang maraming pagsasaliksik sa uri ng (mga) processor kung saan dapat tumakbo ang iyong operating system. Ang mga manwal para sa arkitektura ng processor ay madaling makita gamit ang isang paghahanap sa Google ("Mga Manwal sa Intel," "Mga manwal ng ARM," atbp.).
Gumawa ng isang Computer Operating System Hakbang 5
Gumawa ng isang Computer Operating System Hakbang 5

Hakbang 4. Kumpletuhin ang isang tutorial ng operating system

Tumatakbo sa iyo ang mga tutorial ng OS sa proseso ng paglikha ng isang pangunahing operating system. Nasanay ka sa proseso at tinutulungan kang malaman kung may mga piraso kang nawawala. Kapag nakumpleto mo na ang isang tutorial o dalawa, magiging maayos ka na sa paglikha ng iyong sariling operating system.

  • Ang Bare Bones ay isang tutorial na makakatulong sa iyo na isulat ang iyong unang simpleng 32-bit kernel. Matapos makumpleto ang tutorial, ang susunod na hakbang ay ang paggamit ng Meaty Skeleton upang maitayo ang iyong sariling operating system.
  • Ang Linux mula sa Scratch ay isang online na libro na naglalakad sa iyo sa paglikha ng iyong sariling operating system ng Linux.
  • Ang mga operating system mula 0 hanggang 1 ay isang libreng libro tungkol sa paglikha ng iba't ibang mga operating system mula simula hanggang katapusan.
Gumawa ng isang Computer Operating System Hakbang 3
Gumawa ng isang Computer Operating System Hakbang 3

Hakbang 5. Alamin ang mga layunin ng iyong operating system

Ano ang nais mong gawin ng iyong operating system? Paano ito magmukhang Kailangan mo bang magsulat ng isang buong operating system o naghahanap ka lamang upang lumikha ng isang tiyak na hitsura para sa iyong desktop? Ito ang lahat ng mga bagay na isasaalang-alang bago magsimula sa code.

  • Isaalang-alang ang pagbuo sa isang koponan ng iba pang mga programmer. Ang pagkakaroon ng isang pangkat ng mga developer na nagtatrabaho sa proyekto ay magpapabawas nang malaki sa oras ng pag-unlad.
  • Idagdag ang iyong mga layunin sa proyekto, plano, at katanungan sa iyong pampublikong imbakan upang madali para sa iba na matulungan ka.

Bahagi 2 ng 2: Pagbuo ng Iyong Operating System

Magkaroon ng Kasayahan sa Computer Hakbang 16
Magkaroon ng Kasayahan sa Computer Hakbang 16

Hakbang 1. Pumili ng isang kapaligiran sa pag-unlad

Ito ang platform na iyong gagamitin upang mai-code ang iyong bagong operating system. Ito ay isang bagay ng personal na kagustuhan, ngunit ang karamihan sa mga tao ay gumagamit ng Windows o isang lasa ng UNIX. Kung gumagamit ka ng Windows, magandang ideya na mag-install ng isang UNIX na kapaligiran tulad ng Cygwin o MinGW. Sa pangkalahatan ay gugustuhin mong tiyakin na ang anumang kapaligiran na iyong ginagamit ay may kasamang mga sumusunod:

  • GCC (ang tagatala ng Gnu). Kung gumagamit ka ng Windows, maaari mo itong mai-install sa Cygwin o MinGW.
  • Ang Binutils ay isang koleksyon ng mga tool na ginagamit para sa pagmamanipula ng mga file ng object. Muli, kung gumagamit ka ng Windows, maaari mo itong mai-install sa Cygwin.
  • Isang mahusay na editor ng teksto. Ang vim at emacs ay karaniwang ginagamit sa mga kapaligiran ng UNIX. Ang mga gumagamit ng Windows ay maaaring gumamit ng Notepad, o suriin ang Notepad ++ para sa isang pag-upgrade ng multi-tab.
  • Perl at / o Python. Ang isa o pareho ay inirerekomenda para sa pagmamanipula ng string.
Gumawa ng isang Computer Operating System Hakbang 13
Gumawa ng isang Computer Operating System Hakbang 13

Hakbang 2. I-set up ang iyong system ng kontrol sa bersyon

Ang pagsulat ng isang operating system ay nangangahulugang malamang na lumilikha ka ng daan-daang (o libu-libo!) Ng mga linya ng code. Kapag nagtatrabaho ka sa mga pagbabago, maaari itong malito. Ang ilang mga pagpipilian upang suriin ang CVS, Mercurial, at Subversion.

Gumawa ng isang Computer Operating System Hakbang 6
Gumawa ng isang Computer Operating System Hakbang 6

Hakbang 3. Magpasya sa isang bootloader

Kung hindi mo nais na lumikha ng iyong sarili, maaari mong gamitin ang isang mayroon nang tulad ng Grand Unified Bootloader (GRUB). Kung sa tingin mo ay sapat na matapang upang ma-code ang isang bootloader, suriin ang Pagulong ng Iyong Sariling Bootloader sa OSDev.org.

Gumawa ng isang Computer Operating System Hakbang 9
Gumawa ng isang Computer Operating System Hakbang 9

Hakbang 4. Pumili ng isang disenyo ng kernel

Ang kernel ay ang core ng iyong operating system, na nagbibigay ng isang interface sa pagitan ng gumagamit at ng computer hardware. Mayroong mga monolithic kernels at micro kernels. Ang mga monolithic kernel ay nagpapatupad ng lahat ng mga serbisyo sa kernel, habang ang mga microkernel ay may isang maliit na kernel na sinamahan ng mga daemon ng gumagamit na nagpapatupad ng mga serbisyo. Sa pangkalahatan, ang mga monolithic kernels ay mas mabilis, ngunit ang mga microkernel ay may mas mahusay na paghihiwalay ng kasalanan at pagiging maaasahan.

Gumawa ng isang Computer Operating System Hakbang 12
Gumawa ng isang Computer Operating System Hakbang 12

Hakbang 5. Magsimula ng maliit

Magsimula sa maliliit na bagay tulad ng pagpapakita ng teksto at nakakagambala bago lumipat sa mga bagay tulad ng pamamahala sa memorya at multitasking. Maaari mo ring subukang gumawa ng isang simpleng 16-bit na Operating System, sa halip na kumuha ng isang malaking lakad.

Hindi ka magkakaroon ng isang buong sistema sa loob ng dalawang linggo. Magsimula sa isang OS na naka-boot, pagkatapos ay magpatuloy sa mga cool na bagay

Gumawa ng isang Computer Operating System Hakbang 14
Gumawa ng isang Computer Operating System Hakbang 14

Hakbang 6. Subukan ang iyong bagong operating system gamit ang isang virtual machine

Sa halip na i-reboot ang iyong computer sa bawat oras na gumawa ka ng mga pagbabago o kinakailangang ilipat ang mga file mula sa iyong computer sa pag-unlad sa iyong test machine, gumamit ng isang virtual machine application. Ang VMWare ay isang pangkaraniwang pagpipilian na gumagana sa parehong Windows at Linux, at gayundin ang Bochs. Suriin ang mga potensyal na deadlocks at iba pang mga bug at ayusin ang mga ito kung kinakailangan.

Gumawa ng isang Computer Operating System Hakbang 15
Gumawa ng isang Computer Operating System Hakbang 15

Hakbang 7. Pakawalan ang isang "kandidato sa paglabas

Magagawa mo ito sa pamamagitan ng pag-upload ng iyong nasubok na code sa iyong pampublikong imbakan. Papayagan nito ang mga tao na subukan ang iyong operating system at mag-ulat muli sa anumang mga isyung nasagasaan nila.

Magkaroon ng Kasayahan sa Computer Hakbang 28
Magkaroon ng Kasayahan sa Computer Hakbang 28

Hakbang 8. Network sa iba pang mga developer ng operating system

Mayroong isang buong komunidad ng mga developer ng operating system na nagtitipon sa iba't ibang mga forum, kasama ang / r / osdev sa Reddit at ang Software Engineering Stack Exchange. Ang isa ay nakuha mo ang pag-unawa sa pagbuo ng isang pangunahing operating system, basahin ang mga mayroon nang mga post upang makita kung anong uri ng mga bagay ang darating sa panahon ng proseso ng pag-unlad.

Video - Sa pamamagitan ng paggamit ng serbisyong ito, maaaring ibahagi ang ilang impormasyon sa YouTube

Mga Tip

  • Siguraduhing ipatupad ang mga tampok sa seguridad bilang iyong nangungunang priyoridad kung nais mo ang iyong system na maging mabuhay.
  • Matapos ang lahat ng pag-unlad ay tapos na, magpasya kung nais mong palabasin ang code bilang bukas na mapagkukunan, o pagmamay-ari.
  • Upang magawa ng isang operating system na hawakan ang maramihang mga processor, ang iyong Memory Manager ay dapat magkaroon ng mga mekanismo ng "pagla-lock" upang maiwasan ang maramihang mga processor na ma-access ang parehong mapagkukunan nang sabay. Ang "kandado" na ginamit para dito ay mangangailangan ng pagkakaroon ng isang tagapag-iskedyul upang matiyak na ang isang processor lamang ang nag-a-access ng isang kritikal na mapagkukunan sa anumang naibigay na oras at ang lahat ng iba pa ay hinihintay. Gayunpaman ang scheduler ay nakasalalay sa pagkakaroon ng isang Memory Manager. Ito ay isang kaso ng isang deadlocked dependency. Walang karaniwang paraan upang malutas ang mga problemang tulad nito; bilang isang programmer, ikaw ay inaasahang sapat na may kasanayan upang malaman ang kanyang sariling paraan ng pagharap dito.
  • Ang isang operating system ay maaaring maging madaling gamitin din. Tiyaking magdagdag ng mga tampok na madaling gamitin ng gumagamit, ginagawa itong isang mahalagang bahagi ng iyong disenyo.
  • Huwag sumali ang mga forum ng OSDev.org at simulang magtanong ng halatang mga katanungan. Ito ay simpleng magreresulta sa "Basahin ang Manwal" mga sagot. Dapat mong subukang basahin ang Wikipedia, at ang mga manwal para sa iba't ibang mga tool na nais mong gamitin.
  • Huwag magsimula isang proyekto ng operating system upang simulan ang pag-aaral ng programa. Kung hindi mo pa alam ang C, C ++, Pascal, o ibang angkop na wika sa loob, kabilang ang pagmamanipula ng pointer, mababang antas ng manipulasyong bit, paglilipat ng kaunti, wika ng pagpupulong na inline, atbp., Hindi ka handa para sa pagpapaunlad ng operating-system.
  • Kung gumawa ka ng isang masamang payo, tulad ng pagsulat ng mga random byte sa mga random na I / O port, masisira mo ang iyong OS, at maaari (sa teorya) iprito ang iyong hardware.

Inirerekumendang: