Si të shkruani një sistem operativ. Si të zhvilloni një sistem operativ për një kompjuter

Zharoznizhuvalny për fëmijët njihet si pediatër. Dyshohet se ka situata të ndihmës së pavolitshme për gratë me ethe, nëse fëmijët kanë nevojë të japin pafajësisht. Babai Todi merr përsipër shkathtësinë dhe kapsllëkun e barnave për uljen e temperaturës. Si mund t'u jepni fëmijëve një gji? Si mund ta mposhtni temperaturën e fëmijëve më të mëdhenj? Cilat janë më të mirat?

Shkurtesa "NT" deshifrohet nga marketingu si "Teknologjitë e Reja", megjithëse në dokumentacionin e projektimit nënkuptonte emrin e njërës. Në të djathtë, Windows NT u shpërnda për një të ri, i cili nuk u lëshua ende në 1988, procesor Intel i860. Emri i koduar i Yogo Bula "N10" ( N T en).

Versioni i parë është Windows NT 3.1, u lëshua 5 vjet më vonë, në 1993 u lëshua. Për momentin, ekipi kishte tashmë 250 projekte.

Windows syogodnі

  • 1 miliard koristuvachiv
  • 140 milionë rreshta në kod (përfshirë kodin e provës dhe mjetet)
    Kodi i Windows është edhe më i vjetër. Si pjesë e tij është shkruar 20 vite më parë, pasi i është hequr versioni aktual. Për shembull, kodi i Shërbimeve të Uebit në Pajisje (WSD). Windows Vista Që nga versioni i tij i parë, kodi GDI është në fazën përfundimtare të zhvillimit të tij dhe mund të mos ndryshojë, kodi DirectX është akoma i mirë, por po ndryshon në mënyrë aktive menjëherë.
  • 8000 kopje
  • 36 moв lokalizimi
  • 20 priza shkëmbore

Shpërndarja e Windows

20-30 vjet më parë, vetëm një metodologji e programit "Vodospad" iu hoq. Fituar e fundit:

Specifikimi → Projektimi → Realizimi → Testimi → Prodhimi.

Një metodologji e tillë është praktike për projekte të vogla. Për një produkt të tillë, si Windows, kërkohen metodologjitë e mëposhtme:

  • Modeli i ciklit të produktit
  • Procesi i softuerit të ekipit
  • "Programi ekstrem"

Të gjitha këto metodologji të kalimit të parë janë jetëshkurtër. Në fakt, zhvillimi i komandës dhe faza e zhvillimit të komponentit të grupit të zhvillimit të zhvilluesve në Windows bazohet në zhvillimin e metodologjisë së zhvillimit të zhvillimit.
Për Windows, si një produkt në tërësi, Modeli i Ciklit të Produktit:

  • Periudha 3-4 muaj
  • Periudha e mesme - "rënia e ujit"

Problemi i marketingut të një produkti të një shkalle të tillë është se teknologjia zgjat një orë. Në skenën e kallirit ka probleme që mund të gjenden në jo pak raste. Ale Edina rіch, yaka filloi, tse ato, si ndryshon gjithçka. Për gurin e prizës:

  • Ndryshimi i Vimogi
  • Aftësia për të ndryshuar
  • Grafiku është robotik për të ndryshuar
  • Ndrysho projektin
  • Ndryshimi Corystuvachі

Të parëndësishme për ata që janë përgjegjës për zhvillimin e komandës në një mënyrë të arsyeshme, ekzistojnë rregulla "universe":

  • Lëshimi i versioneve të ndërmjetme (piketa, beta, CTP) për një gamë të gjerë testuesish
  • Lëshimi i pjesëve të brendshme nga ciklet e shkurtra (1 shtesë)
  • Thjeshtësia dhe besueshmëria e dizajnit
  • Rishikimi i kodit të specialistëve dhe komandës
  • Njësi-test
  • Ndërtoni teste verifikimi
  • Be-yake midis maє buti yakisnim të palosur (ato që janë shkruar, maє pratsyuvati)

Për veten time, dua të them, për muajin e robotikës me Windows 7 build 6801, i cili është OS kryesor në kompjuter në shtëpi, Unë kam formuluar një armiqësi pozitive për zbirkën.

I gjithë procesi i zhvillimit të Windows nxitet rreth derës:

  • Impulsi i çmimit për produktin
  • Mos e shtypni kutinë
  • Schodenne test automatik
  • Integrimi në fazën fillestare
  • Përditësimi i Razrobniki
  • Linja e dukshme e produktit

Nëse ishte më herët, kishte vetëm një problem me kodin dhe të gjithë shitësit bënë ndryshime në të. Ekipi ynë i zhvilluesve mur-më-mur është i mrekullueshëm, por nuk është i shkëlqyeshëm. Shtë e mundur të përshtateni pa giloks të zgjatur, në mes - kryesori është WinMain. Laboratorët e lëkurës kanë prizat e tyre lokale, në të cilat integrohen vetë. Përmbysja e ndryshimeve do të integrohet me WinMain.

Cikli i fillimit:

  • 15:00 - Miratuar përpara integrimit të ndryshimit në sistemin e kontrollit të kodit të hyrjes
  • 6 versione të palosshme (falas / e kontrolluar - x86, x64, IA64)
  • 18:00 - Versione të reja në dispozicion për testim
  • Versioni i ri do të instalohet në disa mijëra stacione pune dhe serverë për testim
  • Automatizimi i testit të stresit
  • 05:00 – Analizohen dhe diagnostikohen protokollet e testimit
  • 09:00 - Detajet u shpërndahen automatikisht ekipeve
  • Ora 09:30 Narade e skuadrave kryesore me qëllim të caktimit të golave

Të gjithë pjesëmarrësit në projekt, përfshirë ata që i gjejnë, janë në gjendje të luajnë versione industriale në kompjuterët e tyre të punës (dhe në shtëpi).

Kush mund të shkruajë Windows?

  • C, C ++, C #, Assembler (x86, x64, IA64)
    Asembleri do të ngecë në fund të komunikimit të ndërlidhur në situata të qeta, nëse nuk bëni dot pa të.
  • Visual Studio, Source Insight, build, nmake
  • Burimi Depo - sistemi i kontrollit të tekstit dalës
  • WinDbg, KD, NTSD - zhvillues

Shumë mjete të brendshme, të tilla si ndërtimi, mund të shtohen nga microsoft.com/whdc/devtools.

Ndryshimet e kernelit të Windows 7

Kerneli i Windows 7 është bërë i vetëdijshëm për ndryshime të tilla:

  • Rifaktorimi
    Pse nuk mund ta shihni sistemin grafik Windows?
    Në kuptimin teknik, sistemi grafik në Windows nuk është i pavarur, por pjesë e sistemit Win32.
    Në Windows 7, rifaktorimi i komponentëve me rrënjë të ulët i shtohet problemit të thyerjes së komponentëve të rënë. Nuk do të jetë e dobishme për ata që janë gërryes, do të shfaqen vetëm Dll të reja, për shembull, kernel32.dll u shpërnda në kernel32.dll dhe kernelbase.dll.
    Çmimi i bitty dha mundësinë e shikimit të një kerneli minimal, të quajtur MinWin (20 megabajt në disk).
  • Mbështetje EFI për x86 dhe x64 (si Vista SP1)
    Bagato virobnik_v do të jetë në gjendje të përdorë BIOS-in për të hequr qafe EFI.
  • Kriptimi nga VHD (virtuale hard disk)
  • Fillimi paralel i anekseve dhe fillimi i shërbimeve
    Kur Windows është i kyçur, do të duhet një orë e parëndësishme për të marrë hua pemën shtesë. Menaxheri PNP është përgjegjës për funksionimin e drejtuesve të autobusit (PCI, USB, FireWire, etj.), përveç faktit që ka bashkëngjitje є. Për më shumë se një orë, procesori kontrollon, për sa kohë që bashkëngjitja jep një dalje (ose jo). Gjithashtu, për të marrë një shtojcë në një gomë, ju duhet një përvojë. Nëse erë e keqe є, atëherë era e keqe do të dalë, dhe nëse jo, atëherë do të kontrollohet dhe procesori do të jetë i papunë. Paralelisht me vikonannya tsikh zhdan, së shpejti do të jetë ora e ngatërrimit.
  • Pamja e kyçjes së dispeçerit nga planifikuesi dhe kyçja PFN nga menaxheri i memories
    Pjesa tjetër e shpejtësisë së orës së procesorëve nuk rritet, dhe zhvillimi i procesorëve nuk rritet, dhe zhvillimi i procesorit është paralel me instalimin e udhëzimeve në të njëjtën bërthamë, si dhe në të njëjtën sistem (multicore). Zvyazyk z zim, bulo kryer robot i madh schodo shkallë e reduktuar.
    Dy bravë "më të nxehta", si boulat në bërthamë, bllokimi i Dispeçerit dhe bllokimi PFN janë të dukshme.
    Dispeçer bllokohet vikoristovovsya një planifikues për një orë unë do të bëhet rryma. U pa Tsei lok bulo dhe rrjedha e "ochіkuvannya" u shpërnda në grykë:
    • Ochikuvannya: Në proces
    • Ochikuvannya: E përfunduar
    • Ochikuvannya: Të shpërndara
    Kyçja PFN përdoret për ndryshimin e atributeve të anëve të memories fizike. Në sistemet me shumë procesor, procesori i lëkurës mundësohej nga aksesi në një bllokim të vetëm, i cili çoi në vitrate të mëdha për një orë.
  • Mbështetje për 256 procesorë logjik
    Më parë, në Windows, maska ​​e afinitetit ishte një fjalë e keqe në makinë. Tse bulo depërtoi me ata që e njohin aq lehtë procesorin - bit skin є procesor. Me sa duket, në një sistem 32-bit, mbështeten 32 procesorë logjikë, dhe në një sistem 64-bit - 64.
    Në Windows 7, si rezultat i kalimit në maskën e afinitetit të modelit të segmentit, mund të shtohen 256 procesorë logjikë. Procesorët janë bërë një grup / segment. Grupi i lëkurës mund të ketë deri në 64 procesorë. Si rezultat, ekziston një sasi e madhe konfuzioni, programet e vjetra "fillojnë" duke privuar procesorët në një grup, dhe programet e reja që kanë ndërfaqe të reja, punojnë me procesorë në sistem.
  • Kursimi i reduktuar i energjisë: lidhja e prizave të procesorit Problemi i kursimit të energjisë nuk është i privuar nga kompjuterët notebook, por nga qendrat e të dhënave për pronarët. 2% e energjisë elektrike mbështetet nga qendrat e të dhënave kompjuterike. Bagato hto prej tyre vimikє pjesë e serverëve të tyre për një orë aktivitet të ulët të koristuvachiv (wihіdnі ditë).
    Bulo është vendosur, kështu që ju mund të shihni të gjithë prizën e procesorit, jo vetëm një bërthamë për procesor, sepse Në fund të seancës, mund të aksesoni të gjithë infrastrukturën e aksesit të prizës (kontrolluesi i memories).

Windows i mbështetur, i përditësuar

Më parë, ishte më e zakonshme që ato të ishin kumulative (të grumbulluara). Tse nënkuptonte se nëse një kod varri hiqej në një komponent të përditësuar të hershëm, atëherë një version i ri do të ishte një marrje e një kodi. Por jo të gjithë koristuvacham kanë nevojë për të gjitha përditësimet, era e keqe mund të duket si një konfigurim.

Tani shkruani lëshimin (RTM) për versionin Windows 2 të kodit të daljes:

  • RTM GDR (Shpërndarja e Përgjithshme e Publikimit)
    Përfshirë ato ndryshime jo të pasura, të cilat përdoren për të gjithë. Rregullimi i Zdebіlshogo është i sigurt.
  • RTM LDR (Limited Distribution Release)
    Ora Pid e përditësimit të klientit Përditësimi i Windows Unë do të zgjedh drejtuesin e kërkuar dhe do të vendos kodin prej tij.

Instalimi i sigurisë së përmirësuar

Roboti nuk ka nevojë të përmirësohet për shkak të mospërputhjes. Є masa menyra te ndryshme viyavlennya - komandat e brendshme bezpek, partnerët bezpek, rozrobniki. Nëse zbulohet incidenca, duhen riparuar 2 procese paralele:

  • Zhvillimi i një ridrejtimi për të gjitha platformat
  • "Opsionet" e Poshuk
    Një shaka në shkallë të gjerë opsionesh të ngjashme për urgjencë në të gjitha platformat. Poshuk identik me kodin, por i ngjashëm.

Kur bëhet rishikimi, riparohen rishikimet e kodit. Nëse era e keqe përfundon, drejtimi për t'u integruar në palosjen dhe palosja përsëri në provë:

  • Testimi manual dhe automatik i komponentëve
  • Testimi automatik i formateve të skedarëve, komponentëve të hemstitch toscho. (Më shumë se një milion opsione)
  • Testimi i sistemit në tërësi, duke përfshirë testimin e vlerave ushqyese

Vetëm korrigjimet, të cilat plotësojnë kriteret e cilësisë, lejohen të lëshohen në Windows Update and Download Center.

  • Përpara>

Libri "Sistemi Operacional nga 0 në 1" u botua në GitHub dhe çdo muaj 2000 yje dhe 100 pirunë. Sapo të lexoni emrin, mund të hapni sistemin tuaj operativ - dhe, por, pak nga të gjitha programet mund të jenë të lezetshme.

Zavdyaki tsіy knizі dhe shikoni ofensivën:

  • Të dini se si të konfiguroni sistemin operativ bazuar në dokumentacionin teknik të skedarit. Në jetën reale, është kaq mirë, saqë nuk mund ta përdorësh Google për mesazhe të shpejta.
  • Shikoni, sikur komponentët e kompjuterit ndërlidhen një me një, nga softueri te porta.
  • Filloni të shkruani vetë kodin. Nëse kopjoni kodin, nuk do të mund ta shihni problemin. Para fjalimit, kopjimi nuk është i sigurt.
  • Shikoni të gjitha mjetet e disponueshme për shpërndarje me rrënjë të ulët.
  • Shikoni montuesin tim.
  • Kuptoni pse ruhen programet, si p.sh. sistemi operativ për nisje. Një vështrim i vogël në tsієї ato për mi të varur u dhanë nga.
  • Merreni, si të kryeni programet e mira direkt në llogaritë e GDB dhe QEMU.
  • Programi Mova C. Shvidko është i mundur për të zotëruar atë.
  • Njohuri bazë për Linux. Mjaft gjallëri në faqen tonë.
  • Njohuritë bazë të fizikës: atomet, elektronika, protonet, neutronet, napruga.

Një koleksion i burimeve të kernelit për sistemet x86. Pjesa 1. Vetëm thelbi

Duke shkruar një kernel të thjeshtë, ju mund të kyçni sistemin x86 pas ngarkuesit GRUB. E gjithë bërthama shfaqet në ekran dhe në ekran.

Yak do të garantojë një sistem x86?

Para së gjithash, shkruani thelbin, le ta heqim qafe, pasi sistemi do të bllokohet dhe do të transferojë kontrollin në bërthamë.

Ka më shumë regjistra procesorë përpara fillimit të së njëjtës kohë. Regjistri porositet në adresën e udhëzimit (Instruction Pointer, EIP), dhe adresën e memories, e cila duhet të vizitohet nga procesori i udhëzimit. EIP për ndërrimin e rrugëve 0xFFFFFFF0... Në një renditje të tillë, procesori x86 në pajisjen harduerike i cakton robotit adresën 0xFFFFFFFF0. Për pjesën tjetër të 16 bajt të hapësirës së adresave 32-bit. Adresa qi quhet vektor i rivendosjes.

Tani karta e kujtesës për chipset është garantuese, por 0xFFFFFFF0 ndodhet në pjesën origjinale të BIOS-it, jo në RAM. Kam një orë për të kopjuar BIOS-in tek vetja në RAM për më shumë akses i shpejtë... Adresat 0xFFFFFFF0 janë pak më pak udhëzuese për të lundruar në një adresë në memorie, kështu që një kopje e BIOS-it mund të ruhet.

Pra, kontrolloni kodin BIOS. Një koleksion i bashkëngjitjeve të BIOS shukaє, nga të cilat mund të kontaktoni me rendin e vendosur. Numri magjik është duke pëshpëritur, kështu që është një shenjë dhe është kur është sekret (511 dhe 512 bajt të sektorit të parë që e fajëson atë. 0xAA55).

Nëse BIOS e njeh bashkëngjitjen magjepsëse, mund ta kopjoni atë në vend të sektorit të parë në shtojcën në RAM, duke e rregulluar atë nga adresa fizike 0x7c00; pastaj shkoni te adresa dhe kodi vikonuє zavanazhennogo. Kodi Tsey që do të thirret bootloader.

Bootloader do të shtojë kernelin në adresën fizike 0x100000... Të gjithë kernelet e shkëlqyera në sistemet x86 kanë të njëjtën adresë si pika e fillimit.

Të gjithë procesorët x86 mund të riparohen te roboti në një modalitet të thjeshtë 16-bit, i cili quhet regjimi real... GRUB bootloader remixє mode 32-bit mënyra e rrëmbimit, instaloni bitin e poshtëm të regjistrit CR0 1 ... Në këtë renditje, kerneli është i kyçur me një modalitet të rrëmbyer 32-bit.

Respektoni problemin me kernelin Linux GRUB për të bllokuar protokollet e bootstrap Linux dhe për të nisur kernelin në modalitetin real. Bërthama zhvendoset spontanisht në regjimin e rrëmbimit.

Çfarë na duhet?

  • kompjuter x86;
  • Linux;
  • ld (GNU Linker);

Një pikë hyrje është vendosur në montues

Yak bi nuk donte të ndërpritej vetëm nga Ci, kështu që do të ishte e mundur të shkruante në assembler. Ne do të shkruajmë një skedar të vogël në një të ri, sikur do të ishte një pikë e dobishme për kernelin tonë. Gjithçka, fitoni robitime - wіklіkati zvnіshnyu funktsіyu, shkruar në Сі, që zupinyati programet potik.

Si mund ta bëjmë kështu, pse kodi duhet të lidhet me të njëjtën pikë?

Ne do të vikoristovuvati script-liker, i cili z'єdnu ob'єktnі skedarë për rrënjën e skedarit. Për një numër skriptesh, duket se dëshironi të shtoni të dhënat për adresën 0x100000.

Kodi i montimit të boshtit:

kernel.asm bit 32; direktiva nasm - seksione 32 bit. .bss resb 8192; 8 KB për stack_space:

Udhëzimet e para, bitet 32 ​​nuk janë asamblerë x86 në instruksione. Kjo është një direktivë për montuesin NASM, i cili përcakton gjenerimin e kodit të procesorit, i cili është i saktë në modalitetin 32-bit. Vipadku ynë nuk është obov'yazkovo, ale zagalom corino.

Nga rreshti tjetër, seksioni me kodin duhet të riparohet.

Global është një direktivë NASM për t'i bërë simbolet në kodin e daljes globale. Kjo renditje, lidhësi e di, është fillimi i simbolit - pika jonë e hyrjes.

kmain - i njëjti funksion siç do të jetë në skedarin kernel.c. e jashtme do të thotë që funksioni është i zhveshur këtu në mes të ditës.

Pastaj shkoni te funksioni start, te wiklica te funksioni kmain dhe te procesori i instruksioneve hlt. Në fakt, çelësin e kemi parë tashmë nga klikimi i udhëzimeve.

Në Ideal, ne duhet të shohim memorien dhe ta përdorim atë si një tregues stek (esp). Megjithatë, duket sikur GRUB tashmë po e bën atë për ne. Tim nuk është më e rëndësishmja, e gjitha është e dukshme në seksionin BSS dhe zhvendoset në kalli i treguesit të stivës. Ekziston një udhëzim resb, pasi rezervës i jepet një numër bajtash. Menjëherë përpara wiklik kmain, treguesi i stivës (esp) instalohet në udhëzimet e kërkuara mov.

Thelbi në Сі

Ne kemi funksionin kmain () wiki në kernel.asm. Në një renditje të tillë, kodi ynë "sishny" i ma raportit vikonannya z kmain ():

/ * * kernel.c * / void kmain (void) (const char * str = "kerneli im i parë"; char * vidptr = (char *) 0xb8000; // video mem fillon këtu. unsigned int i = 0; unsigned int j = 0;< 80 * 25 * 2) { /* blank character */ vidptr[j] = " "; /* attribute-byte - light grey on black screen */ vidptr = 0x07; j = j + 2; } j = 0; /* this loop writes the string to video memory */ while(str[j] != "\0") { /* the character"s ascii */ vidptr[i] = str[j]; /* attribute-byte: give character black bg and light grey fg */ vidptr = 0x07; ++j; i = i + 2; } return; }

Gjithçka që mund të bëjmë për të thyer kernelin tonë është të pastrojmë ekranin dhe vivede nga rreshti "kerneli im i parë".

Unë do të bëj një shfaqje mo vidptr, të cilën do ta shtoj në adresë 0xb8000... Nga adresa në modalitetin e vjedhur, kujtesa video duhet të riparohet. Për të futur tekstin në ekrane, rezervuari është 25 rreshta me 80 karaktere ASCII secili, i riparuar nga 0xb8000.

Simboli i lëkurës nuk përfaqësohet me 8 bit, por me 16. Bajti i parë ka vetë simbolin, dhe në tjetrin - atributin-bajt. Fitimi i formatimit të simbolit, për shembull, ngjyra yogo.

Për të shtuar ngjyrën e gjelbër në atë të zezë, shkruani karakterin në bajtin e parë dhe vlerën 0x02 në tjetrin. 0 do të thotë tllo e zezë, 2 - ngjyra jeshile për tekstin.

Boshti i tavolinës së jakës:

0 - E zezë, 1 - Blu, 2 - Jeshile, 3 - Cyan, 4 - E kuqe, 5 - Magenta, 6 - Kafe, 7 - Gri e hapur, 8 - Gri e errët, 9 - Blu e hapur, 10 / a - Jeshile e hapur, 11 / b - Cyan i lehtë, 12 / c - Drite e kuqe, 13 / d - E purpurt e lehtë, 14 / e - Kafe e lehtë, 15 / f - E bardhë.

Bërthamat tona do të kenë një tekst gri të çelur në të zezë, kështu që atributi ynë i bajtit është vlera matim 0x07.

Cikli i parë i programit ka një simbol bosh për të gjithë zonën 80 × 25. Pastro ekranin. Në ciklin ofendues, simbolet nga rreshti me terma zero "kerneli im i parë" me atributin bajt shkruhen në "memorien video", e cila është 0x07. Tse vivede rresht në ekran.

Pjesa e lumtur

Ju lutemi, transferoni kernel.asm në një skedar të veçantë pas ndihmës së NASM; Më pas, me ndihmën e GCC, përpiloni kernel.c me një skedar tjetër. Atëherë ju duhet të vini në thelbin e ngatërruar, që të mund të fitoni.

Për të gjithë ne do të vikoristovuvati një skenar kumbues, i cili kalohet ld si argument.

/ * * link.ld * / OUTPUT_FORMAT (elf32-i386) HYRJA (fillimi) SECTIONS (. = 0x100000; .text: (* (. text)) .data: (* (. data)) .bss: (* ( .bss)))

do ta veshë format vivodu yak 32-bit Format i ekzekutueshëm dhe i lidhur (ELF). ELF është formati standard i skedarit binar për sistemet e arkitekturës Unix x86. HYRJA pranon një argument, që do të thotë fillimi i simbolit, që është pika e hyrjes. SEKSIONET- cmimi i pjeses naivazhliv_sha. Në nіy viznachaєtsya paraqitjen e skedarit tonë, karrierës vikonutsya. Mi viznachaєmo, jak Mayut z'єnuvatisya ізні seksione dhe de їх zhvillim.

Në krahët e SECTIONS, një pikë (.) përfaqëson treguesin e pozicionit për promovimet 0x0. Yogo mund të ndryshohet, nga robim.

Duke mahnitur rreshtin që përparon: .tekst: (* (. Tekst)). Zirochka (*) është një karakter i veçantë që mund të përdoret për të krijuar një skedar. Viraz * (. Tekst) nënkupton të gjitha seksionet. Teksti nga të gjithë skedarët hyrës.

Në një renditje të tillë, lidhësi vendos të gjitha seksionet në kodin e skedarëve në një seksion të skedarit, në mënyrë që të mund të kontrollojë adresën në vendndodhjen e skedarit (0x100000). Shkrimi i vlerës së përgjithshme të shpërndarësit për datën 0x100000 + madhësia e seksionit të prerë.

Në mënyrë të ngjashme, ajo shihet nga seksionet e tjera.

Grub dhe Multiboot

Tani skedarët janë gati përpara se kerneli të dalë. Ale ka humbur një tjetër kroç.

Isnu standard për bërthamat x86 nga ngarkuesi që do të thirren Specifikimi i shumëboot... GRUB do ta mbyllë kernelin tonë jashtë kutisë, nëse jeni të kënaqur me specifikat.

Naslіduuchi їх, thelbi i keqdeklarimit ka një titull në 8 kilobajt e tij të parë. Për më tepër, i gjithë koka është fajtore për fushat e hakmarrjes 3, si є 4 bajt:

  • magjike fushë: numër magjik i hakmarrjes 0x1BADB002 për identifikimin e kernelit.
  • fushë flamujt: nuk na duhet, mund të vendoset në zero
  • fushë shuma e kontrollit: për aq sa ndodhet pjesa e përparme e të dyve, zero është fajtor.

Kernel.asm ynë do të bëhet si ky:

;; kernel.asm; direktiva nasm - 32 bit 32 seksion .tekst; përafrimi i specifikave të shumëboot 4 dd 0x1BADB002; dd magjike 0x00; flamujt dd - (0x1BADB002 + 0x00); shuma e kontrollit. m + f + c fajësoj butti 0 Start globale kmain e jashtme; kmain përcaktohet në fillimin e skedarit c: cli; bllokon ndërprerjet mov esp, stack_space; vendos treguesin e stivës thirr kmain hlt; ndal seksionin e CPU-së .bss resb 8192; 8 KB për stack_space :

Unë do të jem thelbi

Tani skedarët janë të redaktueshëm nga kernel.asm dhe kernel.c në mënyrë që ne të mund të lidhim skriptin tonë.

Nasm -f elf32 kernel.asm -o kasm.o

Rreshti Tsey drejton asemblerin për mbylljen e skedarit të objektit kasm.o në formatin ELF-32.

Gcc -m32 -c kernel.c -o kc.o

Opsioni "-c" është një garantues, në mënyrë që të mos ketë vonesa në përpilim.

Ld -m elf_i386 -T link.ld -o kernel kasm.o kc.o

Provoni të ekzekutoni lidhësin me skriptin tonë dhe hapni një skedar të quajtur bërthama.

Nalashtovuєmo grub se kernel i ekzekutuar

GRUB wimag, por kerneli është i kënaqur me kernel- ... Riemërtoni kernelin në atë. Emri i tij është kernel-701.

Tani vendoseni në drejtori / çizme... Që tsogo të dijë të drejtat e një super koristuvach.

Në skedarin e konfigurimit GRUB grub.cfg, jepni sa vijon:

Titulli myKernel root (hd0,0) kernel / boot / kernel-701 ro

Mos harroni të rregulloni me siguri direktivën e menusë së fshehur є.

Rinisni kompjuterin tuaj dhe ndryshoni listën e bërthamave me tuajën. Vibroni Yogo dhe provoni:

Tse është thelbi juaj! Futja e Dodamo / sistemi vivedenny.

P.S.

  • Për çdo truk nga thelbi është më bukur të përdorni një makinë virtuale.
  • Për të ekzekutuar kernelin brenda grub2 konfigurimi është fajtor për viglyadati si ky: menuentry "kernel 7001" (set root = "hd0, msdos1" multiboot / boot / kernel-7001 ro
  • nëse doni emulator vikoristovuvat qemu, vikoristovyte: qemu-system-i386 -kernel kernel

Origjinali: AsmSchool: Bëni një sistem operativ
Autori: Mike Saunders
Data e publikimit: 15 Prill 2016
Transferimi: A. Panin
Data e transferimit: 16 Prill 2016

Pjesa 4: Mayuchi navichki, otrimanі për një orë leximi të artikujve të mëparshëm të serisë, mund të vazhdoni me zhvillimin e sistemit tuaj operativ të energjisë!

Për kë nevojitet çmimi?

  • Për parime më të qarta të përpiluesve robotikë.
  • Për lidhje më të qarta të procesorit qendror.
  • Për të optimizuar kodin tuaj për produktivitet.

Brenda pak muajsh kaluam një rrugë të palosshme, e cila ishte e rrënjosur në një program të thjeshtë asembler për Linux dhe përfundoi në statusin e fundit me një seri kodesh të pavarura, të cilat mund të shihen në një kompjuter personal pa sisteme operative. Epo, menjëherë do të përpiqemi të marrim të gjithë informacionin së bashku dhe të vendosim një sistem operativ referencë. Pra, nga rruga e Linus Torvalds, vetëm për kalli, lexoni në vaktin tjetër: "Cili është sistemi operacional? Si mund t'i shohim funksionet?".

Në këto statistika, ne do të fokusohemi vetëm në funksionet kryesore të sistemit operativ: programet e bllokuara dhe të zgjedhura. Palosja e sistemeve operative dhe shfaqja e më shumë funksioneve, të tilla si menaxhimi i një memorie virtuale dhe përpunimi çanta të thurura, por zbatimi korrekt i raketave të kërkuara pa ndërprerje në robotë, në këto statistika është e pamundur të kuptohen funksionet bazë, por në çdo sistem operativ. Muajin e kaluar ne u shkatërruam program i vogël, Yaka u vendos në sektorin 512-byte të disketës (sektori i parë), dhe në të njëjtën kohë tre funksione shtesë iu shtuan funksionit të ruajtjes së të dhënave shtesë nga disku.

Shpërndarja e sistemit zavantazhuvach

Ne mund të kishim provuar të maksimizonim shpejtësinë e kodit binar të sistemit tonë operativ dhe duke e ndryshuar atë në sektorin e parë 512-byte të disketës, në mënyrë që të mund të ngatërrohet me përdorimin e BIOS-it, por në këtë rast, do të nuk mund të funksionojë. Në këtë rast, ne do të jemi fitimtarë sa 512 bajt për shpërndarjen e kodit binar të një bllokimi të thjeshtë të sistemit, i cili mund të përdoret për të bllokuar kodin binar të kernelit OS në RAMі vikonuvati yogo. (Kur vetë kerneli i OS është i prishur, është sikur kodi binar i programeve të tyre nga disku është i bllokuar, dhe është gjithashtu e njëjta gjë, por nuk bëhet fjalë për këtë.)

Ju mund të regjistroheni kodi i daljes Ne do të shikojmë statistikat për aplikimet për hir të www.linuxvoice.com/code/lv015/asmschool.zip. Dhe kodi i bllokimit të sistemit tonë nga skedari me boot.asm:

BITS 16 jmp fillimi i shkurtër; Shko te mіtka kapërceni përshkrimin e diskut nop; Shtesa përpara përshkrimit të diskut% përfshin fillimin "bpb.asm": mov ax, 07C0h; Adresat e bllokuara mov ds, ax; Danih segment mov ax, 9000h; Përgatitni stack mov ss, ax mov sp, 0FFFFh; Stack po rritet poshtë! cld; Vendosja e drejtpërdrejtë mov si, kern_filename thirrni load_file jmp 2000h: 0000h; Shkoni te kerneli i binarizuar në skedarin e kernelit kern_filename db "MYKERNELBIN"% përfshin "disk.asm" herë 510 - ($ - $$) db 0; Përditësimi i kodit binar me zero deri në 510 bajt dw 0AA55h; Shenja e fundit të kodit binar të tamponit të bllokimit të sistemit:; Veshi i tamponit për hapësirën në disk

Në një kod të tërë të udhëzimit të parë të procesorit qendror - udhëzimi i jmp, i cili ishte i rrënjosur në shkronjën e direktivës BITS, për t'i treguar asamblerit NASM për faktin që është zgjedhur modaliteti 16-bit. Ju mësoni përmendësh melodiozisht nga statistikat e përparme të serisë, versionin e BIOS-it, si ta ngatërroni atë, lexoni kodin binar 512 bajt nga disku i kodit binar 512 bajt nga vetë kalli, dhe ne duhet të kalojmë kalimi në distinktivin për kalimin set special Danih. Natyrisht, muajin e kaluar ata thjesht shkruan kodin në veshin e diskut (me ndihmën e programit dd), dhe sita e diskut ishte bosh.

Ne do të infektohemi me një disketë me një sistem skedarësh MS-DOS (FAT12) dhe për të punuar saktë me këtë sistem skedarësh, do të jetë e nevojshme të shtojmë një grup të dhënash speciale në rendin e një pjese të një sektori. . I gjithë grupi quhet një bllok parametrash në BIOS (BIOS Parameter Block - BPB) dhe për të zbuluar të dhëna të tilla, të tilla si një disk drive, një numër sektorësh dhe deri më tani. Faji nuk është fajtor për punën tonë në këtë fazë, të cilës tema të ndryshme mund t'i caktohen më shumë se një seri artikujsh, për të cilën kemi ndryshuar të gjitha udhëzimet dhe të dhënat përkatëse në të njëjtin skedar të kodit dalës nga bpb. asm.

Në fakt, direktiva nga kodi ynë është jashtëzakonisht e rëndësishme:

% përfshijnë "bpb.asm"

Kjo është një direktivë NASM që ju lejon të përfshini kodin e daljes të caktuar në skedar përpara skedarit të transmetimit të kodit të daljes gjatë procesit të montimit. Në këtë mënyrë, ne mund ta bëjmë sa më të shkurtër kodin e bllokimit të sistemit tonë dhe të marrim parasysh të gjitha detajet e zbatimit të bllokut të parametrave BIOS në skedarin premium. Blloku i parametrave në BIOS është fajtor për rrënjosjen përmes tre bajteve pas cob-it të një sektori, dhe meqenëse instruksioni jmp merr vetëm dy bajta, do të duhet të kthejmë instruksionin nop (emri është deshifruar si "pa operacion" - procesi i futjes ) s mark zapovnennya bytes, karrierës së tejmbushur.

Robot me një pirg

Ne do të jemi në gjendje të shohim udhëzimet, të ngjashme me ato që shihen në statistikat e fundit, për përgatitjen e regjistrave të asaj rafte, si dhe udhëzimet për cld (është i koduar si "drejtim i qartë"), në mënyrë që të lejojë Krijimi i udhëzimeve të tilla drejtpërdrejt për këngëtarët zbіlshuvati vlerën e regjistrit SI, por chi nuk ndryshon yogo.

Shkrimi në adresën e rreshtit në regjistrin SI dhe funksionin tonë load_file. Mjerisht, për të kërkuar hilin - edhe ata nuk e prishën të gjithë funksionin! Pra, është e vërtetë, zbatimi i ale mund të gjendet në skedarin e kodit të hyrjes, i cili mund të lidhet nga disk.asm.

Sistemi i skedarëve FAT12, i cili mund të ruhet në disqe, të cilat mund të formatohen në MS-DOS, - një nga më të thjeshtat sistemet e skedarëve, por për robotët me її së bashku, kërkon gjithashtu një kod chimaly obsyag. Programi load_file do të jetë afër 200 rreshtave dhe nuk do të shfaqet në statistika, për shkak të procesit të hapjes së sistemit operativ, dhe jo drejtuesit për sistemin e skedarëve të këndimit, nuk është më pak e arsyeshme të shikosh një vend të tillë në një revistë në një revistë. Ne ndërruam skedarin e kodit të daljes disk.asm praktikisht përpara se të përfundonim skedarin e transmetimit të kodit të daljes dhe mund ta harrojmë atë. (Është struktura e sistemit të skedarëve FAT12, mund të lexoni pamjen e mrekullueshme rreth adresës http://tinyurl.com/fat12spec, për të parë skedarin e skedarit me kodin disk.asm - kodi që gjendet në e reja, me mirësi .)

Në çdo rast, programi load_file do të shtojë kodin binar në skedarin me im'yam, të vendosur në regjistrin SI, segmenti 2000 nga zsuvom 0, në mënyrë që të mund të shkojmë te veshi i parë për një vizitë. Para së gjithash - thelbi i sistemit operativ është i kyçur dhe sistemi është i mbyllur;

Ju e keni vënë re në mënyrë melodioze se MYKERNELBIN duhet të zëvendësohet me MYKERNEL.BIN si skedari kernel i sistemit operativ në kodin tonë, si zëvendësim për MYKERNEL.BIN, pasi do të përshtatet në skemën e emrave 8 + 3, që do të jem unë fitues në floppy disqe në DOS. Në fakt, sistemi i skedarëve FAT12 do të jetë në gjendje të shfaqë emrat e skedarëve të brendshëm dhe skedari do të dërgohet në skedar, pasi garantohet se nuk do të jetë në gjendje të zbatojë mekanizmin e pikës së ngarkesës brenda kornizës së skedarit tonë. sistemi i përpunimit.

Duke dërguar një rresht me një direktivë për të lidhur skedarin e kodit të daljes disk.asm, hiqen dy rreshta, të cilët përdoren për të përditësuar kodin binar të enkriptimit të sistemit me zero deri në 512 bajt dhe për të mundësuar fundin e bitit. kodi i statusit (si rezultat). Nareshty, për shembull tek kodi, "buffer" i mint është retushuar, pasi zgjidhet nga programi load_file. Kreu, softueri load_file kërkon një hapësirë ​​të madhe në memorien operative për të shfaqur disa nga ngjarjet e ndërmjetme në procesin e dërgimit të një skedari në disk, dhe ka shumë hapësirë ​​për buferin e administratorit të sistemit, për atë. .

Për një bllokim të sistemit, ndiqni komandën e mëposhtme:

Nasm -f bin -o boot.bin boot.asm

Tani duhet të instalojmë një imazh të një diskete virtuale në formatin MS-DOS dhe të shtojmë kodin binar të bllokimit të sistemit tonë deri në 512 bajtet e para pas komandës vijuese:

Mkdosfs -C floppy.img 1440 dd conv = notrunc if = boot.bin of = floppy.img

Ne do të përfundojmë të gjithë procesin e zhvillimit të bllokimit të sistemit! Tani ekziston një imazh mamo i një diskete të magjepsur, e cila ju lejon të kyçni kodin binar të kernelit të sistemit operativ nga skedari mykernel.bin dhe viconati yo. Na jep një kontroll të pjesës tsikavisha të robotit - raketa e thelbit të sistemit operativ

Thelbi i sistemit operativ

Dëshira ime, që thelbi ynë i sistemit operativ të fitonte mbi ndërmarrjet e rëndësishme të pafuqishme: vivodilo vitannya, mori futjen e koristuvach, u ngrit, i cili u fut nga komanda, kështu që arriti në pikën, dhe kështu disqet. filloi. Kodi i kernelit të sistemit operativ nga skedari mykernel.asm:

Mov ax, 2000h mov ds, ax mov es, ax loop: mov si, prompt call lib_print_string mov si, user_input call lib_input_string cmp byte, 0 je loop cmp word, "ls" je list_files mov ax, si movjcload_, thirrje 32768 jmp loop load_fail: mov si, load_fail_msg thirrje lib_print_string jmp loop list_files: mov si, file_list thirr lib_get_file_list thirrje lib_print_string jmp loop prompt db 13, m3 ", 0 herë në listën e përdoruesit 0 bd 00_in, 0 herë 00_in. "

Përpara se të shikoj kodin, do të respektoj rreshtin e fundit për shkak të direktivës për të lidhur skedarin e kodit të daljes lib.asm, i cili gjithashtu mund të gjendet në arkivin asmschool.zip nga faqja jonë e internetit. Një bibliotekë me programe softuerësh kafe për robotë me ekran, tastierë, rreshta dhe disqe, siç mund ta përdorni edhe ju - në këtë kuti ne përfshijmë një skedar të kodit të daljes në skedarin kryesor të kodit dalës për skedarin kryesor të kerneli më kompakt i sistemit operativ Ju lutemi shikoni informacione shtesë për të gjitha programet e disponueshme, kthehuni te skedari "Program library lib.asm".

Në tre rreshtat e parë të kodit bazë të sistemeve operative ruhet regjistri i segmenteve me të dhëna për t'iu referuar segmentit 2000, i cili i është caktuar kodit binar. Është shumë e rëndësishme për robotët e garantuar të saktë të udhëzimeve të tilla si lodsb, të cilët janë fajtorë për leximin e të dhënave nga segmenti i rrjedhës, dhe jo të çfarëdo lloji. Ne nuk do të jemi në gjendje të shfaqim asnjë operacion shtesë në segmente; sistemi ynë operativ është praktik me 64 KB memorie operacionale!

Dal në kodin e nenexhikut hiqet, në mënyrë që kalli të kthehet në cikël. Tani kemi një nga softuerët nga biblioteka lib.asm dhe vetë lib_print_string për vivedennya vitannya. Bajt 13 dhe 10 përpara një rreshti programesh є simbolet e kalimit në një rresht të ri;

Shkrimi i një programi nga biblioteka lib.asm me emrin lib_input_string, pasi pranojmë hyrjen me tastierë për tastierën shtesë, simbolet merren nga buferi, regjistri regjistrohet në SI. Në vipad tonë, buferi do të ekspozohet më afër fundit të kodit të kernelit të sistemit operativ dhe renditjes fyese:

Kohët e hyrjes së përdoruesit 256 db 0

Dana ju lejon të hapni tampon për 256 karaktere, duke mbushur me zero - kjo është e mjaftueshme për mbledhjen e komandave të një sistemi operativ kaq të thjeshtë, si i yni!

Më jep një shans të rishkruaj koristuvaçin e prezantuar. Sapo bëhet bajt-i i parë i buferit user_input, ne jemi të zhvlerësuar, thjesht duke shtypur tastin Enter, mos futni asnjë komandë; Mos harroni se të gjitha rreshtat përfundojnë me zero karaktere. Me një gradë të tillë, për vypadnі e dhënë është e lehtë të kalosh në kalli ciklin dhe të dish vіtannya. Sidoqoftë, sapo të futim një komandë si kjo, do të kemi një shans të rishqyrtojmë se kush nuk ka hyrë në komandën ls. Deri në momentin e transmetimit, ne mund të mbështesim në programet tona assembler-in tim me më pak se disa bajta, ose edhe t'i harrojmë ato, por edhe mundësinë e kuptimeve dybajtë për fjalët e makinës. Në të gjithë kodin, fjala nga buferi user_input me fjalën e makinës, e cila do të shfaqet në rreshtin ls, dhe në të njëjtën mënyrë, nëse aroma është identike, do të ndryshojë në bllokun e kodit, i cili ndodhet më poshtë. Brenda kuadrit të këtij blloku, kodi do të kopjohet në listën e skedarëve.

Vizita e programeve të palëve të treta

Për sa kohë që nuk e futni komandën ls, ne e lejojmë atë, por për shkak të programeve nga disku, kjo sens do të përpiqet t'jua shtojë atë. Biblioteka jonë lib.asm zbulon zbatimin e sistemit të skedarëve për skedarin lib_load_file, pasi tabela e sistemit të skedarëve për diskun FAT12 është e hapur. Ekziston edhe një regjistër SI vikorist për zgjedhjen e një treguesi për një rresht të hyrjeve nga një koristuvach, të cilit kopjojmë një tregues në regjistrin AX, për të cilin përdoret vlera 32768, që vikoristi të përdoret si zsuv. dosje për regjistrimin e programit me rreze X.

Pse mashkulli im vikoristovuєmo do të vlerësonte yak zsuv për ngatërrimin e kodit binar nga skedari i programit? Epo, është vetëm një nga opsionet në foton e memories për sistemin tonë operativ. Përmes atyre që punojnë në një segment me madhësi 64 Kb, dhe kodi binar i kernelit tonë për ngatërrim për ndryshime është 0, do të marrim 32 KB të parë të memories për kernelin e dhënë dhe 32 Kb për programin. Në një renditje të tillë, zsuv 32768 є në mes të segmentit tonë dhe lejon një sasi të mjaftueshme memorie operacionale si thelbi i sistemit operativ, në mënyrë që programet të përfshihen.

Duke shkruar programin lib_load_file, operacioni është edhe më i rëndësishëm: thjesht nuk mund ta njoh skedarin nga skedarët e dhënë në disk, për arsyen që nuk mund ta nxjerr nga disku, thjesht do ta përfundoj robotin dhe vendose drejt. Pararendësi do të bëhet procesori qendror, i cili do të qëndrojë në procesin e kryerjes së disa veprimeve matematikore dhe për momentin nuk ka rrugë për ne, por në të njëjtën kohë mund të fillojmë manifestimin e kryepunëtorit për pranimin e zgjidhjeve të zgjuara. Nëse programi softuer lib_load_asm do të instalojë çelësin e transferimit, unë do të përdor udhëzimin jc (jump if carry) për të kaluar te kodi i bllokut, brenda kornizës së

Në të njëjtën kohë, për sa kohë që shtyrja nuk është shtyrë, është e mundur të krijohet një program, por programi lib_load_asm ka bllokuar me sukses kodin binar nga skedari me programet në memorien operative për adresën 32768. Dhe për këtë, si në të gjithë programin do të jenë udhëzimet e Vikoristanit ret (për t'u kthyer në kod, ne thjesht do të kthehemi në ciklin e përpunimit të koristuvaçit të prezantuar). Në një renditje të tillë, ata vendosën sistemin operativ: është ndërtuar nga mekanizmat më të thjeshtë për zgjedhjen e komandave dhe programet e caktuara që zbatohen në kufijtë e afërsisht 40 rreshtave të kodit të asemblerit, dua një program të shkëlqyeshëm shtesë nga lib.asm librari.

Për të mbledhur kodin kernel të sistemit operativ dhe ndiqni komandën:

Nasm -f bin -o mykernel.bin mykernel.asm

Kur të jemi gati të shtojmë skedarin mykernel.bin në skedarin e imazhit të disketës. Sapo të mësoni për instalimin e imazheve të diskut pas bashkëngjitjeve shtesë loopback, mund të modifikoni aksesin në imazhin floppy.img në vend të imazhit të floppy.img duke e përshpejtuar atë, por në një mënyrë më të thjeshtë, mund të përdorni mjetin softuer GNU ... Ka shumë programe për robotët me disketë, në të cilët ruhen skedarët dhe skedarët MS-DOS / FAT12, të disponueshme nga depot e paketave softuerike për të siguruar të gjitha shpërndarjet e njohura Linux, kështu që nuk do të jeni në gjendje të përdorni shpejt aptac- merrni, yum utilities, vikoristovutsya për të instaluar paketa softuerike për shpërndarjen tuaj.

Pas instalimit të një pakete specifike softuerike për shtimin e skedarit mykernel.bin në skedarin e imazhit të diskut floppy.img, do të merrni komandën e mëposhtme:

Mcopy -i floppy.img mykernel.bin :: /

Për të brutalizuar respektin për simbolet qesharake në komandë: dy-gdhendur, dy-gdhendur dhe prerje. Tani ne jemi gati para fillimit të sistemit tonë operativ, por po në lidhje me të gjithë kuptimin, nuk kemi ndonjë informacion për të? Le të korrigjojmë jo-inteligjencën, pasi kemi hyrë në skajin e shtesave të thjeshta. Pra, menjëherë do të mund të zhvilloni suplemente për sistemin operativ të qeverisë suaj - vetëm për të parë se si është autoriteti juaj në radhët e gikiv. Ruani kodin fyes nga skedari test.asm:

Org 32768 mov ah, 0Eh mov al, "X" int 10h ret

I gjithë kodi është vetëm një funksion fitimtar i BIOS-it për futjen e karakterit "X" në ekran, pas së cilës ktheni kodin e kontrollit dhe më pas fshini atë - në rastin tonë me kodin є kodin e sistemit operativ. Rreshti org, për të cilin kodi i daljes së programit duhet të riparohet, jo nga udhëzimet e procesorit qendror, por nga direktiva e montimit NASM, për faktin se kodi binar do të kyçet në memorien operative për ndryshime 32768 ...

I gjithë kodi do të duhet gjithashtu të mblidhet dhe skedari binar, i cili ka rezultatet, do t'i shtohet skedarit me imazhin e disketës:

Nasm -f bin -o test.bin test.asm mcopy -i floppy.img test.bin :: /

Tani, bëhuni gati për të parë rezultatet e pa përmirësuara në robotin e fuqisë dhe kopjoni imazhin e disketës pas një simulatori shtesë PC, si Qemu ose VirtualBox. Për shembull, për një qëllim të përgjithshëm, ju mund të vikorstovuvatya komandën e mëposhtme:

Qemu-system-i386-fda floppy.img

Voila: bllokimi i sistemit boot.img, të cilin e integruam në sektorin e parë të imazhit të diskut, bllokon kernelin e sistemit operativ mykernel.bin, siç bën. Futni ls për të refuzuar emrat e dy skedarëve që ishin rrënjosur në disk (mykernel.bin dhe test.bin), për të futur emrin e skedarit tjetër për të shfaqur X në ekran.

Është mirë, apo jo? Tani mund të lexoni guaskën e komandave të sistemit tuaj operativ, të shtoni zbatimin e komandave të reja dhe gjithashtu të shtoni skedarë programe shtesë në disk. Nëse dëshironi të ekzekutoni sistemin operativ në një kompjuter të vërtetë, do të jeni në gjendje të drejtoheni te "Nisja e një bllokimi të sistemit në një platformë të vërtetë harduerike" nga statistika e përparme e serisë - duhet t'i dini vetë këto komanda. Në muajin e ardhshëm, sistemi ynë operativ është më i goditur, duke i lejuar programet e perde të përdorin funksionet e sistemit, dhe me një shkallë të tillë, duke realizuar konceptin e një nënkodi, të rregulluar në shpejtësinë e dublimit të dytë. Më shumë robotë vazhdojnë të përparojnë.

Softueri i bibliotekës lib.asm

Siç thashë më herët, biblioteka lib.asm ka një grup të madh softuerësh të thjeshtë për të fituar brenda bërthamave tuaja të sistemeve operative që program okremich... Ata janë përgjegjës për udhëzimet dhe konceptet, për sa kohë që artikujt e serisë nuk janë ngecur (siç janë programet për robotë me disqe) janë të lidhura ngushtë me veçoritë e bashkëngjitjes së sistemeve të skedarëve, nëse duhet të jeni kompetent në vetvete Njihuni me realizimet dhe rrituni në parimet e robotikës. Në të njëjtën kohë, është më e rëndësishme të vini në kontakt me emrin, si rezultat i kodit:

  • lib_print_string - pranoni një tregues për një rresht, që përfundon me një karakter null, pas regjistrit shtesë SI dhe sillni një rresht të tërë në ekran.
  • lib_input_string - pranon një tregues në buferin pas regjistrit shtesë SI dhe ruan buferin me karaktere të futura nga vargu i tastierës pas tastierës shtesë. Përveç kësaj, si një goditje e tastit të sulmit të tastit Enter, rreshti në buffer përfundon me një simbol null dhe kontrolli do ta kthejë kodin e programit, si një wiklik.
  • lib_move_cursor - zhvendos kursorin në ekran në pozicionin me koordinata, i cili kalohet pas regjistrit shtesë DH (numri i rreshtit) dhe DL (numri qindrapc).
  • lib_get_cursor_pos - pranë softuerit fitues për heqjen e numrave të linjës së rrjedhës që është, pasi të shfaqen regjistrat shtesë DH dhe DL.
  • lib_string_uppercase - pranon një tregues rreshti për një vesh të një rreshti, që përfundon me një karakter null, pas regjistrit ndihmës AX dhe përkthimin e simboleve të rreshtit në regjistrin e sipërm.
  • lib_string_length - pranoni treguesin për kallirin e një rreshti, duke përfunduar me një karakter null, pas regjistrit ndihmës AX dhe duke e kthyer treguesin për regjistrin ndihmës AX.
  • lib_string_compare - pranon fundin e shikuesve të kallirit me karaktere rreshti zero në pamjet e rreshtit të regjistrit SI dhe DI. Unë instaloj urdhrin për t'u transferuar në atë vypadka, pasi rreshtat janë identikë (për udhëzimin e kalimit në ndarje nga transferimi i mëparshëm jc), për shembull urdhrin, ndërsa rreshtat rriten (për konstruksionin jn viktoriane).
  • lib_get_file_list - pranon një tregues në një vesh buffer për një regjistër shtesë SI dhe vendos një rresht në të gjithë bufferin, duke përfunduar me një karakter null, për të ekspozuar listën e emrave të skedarëve nga disku në skedarin e kombinuar.
  • lib_load_file - pranon një cob rreshti për të hakmarrë skedarin pas regjistrit ndihmës AX dhe zëvendëson skedarin e ndryshimit të transferuar për regjistrin ndihmës CX. Rrotulloni numrin e bajteve të kopjuara nga memoria (për madhësinë e skedarit) pas regjistrit shtesë BX, përndryshe do të instaloj skedarin e transferimit, nëse skedari nga emrat e dhënë nuk dihet.

WikiHow ndjek parimin e wiki, dhe tse do të thotë se shumë nga artikujt tanë janë shkruar nga disa autorë. Me vendosjen e statty mbi її redaguvannyam, ato u reduktuan në pratsyuvali, nga të cilat, në mënyrë anonime, 90 individë.

Sistemet operative, ruajtja nga qindra mijëra rreshta në kod, lejojnë teknologji kompjuterike... Stink zzvychay për t'u shkruar me C, C ++ dhe programe asembler.

Kroki

    Ekziston një program për veshin. Njohuritë e montuesit janë të nevojshme; Rekomandohet gjithashtu që nënat të kuptojnë për shtesat dhe programet іnshі të rіvnya të poshtme, për shembull, S.

    Nga ana tjetër, nëse doni ta rregulloni, do t'ju duhet të siguroni sistemin operativ. Mund të blini CD-disk, DVD-disk, memorie flash, hard disk ose kompjuter.

    Çfarëdo që ju nevojitet për të kopjuar sistemin tuaj operativ. Chi tse maє buti Një version i ri i OS me një ndërfaqe grafike (GUI). Ju duhet fisnikëria, në të cilën procesi shembet drejtpërdrejt para veshit.

    Sqaroni se cila platformë procesori është sistemi juaj operativ. AI-32 dhe x86_64 janë dy versionet më të avancuara për kompjuterët personalë Tani mund ta luani me atmosferën më të mirë.

    Por filloni, nëse doni të punoni gjithçka në mënyrë të pavarur nga e para, nga thelbi, mbi bazën e të cilit dëshironi të ndërtoni sistemin. Linux nga e para është një projekt për të qetë, hto bazhaє, për shembull, për të instaluar një shpërndarje të fuqishme Linux.

    Viber, do të jeni në gjendje të gjeni kyçin tuaj të energjisë, ose, përpara hapjes së përditësimeve të unifikuara, bllokimin e sistemit të Grand Unified Bootloader (GRUB). Programet Okskіlki koduvannya vlavnoy zavanazhennya kërkojnë njohuri të mëdha nga siguria e kompjuterit dhe BIOS, si dhe mund të shfaqin grafikun e programit të kernelit, i cili është dіє.

    Merrni vendimin për të lëvizur programin, e shihni, ju shihni vicoristovovuvati. Zvychayno, tsіlkom mozrobit OS tillë my, jak Pascal ose BASIC, më bukur shkruan në S abo asembler. Asambleri është absolutisht i nevojshëm, për shkak të pjesëve të rëndësishme të sistemit operativ dhe njohurive të vetë lëvizjes. C ++, nga ana tjetër, për të zbuluar fjalët kyçe, të nevojshme për nisjen version i ri OS.

    • Ju lutemi zgjidhni OS për kodin shtesë C, ose C ++, ju, padyshim, do të keni një përpilues, pastaj atë. Kjo do të thotë që ju duhet të lexoni manualin / udhëzimet / dokumentacionin për përpiluesin vibrues C / C ++, i cili përfshihet në kit. siguria e softuerit ose në faqen e internetit të distributorit. Do të keni mundësinë të mësoni rreth përpiluesit pa fjalë, përveç kësaj, për të kuptuar plotësisht C ++, do të mësoni se si të përdorni skemën ABI. Ju, si mund të pastroni, mund të shihni formatin e ndërtesave (ELF, PE, COFF, kosha shumë të vegjël) dhe mbani mend, mirë Formati Vlast Windows PE (.exe) është i mbrojtur nga e drejta e autorit.
  1. Ndërfaqja e programit Viber (API). Një API e mirë është POSIX, dhe disa prej tyre janë të dokumentuara mirë. Të gjitha sistemet Unix mund të pranojnë mbështetje POSIX, kështu që do të ishte e parëndësishme të shtoni programe Unix në sistemin tuaj operativ.

    Shikoni dizajnin. Drejtoni bërthamat monolitike dhe mikrokernelet. Kernelet monolitike janë përgjegjëse për të gjitha shërbimet në bërthama, në atë kohë mikrokerneli mund të prodhojë një bërthamë të vogël në një nga realizimet e shërbimeve. Bërthamat e Zagalom monolitnі shvidshe, ale mikrokernelet Unë mund të tkurret іsolіatsіyu është larg nga lëndimet e mundshme.

    Shikoni furnizimin në lidhje me shpërndarjen e robotit në komandë. Me një gradë të tillë, do të dini më pak se një orë për lëshimin e problemeve të mëdha, në mënyrë që të hapni sistemin operativ. cilësi të shkurtër për një afat të shkurtër.

    Mos e fshini përsëri hard diskun. Mos harroni, formatimi i diskut nuk do të jetë në gjendje të pastrojë të dhënat tuaja! Victory GRUB ose menaxheri më i mirë për dublimin e kompjuterit tuaj me një OS, për sa kohë që versioni juaj nuk është gati për të funksionuar.

    Mësoni nga gjërat e vogla. Bisha e respektit në radhë të parë në kujtesë, siç është përfaqësimi i tekstit dhe ndryshimi, i pari zbret tek elementët e palosjes, për shembull, menaxhimi i kujtesës dhe detyra e bagazhit.

    Ruani një kopje rezervë të versionit të fundit të punës.Është pak e çuditshme, e cila duket se është absolutisht e gabuar në versionin aktual të OS tuaj në dodatkakh-un e ardhshëm. Nëse kompjuteri juaj prishet dhe pakënaqësia mbyllet, ashtu si ju dhe vetë mendja juaj, fuqia e mrekullueshme e një kopjeje tjetër do të shfaqet për robotin, kështu që ju mund të dyshoni për gabimin.

    Testoni sistemin tuaj të ri operativ Makine virtuale. Zëvendësoni rilidhjen e kompjuterit kur ndryshoni ose transferoni skedarë nga kompjuteri i punës në makineritë e testimit dhe mund të zgjidhni programin për të ekzekutuar OS në një makinë virtuale, në mënyrë që OS të funksionojë në të njëjtën makinë. Shtesat VM përfshijnë VMWare (pasi ka edhe një server me akses falas), kodin alternativ të ekranit, Bochs, Microsoft Virtual PC (jo i zgjuar me Linux), si dhe XVM VirtualBox.

    Lëshoni versionin e lëshimit. Mos lejoni që kriminelët t'ju tregojnë për ndonjë mangësi në sistemin tuaj operativ.

  2. Sistemi operativ është gjithashtu i dobishëm për një koristuvach, kështu që mos harroni të shtoni funksionet kafe për t'u bërë pjesë e dizajnit tuaj.

    • Nëse lista ka përfunduar, mendoni nëse dëshironi të merrni një kod nga një akses falas, apo të konfiguroni një të drejtë private për një të re.
    • Sigurohuni që të zhvilloni funksionet e sigurisë si përparësinë tuaj kryesore, nëse dëshironi që sistemi juaj të jetë zhitєzdatnoy.
    • Mos e prishni projektin për zhvillimin e sistemit operativ me ndihmën e programit. Edhe nëse nuk i njihni C, C ++, Pascal, por nëse bëhet fjalë për llojin e fuqisë, duke përfshirë llojin e shfaqjes, operacionet me copa të ulëta, pjesët e përzierjes, të mësuarit, montuesi nuk është gati për të.
    • Shikoni portale të tilla, si OSDev dhe OSDever, për t'ju ndihmuar të pikturoni sistemin operativ. Unë kam një respekt të veçantë për ata që me një sasi të madhe të ushqyerjes, OSDev.org do të dalin vullnetarë, të cilët në mënyrë të pavarur shkuan në faqe dhe nuk erdhën në forum. Yaksho, gjithsesi, vendosën të vinin në llavat e anëtarëve të forumit, për hir të fajit do të ndryshonin mendje. Ne fajësojmë fisnikërinë e C ose C ++ për montuesin x86. Ju jeni gjithashtu fajtorë për inteligjencën e vendit dhe kuptimin kompleks të programit, si Listat e Lidhura, Radhët, etj. Fryma e OSDev është në rregullat e veta për të folur drejtpërdrejt për ata që nuk duan të kujdesen për programe të reja. Yaksho vi magaєtesya rozrobiti OS, zrozumіlo, wi "zot" në zonën e programit. Nëse ju shihni, është gjithashtu e nevojshme të lexoni librin për robotët me një procesor të së njëjtës arkitekturë, që keni parasysh; për shembull, x86 (Intel), ARM, MIPS, PPC, etj. Mund ta gjeni lehtësisht një udhëzues të tillë për strukturën e procesorit për një shaka të mëtejshme në Google (Intel Manuals, manualet ARM, etj.). Mos u riregjistroni në forumet e OSDev.org për të treguar dëshmi të ushqyerjes. Është e lehtë për të rritur shpejtësinë në "Lexo manualin f*** ing". Për një kalli faji, përpiquni të lexoni Vikipedia, doracakë për instrumente të rinj, ndërsa zgjidhni të jeni fitimtar.
    • Kthejeni manifestimin e pikave të vdekura të mundshme dhe atyre të hirit. Mangësitë, problemet dhe problemet shqetësuese mund të përfshihen në projektin e sistemit tuaj operacional.
    • Nëse dëshironi një mënyrë të thjeshtë për të gjetur shpërndarje Linux si Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS mklivecd ose SUSE Studio dhe SUSE KIWI. Tim nuk menshon, OS, mirë, do të jetë një kompani, unë fillimisht prezantova një shërbim të tërë (nëse keni të drejtë të zgjeroni, ndryshoni dhe lëshoni, siç dukeni, shkoni te GPL).
    • Zgjidhje të mira do të jenë krijimi i një seksioni krejtësisht të ri për sistemin operativ, në mënyrë që ai të shpërthejë.

    Ilaçi

    • Nedbale duke rishkruar sistemin operativ në hard disk mund të shtojë disa kode. Jini të respektueshëm
    • Ju nuk do ta shihni sistemin gati për dy herë. Zbuloni nga sistemi operativ i mbyllur dhe më pas kaloni te një kopje më e madhe e materialit.
    • Sapo ta zhvilloni nuk është shumë elementare, si, për shembull, të shkruani byte jo të duhura në portat e mjaftueshme I/O, atëherë mund të zvogëloni sistemin operativ dhe mund (teorikisht) të digjni zotërimin tuaj.
    • Mos kontrolloni pasi është e lehtë të kontrolloni sistemin operativ. Ndërlidhjet e palosshme Isnu bezlich. Për shembull, në mënyrë që OS të mund të punojë me një numër procesorësh, menaxheri juaj i memories është fajtor për "bllokimin" e mekanizmave për sigurimin e hyrjes së procesorëve të caktuar në të njëjtin burim menjëherë. Blloqet Vikoristovuvani transferojnë pamjen e një planifikuesi, por ai do të kthehet, por vetëm një procesor do të kthehet në një burim kritik në çdo moment në një orë, dhe të gjithë do të jenë në modalitetin ochikuvannya. Mbroni robotin planifikues që të shtrihet në prani të kontrolluesit të kujtesës. Tse prapanicë e depozitimit nga vzaєmoblokuvannya. Nuk ka asnjë mënyrë standarde për të parë probleme të tilla; Autori i lëkurës së sistemit operativ, si të pastrohet, të plotësojë kualifikimet dhe të njohë versionin e tij të fuqisë së versionit të fundit.
Bëhuni gati për projektin - ju lutem, dyakuyu!
Lexoni gjithashtu
Yak vstanoviti bezkostovny antivirus avast Yak vstanoviti bezkostovny antivirus avast Yak qartë komp'ютер від вірусів самостійно Yak pastroni kompjuterin nga viruset në mënyrë të pavarur Yak do të pastrojë kompjuterin'ютер від вірусів Unë do të pastroj kompjuterin nga viruset