Lühikesed bitid: Linuxi tuum on arvuti kasutamisel kõige kasutatavam tarkvara. See on kõikjal. See on arvutites, serverites, telefonides, telerites, digiboksides, allveelaevades, lennukites, iseteenindavates autodes ja isegi rahvusvahelises kosmosejaamas. Aga kuidas see toimib? See on rohkem kui suu, nii et ma püüan selle murda mõnda paremini juhitavatesse tükkidesse.

Linuxi tuum koosneb enam kui 21 miljonist koodijoonest, millest igaüks täpsustab oma olulisi juhiseid. Kuna Linuxi kernelis on palju koodi, siis vajame võrdselt pikka artiklit, et täielikult kirjeldada, kuidas täpselt iga ülesanne täidetakse. Meeldiva detaili säästmiseks katame põhitõed väga kõrgel tasemel.

Kuid enne, kui arutame, kuidas ükskõik milline operatsioonisüsteemi kernel toimib, peaksime kõigepealt vaatama, mis tuuma on vastutav. Kernel pakub abstrakte programmeerijatele, kes arendavad kerneli platvormi rakendusi. Need abstraktsioonid on lihtsustatud keeruliste ülesannete täitmiseks.

Kernel ise ei ole ainus tarkvara operatsioonisüsteemis, mis pakub abstrakte, kuid see on kindlasti üks tähtsamaid abstrakte, teine ​​on riistvaradraiverite abstraktsioonid. Riistvaradraiverid räägivad kerneli keelt, nii et kernel ei pea teadma, kuidas rääkida iga kunagi loodud riistvaraga. See võimaldab ühel kernelil töötada paljude erinevate tootemarkide ja riistvaramudelitega.

Niisiis, kui rääkida abstraktsetest, on oluline täpselt teada, mida mõiste tähendab. Sarnaselt sellele, kuidas kunstis abstraktsioon või abstraktne tükk peaks kujutama midagi, mis ei ole omane või kaasasündinud kvaliteet, on arvutiteaduse abstraktsioon viis, kuidas peita protsessi mõnikord ülekaalukat detaili.

Võtke näiteks RAM-i muutujate lugemine ja kirjutamine. Igal emaplaadil võib olla väga erinev mälu kontroller, teie arvuti võib käivitada ARM, Intel, AMD, SPARC, POWERPC või MIPS CPU, kuid see ei tohiks olla oluline teie Hello World programmi jaoks ja see ei ole, sest tuuma kokkuvõtted riistvara erinevus ühtse liidese kujul.

See liides ootab programmeerijaid nagu iga teine ​​funktsioonikõne, kuid on eriline, sest see on süsteemikõne. Süsteemikõne on lihtsalt funktsioon, mis nõuab kernelist midagi, see on koht, kus kernel täidab taotluse sõltumata sellest, milline riistvara on. Linuxi tuuma rakendab süsteemikõnede POSIX standardit.

Soovitatav: Täielik juhend Linuxiga alustamiseks

Nüüd peame teadma, milline on Linuxi tuuma vastutus, st millised abstraktsioonid peaksime ootama igast kaasaegsest operatsioonisüsteemi tuumast?

  • Andmekogu
    • Juhusliku juurdepääsu mälu - muutujate ja andmete lugemine ja kirjutamine mälus
    • Püsiladustamine - failide lugemine ja kirjutamine alalisel mäluseadmel
    • Virtuaalne failisüsteem
  • Võrguühendus - andmete saatmine ja vastuvõtmine arvutivõrgu kaudu
    • Füüsilise meedia agnostik (Ethernet, Wireless, LTE, Dialup)
    • Osaliselt protokolli agnostik
  • Tküsi ajastamine
    • CPU aja jagamine
    • Koormuse tasakaalustamine ja prioriseerimine
  • Seadme protokollid (USB, FireWire, seeria, paralleel)
    • USB eemaldatav andmekandja
    • Veebikaamerad
    • Hiir ja klaviatuur
  • Turvalisus
    • Kasutaja ja rühma õigused
    • Ligipääs ressurssidele

Linuxi tuum muudab arendamise lihtsamaks, pakkudes ülaltoodud teenuseid mitmesuguste süsteemikõnede vormis. Vaatame lähemalt mõnda neist ja kuidas nad muudavad arengu lihtsamaks ja tootlikumaks.

Andmekogu

Andmesalvestuse vorme on kaks, nimelt ajutine ladustamine ja püsiv ladustamine. Ajutine ladustamine, mis ei pruugi olla ilmselge mõnele lugejale, on RAM. Mitte kõik, mis RAM-i läheb, peab olema püsivalt salvestatud. Hea näide sellest on interneti sirvimisel, te ei soovi, et iga veebileht, mida külastate, oleks teie arvutis püsivalt salvestatud. Loomulikult on püsiv ladustamine kõvaketas või SSD / flash-mälu.

Linuxi kernel tagab RAM-is andmete täiesti läbipaistva lugemise ja kirjutamise, sõltumata riistvaraplatvormist. See ei ole oluline, kui kasutate Linuxi vanemas Intel i386 arvutis või uusimas ARM-põhises Android-telefonis, ei pea koodi enne ühilduvuse tagamiseks muutma, ja see on väga võimas idee.Pidage siiski meeles, et Linuxi tuuma on muudetud, et toetada erinevaid riistvaraplatvorme, ja see on kerneli modifikatsioonid, mis võimaldavad tal pakkuda ühtlast liidest hoolimata mitte-nii ühtlasest riistvarast.

Lisaks isoleerib kernel iga protsessi oma mäluruumis, mis tähendab, et protsess ei pea teadma, mis mälu kuulub sellele, sest kogu protsessile nähtav mälu kuulub sellele. See mälu jagamine suurendab ka turvalisust arendajale ilma lisakuludeta.

Sarnaselt peidab kernel püsiva salvestamise korral SATA, PATA, SCSI, USB, M.2 ja teiste salvestusprotokollidega suhtlemise erinevusi ning võimaldab ühel programmil lugeda ja kirjutada faile mis tahes andmekandjal, mis on ühendatud mis tahes toetatud protokolli ja mis tahes toetatud failisüsteem ilma programmi muudatusteta. Ja see paneb tohutu hulga võimu nii arendaja kui ka kasutaja kätte. See suurendab ka koodide taaskasutatavust ja arendaja tootlikkust, kuna puudub spetsiaalne kood.

Võrgu juurdepääs

Kui tegemist on võrkude loomisega, on see veidi erinev, sest igal protokollil on oma aadressivorming, seega on iga võrguprotokolli toetamiseks vaja spetsiaalset koodi. Õnneks on ainult IPv4 ja IPv6 tavalised. Paljude teiste protokollide puhul, mis on vastu võetud nagu DECnet, IPX ja AppleTalk, on Linuxi tugi, kuid nende protokollide toetamine ei ole tänapäeva rakendustes vaevalt kasulik.

Tagasi IPv4 ja IPv6-le on kaks IP-aadressi väga erinevat vormi, kuid see on sama palju vara, sest see on ebamugav. IP-aadressi põhjal saab kergesti tuletada vajaliku protokolli tüübi. Lisaks pakub kernel TCP, UDP, SCTP ja ICMP tuge, mida saab hõlpsasti kasutada süsteemikõnede tegemisel. Ei ole oluline, kas teie arvuti on ühendatud Etherneti protokolli, LTE või Dialupi abil, süsteemi kõned on endiselt samad.

Kujutage ette, et vajate erinevaid Chrome'i või Firefoxi versioone olenevalt sellest, kas kasutate WiFi või Etherneti, oleks arendajatele palju keerulisem. See abstraktsioon on jällegi väga võimas ja annab paindlikkuse, mis suurendab arendaja tootlikkust ja lõppkasutaja paindlikkust.

Ülesannete planeerimine

Ülesannete planeerimine on väga suur teema, mis on väga arvamuslik. Nii et me ei räägi ajastamisalgoritmidest rääkimisest ja me räägime lihtsalt tuuma vastutusest, tagamaks, et iga protsess hakkab CPU-sse lülituma, isegi kui neid on sadu.

Enne mitmetahuliste protsessorite koidumist võivad arvutid tegelikult teha ainult ühe asja. Igale protsessile anti õiglane osa ajast, mida arvutati ükshaaval, kuid seda tehti nii kiiresti, et see lõi paralleelselt töötavate protsesside illusiooni. Enne mitmetahulisi protsessoreid paneksid arvutitootjad emaplaadile tegelikult rohkem kui ühe protsessori, et võimaldada korraga rohkem kui ühte protsessi. Seda tehakse ikka veel tänapäeval, kuid paljude protsessoritega ja isegi hüperhreadingiga, mis võimaldab kahel protsessil tuumal mõnda Intel CPU-d (see toob kaasa süsteemid, mis suudavad korraga toetada enam kui sada niidet).

Iga protsess tahab CPU-l aega ja kernel tagab, et igaüks saab oma käigu õigeaegselt. Peale selle vajavad mõned protsessid viivitusi, võib-olla ootab I / O või ajastatud ajavahemikku ootav mäng, ja seda saab abistada ka kernel.

Protsessi hõivamise asemel, kui CPU ootab, saab käivitada teise protsessi ja algse protsessi saab pärast soovitud aega tagasi tuua, suurendades seeläbi üldist jõudlust. Üldiselt tähendab ülesannete ajakava, et arendaja ei pea muretsema teiste arvutil töötavate protsesside pärast, vaid nad peavad oma programmi pärast muretsema.

Linuxi kernelis olevate abstraktsioonide arv on ilmselt liiga suur, et ükski (või mõistlik) inimene proovida. Ja kuigi Linuxi tuuma poolt pakutavate abstraktsioonide arv võib olla ülekaalukas, oleks täpsem, kui palju arendaja peaks teadma rakenduse rakendamiseks ilma nendeta. Selle tõttu, et Linuxi tuumas esineb abstrakte, ei saa me lihtsalt kõiki neid katta. Aga kui teil on mingeid konkreetseid abstrakte puudutavaid taotlusi, mida soovite põhjalikumalt katta, siis me tahaksime kohustada, andke meile teada alltoodud kommentaarides.

Nüüd Vaata: 10 Huvitavad faktid Linuxist

Töötanud Olete: Robert Gaines & George Fleming | Tahad Meiega?

Kommentaarid Kohapeal: