Ag aithris ar Linus Torvalds: cruthaigh do chóras oibriúcháin féin ón tús (VII)

Fáilte go post eile faoi conas ár gcóras oibriúcháin féin a chruthú (Ailt roimhe seo sa tsraith: 1, 2, 3, 4, 5 y 6). Tá sé tamall fada ón bpost deireanach, go príomha mar gheall ar fhabht a fuair mé sa mhéid atá againn inniu. Feicfimid conas an clog a láimhseáil ar ailtireachtaí x86.

Roimhe seo bhí IRQanna gníomhachtaithe againn ar bhealach cineálach, ach bhí fadhb bheag ann ós rud é nár ghníomhaíomar i gceart iad agus rith muid sonraí breise. Déanaimid é a shocrú sa deireadh carlosorta agus is féidir liomsa agus liom leanúint ar aghaidh ag trácht ar conas leanúint ar aghaidh.

Bhuel, is IRQ an clog, an chéad cheann go sonrach. Chun é a chumrú, úsáidfimid an fheidhm a shainmhínigh muid thuas chun na IRQanna, an ND_IRQ_InstallHandler, a shuiteáil go fial.

int ND_TIMER_TICKS = 0; neamhní ND :: Uaineadóir :: Céim (int hz) {int divisor = 1193180 / hz; ND :: Calafoirt :: AschurB (0x43,0x36); ND :: Calafoirt :: OutputB (0x40, roinnteoir & 0xFF); ND :: Calafoirt :: OutputB (0x40, roinnteoir >> 8); } neamhní ND :: Uaineadóir :: Fan (int ticks) {eticks fada gan síniú; eticks = ND_TIMER_TICKS + sceartáin; agus (ND_TIMER_TICKS <eticks) {neamhní ND :: Uaineadóir :: Socrú () {ND :: Scáileán :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_BLACK); ND :: Scáileán :: PutString ("\ n lasc ama lascadh ..."); ND_IRQ_InstallHandler (0, & ND_Timer_Handler); ND :: Scáileán :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_GREEN); ND :: Scáileán :: PutString ("déanta"); } neamhní "C" seachtrach ND_Timer_Handler (struct regs * r) {ND_TIMER_TICKS ++; más rud é (ND_TIMER_TICKS% 18 == 0) {// ND :: Scáileán :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_BROWN); // ND :: Scáileán :: PutString ("\ nAon dara soicind"); BA CHÓIR DUIT SCREEN REFRESH A DHÉANAMH}}

Ritheann an cód mar seo a leanas: glaonna an chórais tosaigh ND :: Uaineadóir :: Socrú, a ghlaonn ND_IRQ_InstallHandler an IRQ0, feidhm aisghlao nuair a tharlaíonn an teagmhas a chur isteach sa chéad phost, .i ND_Timer_Handler a mhéadaíonn an sceartáin. Toisc go bhfuil luas an chloig socraithe againn go 18 Hz, mar a fheicfimid níos déanaí, dá roinnfimis é faoi 18 agus slánuimhir a thabhairt dúinn, bheadh ​​an dara ceann caite.

An fheidhm ND :: Uaineadóir :: Céim Cabhraíonn sé linn luas an uaineadóir, is é an uimhir iomarcach sin 1.19 MHz ar luach coiteann é. Bhuel, ba cheart dúinn an fheidhm seo a ghlaoch más mian linn luas an uaineadóir, de réir réamhshocraithe téann sé go 18,22 Hz, luach ar leith nach mór do dhuine a bheith socraithe laistigh de IBM agus tá sé fós ann go dtí an lá atá inniu ann.

An fheidhm ND :: Uaineadóir :: Fan tá sé simplí go leor, ach fan le lúb cé go go dtí an sceartáin ag teastáil chun leanúint ar aghaidh.

San íomhá is féidir linn a fheiceáil má dhéanaimid an cód taobh istigh den ND_Timer_Handler a aontú, faighimid é seo:

Soicind i NextDivel

Sa chéad chaibidil eile feicfimid conas ionchur méarchláir a léamh agus beagán a dhéanamh bhlaosc idirghníomhú lenár gcóras. Mar is gnáth, an cód ar fáil i GitHub faoin gceadúnas GNU GPL v2.


Cloíonn ábhar an ailt lenár bprionsabail eitic eagarthóireachta. Chun earráid a thuairisciú cliceáil anseo.

14 trácht, fág mise

Fág do thrácht

Ní thabharfar do sheoladh r-phoist a fhoilsiú. Réimsí riachtanacha atá marcáilte le *

*

*

  1. Freagrach as na sonraí: Miguel Ángel Gatón
  2. Cuspóir na sonraí: SPAM a rialú, bainistíocht trácht.
  3. Legitimation: Do thoiliú
  4. Na sonraí a chur in iúl: Ní chuirfear na sonraí in iúl do thríú páirtithe ach amháin trí oibleagáid dhlíthiúil.
  5. Stóráil sonraí: Bunachar sonraí arna óstáil ag Occentus Networks (EU)
  6. Cearta: Tráth ar bith is féidir leat do chuid faisnéise a theorannú, a aisghabháil agus a scriosadh.

  1.   Noah a dúirt

    Sraith an-spéisiúil ranganna teagaisc, go pearsanta ní fhaca mé go leor faoi dháileadh Linux a chruthú ón tús, agus níos lú fós sa Spáinnis agus mar sin iomlán. Sílim gur féidir leat a lán a fhoghlaim uaidh seo agus a luaithe a bheidh am agam tá súil agam go mbeidh tú in ann na ranganna teagaisc seo a dhéanamh.
    Is é an t-aon rud a iarraim ná nach bhfaigheann tú díspreagadh agus go gcríochnaíonn tú an rang teagaisc, mar fuair mé go leor ranganna teagaisc maithe nach bhfuil críochnaithe riamh.
    Beannachtaí agus buíochas :).

    1.    bóthar a dúirt

      Ní dáileadh linux é, is eithne 😛 é.

    2.    desikoder a dúirt

      Tá tú mícheart. Ní chiallaíonn cruthú distro linux aon rud a chlárú, mar shampla, i linux ón tús nach ndéanann tú clár, is é a dhéanann tú a shuiteáil (bunaithe ar thiomsú), pacáistí bunúsacha a dhéanann suas distro. Tá sé seo an-difriúil. Tá sé ag cruthú do chórais oibriúcháin féin. Níl aon bhaint aige le linux. Seo a rinne torvalds ina lá spreagtha ag minix, agus leis an bplé téite agus móréilimh sin idir torvalds agus andrew s. tanenbaum ar eithne monolithic vs microkernel.

      Saludos!

  2.   illukki a dúirt

    Go raibh maith agat che. Go dtí seo níor thug mé mórán airde ar do phost ach táim i dtionscadal agus mar sin táim chun breathnú orthu.
    Beannachtaí.

  3.   bóthar a dúirt

    Is fiú a lua gur féidir teangacha eile a úsáid, mar shampla Cuspóir-C (++), C ++, D nó Rust.

    1.    AdrianArroyoStreet a dúirt

      Tá sé seo i C ++, ní C. Mar sin féin, tá sé deacair na difríochtaí a fheiceáil ós rud é go dteastaíonn tacaíocht leabharlainne ó go leor oibreoirí C ++, mar na hoibreoirí nua agus na hoibreoirí scriosadh. Bheadh ​​sé an-suimiúil córas oibriúcháin a dhéanamh i Rust. Tá cainéal IRC ann i ndáiríre atá tiomnaithe do chórais oibriúcháin ar Rust (# meirge-osdev ag irc.mozilla.net). Is fiú go mór éinne a thiomsaíonn le cód meaisín, Java san áireamh má úsáidimid GCJ.

      1.    bóthar a dúirt

        Sea, go deimhin, is teanga an-spéisiúil í Rust do chórais oibriúcháin, toisc ní amháin go bhfuil sé níos éasca í a fhoghlaim ná C nó C ++ (leanann sé ar aghaidh le hathruithe leanúnacha, ach tá sé níos éasca), ach tá sé i bhfad níos sláine.

  4.   bóthar a dúirt

    Sna 70idí bhí sé coitianta go leor clár a dhéanamh go díreach ar na crua-earraí, gan OS.

  5.   Christopher a dúirt

    Ar fheabhas ... anois ní gá dom ach a thuiscint: 3 ...

  6.   mmm a dúirt

    Haigh. Go raibh míle maith agat as na hailt seo. Ach, mura bhfuil eolas cláraithe agam, ní dhéanfainn é, ceart? Is é atá i gceist agam, murab amhlaidh gur «maith a bheadh ​​ann, agus anois cad a dhéanaim a chóipeáil agus a ghreamú?» ... is mór an trua é, theastaigh uaim i gcónaí an oiread sin a fháil amach conas clár a dhéanamh agus rud ar bith, is asal mé níos mó!

    1.    desikoder a dúirt

      Ná cuir an milleán ort féin, ní asal tú. Chun tús a chur leis, níl a fhios ag gach ríomhchláraitheoir conas eithne a scríobh, is tasc an-bheag atá ann, agus go praiticiúil tá sé níos mó. Mar shampla, anseo cruthaíonn an t-údar tiománaithe cineálacha don mhéarchlár agus don scáileán, ag ionramháil eagar an scáileáin, ar modh é nach n-úsáidtear ar chor ar bith inniu. Tá an tty in linux inniu an-chasta, agus níl siad ag brath go bhfuil eagar scáileáin ar fáil don ailtireacht x86. Ina theannta sin, braitheann cuid mhaith den chód C ar an ailtireacht, nuair is idéalach an cód ailtireachta a dhéanamh i gcóimeálaí agus go n-oibríonn an cód C ar aon phróiseálaí. Mar sin féin, ní bhainim an t-údar as, toisc go bhfaigheann eithne na tréithe a mheasaimid a bheith gnáth i eithne linux, mar shampla, ní tasc éasca é, agus bí cinnte go bhfuil duine singil go hiomlán éagumasach ar é a dhéanamh. Rud éigin nach ndéanann duine singil na tionscadail mhóra mar linux, gcc, glibc, srl. Ach tá go leor comhoibritheoirí ann.

      Chomh maith leis sin, más mian leat cláir a thosú, tá cúpla treoir agat ar an ngréasán, cé go gcaithfidh tú a bheith cúramach, agus na treoracha maithe a roghnú. Thosaigh mé ag clárú i linux ag léim isteach sa linn le mo cheann agus gan aon uisce (is é sin, leis an teanga beloved C), cé go bhfuil roinnt bunchoincheapa agam anois maidir le python (ar teanga an-mhaith í freisin). Tá roinnt leabhar C ann a thugann tú suas ar leathanach 6 an oiread den tinneas cinn a fhaigheann tú, ach níos mó ná leabhair faightear na rudaí seo ó thaithí. Tarlaíonn sé mar atá le samhail líonra OSI. Tá sé dodhéanta go hiomlán an doiciméadacht ar an tsamhail osi a thuiscint don núíosach, ach má aimsíonn tú suíomh le míniú maith ar na sraitheanna líonra gheobhaidh tú na coincheapa go tapa chun déileáil le cáipéisí teicniúla mar RFCanna.

      I mbeagán focal, tá suíomhanna Gréasáin agus lámhleabhair maithe amuigh ansin, is ceist í a bhaineann leis agus ábhar maith a fháil.

      Maidir is

  7.   Saor_DOM a dúirt

    Dia duit, tar éis gach iarracht an "earráid a réiteach: níor aimsíodh ceanntásc multiboot." agus «earráid ní mór duit an t-eithne a luchtú ar dtús», mar ní raibh mé in ann teacht ar réiteach ar fhadhb na chéad ailt, a bhí ag daoine áirithe cosúil liomsa ... seo an réiteach, má oibríonn sé do dhuine ...

    Níl a fhios agam an bhfuil mo theoiric faoi chúis na hearráide ceart ach mar sin féin, is í an cheist, nuair a bhí na comhaid á dtiomsú i gcóras oibriúcháin 32-giotán, nár ghin sé an earráid, ach ós rud é go bhfuil córas oibriúcháin 64-giotán agam (Gnu / Linux Debian 7), agus nuair a bhí mé ag tiomsú agus ag tástáil fuair mé an earráid “níor aimsíodh ceanntásc multiboot”, agus tá amhras ann, ansin is é mo thuairim go bhfuil an earráid mar gheall ar thimpeallacht nó ailtireacht an chórais oibriúcháin ina bhfuilimid ag tiomsú ár comhaid ... agus bhuel is é a rinne mé ná mo chuid comhad a thiomsú, ag sonrú timpeallacht nó ailtireacht 32bits.
    * sudo as -o eithne.o -c eithne.asm -32
    * sudo gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding -m32
    * sudo gcc -m32 -o START.ELF eithne.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding
    Is é an rud aisteach go bhfuil roinnt amhras orm hahaha, ansin is é an córas oibriúcháin atá á chruthú againn céim ar chéim d’ailtireacht x86 nó an bhfuil mé mícheart ajajaj….

    PS: duine éigin chun cabhrú liom leis an amhras, agus roinnt botúin litrithe nó mo dhroch-léiriú a leithscéal, agus bhuel nílim foirfe mar sin «Tá a phraghas ag foirfeacht»… agus is tábhachtaí fós, aithris a dhéanamh ar chóras oibriúcháin 32-giotán, réiteach naofa … .Hhahaha

    1.    Martin Villalba a dúirt

      Genius! Bhí mé i ndáiríre ag iarraidh an rang teagaisc seo a dhéanamh agus d’éirigh mé síos ag an tús leis an mbotún sin haha

  8.   Oscar a dúirt

    Comhghairdeas, is cion iontach é. As seo amach roinnim go leathnófar do dhea-obair tríomsa agus trí dhaoine eile;

    Maidir is