Ukulinganisa iLinus Torvalds: yenza eyakho inkqubo yokusebenza ukusuka ekuqaleni (VII)

Wamkelekile kwenye iposti malunga uyenza njani eyethu inkqubo yokusebenza (Amanqaku angaphambili kuthotho: 1, 2, 3, 4, 5 y 6). Kube lixesha elide ukusukela kwisithuba sokugqibela, ikakhulu ngenxa yesiphene endisifumene kule nto sinayo namhlanje. Siza kubona Uyiphatha njani iwotshi kuyilo loyilo lwe-x86.

Ngaphambili besizisebenzisa ii-IRQ ngendlela eqhelekileyo, kodwa bekukho ingxaki encinci kuba khange sizisebenzise ngokuchanekileyo kwaye sidlulise idatha eyongezelelweyo. Ekugqibeleni siyayilungisa imvucube kwaye mna naye sinokuqhubeka nokubeka izimvo malunga nendlela yokuqhubeka.

Ewe, iwotshi yi-IRQ, ngakumbi eyokuqala. Ukuyiqwalasela, siya kusebenzisa umsebenzi esiwuchaze apha ngasentla ukufaka i-IRQs, i-ND_IRQ_InstallHandler.

I-ND_TIMER_TICKS = 0; I-ND engekhoyo: Isikhathi: Isigaba (int hz) {int isahluli = 1193180 / hz; ND :: amazibuko :: IziphumoB (0x43,0x36); ND :: Amazibuko :: IziphumoB (0x40, isahluli kunye ne-0xFF); ND :: amazibuko :: IziphumoB (0x40, isahluli >> 8); } void ND :: Timer :: Linda (int (amakhalane)) {unsigned long eticks; eticks = ND_TIMER_TICKS + amakhalane; ngelixa (ND_TIMER_TICKS <eticks) {void ND :: Timer :: Setup () {ND :: Screen :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_BLACK); ND :: Screen :: PutString ("\ nSeta ixesha ..."); ND_IRQ_InstallHandler (0, & ND_Timer_Handler); ND :: Isikrini :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_GREEN); ND :: Screen :: PutString ("yenziwe"); } ngaphandle "C" kungasebenzi ND_Timer_Handler (struct regs * r) {ND_TIMER_TICKS ++; ukuba (ND_TIMER_TICKS% 18 == 0) {// ND :: Iscreen :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_BROWN); // ND :: Screen :: PutString ("\ nOmnye umzuzwana"); KUFUNEKA SENZE ISIBHENO SOKUHLAZIYA}}

Ikhowudi isebenza ngolu hlobo lulandelayo: inkqubo yokuqalisa yokufowuna ND :: Isibali-xesha :: Ukuseta, ebiza ND_IRQ_InstallHandler ukufaka kwindawo yokuqala, i-IRQ0, umsebenzi wokubuyela emva xa isiganeko senzeka, oko kukuthi ND_Isibali_Isixhasi eyonyusa i iikethi. Njengoko sibeke isantya sewotshi saya kwi-18 Hz, njengoko siza kubona kamva, ukuba singohlulahlula ngo-18 kwaye sisinike inani elipheleleyo, umzuzwana ubungadlula.

Umsebenzi ND :: Ixesha :: Isigaba Isinceda ukuba sihlengahlengise isantya se ixesha, elo nani linomtsalane li-1.19 MHz elixabiso elifanayo. Ewe kufanelekile ukuba siwubize lo msebenzi ukuba sifuna ukutshintsha isantya sefayile ye- ixesha, ngokungagqibekanga iya kwi-18,22 Hz, ixabiso elikhethekileyo ekufanele ukuba umntu enze isigqibo kulo IBM sisekhona unanamhla.

Umsebenzi ND :: Isikhathi :: Yima ilula ngokulula, linda nje ngomtya lo gama Kude kube iikethi kufuneka iqhubeke.

Emfanekisweni sinokubona ukuba ukuba siyayikhupha ikhowudi ngaphakathi kwi-ND_Timer_Handler siyifumana le:

Imizuzwana kwi-NextDivel

Kwisahluko esilandelayo siza kubona indlela yokufunda igalelo lekhibhodi kwaye wenze kancinci iqokobhe ukunxibelelana nenkqubo yethu. Njengesiqhelo, ikhowudi iyafumaneka kwi GitHub phantsi kwelayisensi I-GNU GPL v2.


Shiya uluvo lwakho

Idilesi yakho ye email aziyi kupapashwa. ezidingekayo ziphawulwe *

*

*

  1. Uxanduva lwedatha: UMiguel Ángel Gatón
  2. Injongo yedatha: Ulawulo lwe-SPAM, ulawulo lwezimvo.
  3. Umthetho: Imvume yakho
  4. Unxibelelwano lwedatha: Idatha ayizukuhanjiswa kubantu besithathu ngaphandle koxanduva lomthetho.
  5. Ukugcinwa kweenkcukacha
  6. Amalungelo: Ngalo naliphi na ixesha unganciphisa, uphinde uphinde ucime ulwazi lwakho.

  1.   rio sitsho

    Uthotho olunomdla kakhulu lwezifundo, ngokobuqu andizange ndibone uninzi malunga nokwenza ulwabiwo lweLinux ukusuka ekuqaleni, kwaye nangaphantsi kwesiSpanish kwaye kugqityiwe. Ndicinga ukuba ungafunda lukhulu koku kwaye kwakamsinya nje ukuba ndinexesha ndiyathemba ukuba ndiza kukwazi ukwenza ezi zifundo.
    Inye kuphela into endiyicelayo kukuba ungadimazeki kwaye ugqibezele isifundo, kuba ndifumene uninzi lwezifundo ezilungileyo ezingapheliyo.
    Imibuliso kunye nemibulelo :).

    1.    Indlela sitsho

      Ayilulo usasazo lwe linux, yimbumba ekhethiweyo.

    2.    desikoder sitsho

      Uyaphazama. Ukwenza i-linux distro ayithethi ukuba yinkqubo nantoni na, umzekelo, kwi-linux ukusuka ekuqaleni awuyenzi inkqubo, into oyenzayo ukufaka (ngokusekwe ekuhlanganiseni), iiphakheji ezisisiseko ezenza i-distro. Oku kwahluke kakhulu. Yenza inkqubo yakho yokusebenza. Ayinanto yakwenza ne-linux. Yile nto yenziwe zii-torvalds ngemini yakhe ephefumlelwe yi-minix, kunye nengxoxo eshushu neyaziwayo phakathi kwe-torvalds no-andrew s. i-tanenbaum kwi-monolithic kernel vs microkernel.

      Nibuliso!

  2.   Ngqangqa sitsho

    Enkosi che. Kude kube ngoku khange ndihoye kakhulu iposti yakho kodwa ndikwiprojekthi ke ndiza kujonga.
    Ukubulisa

  3.   Indlela sitsho

    Kufanelekile ukuba ukhankanye ukuba ezinye iilwimi zinokusetyenziswa, ezinje ngeNjongo-C (++), C ++, D okanye uRust.

    1.    AdrianArroyoStreet sitsho

      Le ikwi-C ++, hayi uC. Nangona kunjalo, kunzima ukubona umahluko kuba uninzi lwabasebenzisi be-C ++ bafuna ukuxhaswa kwithala leencwadi, njengabaqhubi abatsha kunye nokucima. Kuya kuba ngumdla kakhulu ukwenza inkqubo yokusebenza eRust. Ngokwenyani kukho ijelo le-IRC elinikezelwe kwinkqubo yokusebenza kwiRust (# irusi-osdev kwi-irc.mozilla.net). Nabani na odibanisa ikhowudi yomatshini uyixabisile, kubandakanya neJava ukuba sisebenzisa iGCJ.

      1.    Indlela sitsho

        Ewe iRust lulwimi olunomdla kakhulu kwiinkqubo zokusebenza, kuba akukho lula ukufunda ngaphandle kweC okanye i-C ++ (iyaqhubeka notshintsho oluqhubekayo, kodwa kulula), kodwa ikhuseleke ngakumbi.

  4.   Indlela sitsho

    Kwiminyaka ye-70 yayiqhelekile inkqubo ngqo kwi-hardware, ngaphandle kwe-OS.

  5.   Christopher sitsho

    Ukugqwesa ... ngoku ndifuna ukuqonda: 3 ...

  6.   mmm sitsho

    Mholweni. Enkosi kakhulu ngala manqaku. Kodwa, ukuba andinalo ulwazi lwenkqubo, andicingi ukuba ndiyayenza, akunjalo? Ndiyathetha, ukuba akunjalo kuya kuba yinto "elungileyo, kwaye ngoku yintoni endiyikhuphelayo kwaye ndiyincamathisele?" ... yeka usizi, bendisoloko ndifuna ukwazi ukuba ndingazicwangcisa njani kwaye akukho nto, ndingaphezulu kwe-esile!

    1.    desikoder sitsho

      Ungazibeki tyala, awuyondonki. Ukuqala, ayingabo bonke abadwelisi benkqubo abakwaziyo ukubhala ikernel, ngumsebenzi olula kakhulu, kwaye xa usenza oko mkhulu. Umzekelo, apha umbhali wenza abaqhubi abaqhelekileyo bekhibhodi kunye nescreen, besebenzisa uluhlu lwescreen, eyindlela engasetyenziswanga kwaphela namhlanje. I-tty kwi-linux namhlanje inzima kakhulu, kwaye ayixhomekeki kuyilo lwe-x86 olunoluhlu lwescreen ekulahleni. Ukongeza, uninzi lweekhowudi kwi-C luxhomekeke kubugcisa bokwakha, xa kufanelekile kukwenza ikhowudi yoyilo ngokudibanisa kwaye ikhowudi C isebenza kuyo nayiphi na iprosesa. Nangona kunjalo, andimthinteli umbhali, kuba ikernel ifumana iimpawu esizithatha njengesiqhelo kwi-linux kernel, umzekelo, ayisiyonto ilula leyo, kwaye qiniseka ukuba umntu ongatshatanga akakwazi ukuyenza. Kwinto ethile iiprojekthi ezinkulu ezinjenge-linux, i-gcc, i-glibc, njl, azenziwanga ngumntu omnye kodwa baninzi abasebenzisanayo.

      Kwakhona, ukuba ufuna ukuqala inkqubo, unezikhokelo ezimbalwa kwiwebhu, nangona kufuneka ulumke, kwaye ukhethe izikhokelo ezilungileyo. Ndiqale ukwenza inkqubo kwi-linux yokutsiba echibini ngentloko kwaye kungekho manzi (Oko kukuthi, ngolwimi oluthandekayo C), nangona ngoku ndinemibono esisiseko ye-python (ekwalulwimi oluhle kakhulu). Kukho ezinye zeencwadi ze-C apho unikezela khona kwiphepha 6 uninzi lwentloko oyifumanayo, kodwa ngaphezulu kweencwadi ezi zinto zifunyanwa ngamava. Kwenzeka njengakwimodeli yenethiwekhi yeOSI. Amaxwebhu malunga nemodeli ye-osi ayinakuqondakala kulowo ufikayo, kodwa ukuba ufumana indawo enenkcazo elungileyo yolwazi lwenethiwekhi, ukhawuleza ufumane iikhonsepthi zokujongana namaxwebhu obuchwephesha anjengee-RFCs.

      Ngamafutshane, kukho iiwebhusayithi ezilungileyo kunye neencwadana apho, yinto yokwehla kuyo kunye nokufumana izinto ezilungileyo.

      Phendula nge quote

  7.   Mahala_DOM sitsho

    Molo, emva kwawo onke amalinge okusombulula "impazamo: akukho ntloko ye-multiboot ifunyenweyo." kwaye «impazamo kufuneka ulayishe i-kernel kuqala», kuba andifumananga ndawo isisombululo kwingxaki yenqaku lokuqala, abanye abafana nam ... nasi isisombululo, ukuba sisebenzela umntu ...

    Andazi ukuba ithiyori yam yesizathu sempazamo ichanekile kodwa kunjalo, umbuzo kukuba xa ubhala iifayile kwinkqubo engama-32 yokusebenza, khange ivelise impazamo, kodwa kuba ndinama-64-bit asebenzayo system (Gnu / Linux Debian 7), kwaye xa kuqulunqwa kwaye kuvavanywa ndinempazamo "akukho ntloko ye-multiboot ifunyenweyo", kwaye kukho ukuthandabuza, ngokoluvo lwam impazamo ibangelwe yindawo okanye uyilo lwenkqubo yokusebenza apho siqokelela khona iifayile zethu ... kwaye into endiyenzileyo kukudibanisa iifayile zam, ndicacisa imeko-bume okanye uyilo lwee-32bits ..
    * Sudo as -o kernel.o -c kernel.asm -32
    * sudo gcc -o OkulandelayoKernel_Main.o -c OkulandelayoKernel_Main.c -nostdlib -fPIC -ukubekwa kwakhona -m32
    * Sudo gcc -m32 -o START.ELF kernel.o OkulandelayoKernel_Main.o -Tlink.ld -nostdlib -fPIC -ukusebenza
    Into engaqhelekanga kukuba ndinamathandabuzo hahaha, emva koko inkqubo yokusebenza esiyenzayo inyathelo ngenyathelo yeyokwakha i-x86 okanye ndiphazama ijajaj….

    I-PS: umntu oza kundinceda ngaphandle kwamathandabuzo, kwaye uthethelele ezinye iimpazamo zopelo okanye intetho yam embi, kwaye kulungile andifezekanga ukuze «Ukugqibelela kunexabiso lazo»… Kwaye okona kubaluleke kakhulu, linganisa inkqubo yokusebenza engama-32, isisombululo esingcwele … .Hahaha

    1.    UMartin Villalba sitsho

      Ubuchule! Ndifuna kakhulu ukwenza le khosi kwaye ndehle ekuqaleni ngale mpazamo haha

  8.   Oscar sitsho

    Siyavuyisana nani, ligalelo elihle kakhulu. Ukususela ngoku ndibelana nawe ukuba umsebenzi wakho omuhle ngam kunye nabanye uya kwandiswa;

    Phendula nge quote