ሊኑክስ 5.12 ከርነል ከማህደረ ትውስታ ጋር ሲሰራ ስህተቶችን ለማግኘት የ KFence ንዑስ ስርዓትን ተቀብሏል።

በመገንባት ላይ ያለው የሊኑክስ ከርነል 5.12 የKFence (ከርነል ኤሌክትሪክ አጥር) ዘዴን መተግበርን ያጠቃልላል፣ ይህም የማህደረ ትውስታ አያያዝን የሚፈትሽ፣ ቋት መጨናነቅን የሚይዝ፣ ከተለቀቀ በኋላ የማስታወሻ መዳረሻዎችን እና ሌሎች ተመሳሳይ የክፍል ስህተቶችን ነው።

ተመሳሳይ ተግባር በካሳን የግንባታ አማራጭ (የከርነል አድራሻ ሳኒታይዘር ፣ የአድራሻ ሳኒታይዘርን በዘመናዊ gcc እና clag ይጠቀማል) በከርነል ውስጥ ቀድሞውኑ ነበር - ሆኖም ግን በዋነኝነት የተቀመጠው ለማረም ነው። የ KFence ንዑስ ስርዓት ከ KASAN በከፍተኛ የስራ ፍጥነቱ ይለያል፣ ይህ ባህሪ በስራ ስርዓቶች ውስጥ ባሉ ኮርሶች ላይ እንኳን ለመጠቀም ያስችላል።

በምርት ስርዓቶች ላይ መተግበር በሙከራ ጊዜ ውስጥ የማይታዩ እና በስራ ጫና ውስጥ ወይም በረጅም ጊዜ ቀዶ ጥገና (ከትልቅ የስራ ሰዓት) ጋር ብቻ የሚታዩ የማስታወሻ ስህተቶችን ለመያዝ ያስችላል። በተጨማሪም KFence በምርት ስርዓቶች ላይ መጠቀማቸው የከርነል አሠራርን በማስታወሻ ለመፈተሽ የሚሳተፉትን ማሽኖች በከፍተኛ ሁኔታ ለመጨመር ያስችላል.

KFence በቋሚ ክፍተቶች ውስጥ የጥበቃ ገጾችን ወደ ክምር ውስጥ በማስገባት አነስተኛ ጭነት-ገለልተኛ በላይ ይደርሳል። የሚቀጥለው የጥበቃ ክፍተት ካለቀ በኋላ KFence በመደበኛ ማህደረ ትውስታ ድልድል ስርዓት (SLAB ወይም SLUB allocator) በኩል የሚቀጥለውን የመከላከያ ገጽ ከKFence ነገር ገንዳ ያክላል እና አዲስ የሰዓት ቆጣሪ ሪፖርት ይጀምራል። እያንዳንዱ የ KFence ነገር በተለየ የማስታወሻ ገጽ ውስጥ ይገኛል, እና በግራ እና በቀኝ ድንበሮች ላይ ያሉት የማስታወሻ ገፆች የጥበቃ ገጾችን ይመሰርታሉ, መጠናቸው በዘፈቀደ የተመረጠ ነው.

ስለዚህ, ነገሮች ያሏቸው ገፆች እርስ በእርሳቸው በመከላከያ ገጾች ይለያያሉ, ይህም በማንኛውም መዳረሻ ላይ "የገጽ ስህተት" ለመፍጠር የተዋቀሩ ናቸው. ከወሰን ውጪ የሆኑ ጽሑፎችን በዕቃ ገፆች ውስጥ ለመለየት በስርዓተ-ጥለት ላይ የተመሰረቱ “ቀይ ዞኖች” በተጨማሪ ጥቅም ላይ ይውላሉ፣ በነገሮች ጥቅም ላይ የማይውሉ ማህደረ ትውስታን የሚይዙ፣ የማህደረ ትውስታ ገፆች መጠን ሲደረደሩ ይቀራሉ። —+————+————+————+————+————+— | xxxxxxxxx | ኦ፡ | xxxxxxxxx | :ኦ | xxxxxxxxx | | xxxxxxxxx | ለ፡ | xxxxxxxxx | :B | xxxxxxxxx | | x ጠባቂ x | ጄ፡ ቀይ- | x ጠባቂ x | ቀይ-፡ J | x ጠባቂ x | | xxxxxxxxx | ኢ፡ ዞን | xxxxxxxxx | ዞን፡ E | xxxxxxxxx | | xxxxxxxxx | ሐ፡ | xxxxxxxxx | :C | xxxxxxxxx | | xxxxxxxxx | ቲ፡ | xxxxxxxxx | : ቲ | xxxxxxxxx | —+————+————+————————————————

ከጠባቂ ድንበሮች ውጭ ያለውን ቦታ ለመድረስ ሙከራ ከተደረገ, ክዋኔው የጥበቃ ገጹን ይነካል, ይህም ወደ "ገጽ ስህተት" መፈጠርን ያመጣል, ይህም KFenceን ያቋርጣል እና ስለተገኘው ችግር መረጃ ይመዘግባል. በነባሪ, KFence ስህተትን አያግድም እና በማስታወሻው ውስጥ ማስጠንቀቂያ ብቻ ያሳያል, ነገር ግን ስህተት ከተገኘ ከርነሉን ወደ አስፈሪ ሁኔታ እንዲያስገቡ የሚያስችልዎ "panic_on_warn" ቅንብር አለ.

ምንጭ: opennet.ru

አስተያየት ያክሉ