# Какво е системно програмиране?

**Системното програмиране** (_Термин на Английски език: System Programming_) е дисциплина, която се занимава с разработката на **системен софтуер** (_Термин на Английски език: System Software_). Характерно за системния софтуер е, че обикновено той взаимодейства пряко с хардуера и системните библиотеки на **ядрото** (_Термин на Английски език: Kernel_) на операционната система и служи за платформа на други приложения, които в повечето случаи се използват от крайния потребител или така наречен **приложен софтуер** (_Термин на Английски език: Applied Software_).

![01\_introduction.png](https://3813375884-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M50WMlRW6PAqn4gpp-_%2F-M50WNBN2Cvs5pia3MN7%2F-M50WQXm5tpL8-ZtfLLL%2F01.png?generation=1587015973627903\&alt=media)

Операционните системи могат също да се разглеждат като системен софтуер, тъй като на практика те управляват всички други програми и ресурси. Други примери са **системни драйвери** (_Термин на Английски език: System Drivers_), **шелл** (_Термин на Английски език: Shell_), **текстов редактор** (_Термин на Английски език: Text editor_), **компилатор** (_Термин на Английски език: Compiler_) и **дебъгер** (_Термин на Английски език: Debugger_), **инструменти** (_Термин на Английски език: Tools_) и **демони** (_Термин на Английски език: Daemons_).

Понякога един програмен продукт може да се разглежда като приложен и системен софтуер. Системите за бази данни изпълняват системни функции за други програми, но предлагат и инструменти, използвани в ежедневната работа на системни оператори и анализатори на данни.

В Линукс, **системните инструменти** (_Термин на Английски език: System Tools_) обикновено се намират в директориите **/sbin** и **/usr/sbin**.

От **системните програмисти** (_Термин на Английски език: System Programmers_) се изисква да имат добра представа за хардуера и ОС, за да използват правилно и оптимално ресурсите на системата.
