ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ВСрификация Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Linux ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½Ρ‹Ρ… абстракций

Π”ΠΈΡΡΠ΅Ρ€Ρ‚Π°Ρ†ΠΈΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, трасса ошибки прСдставляСтся Π² Ρ‚Скстовом Π²ΠΈΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ вСсьма спСцифичный, Π²ΠΎΠΎΠ±Ρ‰Π΅ говоря, сильно зависящий ΠΎΡ‚ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… инструмСнтов статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ инструмСнты, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ трассы ошибок Π² Π±ΠΎΠ»Π΅Π΅ наглядном ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ для Π°Π½Π°Π»ΠΈΠ·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. НапримСр, трассу ошибки инструмСнта статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ CPAchecker… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ВСрификация Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Linux ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½Ρ‹Ρ… абстракций (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  • Π“Π»Π°Π²Π° 1. ΠžΠ±Π·ΠΎΡ€ Ρ€Π°Π±ΠΎΡ‚ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм
    • 1. 1. Π―Π΄Ρ€ΠΎ ΠžΠ‘ Linux
    • 1. 2. ΠŸΡ€Π°Π²ΠΈΠ»Π°
    • 1. 3. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ тСстирования (динамичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ)
    • 1. 4. ΠžΠ±Ρ‰Π΅Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ инструмСнты статичСского Π°Π½Π°Π»ΠΈΠ·Π°
    • 1. 5. БистСмы Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм
    • 1. 6. Π’Ρ‹Π²ΠΎΠ΄Ρ‹
  • Π“Π»Π°Π²Π° 2. ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux
    • 2. 1. ΠŸΠΎΡ‚ΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄
    • 2. 2. Π¨Π°Π³
    • 2. 3. Π¨Π°Π³
    • 2. 4. Π¨Π°Π³
    • 2. 5. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΡ€Π°Π²ΠΈΠ»
    • 2. 6. ΠžΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ привязки ΠΊ ΠΈΠ½Ρ‚СрфСйсу ядра
  • Π“Π»Π°Π²Π° 3. ΠœΠ΅Ρ‚ΠΎΠ΄ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ окруТСния Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°
    • 3. 1. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ взаимодСйствия
    • 3. 2. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ опрСдСлСния
    • 3. 3. Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ модСль Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈ Π΅Π³ΠΎ окруТСния Π² 7Π³-исчислСнии
    • 3. 4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ задания окруТСния Π² Π²ΠΈΠ΄Π΅ процСссов с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ» взаимодСйствия
    • 3. 5. Врансляция процСссов Π² Π‘ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ
  • Π“Π»Π°Π²Π° 4. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½Ρ‹Ρ… абстракций
    • 4. 1. ΠžΠ±Ρ‰Π°Ρ информация
    • 4. 2. ΠœΠ΅Ρ‚ΠΎΠ΄ CEGAR
    • 4. 3. Π˜Π·Π²Π΅ΡΡ‚Π½Ρ‹Π΅ ограничСния
    • 4. 4. Π’Ρ‹Π²ΠΎΠ΄Ρ‹
  • Π“Π»Π°Π²Π° 5. БистСма Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux
    • 5. 1. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс систСмы
    • 5. 2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° инструмСнта Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ
  • Π“Π»Π°Π²Π° 6. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° выявлСния ΠΈ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΠ» коррСктности
    • 6. 1. Π’Ρ‹Π±ΠΎΡ€ источника
    • 6. 2. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
    • 6. 3. ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ошибок взаимодСйствия Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² с ΡΠ΄Ρ€ΠΎΠΌ
  • ОБ Linux
    • 6. 4. АналогичныС Ρ€Π°Π±ΠΎΡ‚Ρ‹
  • Π“Π»Π°Π²Π° 7. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π΅ΠΌΡ‹

.

Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ ставится Π·Π°Π΄Π°Ρ‡Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы (ОБ) Linux. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ надСТности ΠΈ, Π² Ρ‡Π°ΡΡ‚ности, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ-Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… систСм являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ соврСмСнных ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ΠžΡΠΎΠ±Ρ‹ΠΉ Π²ΠΊΠ»Π°Π΄ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой Π·Π°Π΄Π°Ρ‡ΠΈ вносят Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ систСмного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. ВСрификация Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux являСтся критичСски Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ:

β€’ ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ условиСм обСспСчСния надСТности ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΠΈ систСм, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ядро.

β€’ Π”Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ОБ Linux, входящиС Π² ΡΠ΄Ρ€ΠΎ, это большой, ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ растущий класс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ суммарный объСм Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² составляСт Π±ΠΎΠ»Π΅Π΅ 9 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк исходного ΠΊΠΎΠ΄Π°. Π—Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π³ΠΎΠ΄ ΠΎΠ½ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΡΡ Π½Π° ΠΏΠΎΠ»ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° строк.

Для Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ входят Π² ΡΠΎΡΡ‚Π°Π² ядра, обСспСчСниС качСства проводится силами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ядра. По Π΄Π°Π½Π½Ρ‹ΠΌ Linux Foundation, Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии ядра, выходящСй Ρ€Π°Π· Π² 2−3 мСсяца, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ 1000 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ 200 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ. НСсмотря Π½Π° Ρ‚Π°ΠΊΠΎΠ΅ большоС количСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… ΠΈ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ядра связано с ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ошибок Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ…. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π½Π°Π»ΠΈΠ· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вСрсий ядра Π·Π° Π³ΠΎΠ΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с 26.10.10 ΠΏΠΎ 26.10.11 ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ порядка 80% ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ исправлСниями ошибок. ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ это Π² ΡΠΈΠ»Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π²ΠΈΠ΄Ρƒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ количСства достаточно слоТного исходного ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ числу Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» коррСктности, начиная ΠΎΡ‚ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡ‚ΡŒΡΡ всС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ΠΈ, ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ спСцифичными ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ говорят ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс ядра.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ‰Π΅Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ», Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρƒ массива. Однако, ΠΏΠΎΠΌΠΈΠΌΠΎ Π½ΠΈΡ… остаСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ спСцифичных для ΠžΠ‘ Linux ошибок взаимодСйствия Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° с ΠΈΠ½Ρ‚СрфСйсом ядра. По Π΄Π°Π½Π½Ρ‹ΠΌ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вСрсий ядра Π·Π° Π³ΠΎΠ΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с 26.10.10 ΠΏΠΎ 26.10.11 количСство спСцифичных ошибок составляСт Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ ΠΎΡ‚ Π²ΡΠ΅Ρ… ошибок, ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ» коррСктности.

ΠŸΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° высокоточных инструмСнтов статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½Ρ‹Ρ… абстракций. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ инструмСнты BLAST, CPAchecker, SLAM. Π—Π° ΡΡ‡Π΅Ρ‚ построСния ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½Ρ‹Ρ… абстракций ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок, Π½ΠΎ ΠΈ ΠΈΡ… отсутствиС для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ свойством высокоточных инструмСнтов для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ спСцифичСских ΠΏΡ€Π°Π²ΠΈΠ» являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ уточнСния абстракции ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ CEGAR (Counter Example Guided Abstraction-Refinement), Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ коррСктности, Ρ‚Π°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°. Π­Ρ‚ΠΎ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ инструмСнты ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Ρ†Π΅Π»Π΅Π²Ρ‹Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… настройка ΠΏΠΎΠ΄ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ коррСктности Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π΅ статичСского Π°Π½Π°Π»ΠΈΠ·Π°.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ инструмСнтов высокоточного статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌ ΠžΠ‘ Linux ΠΈΠΌΠ΅Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ прСдпосылки. ВысокоточныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Π½Π°ΡΡ‚оящСС врСмя ΠΈΠΌΠ΅ΡŽΡ‚ ограничСния ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (Π΄ΠΎ 50−100 тыс. строк). Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ. Π Π°Π·ΠΌΠ΅Ρ€ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², входящих Π² ΡΠΎΡΡ‚Π°Π² ядра ΠžΠ‘ Linux, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 50 тысяч строк, Π° Π² ΡΡ€Π΅Π΄Π½Π΅ΠΌ составляСт порядка 2−3 тыс. строк ΠΊΠΎΠ΄Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² публикуСтся вмСстС с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° инструмСнтов статичСского Π°Π½Π°Π»ΠΈΠ·Π°.

Для примСнСния высокоточных инструмСнтов трСбуСтся ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΊ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, трСбуСтся ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ возмоТности воздСйствия Π½Π° Π½Π΅Π³ΠΎ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚вия сСрдцСвины ядра ΠžΠ‘ с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, трСбуСтся Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° коррСктности Π² Π²ΠΈΠ΄Π΅, ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ для свСдСния Π·Π°Π΄Π°Ρ‡ΠΈ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Ρƒ достиТимости Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ этих Π·Π°Π΄Π°Ρ‡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ спСцифику ядра ΠžΠ‘ Linux. Одна ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… особСнностСй состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ интСрфСйсы ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ ΠΈ ΡΠ΄Ρ€ΠΎΠΌ ΠžΠ‘ Linux постоянно ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. ΠœΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π° взаимодСйствия, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅, мСняСтся ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΌΠΎΠ΄Π΅Π»ΠΈ окруТСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ части систСмы Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ устроСны Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ простоту развития, Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ядра ОБ, ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ ΠΈ ΠžΠ‘. На ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Π΅ особСнности.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π°Π΄Π°Ρ‡Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux являСтся Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ, для Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ трСбуСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ЦСль ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ — Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² устройств ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ выполнСния ΠΏΡ€Π°Π²ΠΈΠ» ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ взаимодСйствия Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² с ΡΠ΄Ρ€ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Для достиТСния Ρ†Π΅Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ поставлСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

1. ΠŸΡ€ΠΎΠ²Π΅ΡΡ‚ΠΈ Π°Π½Π°Π»ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ²;

2. ΠŸΡ€ΠΎΠ²Π΅ΡΡ‚ΠΈ Π°Π½Π°Π»ΠΈΠ· ошибок Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… ΠžΠ‘ Linux, приводящих ΠΊ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽ с ΡΠ΄Ρ€ΠΎΠΌ ΠžΠ‘;

3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ систСмы Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½Ρ‹Ρ… абстракций, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ:

β€’ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π² ΡƒΡΠ»ΠΎΠ²ΠΈΡΡ… Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ развития ядра;

β€’ возмоТности Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (конфигурируСмости) систСмы Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π·Π° ΡΡ‡Π΅Ρ‚ пополнСния Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€Π°Π²ΠΈΠ» коррСктности ΠΈ Π½Π°Π±ΠΎΡ€Π° инструмСнтов Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

4. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ систСму Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄;

5. ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Π΄Π°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ области примСнимости ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Научная Π½ΠΎΠ²ΠΈΠ·Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Научной Π½ΠΎΠ²ΠΈΠ·Π½ΠΎΠΉ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹:

1. ΠœΠ΅Ρ‚ΠΎΠ΄ построСния ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ окруТСния Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² устройств ΠžΠ‘ Linux;

2. ΠœΠ΅Ρ‚ΠΎΠ΄ построСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ систСмы Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ;

3. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ адСкватности ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΠ» коррСктности Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса ΠΏΡ€Π°Π²ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий;

4. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½ΠΎΠΉ абстракции Π² BLAST.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ.

На ΠΎΡΠ½ΠΎΠ²Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±Ρ‹Π»Π° создана систСма Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux LDV (Linux Driver Verification). БистСма LDV позволяСт Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΏΡ€Π°Π²ΠΈΠ» коррСктности взаимодСйствия с ΡΠ΄Ρ€ΠΎΠΌ ΠžΠ‘ для Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², входящих Π² ΠΏΠΎΡΡ‚Π°Π²ΠΊΡƒ ядСр ΠžΠ‘ Linux с Π²Π΅Ρ€ΡΠΈΠΈ 2.6.31 ΠΏΠΎ 3.4. По ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° 25.09.2012 Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ 60 ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π½Π°Π½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ядра ΠΈ ΡƒΠΆΠ΅ исправлСны ΠΈΠ»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ исправлСны Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсиях.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сСртификационных процСссов для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ обСспСчСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… поставщиков дистрибутивов ΠžΠ‘ Linux ΠΈ ΠžΠ‘, построСнных Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ядра Linux. Π’Π°ΠΊΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ качСства Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux, для создания инструмСнтов Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΠΈΠ΄ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΠΈ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для сравнСния характСристик Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… инструмСнтов статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°.

Π”ΠΎΠΊΠ»Π°Π΄Ρ‹ ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

По Ρ‚Π΅ΠΌΠ΅ диссСртации Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ 15 Ρ€Π°Π±ΠΎΡ‚ [1−15] (ΠΈΠ· Π½ΠΈΡ… 5 Π² ΠΈΠ·Π΄Π°Π½ΠΈΡΡ… ΠΈΠ· ΠΏΠ΅Ρ€Π΅Ρ‡Π½Ρ Π’ΠΠš [1−5]).

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ полоТСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄ΠΎΠΊΠ»Π°Π΄Ρ‹Π²Π°Π»ΠΈΡΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… конфСрСнциях ΠΈ ΡΠ΅ΠΌΠΈΠ½Π°Ρ€Π°Ρ…:

β€’ ВСсСнний ΠΊΠΎΠ»Π»ΠΎΠΊΠ²ΠΈΡƒΠΌ ΠΌΠΎΠ»ΠΎΠ΄Ρ‹Ρ… исслСдоватСлСй Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ (SYRCoSE: Spring Young Researchers Colloquium on Software Engineering, Π³. Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2008 Π³.);

β€’ ΠžΠ±Ρ‰Π΅Ρ€ΠΎΡΡΠΈΠΉΡΠΊΠ°Ρ Π½Π°ΡƒΡ‡Π½ΠΎ-тСхничСская конфСрСнция «ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ‚СхничСскиС срСдства обСспСчСния бСзопасности ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ» (Π³. Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2008 Π³.);

β€’ ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΉ сСминар «ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ Ρ‚СхничСскиС срСдства сСртификации свободного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния» (OpenCert: International Workshop on Foundations and Techniques for Open Source Software Certification, Π³. ΠœΠΈΠ»Π°Π½, 2008 Π³.);

β€’ ΠšΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² свободных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΠŸΡ€ΠΎΡ‚Π²Π΅ (Π³. Обнинск, 2009 Π³.);

β€’ ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Π°Ρ конфСрСнция памяти Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΠΊΠ° А. П. Π•Ρ€ΡˆΠΎΠ²Π° «ΠŸΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Ρ‹ систСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ» (PSI: Perspectives of System informatics, Π³. ΠΠΎΠ²ΠΎΡΠΈΠ±ΠΈΡ€ΡΠΊ, 2011 Π³.);

β€’ ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Π°Ρ конфСрСнция ΠΏΠΎ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ создания ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° систСм (TACAS: International Conference on Tools and Algorithms for the Construction and Analysis of Systems, Π³. Π’Π°Π»Π»ΠΈΠ½, 2012 Π³.);

β€’ Π‘Π΅ΠΌΠΈΠ½Π°Ρ€ «Π”Π΅Π½ΡŒ свободного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния» (Π³. Москва, 2012 Π³.);

β€’ Π‘Π΅ΠΌΠΈΠ½Π°Ρ€ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π° систСмного программирования РАН (Π³. Москва, 2012 Π³.).

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈ ΠΎΠ±ΡŠΠ΅ΠΌ диссСртации

.

Π Π°Π±ΠΎΡ‚Π° состоит ΠΈΠ· Π²Π²Π΅Π΄Π΅Π½ΠΈΡ, сСми Π³Π»Π°Π², Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ ΡΠΏΠΈΡΠΊΠ° Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ (55 Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ). Основной тСкст диссСртации (Π±Π΅Π· ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΏΠΈΡΠΊΠ° Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹) Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 115 страниц.

4.4. Π’Ρ‹Π²ΠΎΠ΄Ρ‹.

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ Π±Ρ‹Π»ΠΈ рассмотрСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π΅ BLAST 2.7:

β€’ Настройка автоматичСского управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² ΡΠ·Ρ‹ΠΊΠ΅ OCaml ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ врСмя, Π·Π°Ρ‚Ρ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎ Π΄Π°Π»ΠΎ 20% прироста Π² ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π΅ посСщСнных Ρ‚ΠΎΡ‡Π΅ΠΊ провСряСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ памяти.

β€’ Π’ ΡΠΈΠ½Ρ‚аксичСском Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ CIL, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ инструмСнтом BLAST, Π±Ρ‹Π»ΠΈ внСсСны исправлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎ 98% Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ядра (ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΎ Π½Π° Π²Π΅Ρ€ΡΠΈΠΈ 2.6.37), ΠΈ Π»ΠΈΡˆΡŒ ΠΎΠΊΠΎΠ»ΠΎ 2% приводят ΠΊ ΠΎΡˆΠΈΠ±ΠΊΠ°ΠΌ Ρ€Π°Π·Π±ΠΎΡ€Π°. Π”ΠΎ ΡΡ‚ΠΎΠ³ΠΎ BLAST 2.5 Π½Π΅ ΠΌΠΎΠ³ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π² ΡΠ΄Ρ€Π΅ 2.6.31.

β€’ Π‘Ρ‹Π»Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с Ρ€Π΅ΡˆΠ°Ρ‚Слями, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΌΠΈ Π½Π° Π²Ρ…ΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ SMTLIB, Π·Π° ΡΡ‡Π΅Ρ‚ сниТСния Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов ΠΏΡ€ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ» ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ прСдставлСния.

β€’ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ ΠΏΡƒΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ осущСствляСт ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ частСй Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹, Π½Π΅ Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½-тСрполянта. ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° стало 0(log N), вмСсто O (N).

β€’ Π‘Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π°Π½Π°Π»ΠΈΠ·Π° алиасов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹.

Π”Π°Π½Π½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ инструмСнту BLAST 2.7 Π·Π°Π½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мСсто Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ DeviceDrivers64 ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ DeviceDrivers32 Π½Π° ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… сорСвнованиях ΠΏΠΎ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ SV-COMP 2012 [68].

Π“Π»Π°Π²Π° 5.

БистСма Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux.

БистСма Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ LDV (Linux Driver Verification) являСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, описанного Π² Π³Π»Π°Π²Π΅ 2.

Разработанная систСма Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ особСнностями:

β€’ БистСма ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° с ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΠΌ сборки ядра, поэтому вся нСобходимая информация ΠΎ ΡΠΎΡΡ‚Π°Π²Π΅ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ°Ρ… сборки Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² извлСкаСтся автоматичСски.

β€’ ГСнСрация окруТСния осущСствляСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ автоматичСски Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ шаблонов, ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ всС Ρ‚ΠΈΠΏΡ‹ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ².

β€’ БистСма позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° коррСктности с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ языка программирования Π‘ΠΈ.

β€’ БистСма ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ встраиваниС Π²Π½Π΅ΡˆΠ½ΠΈΡ… инструмСнтов статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ написания Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ².

β€’ Для Π°Π½Π°Π»ΠΈΠ·Π° трасс ошибок ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² систСма прСдоставляСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с Π’Π΅Π±-интСрфСйсом.

5.1. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс систСмы.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ взаимодСйствуСт с ΡΠΈΡΡ‚Π΅ΠΌΠΎΠΉ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ LDV посрСдством высокоуровнСвого интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки LDV manager. Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ позволяСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΈΠ»ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ…) для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ядСр ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ»ΠΈ нСскольким ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ коррСктности. Π’ Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ критичСская ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация, Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ LDV manager создаСт Π°Ρ€Ρ…ΠΈΠ², содСрТащий Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ LDV, трассы ошибок ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΈΡ… Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈ ΡΠ΄Ρ€Π° ΠžΠ‘ Linux. Π”Π°Π»Π΅Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ для Π°Π½Π°Π»ΠΈΠ·Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Statistics Server.

Statistics Server — это ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Π²Π΅Π±-интСрфСйс для статистичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Statistics Server позволяСт Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ большиС ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… Π² Ρ…ΠΎΠ΄Π΅ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсий ядра ΠžΠ‘ Linux ΠΏΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Ρƒ ΠΏΡ€Π°Π²ΠΈΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, запускаСмых с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ конфигурациями. Помимо статистки, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, суммарноС количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚ΠΎΠ² для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ядра ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ позволяСт Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ списки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ядра, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… инструмСнт Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²Ρ‹Π΄Π°Π» Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚ Unsafe Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ коррСктности.

БистСма Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ LD V ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ для использования Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΉ Ρ‚Π°ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ядра, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ инструмСнтов Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ достиТимости ΠΈ Ρ‚. Π΄. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, запросы ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ статистики Ρƒ ΡΡ‚ΠΈΡ… Π³Ρ€ΡƒΠΏΠΏ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, поэтому Statistics Server ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ инструмСнтов Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ достиТимости ΠΏΠΎΠΌΠΈΠΌΠΎ статистики ΠΏΠΎ Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚Π°ΠΌ прСдоставляСтся статистика ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠΌ Π½Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽΡ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² показываСтся статистика ΠΏΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ваТная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° — это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сравнСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’ Ρ‡Π°ΡΡ‚ности, это оказываСтся ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ инструмСнтом для сравнСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… инструмСнтов статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π² Ρ‚ΠΎΠΌ числС, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсий ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ.

Statistics Server ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ с Error Trace Visualizer, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° трасс ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π΄Π°ΡŽΡ‚ инструмСнты Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ достиТимости Π² ΡΠ»ΡƒΡ‡Π°Π΅ вынСсСния Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚Π° Unsafe. Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ позволяСт ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· трасс ошибок, благодаря Ρ‡Π΅ΠΌΡƒ сущСствСнно ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ процСсса Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ. Error Trace Visualizer ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описан Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ [69].

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, трасса ошибки прСдставляСтся Π² Ρ‚Скстовом Π²ΠΈΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ вСсьма спСцифичный, Π²ΠΎΠΎΠ±Ρ‰Π΅ говоря, сильно зависящий ΠΎΡ‚ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… инструмСнтов статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ инструмСнты, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ трассы ошибок Π² Π±ΠΎΠ»Π΅Π΅ наглядном ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ для Π°Π½Π°Π»ΠΈΠ·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. НапримСр, трассу ошибки инструмСнта статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ CPAchecker ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² HTML, послС Ρ‡Π΅Π³ΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π² Π»ΡŽΠ±ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Врассы ошибок SATABS Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ посрСдством ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Eclipse ΠΏΠ»Π°Π³ΠΈΠ½Π°. А, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, инструмСнт статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ BLAST Π΄ΠΎ Error Trace Visualizer Π½Π΅ ΠΈΠΌΠ΅Π» инструмСнтов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· трасс ошибок. ПодобноС ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² прСдставлСния трасс ошибок, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅, затрудняСт ΠΈΡ… Π°Π½Π°Π»ΠΈΠ· для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… инструмСнтов Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LDV Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ прСдставлСния трасс ошибок. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ являСтся Π² Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎΠΉ стСпСни Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΌ, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ трассы ошибок Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… инструмСнтах Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±Π΅Π· Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ исходных трасс ошибок ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ рСализуСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² инструмСнтов Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Для инструмСнтов BLAST ΠΈ CPAchecker ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ LDV. Error Trace Visualizer Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ трассы, прСдставлСнныС Π² ΠΎΠ±Ρ‰Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π΅Π±-интСрфСйса.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ наряду с Ρ‚рассой ошибок Error Trace Visualizer ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΉ ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ, ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ взаимосвязи (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, соотвСтствиС строк трассы ошибки строкам исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹). Π’Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ выдСляСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс элСмСнтов трассы ошибки ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ стилСм ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Для ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выполняСтся синтаксичСская подсвСтка. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты, Ρ‚Π°ΠΊ ΠΈ Ρ†Π΅Π»Ρ‹Π΅ классы элСмСнтов трассы ошибки. ВсС это сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΈΠ· трасс ошибок Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… инструмСнтов Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

5.2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° инструмСнта Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Для использования инструмСнта статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ части:

β€’ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²;

β€’ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²Ρ‹Π²ΠΎΠ΄Π° инструмСнта Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ;

β€’ запуск инструмСнта;

β€’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Π”Π°Π»Π΅Π΅ рассмотрСны Π΄Π°Π½Π½Ρ‹Π΅ части ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ срСдства ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Ρ‡.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ инструмСнту Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΠΈΠΆΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈΠ· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ анализируСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ располоТСна Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ограничСния Π½Π° Ρ‚ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ прСдставлСны эти Ρ„Π°ΠΉΠ»Ρ‹. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° прСдоставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² стандартный прСпроцСссор языка Π‘ΠΈ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнта трансформации ΠΊΠΎΠ΄Π° CIL, ΠΈΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΎΠ΄ΠΈΠ½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ CIL [70]. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ возвращаСтся список Ρ„Π°ΠΉΠ»ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТится вСсь Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ исходный ΠΊΠΎΠ΄.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π²Ρ‹Π²ΠΎΠ΄Π° инструмСнта Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° Π²Ρ…ΠΎΠ΄ ΠΏΠΎΠ΄Π°ΡŽΡ‚ΡΡ строчки, Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ инструмСнтом Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ ΠΈ/ΠΈΠ»ΠΈ Π½Π° ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ошибок. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ ΠΈΠ·Π²Π»Π΅ΠΊ ΠΈΠ· Ρ‚рассы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, послСдниС 20 строк ΠΈΠ»ΠΈ Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚ ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ/отсутствии Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ошибок). КаТдая функция-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ…Ρ€Π°Π½ΠΈΡ‚ своС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС. НСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ запуском инструмСнта Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ рСгистрируСт Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, a Reachibihty Π‘ Verifier примСняСт ΠΈΡ…, ΠΊΠΎΠ³Π΄Π° инструмСнт Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ.

Запуск инструмСнта Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкой, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π²Ρ‹Π·ΠΎΠ²Ρƒ инструмСнта Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² осущСствляСтся Π² ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ инструмСнта ΠΌΠ°Π½Π΅Ρ€Π΅, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ прСпроцСссированных Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° ΠΈ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΈ. БиблиотСчная функция, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ осущСствляСт Π²Ρ‹Π·ΠΎΠ² инструмСнта, отличаСтся ΠΎΡ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π° внСшнСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ особСнностями, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

β€’ автоматичСски примСняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°, зарСгистрированныС Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠΌ Ρ€Π°Π½Π΅Π΅;

β€’ Π²Ρ‹Π²ΠΎΠ΄ инструмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большим ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ, архивируСтся ΠΈ ΡΠΎΡ…раняСтся Π½Π° Π΄ΠΈΡΠΊ;

β€’ инструмСнт запускаСтся Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, позволяя Π»ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ использованиС инструмСнтом ΠΈ Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ процСссами рСсурсов ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ потрСблСния памяти, дискового пространства ΠΈ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ;

β€’ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°, происходит ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ потрСблСния запускаСмым инструмСнтом ΠΈ Π²ΡΠ΅ΠΌΠΈ Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ процСссами Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈΠΏΡ€ΠΈ этом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… ΠΈΠΌΠ΅Π½Π½ΠΎ процСссах Π΅ΠΌΡƒ интСрСсно ΠΈ Π² ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… слСдуСт отнСсти.

ПослС окончания запуска Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ окончания (Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠΌΠΈΡ‚Π° рСсурсов, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ сигнала ΠΈΠ»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅), ΠΊΠΎΠ΄Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ€Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ²ΡˆΠ΅Π³ΠΎ процСсс сигнала, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΡΠΎΠ±Ρ€Π°Π½Π½ΡƒΡŽ функциями ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° трассы. ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π² Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. НапримСр, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ трассы ошибки ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ инструмСнта статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π΅Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой трассы.

АдаптСр Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ строку (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚рассу стСка, Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ инструмСнтом ΠΏΡ€ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ) ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ² для сохранСния ΠΈΡ… Π² Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π—Π°Ρ‚Π΅ΠΌ эта информация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΠΎΡΡ‚роСния статистики с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° LDV Statistics Server.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ экспСримСнты с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ настройками инструмСнтов Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±Π΅Π· нСобходимости ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·. НапримСр, для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния.

Π“Π»Π°Π²Π° 6.

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° выявлСния ΠΈ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΠ» коррСктности.

6.1. Π’Ρ‹Π±ΠΎΡ€ источника.

Для выявлСния ΠΏΡ€Π°Π²ΠΈΠ» коррСктности достаточно ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π² Ρ‚ΠΎΠΌ числС, входящСй Π² ΡΠΎΡΡ‚Π°Π² ядра ΠΈ Π² ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ядра ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈ ΡΠ΄Ρ€Π° ΠžΠ‘ Linux.

Однако, Π² ΡΡ‚ΠΈΡ… источниках Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ особСнности Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… подсистСм ядра ΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ². ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ядро развиваСтся ΠΎΡ‡Π΅Π½ΡŒ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄Π°Π½Π½Ρ‹Π΅ источники Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ источника для выявлСния ΠΏΡ€Π°Π²ΠΈΠ» ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список рассылки ядра Linux (ΠΎΡ‚ Π°Π½Π³Π». Linux Kernel Mailing List, LKML). Π’ Π΄Π°Π½Π½ΠΎΠΌ спискС рассылки ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ вопросы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ядра, Π² Ρ‚ΠΎΠΌ числС вопросы, связанныС с ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ошибок. На ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ этих обсуТдСний ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ мноТСство ΠΎΠ±Ρ‰ΠΈΡ… ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ», Π½ΠΎ Π°Π½Π°Π»ΠΈΠ· сообщСний Π² LKML достаточно Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΎΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сообщСний ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΎΠ½ΠΈ содСрТат большоС количСство ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСхничСской. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠ½ΠΎΠ³ΠΎ ошибок обсуТдаСтся Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… списках рассылок, Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ…, систСмах отслСТивания ошибок ΠΈ Ρ‚. Π΄.

ΠŸΡ€Π°Π²ΠΈΠ»Π° коррСктности ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, содСрТащСго измСнСния, вносимыС Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠžΠ‘ Linux. Π”Π°Π½Π½Ρ‹ΠΉ источник являСтся достаточно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ срСди ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ всС Π²Π°ΠΆΠ½Ρ‹Π΅ исправлСния ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… списках рассылок, Π½Π° ΠΊΠΎΠ½Ρ„СрСнциях, Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… ΠΈ Ρ‚. Π΄. ИзмСнСния Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… ΠžΠ‘ Linux проходят достаточно Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ согласования ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π² Ρ‚ΠΎΠΌ числС, Ρƒ ΡΠΊΡΠΏΠ΅Ρ€Ρ‚ΠΎΠ² Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… подсистСмах ядра.

КаТдоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ содСрТит Π² ΡΠ΅Π±Π΅ достаточно ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΡƒΡŽ свСдСния ΠΎΠ± Π°Π²Ρ‚ΠΎΡ€Π΅, ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ измСнСния, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, со ΡΡΡ‹Π»ΠΊΠ°ΠΌΠΈ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ обсуТдСния), ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈ/ΠΈΠ»ΠΈ ядра ΠžΠ‘ Linux ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ основного источника для выявлСния ΠΏΡ€Π°Π²ΠΈΠ» Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

6.2. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π° измСнСния Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ ΠžΠ‘ Linux Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ ΠΎΠ½ΠΎ исправлСниСм ошибки ΠΈΠ»ΠΈ ΠΎΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, добавляСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… устройств).

Π”Π°Π»Π΅Π΅ ΠΈΠ· Ρ€Π°ΡΡΠΌΠΎΡ‚рСния ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ошибки, исправлСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… связано с Ρ‚рСбованиями ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈΠ»ΠΈ ошибки взаимодСйствия Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ «Π½Π΅Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅» ошибки. Π’ Ρ‚ΠΎΠΌ случаС, Ссли ошибка связана с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ использованиСм спСциализированных для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² констант, условий ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠΉ, Π΅Π΅ ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π³ΠΎ рассмотрСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для Π½Π΅Π΅ нСльзя ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ коррСктности.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ шагом ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… ΠžΠ‘ Linux являСтся классификация ошибок, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°.

Π‘Ρ€Π΅Π΄ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ошибок ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ класса. Π’ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ класс входят ΠΎΠ±Ρ‰ΠΈΠ΅ ошибки Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ…, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π‘ΠΈ (ядро ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠžΠ‘ Linux Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π‘ΠΈ). НапримСр, Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π½ΠΈΠ΅ Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ указатСля, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с Ρ†Π΅Π»Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ ΠΈ Ρ‚. ΠΏ. Ко Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ классу относятся спСцифичныС ошибки, связанныС с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ использованиСм интСрфСйса сСрдцСвины ядра. К Ρ‡ΠΈΡΠ»Ρƒ Ρ‚Π°ΠΊΠΈΡ… ошибок относятся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… спСцифичныС Ρ‚ΠΈΠΏΡ‹. Π’Ρ€Π΅Ρ‚ΠΈΠΉ класс Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ошибок Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ состояния Π³ΠΎΠ½ΠΎΠΊ ΠΈ Π²Π·Π°ΠΈΠΌΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ вслСдствиС нСиспользования ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ использования ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² синхронизации.

Π”Π°Π½Π½Ρ‹ΠΉ шаг Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ осмыслСния ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, которая ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ ΠΎΡˆΠΈΠ±ΠΊΠ΅. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ошибка ΠΏΡ€ΠΎΡΠ²ΠΈΠ»Π°ΡΡŒ вслСдствиС Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΠ³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°. На ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ошибки ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ях ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния Π»ΠΈΠ±ΠΎ Π² Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ использовании интСрфСйса сСрдцСвины ядра. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ исправляСт рассматриваСмоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. На Π΄Π°Π½Π½ΠΎΠΌ шагС ΠΏΠΎΠΌΠΈΠΌΠΎ Π°Π½Π°Π»ΠΈΠ·Π° описания ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ прСдполагаСтся Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· взаимодСйствий Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… подсистСм ядра ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ список классов нСизвСстСн Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСпосрСдствСнно ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ самого Π°Π½Π°Π»ΠΈΠ·Π°. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, классы позволят Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½Ρ‹Π΅ ошибки Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ…. commit 5fc8fe8e2ea30805bee5al3420817d6ad34ea9ce Author Anders Larsen Date Wed Oct 6 23 46 25 2010 +0200.

USB cp210x Add WAGO 750−923 Service Cable device ID commit 93ad03d60b5bl8897030038234aa2ebae8234748 upstream.

The WAGO 750−923 USB Service Cable is used for configuration and firmware updates of several industrial automation products from WAGO Kontakttechnik GmbH skipped).

Signed-off-by Anders Larsen Signed-off-by Greg Kroah-Hartman diffgit a/drivers/usb/serial/cp210x с b/drivers/usb/serial/cp210x с index 3ad53bd 9927bca 100 644 a/drivers/usb/serial/cp210x с + + + b/drivers/usb/serial/cp210x с -132 6 +132 7 @@ static const struct usbdeviceid idtable[] = { USBDEVICE (0xl7F4, OxAAAA) >, /* WavesenseJazz blood glucose meter*/ { USBDEVICE (0×1843, 0×0200) > /* Vaisala USB Instrument Cable */ { USBDEVICE (0xl8EF, OxEOOF) >, /* ELV USB-l2C-lnterface */ + { USBDEVICE (0xlBE3, 0×07A6) }, /* WAGO 750 923 USB Service Cable */ { USBDEVICE (0×413C, 0×9500) }, /* DW700 GPS USB interface */ { } I* Terminating Entry */.

Рис 6 1 ОписаниС измСнСния 5fc8fe8, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½ΠΎΠ²ΠΎΠ³ΠΎ устройства.

6.2.1. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ примСнСния ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… На ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ описания ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ для измСнСния Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅, прСдставлСнного Π½Π° Π ΠΈΡ 6.1 ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся исправлСниСм ошибки, Π° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½ΠΎΠ²ΠΎΠ³ΠΎ USB устройства.

ИзмСнСниС Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Π½Π° Π ΠΈΡ 6.2 дСмонстрируСт исправлСниС Π½Π΅Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ошибки, Π²Ρ‹Π·Π²Π°Π½Π½ΠΎΠΉ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Ρ‚Ρ€Π΅ΠΊΠΏΠ°Π΄Π° ИзмСнСниС исходного ΠΊΠΎΠ΄Π° задСйствуСт спСцифичныС для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° константы ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ.

На Π ΠΈΡ 6 3 прСдставлСно ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся исправлСниСм Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ спСцифичной ошибки. Данная ошибка Π²Ρ‹Π·Π²Π°Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ использованиСм интСрфСйса сСрдцСвины ядра, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, Π² ΠΊΠΎΠ½Ρ‚СкстС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ вызываСтся функция выдСлСния памяти, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²Π΅commit 8e6b41c76c5b8a27b2abd7b9f6ed0877987fdllb Author Chase Douglas Date Tuejan 11 19 37 50 2011 +0100.

HID magicmouse Don’t report REL{X, Y} for Magic Trackpad Linus' tree commit 6a66bbd693cl2f71697c61207aal8bc5al2da0ab ].

With the recent switch to having the hid layer handle standard axis initialization, the Magic Trackpad now reports relative axes This would be fine in the normal mode, but the driver puts the device in multitouch mode where no relative events are generated Also, userspace software depends on accurate axis information for device type detection Thus, ignoring the relative axes from the Magic Trackpad is best.

Signed-off-by Chase Douglas cchase douglas@canonical com> Signed-off-by Jiri Kosina Signed-off-by Greg Kroah-Hartman diff —git a/drivers/hid/hid-magicmouse с b/drivers/hid/hid-magicmouse с index e6dcl51 ed732b7 100 644 — a/drivers/hid/hid-magicmouse с + + + b/drivers/hid/hid-magicmouse с -433,6 +433,11 @@ static int magicmouseinputmapping (struct hiddevice *hdev, if ('msc->input) msc->input = hi->input, Π› Magic Trackpad does not give relative data after switching to MT */ + if (hi->input >id product == USBDEVICEIDAPPLEMAGICTRACKPAD && + field->flags & HIDMAINITEMRELATIVE) return -1 return 0,.

Рис 6 2 ОписаниС измСнСния 8Π΅6Π¬41с, ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ΅Ρ‚ΠΈΠΏΠΎΠ²ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ commit 83a9a8034ee98ac21804c376ec90af8e4997790e Author John Johansen Date Wed Jun 8 15 07 47 2011 -0700.

AppArmor Fix sleep in invalid context from tasksetrlimit commit 1780f2d3839a0d3eb85ee014a708f9e2c8f8ba0e upstream Affected kernels 2 Π± 36 — 3 0.

AppArmor may do a GFPKERNEL memory allocation with tasklock (tsk->groupleader), held when called from securitytasksetrlimit This will only occur when the task’s current policy has been replaced, and the task’s creds have not been updated before entering the LSM securitytasksetrlimit () hook.

BUG sleeping function called from invalid context at mm/slub с 847 inatomic () 1, irqsdisabled () 0, pid 1583, name cupsd skipped).

Signed-off-by John Johansen Reported-by Miles Lane Signed-off-by James Morris Signed-off-by Greg Kroah-Hartman diff —git a/security/apparmor/lsm с b/security/apparmor/lsm с index eclbcec 3d2fdl4 100 644 — a/security/apparmor/lsm с + + + b/secunty/apparmor/lsm с -612,7 +612,7 @@ static int apparmorsetprocattr (struct taskstruct *task char 'name static int apparmortasksetrlimit (struct taskstruct *task, unsigned int resource, struct rlimit *newrlim) struct aaprofile +profile = aacurrentprofile () struct aaprofileprofile =aacurrentprofile () int error = 0, if ('unconfined (profile)).

Рис 6 3 ОппсаииС измСнСния 83a9a80, ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠΎΠ²ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ (Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΡΠ½ΡƒΡ‚ΡŒ, Π² ΠΊΠΎΠ½Ρ‚СкстС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ) сти процСсс Π² Ρ€Π΅ΠΆΠΈΠΌ оТидания.

6.3. ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ошибок взаимодСйствия Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² с ΡΠ΄Ρ€ΠΎΠΌ ΠžΠ‘ Linux.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ [1].

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… основного Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ сдСланы Π² ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ядрах с 2.6.35 ΠΏΠΎ 3.0 Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ [71] Π·Π° Π²Ρ€Π΅ΠΌΡ, начиная с 26 ΠΎΠΊΡ‚ября 2010 Π³ΠΎΠ΄Π° ΠΏΠΎ 26 ΠΎΠΊΡ‚ября 2011 Π³ΠΎΠ΄Π°. ВсСго Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ насчитываСтся 3101. Π‘Ρ€Π΅Π΄ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Π°ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ измСнСния ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ. Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π·Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ насчитываСтся 2623 (ΠΎΠΊΠΎΠ»ΠΎ 84.6% ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ числа ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ). Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ измСнСния Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠ΄Ρ€Π΅, Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊΠΈΠ΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΏΠ°ΠΏΠΎΠΊ: crypto, drivers, sound, security, include/acpi, include/crypto, include/drm, include/media, include/mtd, include/pcmcia, include/rdma, include/rxrpc, include/scsi, include/sound ΠΈ include/video. Из Π²ΡΠ΅Ρ… ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, сдСланных Π² ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ядрах с 26.10.10 ΠΏΠΎ 26.10.11, Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… оказалось 1503, Ρ‚. Π΅. ΠΎΠΊΠΎΠ»ΠΎ 57.3% ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ числа ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π‘Π²ΠΎΠ΄Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ основного Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… прСдставлСны Π² Π’Π°Π±Π». 6.1. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ [1].

Π’ ΡΠΎΠΎΡ‚вСтствии с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΎΠΉ, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅, Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° классификация выявлСнных Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ошибок. ΠŸΡ€ΠΈ классификации Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ исправлСниСм Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… спСцифичных ошибок, связанных с Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ использованиСм интСрфСйса Π³Ρ€ΡƒΠΏΠΏΡ‹ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² (47 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ). ИзмСнСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ исправлСния сразу Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ошибок, ΠΏΡ€ΠΈΠΏΠΈΡΡ‹Π²Π°Π»ΠΎΡΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ количСство.

ИзмСнСния Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… (1503).

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (321 — 21%) Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ошибок (1182 — 79%).

НСтиповыС ошибки (786 — 67%) Π’ΠΈΠΏΠΎΠ²Ρ‹Π΅ ошибки (396 — 33%).

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½Π°ΡƒΡ‡Π½Ρ‹Π΅ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ичСскиС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Π΄ΠΈΡΡΠ΅Ρ€Ρ‚Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΈ Π²Ρ‹Π½ΠΎΡΠΈΠΌΡ‹Π΅ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Ρƒ, состоят Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² устройств ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ выполнСния ΠΏΡ€Π°Π²ΠΈΠ» ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ взаимодСйствия Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² с ΡΠ΄Ρ€ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы;

2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ построСния ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ окруТСния Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² устройств ΠžΠ‘ Linux;

3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ построСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ систСмы Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ систСмы Π·Π° ΡΡ‡Π΅Ρ‚ пополнСния Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€Π°Π²ΠΈΠ» коррСктности ΠΈ Π½Π°Π±ΠΎΡ€Π° инструмСнтов Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ;

4. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π½ΠΎΠΉ абстракции Π² ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π΅ BLAST;

5. На ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° систСма Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux.

БистСма Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΡ‚Π΄Π΅Π»Π° Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ программирования Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π° систСмного программирования РАН ΠΏΡ€ΠΈ нСпосрСдствСнном участии Π°Π²Ρ‚ΠΎΡ€Π° Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ руководитСля ΠΈ ΡƒΡ‡Π°ΡΡ‚Π½ΠΈΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ основных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² систСмы Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Автор Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅Ρ‚ свою ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ всСм участникам Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². ΠžΡΠΎΠ±Ρ‹ΠΉ Π²ΠΊΠ»Π°Π΄ Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ внСсли А. Π’. Π₯ΠΎΡ€ΠΎΡˆΠΈΠ»ΠΎΠ², Π•. М. Новиков, П. Π•. Π¨Π²Π΅Π΄.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

  1. Π’. Π‘., Новиков Π•. М., Π₯ΠΎΡ€ΠΎΡˆΠΈΠ»ΠΎΠ² А. Π’. Анализ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ошибок Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Linux // Π’Ρ€ΡƒΠ΄Ρ‹ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π° систСмного программирования РАН. 2012. Π’. 22. Π‘. 349−374.
  2. Π’. Π‘., ΠœΠ°Π½Π΄Ρ€Ρ‹ΠΊΠΈΠ½ М. Π£. Π˜Π½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΡΡ†ΠΈΡ Ρ„ΠΎΡ€ΠΌΡƒΠ» с ΠΊΠ²Π°Π½Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π² CSIsat Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ инстанцирования // Π’Ρ€ΡƒΠ΄Ρ‹ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π° систСмного программирования РАН. 2012. Π’. 22. Π‘. 327−348.
  3. М. Π£., ΠœΡƒΡ‚ΠΈΠ»ΠΈΠ½ Π’. Π‘., Новиков Π•. М. ΠΈ Π΄Ρ€. ИспользованиС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² устройств ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Linux для сравнСния инструмСнтов статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ // ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. 2012. Π’. 5. Π‘. 54−71.
  4. П. Π•., ΠœΡƒΡ‚ΠΈΠ»ΠΈΠ½ Π’. Π‘., ΠœΠ°Π½Π΄Ρ€Ρ‹ΠΊΠΈΠ½ М. Π£. ΠžΠΏΡ‹Ρ‚ развития инструмСнта статичСской Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ BLAST // ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. 2012. Π’. 3. Π‘. 24−35.
  5. Mutilin V., Mandrykin М. Instantiation-Based Interpolation for Quantified Formulae in CSIsat // Proceedings of SYRCoSE. 2012. Vol. 1. P. 85−93.
  6. Shved P., Mandrykin M., Mutilin V. Predicate Analysis with Blast 2.7 // Proceedings of TACAS. 2012. Vol. 7214. P. 525−527.
  7. Π’. Π‘., Новиков Π•. М., Π‘Ρ‚Ρ€Π°Ρ… А. Π’. ΠΈ Π΄Ρ€. АрхитСктура Linux
  8. Driver Verification // Π’Ρ€ΡƒΠ΄Ρ‹ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π° систСмного программирования РАН. 2011. Π’. 20. Π‘. 163−187.
  9. Shved P., Mutilin V., Mandrykin М. Static Verfication «Under The Hood»: Implementation Details and Improvements of BLAST // Proceedings of SYR-CoSE. Vol. 1. 2011. P. 54−60.
  10. Khoroshilov A., Mutilin V., Novikov E. et al. Towards An Open Framework for Π‘ Verification Tools Benchmarking // Proceedings of PSI. 2011. P. 82−91.
  11. Π’., Π₯ΠΎΡ€ΠΎΡˆΠΈΠ»ΠΎΠ² А. Π‘Π°Π·Π° ΠΏΡ€Π°Π²ΠΈΠ» для Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Linux // ВСзисы Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² VI ΠšΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² свободных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΠŸΡ€ΠΎΡ‚Π²Π΅. 2009.
  12. Π’. Π‘., Π₯ΠΎΡ€ΠΎΡˆΠΈΠ»ΠΎΠ² А. Π’., Π—Π°Ρ…Π°Ρ€ΠΎΠ² Π’. А. ВСрификация бСзопасности Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠžΠ‘ Linux // ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ XVII ΠžΠ±Ρ‰Π΅Ρ€ΠΎΡΡΠΈΠΉΡΠΊΠΎΠΉ Π½Π°ΡƒΡ‡Π½ΠΎ-тСхничСской ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ «ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ‚СхничСскиС срСдства обСспСчСния бСзопасности ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ». 2008. Π‘. 106−112.
  13. Khoroshilov A., Mutilin V., Shcherbina V. et al. How to Cook an Automated System for Linux Driver Verification // 2nd Spring Young Researchers' Colloquium on Software Engineering. Vol. 2 of SYRCoSE 2008. 2008. P. 11−14.
  14. Khoroshilov A., Mutilin V. Formal Methods for Open Source Components Certification // 2nd International Workshop on Foundations and Techniques for Open Source Software Certification. OpenCert 2008. 2008. P. 52−63.
  15. Π―Π΄Ρ€ΠΎ дистрибутива Debian Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] // Π Π΅ΠΆΠΈΠΌ доступа: http: //wiki. debian. org/DebianKernel, свободный.
  16. ОБ Linux Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] // Π Π΅ΠΆΠΈΠΌ доступа: https://www.osadl.org/Realtime-Linux.projects-realtime-linux. O. html, свободный.
  17. Corbet J. How to Participate in the Linux Community. A Guide To The Kernel Development Process Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] // Π Π΅ΠΆΠΈΠΌ доступа: http://www.linuxfoundation.org/sites/main/files/ How-Participate-Linux-Community0.pdf, свободный. 2008.
  18. Leemhuis T. What’s new in Linux 3.3 Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] // Π Π΅ΠΆΠΈΠΌ доступа: http://www.h-online.com/open/features/ What-s-new-in-Linux-3−3-1 466 872.html, свободный. 2012.
  19. Chou A., Yang J., Chelf Π’. et al. An empirical study of operating systems errors // SOSP '01: Proceedings of the eighteenth ACM symposium on Operating systems principles. New York, NY, USA: ACM, 2001. P. 73−88.
  20. Swift M. M., Bershad B. N., Levy H. M. Improving the reliability of commodity operating systems // SOSP '03: Proceedings of the nineteenth ACM symposium on Operating systems principles. New York, NY, USA: ACM, 2003. P. 207−222.
  21. Ganapathi A., Ganapathi V., Patterson D. Windows XP kernel crash analysis // Proceedings of the 20th conference on Large Installation System Administration. LISA '06. Berkeley, CA, USA: USENIX Association, 2006. P. 12−12.
  22. Palix N., Thomas G., Saha S. et al. Faults in linux: ten years later // SIG-PLAN Not. 2011. Vol. 47, no. 4. P. 305−318.
  23. ISO/IEC TR 24 772 // Information Technology Programming Languages — Guidance to Avoiding Vulnerabilities in Programming Languages through Language Selection and Use. 2010.
  24. Kroah-Hartman G. The Linux Kernel Driver Interface Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] // Π Π΅ΠΆΠΈΠΌ доступа: http://www.kernel.org/doc/ Documentation/stableapinonsense.txt, свободный.
  25. Ахо А. Π’., Π›Π°ΠΌ M. Π‘., Π‘Π΅Ρ‚ΠΈ Π ., Ульман Π”. Π”. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹: ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. 2-Π΅ ΠΈΠ·Π΄. Москва: Π’ΠΈΠ»ΡŒΡΠΌΠ΅, 2008.
  26. S. Π‘. Lint, Π° Π‘ program verifier // Bell Laboratories. Murray Hill, New Jersey, 1987.
  27. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° инструмСнта Sparse A Semantic Parser for Π‘ Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] // Π Π΅ΠΆΠΈΠΌ доступа: http://www.kernel.org/pub/software/ devel/sparse/, свободный.
  28. Engler D., Chelf Π’., Chou A. Checking system rules using system-specific, programmer-written compiler extensions // Proceedings of the 4th conferenceon Symposium on Operating System Design & Implementation Volume 4. 2000. P. 1−16.
  29. Guo P. J., Engler D. Linux kernel developer responses to static analysis bug reports // Proceedings of the 2009 conference on USENIX Annual technical conference. USENIX'09. Berkeley, CA, USA: USENIX Association, 2009. P. 22−22.
  30. Stuart H. Hunting bugs with Coccinelle: Ph. D. thesis / University of Copenhagen. 2008.
  31. Lawall J. L., Brunei J., Palix N. et al. WYSIWIB: A declarative approach to finding API protocols and bugs in Linux code // DSN'09 The 39th Annual IEEE/IFIP International Conference on Dependable Systems and Networks. 2009. P. 43−52.
  32. Xie Y., Aiken A. Saturn: a SAT-based tool for bug detection // Proceedings of the 17th international conference on Computer Aided Verification. CAV'05. Berlin, Heidelberg: Springer-Verlag, 2005. P. 139−143.
  33. Xie Y., Aiken A. Saturn: A scalable framework for error detection using Boolean satisfiability // ACM Trans. Program. Lang. Syst. 2007. Vol. 29, no. 3.
  34. Dillig I., Dillig T., Aiken A. Sound, complete and scalable path-sensitive analysis // SIGPLAN Not. 2008.-June. Vol. 43. P. 270−280.
  35. Pratikakis P., Foster J. S., Hicks M. LOCKSMITH: Practical static race detection for Π‘ // ACM Trans. Program. Lang. Syst. 2011. Vol. 33, no. 1. P. 3:1−3:55.
  36. Π‘. Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ интСрфСйс поиска Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎ ΡΠΈΠ½Ρ‚аксичСским Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌ: язык К AST / / Π’Ρ€ΡƒΠ΄Ρ‹ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π° систСмного программирования РАН. 2011. Π’. 20. Π‘. 51−68.
  37. Ayewah N., Iiovemeyer D., Morgenthaler J. D. et al. Using Static Analysis to Find Bugs // IEEE Softw. 2008. Vol. 25, no. 5. P. 22−29.
  38. Evans D., Larochelle D. Improving Security Using Extensible Lightweight Static Analysis // IEEE Softw. 2002. January. Vol. 19. P. 42−51.
  39. А., Π‘Π΅Π»Π΅Π²Π°Π½Ρ†Π΅Π² А., Π‘ΠΎΡ€ΠΎΠ΄ΠΈΠ½ А., НСсов Π’. ИспользованиС статичСского Π°Π½Π°Π»ΠΈΠ·Π° для поиска уязвимостСй ΠΈ ΠΊΡ€ΠΈΡ‚ичСских ошибок Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ // Π’Ρ€ΡƒΠ΄Ρ‹ Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π° систСмного программирования РАН. 2011. Π’. 21. Π‘. 23−38.
  40. Ball Π’., Bounimova Π•., Levin V. et al. The Static Driver Verifier Research Platform // Computer Aided Verification. CAV'10. 2010. P. 119−122.
  41. Ball Π’., Rajamani S. K. SLIC: A specification language for interface checking Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] // Π Π΅ΠΆΠΈΠΌ доступа: http://research.microsoft, com/apps/pubs/default.aspx?id=69 906, свободный. 2001.
  42. Ball Π’., Bounimova E., Kumar R., Levin V. SLAM2: Static driver verification with under 4% false alarms // Formal Methods in Computer-Aided Design (FMCAD), 2010. 2010.-oct. P. 35 -42.
  43. Ball Π’., Levin V., Rajamani S. K. A decade of software model checking with SLAM // Commun. ACM. 2011. Vol. 54, no. 7. P. 68−76.
  44. Post H., Kiichlin W. Integrated static analysis for Linux device driver verification // Proceedings of the 6th international conference on Integrated formal methods. IFM'07. Berlin, Heidelberg: Springer-Verlag, 2007. P. 518−537.
  45. Post H., Kiichlin W. Automatic data environment construction for static device drivers analysis // Proceedings of the 2006 conference on Specification and verification of component-based systems. SAVCBS '06. New York, NY, USA: ACM, 2006. P. 89−92.
  46. Beyer D., Henzinger T. A., Jhala R., Majumdar R. The software model checker Blast: Applications to software engineering // Int. J. Softw. Tools Technol. Transf. 2007. Vol. 9, no. 5. P. 505−525.
  47. Novikov E. One Approach to Aspect-Oriented Programming Implementation for the C programming language // Proceedings of SYRCoSE. 2011. Vol. 1. P. 74−81.
  48. Milner R. The Polyadic 7r-Calculus: a Tutorial. LFCS, Department of Computer Science, University of Edinburgh, 1991. P. 49.
  49. Henzinger T. A., Jhala R., Majumdar R. Lazy abstraction // Symposium on Principles of Programming Languages. ACM Press, 2002. P. 58−70.
  50. Clarke E., Grumberg O., Jha S. et al. Counterexample-Guided Abstraction Refinement // Computer Aided Verification / Ed. by E. Emerson, A. Sistla. Springer Berlin / Heidelberg, 2000. Vol. 1855 of Lecture Notes in Computer Science. P. 154−169.
  51. Detlefs D., Nelson G., Saxe J. B. Simplify: a theorem prover for program checking // J. ACM. 2005. Vol. 52, no. 3. P. 365−473.
  52. Barrett C., Tinelli C. CVC3 // Proceedings of the 19?/l International Conference on Computer Aided Verification (CAV '07) / Ed. by W. Damm, H. Hermanns. Vol. 4590 of Lecture Notes in Computer Science. Springer-Verlag, 2007. P. 298−302. Berlin, Germany.
  53. Craig W. Linear reasoning // J. Symbolic Logic. 1957. Vol. 22. P. 250−268.
  54. Henzinger T. A., Jhala R., Majumdar R., McMillan K. L. Abstractions from proofs // SIGPLAN Not. 2004. Vol. 39, no. 1. P. 232−244.
  55. Jhala R., Majumdar R. Path slicing // SIGPLAN Not. 2005. Vol. 40, no. 6. P. 38−47.
  56. Beyer D., Zufferey D., Majumdar R. CSIsat: Interpolation for LA+EUF // CAV. 2008. P. 304−308.
  57. McMillan K. L. An interpolating theorem prover // Theor. Comput. Sci. 2005. Vol. 345, no. 1. P. 101−121.
  58. Andersen L. O. Program Analysis and Specialization for the Π‘ Programming Language. K0benhavns Universitet. Datalogisk Institut. DIKU, 1994.
  59. Π•. Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° трасс ошибок инструмСнтов статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° // Π’Ρ€ΡƒΠ΄Ρ‹ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΡƒΡ‡Π½ΠΎ-практичСской ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ «ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ систСмной ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ» (АПБПИ-2011). 2011.-25 ΠœΠ°Ρ. Π‘. 215−221.
  60. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… вСрсий ядра ΠžΠ‘ Linux Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] // Π Π΅ΠΆΠΈΠΌ доступа: http://git.kernel.org/?p=linux/kernel/ git/stable/linux-stable.git-a=summary, свободный.
  61. Engler D., Chen D. Y., Hallem S. et al. Bugs as deviant behavior: a general approach to inferring errors in systems code // SIGOPS Oper. Syst. Rev. 2001. Vol. 35, no. 5. P. 57−72.
  62. Li Z., Zhou Y. PR-Miner: automatically extracting implicit programming rules and detecting violations in large software code // SIGSOFT Softw. Eng. Notes. 2005. Vol. 30, no. 5. P. 306−315.
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ