Ukulingisa iLinus Torvalds: dala uhlelo lwakho lokusebenza kusuka ekuqaleni (VII)

Uyemukelwa kokunye okuthunyelwe mayelana indlela yokwenza uhlelo lwethu lokusebenza (Imibhalo yangaphambilini ochungechungeni: 1, 2, 3, 4, 5 y 6). Sekuyisikhathi eside kusukela iposi lokugcina, ikakhulukazi ngenxa yesiphazamiso engisitholile kulokhu esinakho namuhla. Sizobona uliphatha kanjani iwashi kubuchwepheshe bokwakhiwa kwe-x86.

Esikhathini esedlule besisebenzise ama-IRQ ngendlela ejwayelekile, kepha kube nenkinga encane njengoba singazisebenzisanga kahle futhi sidlulise imininingwane eyengeziwe. Ekugcineni siyakulungisa i-carlosorta futhi mina nami singaqhubeka nokuphawula ukuthi singaqhubeka kanjani.

Iwashi yi-IRQ, ikakhulukazi eyokuqala. Ukuyimisa sizosebenzisa umsebenzi esiwuchaze ngaphambilini ukufaka i-IRQs, i-ND_IRQ_InstallHandler.

int ND_TIMER_TICKS = 0; ize ND :: Isikhathi :: Isigaba (int hz) {int isihlukanisi = 1193180 / hz; ND :: Amachweba :: OkukhiphayoB (0x43,0x36); ND :: Izimbobo :: OkukhiphayoB (0x40, isihlukanisi & 0xFF); ND :: Izimbobo :: OkukhiphayoB (0x40, isihlukanisi >> 8); } i-ND engekho :: Isikhathi :: Linda (int imikhaza) {unsigned long eticks; imikhaza = ND_TIMER_TICKS + imikhaza; ngenkathi (ND_TIMER_TICKS <eticks) {void ND :: Isikhathi :: Ukusetha () {ND :: Screen :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_BLACK); ND :: Screen :: PutString ("\ nIsibali sikhathi sokusetha ..."); ND_IRQ_InstallHandler (0, & ND_Timer_Handler); ND :: Screen :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_GREEN); ND :: Screen :: PutString ("kwenziwe"); } i-extern "C" iyize ND_Timer_Handler (struct regs * r) {ND_TIMER_TICKS ++; uma (ND_TIMER_TICKS% 18 == 0) {// ND :: Screen :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_BROWN); // ND :: Screen :: PutString ("\ nOmunye umzuzwana"); KUFANELE SENZE ISIKHATHI SOKUQALA

Ikhodi isebenza kanjena: izingcingo zohlelo lokuqalisa ND :: Isikhathi :: Ukusetha, ebiza ND_IRQ_InstallHandler ukufaka endaweni yokuqala, i-IRQ0, umsebenzi wokuphinda ushayele lapho kwenzeka umcimbi, okungukuthi ND_Timer_Handler lokho kukhulisa i- imikhaza. Njengoba sibeke ijubane lewashi laya ku-18 Hz, njengoba sizobona ngokuhamba kwesikhathi, uma silihlukanisa ngo-18 bese lisinika inani, bekuzodlula umzuzwana.

Umsebenzi ND :: Isikhathi :: Isigaba Kusisiza ukuguqula ijubane le- i-timer, lelo nani eliwubukhazikhazi lingu-1.19 MHz okuyinani elijwayelekile. Yebo, kufanele siwubize lo msebenzi uma sifuna ukushintsha ijubane le- i-timer, ngokuzenzakalela iya ku-18,22 Hz, inani eliyingqayizivele umuntu okufanele ngabe anqume ngaphakathi IBM lisekhona kuze kube namuhla.

Umsebenzi ND :: Isikhathi :: Linda ilula kabi, vele ulinde nge-loop ngenkathi kuze kube imikhaza okudingekayo ukuqhubeka.

Emfanekisweni siyabona ukuthi uma sikhipha ikhodi ikhodi ngaphakathi kwe-ND_Timer_Handler sithola lokhu:

Imizuzwana ku-NextDivel

Esahlukweni esilandelayo sizobona ukuthi singakufunda kanjani ukufaka ikhibhodi futhi senze okuncane igobolondo ukuxhumana nesistimu yethu. Njengenjwayelo, ikhodi iyatholakala ku GitHub ngaphansi kwelayisense I-GNU GPL v2.


Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.

  1.   uNowa kusho

    Uchungechunge lwezifundo ezithakazelisa kakhulu, uqobo lwami angibonanga okuningi ngokwakha ukusatshalaliswa kweLinux kusuka ekuqaleni, futhi nangaphansi kweSpanishi futhi kuphelele. Ngikholwa ukuthi izinto eziningi zingafundwa ngalokhu futhi ngokushesha nje lapho ngithola isikhathi ngiyethemba ukuthi ngizokwazi ukwenza lezi zifundo.
    Ukuphela kwento engiyicelayo ukuthi ungadikibali futhi uqede ukufundiswa, ngoba ngithole okokufundisa okuningi okuhle okungapheli.
    Ukubingelela nokubonga :).

    1.    umgwaqo kusho

      Akukhona ukusatshalaliswa kwe-linux, kuyi-kernel 😛.

    2.    desikoder kusho

      Unephutha. Ukudala i-linux distro akusho ukuhlela noma yini, ngokwesibonelo, ku-linux kusuka ekuqaleni awuhleleli, okwenzayo ukufaka (kususelwa ekuhlanganiseni), amaphakheji ayisisekelo akha i-distro. Lokhu kwehluke kakhulu. Idala uhlelo lwakho lokusebenza. Akuhlangene ne-linux. Yilokhu okwenziwa ngabakwa-torvalds osukwini lwakhe bephefumulelwe yi-minix, futhi ngaleyo ngxoxo evuthayo nedumile phakathi kwama-torvalds no-andrew s. i-tanenbaum ku-monolithic kernel vs microkernel.

      Ukubingelela!

  2.   I-illukki kusho

    Ngiyabonga che. Kuze kube manje angikaze nginake kakhulu okuthunyelwe kwakho kepha ngisephrojekthi ngakho-ke ngizobheka.
    Ukubingelela

  3.   umgwaqo kusho

    Kufanele usho ukuthi ezinye izilimi zingasetshenziswa, njenge-Objective-C (++), C ++, D noma iRust.

    1.    AdrianArroyoStreet kusho

      Lokhu kuku-C ++, hhayi uC. Nokho, kunzima ukubona umehluko ngoba opharetha abaningi be-C ++ badinga ukusekelwa komtapo wezincwadi, njengabahlinzeki abasha nabasusa. Kungaba mnandi kakhulu ukwenza uhlelo lokusebenza kuRust. Kukhona empeleni isiteshi se-IRC esizinikezele kumasistimu okusebenza kuRust (# rust-osdev at irc.mozilla.net). Noma ngubani ohlanganisa ikhodi yomshini ubaluleke impela, kufaka phakathi iJava uma sisebenzisa i-GCJ.

      1.    umgwaqo kusho

        Yebo, impela, iRust ilulimi oluthakazelisa kakhulu kuzinhlelo zokusebenza, ngoba akulula nje ukufunda kuneC noma i-C ++ (isaqhubeka nezinguquko eziqhubekayo, kepha kulula), kepha ivikeleke kakhulu.

  4.   umgwaqo kusho

    Ngama-70's kwakuyinto ejwayelekile ukwenza uhlelo ngqo kwi-hardware, ngaphandle kwe-OS.

  5.   Christopher kusho

    Kuhle kakhulu ... manje ngidinga nje ukuqonda: 3 ...

  6.   mmm kusho

    Sawubona. Ngiyabonga kakhulu ngalezi zihloko. Kepha, uma ngingenalo ulwazi lohlelo, bengingeke ngikwenze, akunjalo? Ngithi, uma kungenjalo kungaba «kuhle, manje ngikopisha futhi nginamathisela ini?»… Yeka ukuthi kubi kanjani, bengihlala ngifuna kakhulu ukwazi ukuthi ngingahlela kanjani futhi angilutho, ngingumbongolo ngaphezulu!

    1.    desikoder kusho

      Ungazisoli, awuyona imbongolo. Okokuqala, akubona bonke abahleli bohlelo abakwaziyo ukubhala i-kernel, kungumsebenzi olula kakhulu, futhi uma usuwenza mkhulu kakhulu. Isibonelo lapha umbhali udala amashayeli ajwayelekile wekhibhodi nesikrini, esebenzisa ukuqoqwa kwesikrini, okuyindlela engasetshenziswanga nanamuhla. I-tty ku-linux namuhla iyinkimbinkimbi kakhulu, futhi ayinciki ekwakhiweni kwe-x86 enoluhlu lwesikrini onalo. Ngaphezu kwalokho, iningi lekhodi ku-C lincike ekwakhiweni kwezakhiwo, lapho okulungile ukwenza ikhodi yokwakha ku-assembler nokuthi ikhodi ye-C isebenza kunoma iyiphi iprosesa. Kodwa-ke, angiphazamisi kumbhali, ngoba inhlamvu ithola izici namuhla esizithatha njengezijwayelekile kwikheneli ye-linux, ngokwesibonelo, akuyona into elula, futhi qiniseka ukuthi umuntu oyedwa akakwazi nakancane ukukwenza . Kokuthize amaphrojekthi amakhulu afana ne-linux, i-gcc, i-glibc, njll, awenziwa ngumuntu oyedwa kepha baningi abahlanganyeli.

      Futhi, uma ufuna ukuqala ukwenza izinhlelo, unemihlahlandlela embalwa kuwebhu, yize kufanele uqaphele, bese ukhetha imikhombandlela emihle. Ngiqale ukuhlela ku-linux ngigxumela echibini ngekhanda lami nangaphandle kwamanzi (okungukuthi, ngolimi oluthandekayo lwe-C), yize manje senginemiqondo eyisisekelo ye-python (okubuye kube ulimi oluhle kakhulu). Kunezincwadi ezithile ze-C lapho udela khona ekhasini 6 ubuningi bekhanda obutholayo, kepha ngaphezu kwezincwadi lezi zinto zitholwa ngokuhlangenwe nakho. Kwenzeka njengakwimodeli yenethiwekhi ye-OSI. Imibhalo emayelana nemodeli ye-osi ayinakwenzeka ngokuphelele ukuyiqonda kulowo osanda kufika, kepha uma uthola isiza esinencazelo enhle yezendlalelo zenethiwekhi, usheshe uthole imiqondo yokubhekana nemibhalo yezobuchwepheshe efana nama-RFC.

      Ngamafuphi, ukuthi kunamawebhusayithi amahle nezincwajana lapho, kuyindaba yokuthola kuwo nokuthola izinto ezinhle.

      Phendula ngokucaphuna

  7.   Mahhala_DOM kusho

    Sawubona, ngemuva kwayo yonke imizamo yokuxazulula "iphutha: asikho isihloko se-multiboot esitholakele." nephutha «udinga ukulayisha i-kernel kuqala», ngoba angitholanga ndawo isisombululo senkinga yendatshana yokuqala, abanye abanjengami ababenayo ... nasi isixazululo, uma sisebenzela othile ...

    Angazi noma umbono wami wembangela yephutha ulungile kodwa noma kunjalo, umbuzo ngukuthi lapho kuhlanganiswa amafayela kusistimu yokusebenza engama-32, akuvelanga iphutha, kepha njengoba ngisebenza ngama-64-bit system (Gnu / Linux Debian 7), nokuthi lapho ngihlanganisa futhi ngivivinya ngiphonsa iphutha elithi "alikho unhlokweni we-multiboot otholakele", futhi kunokungabaza, ngokombono wami iphutha libangelwa imvelo noma ukwakheka kohlelo lokusebenza lapho sihlanganisa amafayili ethu ... futhi engikwenzile ukuhlanganisa amafayela wami, kucacisa imvelo noma ukwakheka kwama-32bits ..
    * Sudo as -o kernel.o -c kernel.asm -32
    * Sudo gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ukubeka phansi -m32
    * Sudo gcc -m32 -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ukusebenza
    Into exakayo ukuthi nginokungabaza okuthile hahaha, lapho-ke uhlelo olusebenzayo esilwakha igxathu negxathu ngolwakha i-x86 noma nginephutha ijajaj…

    PS: Umuntu ongangisiza ngokungabaza, futhi angithethelele amanye amaphutha esipelingi noma inkulumo yami embi, futhi angiphelele ngakho "Ukuphelela kunenani lako" ... Futhi okubaluleke kakhulu, ukulingisa uhlelo lokusebenza olunama-32-bit, olungcwele isixazululo… .Hahaha

    1.    UMartin Villalba kusho

      Ubungcweti! Bengifuna ngempela ukwenza lesi sifundo futhi ngiphume ekuqaleni ngalelo phutha haha

  8.   oscar kusho

    Halala, kungumnikelo omuhle kakhulu. Kusukela manje ngihlanganyela nawe ukuthi umsebenzi wakho omuhle ngami nakwabanye uzokwandiswa;

    Phendula ngokucaphuna