Системне програмування

Матеріал з Вікіпедії — вільної енциклопедії.

Перейти до: навігація, пошук

Систе́мне програмува́ння (або програмування систем) - це вид програмування, який полягає в роботі з системним програмним забезпеченням. Головною відмінністю системного програмування в порівнянні з прикладним програмуванням є те, що прикладне програмне забезпечення призначене випускати (створювати і оновлювати) програми для користувачів (напр., текстові процесори), тоді як системне програмування призначене випускати програми, які обслуговують апаратне забезпечення (напр., дефрагментація диска) що обумовлює значну залежності такого типу ПЗ від апаратної частини. Також для системного програмування характерне:

  • програміст має зважати на апаратне забезпечення та інші особливості системи, на якій передбачається запуск програми, та використовувати ці особливості (наприклад, застосовуючи оптимізовані алгоритми для певної архітектури)
  • зазвичай використовуються низькорівневі мови програмування або діалекти які:
    • можуть працювати у ресурсно-обмеженому середовищі
    • максимально раціональні та мають мінімальні затримки за часом виконання
    • мають малі бібліотеки бібліотеки періоду виконання (RTL), або взагалі їх не мають
    • дозволють прямий доступ до пам'яті та керуючої логіки
    • дозволяють програмісту писати частини програми на асемблері
  • налагодження може бути складним, якщо неможливо запустити програму у режимі налагодження через обмеження у ресурсах. Виконання програми у імітованому середовищі може зняти цю проблему.

Системне програмування суттєво відрізняється від прикладного програмування, що змушує програмістів спеціалізуватися у одній з цих галузей.

Для системного програмування часто доступна тільки обмежена кількість інструментів. Налагодження інколи виявляється дуже складним. Бібліотеки періоду виконання, якщо взагалі доступні, мають набагато менші можливості, і роблять менше перевірок на помилки. Через ці обмеження, часто використовуються моніторинг та реєстрація даних; операційні системи мають бути забезпечені дуже якісними підсистемами реєстрації даних.

[ред.] Історія

Спочатку системні програмісти неодмінно використовували асемблер. Експерименти з підтримкою апаратної частини у високорівневих мовах програмування у кінці 60-х призвели до появи таких мов як BLISS та BCPL, але С, яка допомогла росту Unix, набула поширення вже у 1980-х. Віднедавна деяке використання знайшлось і для Embedded C++, наприклад у системі вводу/виводу драйверів у Mac OS X.

[ред.] Приклади

Реалізація основних частни операційної системи та у використанні мереж потребує системного програмування. Наприклад, реалізація віртуальної пам'яті або драйверів для операційної системи.

Особисті інструменти