Яка різниця між Segfault і шиною?
Основна відмінність між Segmentation Fault і Bus Error полягає в тому, що Помилка сегментації вказує на недійсний доступ до дійсної пам’яті, тоді як помилка шини вказує на доступ до недійсної адреси.16 грудня 2021 р
В обчисленнях є помилка шини помилка апаратного забезпечення, що повідомляє операційну систему (ОС), що процес намагається отримати доступ до пам’яті, яку ЦП не може фізично адресувати: недійсна адреса для адресної шини, звідси й назва.
На практиці segfaults майже завжди спричинені спроба прочитати або записати неіснуючий елемент масиву, неправильне визначення покажчика перед його використанням або (у програмах на C) випадкове використання значення змінної як адреси (див. приклад scanf нижче).
Коли процесор намагається отримати доступ до неприпустимої області пам’яті. У цьому випадку відповідач шини може повернути відповідь про помилку, що призведе до BusFault. Коли пристрій не готовий прийняти передачу. Наприклад, коли пристрій намагається отримати доступ до DRAM без ініціалізації контролера DRAM.
Деякі поширені причини помилок шини: недійсні дескриптори файлів, необґрунтовані запити введення/виведення, неправильний розподіл пам'яті, неправильні структури даних, помилки компілятора та пошкоджені завантажувальні блоки.
Основна відмінність між Segmentation Fault і Bus Error полягає в тому, що Помилка сегментації вказує на недійсний доступ до дійсної пам’яті, тоді як помилка шини вказує на доступ до недійсної адреси.