Manahaka an'i Linus Torvalds: mamorona rafitra fiasao anao avy amin'ny rangotra (VII)

Tongasoa eto amin'ny lahatsoratra hafa momba Ahoana no fomba hamoronana ny rafitra fiasanay (Lahatsoratra teo aloha tao amin'ilay andian-dahatsoratra: 1, 2, 3, 4, 5 y 6). Elaela hatramin'ny nanoratana farany, indrindra noho ny bibikely hitako izay ananantsika androany. Ho hitantsika ny fomba fikirakirana ny famantaranandro amin'ny maritrano x86.

Teo aloha dia nampavitrika ny IRQ tamin'ny fomba mahazatra izahay, saingy misy olana kely satria tsy nampandeha azy ireo tsara izahay ary nandefa data fanampiny. Amboarinay ihany izany amin'ny farany carlosorta ary izaho sy izaho dia afaka manohy manome hevitra momba ny fomba hanohizana.

Eny, ny famantaranandro dia IRQ, manokana ny voalohany. Raha hamboarina azy io dia hampiasa ilay asa nofaritanay tetsy ambony izahay hametrahana ireo IRQ amin'ny ankapobeny, ny ND_IRQ_InstallHandler.

int ND_TIMER_TICKS = 0; void ND :: Timer :: Dingana (int hz) {int divisor = 1193180 / hz; ND :: Seranana :: OutputB (0x43,0x36); ND :: Seranana :: OutputB (0x40, diviser & 0xFF); ND :: Seranana :: OutputB (0x40, mpizara >> 8); } void ND :: Timer :: Miandry (int ticks) {eticks lava tsy nosoniavina; eticks = marika NICKTIMER_TICKS +; raha (ND_TIMER_TICKS <eticks) {void ND :: Timer :: Setup () {ND :: Screen :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_BLACK); ND :: Screen :: PutString ("\ nSetup timer ..."); ND_IRQ_InstallHandler (0, & ND_Timer_Handler); ND :: Screen :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_GREEN); ND :: Screen :: PutString ("vita"); } extern "C" void ND_Timer_Handler (struct regs * r) {ND_TIMER_TICKS ++; raha (ND_TIMER_TICKS% 18 == 0) {// ND :: Screen :: SetColor (ND_SIDE_FOREGROUND, ND_COLOR_BROWN); // ND :: Screen :: PutString ("\ nOne segondra hafa"); TSY MAINTSY ISIKA NO HANAO SCREEN ANISAN'NY REFRESH}}

Toy izao manaraka izao ny kaody: miantso ny rafitra fanombohana ND :: Timer :: Fametrahana, izay miantso ND_IRQ_InstallHandler mba hampidirina amin'ny toerana voalohany, ny IRQ0, fiantsoana callback rehefa mitranga ny hetsika, izany hoe ND_Timer_Handler izay mampitombo ny kongona. Raha nametraka ny hafainganam-pandehan'ny famantaranandro ho 18 Hz isika, araka ny ho hitantsika any aoriana, raha nizara azy tamin'ny 18 ka nanome integer antsika, dia afaka nandalo ny iray segondra.

Ny asa ND :: Timer :: Dingana Manampy antsika hanitsy ny hafainganan'ny fameram-potoana, io isa mihoampampana io dia 1.19 MHz izay sanda iraisana. Tokony hiantso io asa io isika raha te hanova ny hafainganan'ny fameram-potoana, amin'ny alàlan'ny default dia mankany amin'ny 18,22 Hz, sanda manokana izay tsy maintsy nisy nanapa-kevitra tao anatiny IBM ary mbola ao mandraka androany izy.

Ny asa ND :: Timer :: Andraso tsotra be izy io, miandry fotsiny miaraka amin'ny loop raha mandra-pahatongan'ny kongona ilaina ny manohy.

Amin'ny sary dia hitantsika fa raha tsy asiantsika code ilay kaody ao anatin'ny ND_Timer_Handler dia azontsika ity:

Segondra amin'ny NextDivel

Amin'ny toko manaraka dia ho hitantsika ny fomba famakiana ny fidiran'ny kitendry ary hanao kely akorany hifandray amin'ny rafitray. Toy ny mahazatra, ny kaody Azo alaina ao GitHub ambanin'ny fahazoan-dàlana GNU GPL v2.


Ny atin'ny lahatsoratra dia manaraka ny fitsipiky ny etika fanonta. Raha hitatitra tsindry diso eto.

14 hevitra, avelao ny anao

Avelao ny hevitrao

Ny adiresy email dia tsy ho namoaka. Mitaky saha dia marika amin'ny *

*

*

  1. Tompon'andraikitra amin'ny data: Miguel Ángel Gatón
  2. Tanjon'ny angona: Control SPAM, fitantanana hevitra.
  3. Legitimation: Ny fanekenao
  4. Fifandraisana momba ny angona: Tsy hampitaina amin'ny antoko fahatelo ny angona raha tsy amin'ny adidy ara-dalàna.
  5. Fitehirizana angona: Database nomen'ny Occentus Networks (EU)
  6. Zo: Amin'ny fotoana rehetra, azonao atao ny mametra, mamerina ary mamafa ny mombamomba anao.

  1.   Noa dia hoy izy:

    Andian-pampianarana tena mahaliana, izaho manokana dia mbola tsy nahita firy momba ny famoronana fizarana Linux hatramin'ny voalohany, ary na dia kely aza amin'ny teny Espaniôla ary feno tanteraka. Heveriko fa afaka mianatra zavatra betsaka avy amin'izany ianao ary raha vantany vao manana fotoana aho dia manantena ny ho afaka hanao ireo fampianarana ireo.
    Ny hany angatahiko dia ny tsy hahakivy anao ary tsy hamita ny tutorial, satria hitako ireo fampianarana tsara maro izay mbola tsy vita.
    Miarahaba sy misaotra :).

    1.    roader dia hoy izy:

      Tsy fizarana linux io fa kernel 😛.

    2.    desikoder dia hoy izy:

      Diso ianao. Ny famoronana distro linux dia tsy midika hoe manao fandaharana na inona na inona, ohatra, amin'ny linux avy hatrany am-boalohany dia tsy manao programa ianao, ny ataonao dia mametraka (mifototra amin'ny fanangonana), fonosana fototra mamorona distro. Hafa mihitsy izany. Izy io dia mamorona ny rafitra fiasanao. Tsy misy ifandraisany amin'ny linux. Izany no nataon'ny torvalds tamin'ny androny izay aingam-panahy avy amin'ny minix, ary miaraka amin'izany adihevitra mafana sy malaza eo amin'ny torvalds sy andrew s. tanenbaum amin'ny kernel monolithic vs microkernel.

      Miarahaba!

  2.   illukki dia hoy izy:

    Misaotra che. Hatramin'izao dia mbola tsy nandinika tsara ny momba anao aho fa ao anaty tetikasa iray ka hojereko izy ireo.
    Fiarahabana.

  3.   roader dia hoy izy:

    Tsara ny manonona fa misy fiteny hafa azo ampiasaina, toy ny Objective-C (++), C ++, D na Rust.

    1.    AdrianArroyoStreet dia hoy izy:

      Ity dia ao amin'ny C ++, fa tsy C. Na izany aza, sarotra ny mahita ny fahasamihafana satria maro ny mpandraharaha C ++ no mila tohana famakiam-boky, toy ireo mpandraharaha vaovao sy mamafa. Tena mahaliana tokoa ny manamboatra rafitra miasa ao Rust. Tena misy fantsona IRC natokana ho an'ireo rafitra miasa ao amin'ny Rust (# rust-osdev ao amin'ny irc.mozilla.net). Izay manangona kaody milina dia mendrika tokoa, ao anatin'izany ny Java raha mampiasa GCJ isika.

      1.    roader dia hoy izy:

        Eny, tokoa, ny Rust dia fiteny tena mahaliana ho an'ny rafitra miasa, satria tsy mora kokoa ny mianatra noho ny C na C ++ (mbola mitohy ny fanovana mitohy, saingy mora kokoa), saingy azo antoka kokoa.

  4.   roader dia hoy izy:

    Tamin'ny taona 70 dia fahita matetika ny fandaharana mivantana amin'ny fitaovana tsy misy OS.

  5.   Christopher dia hoy izy:

    Tena tsara ... izao dia mila mahatakatra fotsiny aho: 3 ...

  6.   MMM dia hoy izy:

    Salama Misaotra betsaka noho ireo lahatsoratra ireo. Fa, raha tsy manana fahalalana momba ny programa aho dia tsy tokony hanao an'izany aho, sa tsy izany? Hoy aho, raha tsy izany dia «tsara, ary inona izao no alain-tahaka sy apetako?»… Indrisy, naniry fatratra hahafantatra ny fomba fandaharana aho fa tsy misy, ampondra aho!

    1.    desikoder dia hoy izy:

      Aza manome tsiny ny tenanao fa tsy ampondra ianao. Hanombohana azy, tsy ny mpandahatra fandaharana rehetra no mahay manoratra kernel, asa tsotra kely izany, ary amin'ny fampiharana dia lehibe kokoa izany. Ohatra, eto ny mpanoratra dia mamorona mpamily generic ho an'ny keyboard sy ny efijery, manodinkodina ny fihanaky ny efijery, izay fomba iray izay tsy ampiasaina mihitsy ankehitriny. Ny tty ao amin'ny linux amin'izao fotoana izao dia tena sarotra tokoa, ary tsy miankina amin'ny maritrano x86 manana zana-efijery azo ampiasaina. Ankoatr'izay, ny ankamaroan'ny kaody ao amin'ny C dia miankina amin'ny maritrano, raha ny filamatra dia ny fanaovana ny kaody maritrano amin'ny assembler ary miasa tsara ny kaody C amin'ny mpikirakira. Na izany aza, tsy manalavitra ny mpanoratra aho, satria ny kernel dia mahazo ny toetra izay heverintsika fa mahazatra amin'ny kernel linux, ohatra, tsy asa mora izany, ary matokia fa tsy afaka manao izany ny olona tokana. Ho an'ny zavatra iray, ireo tetik'asa lehibe toa ny linux, gcc, glibc, sns, dia tsy nataon'olona tokana fa maro ny mpiara-miasa.

      Raha te hanomboka fandaharana koa ianao, dia manana torolàlana vitsivitsy ao amin'ny tranonkala, na dia mila mitandrina aza ianao ary mifidy ireo mpitari-dalana tsara. Nanomboka nandamina fandaharana tao amin'ny linux nitsambikina tao anaty dobo niaraka tamin'ny lohako aho ary tsy nisy rano (izany hoe miaraka amin'ny fiteny C malalako), na dia manana hevitra fototra momba ny python (izay fiteny tena tsara koa aza aho). Misy boky C sasany izay ilaozanao amin'ny pejy faha-6 ny aretin'andoha azonao, saingy mihoatra ny boky ireo zavatra ireo no azo avy amin'ny zavatra niainanao. Izany dia mitranga tahaka ny maodely tambajotra OSI. Ny antontan-taratasy momba ny maodely osi dia tena tsy takatra mihitsy ho an'ny vaovao, fa raha mahita tranonkala manana fanazavana tsara momba ny sosona tambajotra ianao, dia azonao haingana ny hevitra hiatrehana ireo antontan-taratasy ara-teknika toy ny RFC.

      Raha fintinina, misy tranokala sy boky torolàlana tsara any, dia ny fahazoana azy io sy ny fikarohana fitaovana tsara.

      Reply with quote

  7.   Free_DOM dia hoy izy:

    Salama, taorian'ny andrana rehetra hamahana ny "lesoka: tsy nisy lohateny multiboot hita." ary «hadisoana ilainao mameno ny kernel aloha», satria tsy hitako na aiza na aiza ny vahaolana amin'ny olan'ny lahatsoratra voalohany, izay nataon'ny sasany toa ahy ... ity ny vahaolana, raha mety amin'ny olona iray ...

    Tsy fantatro raha marina ny teoria momba ny antony mahatonga ny lesoka fa na izany aza, ny fanontaniana dia hoe rehefa manangona ireo rakitra ao anaty rafitra fandidiana 32-kely dia tsy niteraka ny lesoka izany, fa satria manana rafitra miasa 64-bit aho (Gnu / Linux Debian 7), ary rehefa manangona sy mizaha toetra dia manipy ny lesoka "tsy misy lohateny multiboot hita", ary misy fisalasalana, dia araka ny hevitro dia noho ny tontolo iainana na ny maritrano ny rafitra fiasa izay anaovantsika ny rakitra ... ary tsara ny nataoko dia ny fanangonana ireo rakitrao, mamaritra ny tontolo 32-bit na ny maritrano
    * sudo as -o kernel.o -c kernel.asm -32
    * sudo gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding -m32
    * sudo gcc -m32 -o Start.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding
    Ny zavatra hafahafa dia manana fisalasalana kely aho hahaha, avy eo ny rafi-pandaminana izay amoroninay tsikelikely dia ho an'ny maritrano x86 sa diso aho ajajaj….

    PS: olona iray hanampy ahy amin'ny fisalasalana, ary manala tsiny ireo hadisoan-tsipelina sasany na ny fomba fiteniko ratsy, ary tsara fa tsy lavorary aho ka «Ny fahalavorariana dia manana ny vidiny» .... Ary ny tena zava-dehibe dia manahaka ny rafitra miasa 32-bit, vahaolana masina … .Hahaha

    1.    Martin Villalba dia hoy izy:

      Genius! Tena te-hanao an'ity fampianarana ity aho ary nanomboka tamin'io hadisoana io tamin'ny voalohany aho haha

  8.   Oscar dia hoy izy:

    Arahabaina, fandraisana anjara tsara izany. Manomboka izao dia mizara aho fa ny asa tsara ataonao amin'ny alalako sy ny hafa dia hitatra;

    Reply with quote