Waxay soo jeediyeen in lagu daro kernel Linux-ka fulinta ilaa 4 jeer ka dhakhso badan memchr

Dhawaan soo jeedin ku saabsan kernel Linux ayaa la sii daayay, kaas oo la soo jeediyay in lagu daro xirmo balastar leh a dhaqangelinta la wanaajiyey ee shaqada memchr(). loo isticmaalo in lagu raadiyo jile ku jira array.

Hawsha memchr() waxay baadhisaa n byteska hormoodka ah ee aagga xusuusta ee uu tilmaamay s tusaale ahaan c. Labada bayt ee goobta xusuusta ee uu tilmaamay s waxa loo fasiraa inay yihiin jilayaal aan saxeexin.

Soo jeedinta ballanqaadyo dhaqso si loo helo jile ku dhex jira block of memory. Tijaabada horumariyaha, hirgelinta cusub waxay ku dhowdahay afar jeer ka dhakhso badan raadinta waaweyn

Si ka duwan nuqulkii hore, kaas oo isticmaalay isbarbardhigga byte-by-byte, hirgelinta la soo jeediyay ayaa la abuuray iyadoo la tixgelinayo isticmaalka buuxa ee 64-bit iyo 32-bit CPU diiwaannada. Halkii bytes, isbarbardhigga waxaa lagu sameeyaa iyadoo la isticmaalayo erayada mashiinka, kaas oo u ogolaanaya ugu yaraan 4 bytes in la barbar dhigo hal mar.

Taxane balastar ah ayaa hagaajiyay "memchr()" oo ku daray makro
"memchr_inv()" si ay labada hawloodba ugu isticmaali karaan soo saarista maaskaro.

Hirgelinta asalka ah ee "memchr()" waxay ku salaysan tahay isbarbardhigga byte,
kaas oo aan si buuxda u isticmaalin diiwaanka 64 ama 32 bit ee CPU-ga. Waxaan hirgelineynaa a
isbarbardhigga erayada si ugu yaraan 4 bytes lala barbar dhigo isla
cimilada. Memchr () la hagaajiyay ayaa ku dhawaad ​​4 jeer ka dheereeya kii asalka ahaa
silsilado dhaadheer. In Linux Kernel, waxaan ka heli in dhererka xadhigga
uu raadiyay "memchr()" waa ilaa 512 bytes ee darawalada/misc/lkdtm/heap.c.

Markaad ku baadhayso xadhkaha waaweyn, Nooca cusub wuxuu noqday mid 4 jeer ka dheereeya kii hore (tusaale ahaan, xargaha 1000 xaraf). Silsilada yaryar, waxtarka hirgelinta cusubi maaha mid muhiim ah, laakiin weli way ka sarreeyaan nuqulkii asalka ahaa.

Waxa xiisaha leh ee ku saabsan soo jeedinta cusub waa hagaajinta silsiladaha waaweyn, kuwaas oo si weyn u wanaajiya waqtiyada. Waxaa xusid mudan in kernel-ka Linux, cabbirka xadhkaha lagu farsameeyay memchr() wuxuu gaaraa 512 bytes. Imtixaanadayada, faa'iidada waxqabadka ee xargaha 512-byte, xaalad ay ku jirto dabeecadda raadinta waa dhamaadka xadhigga, waa 20%.

Waxaa xusid mudan in nooca asalka ah ee memchr () lagu hirgeliyay farsamada isbarbardhigga byte-caqliga ah, kaas oo aan si buuxda u isticmaalin diiwaannada 64-bit ama 32-bit CPU.

Waxaan isticmaalnaa isbarbardhigga kelmadaha oo dhan si 8 xaraf isku mar loo barbar dhigo CPU-ga. Xeerkani wuxuu ku salaysan yahay David Light hirgelintiisa.

Waxaan abuurnaa laba fayl si aan u cabbirno waxqabadka faylka koowaad Kaas oo ka kooban celcelis ahaan 10 xaraf oo ka horreeya dabeecadda loo socdo. Faylka labaad waxa uu ka kooban yahay ugu yaraan 1000 xaraf ka hor dabeecad bartilmaameed.

Hirgelintayada "memchr()" waa wax yar ka fiican tijaabada koowaad oo ku dhawaad ​​4 jeer ka dhakhso badan kii asalka ahaa hirgelinta imtixaanka labaad.

Tijaabada Kernel 5.18 oo leh "memchr()" cusub oo kala duwan oo ah 32-bit iyo 64-bit architectures ma muujin wax dhibaato ah.

Maxaa dhacaya haddii p aanu ahayn 8 (ama 4 on 32 bit targets) byte toosan? Dhammaan bartilmaameedyadu ma taageeraan culeysyo aan toosnayn ( hufan), sax?
 Waxaan filayaa inay shaqaynayso haddii p aanu 8 ama 4 byte toosnayn. Aynu nidhaahno xadhiggu waa 10 bytes. Loop-ka halkan wuxuu raadin doonaa 8-da bytes ee ugu horreeya. Haddii dabeecadda loo socdo uu ku jiro 2 bytes ee u dambeeya, ka labaad ee loop ayaa heli doona. Waxa kale oo ay sidan oo kale ugu shaqeysaa mishiinada 32-bit.

Guud ahaan faa'iidada waxqabadka weli lama qiimayn Nidaam hoosaadyada kernel-ka marka la isticmaalayo kala duwanaanshaha "memchr()" la hagaajiyay, sidoo kale lagama hadlin in la burinayo hirgelinta (wacida memchr() ee shaqada waxay ku dhacdaa 129 jeer koodka kernel-ka, oo ay ku jiraan darawalada iyo nidaamyada faylka).

Finalmente Haddii aad xiisaynayso inaad waxbadan ka ogaato, waad hubin kartaa faahfaahinta Xiriirka soo socda.


Ka tag faalladaada

cinwaanka email aan la daabacin doonaa. Beeraha loo baahan yahay waxaa lagu calaamadeeyay la *

*

*

  1. Masuul ka ah xogta: Miguel Ángel Gatón
  2. Ujeedada xogta: Xakamaynta SPAM, maaraynta faallooyinka.
  3. Sharci: Oggolaanshahaaga
  4. Isgaarsiinta xogta: Xogta looma gudbin doono dhinacyada saddexaad marka laga reebo waajibaadka sharciga ah.
  5. Kaydinta xogta: Macluumaadka ay martigelisay Shabakadaha Occentus (EU)
  6. Xuquuqda: Waqti kasta oo aad xadidi karto, soo ceshan karto oo tirtiri karto macluumaadkaaga.