Драйвер

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

При компютрите, драйвер се нарича компютърна програма, която позволява на програми от високо ниво да взаимодействат с хардуерно устройствo.

Драйверът обикновено комуникира с периферните устройства чрез шина или комуникационна подсистема, с която е свързан хардуера. Когато програма извика функция на драйвера, той дава команди на устройството. След като устройството отговори на драйвера, драйверът вече може да вика функции на първоначалната програма. Драйверите са зависими от хардуера и специфични за операционната система. Обикновено имат нужда от обработка на прекъсванията за всякакви асинхронни времезависими хардуерни интерфейси.

Предназначение[редактиране | edit source]

Драйверът опростява програмирането, защото представлява преводач между хардуерното устройство и приложните програми или операционната система, които го използват. Програмистите могат да пишат приложения от високо ниво, без да се съобразяват с това на какъв хардуер потребителят ще ги пуска. Физически слоеве комуникират със специфичните инстанции на устройството. Примерно, серийният порт трябва да може да обработва стандартни комуникационни протоколи, като XON/XOFF, които са нормални за всякакъв хардуер, работещ на сериен порт. Това се управлява от логически слой на серийния порт. Но трябва физическият слой да комуникира и с конкретен чип на серийния порт. 16550 UART хардуера е различен от PL-011. Физическият слой адресира тези особености, специфични за чипа. По подразбиране операционната система първо вика логическия слой. Съответно логическият слой вика физическия, за да може да изпълни изискването на операционната система. Накрая, когато хардуерното устройство трябва да отговори на операционната система, използва физическия слой, за да се обърне към логическия.

При Линукс, програмистите могат да създават драйвери или като част от ядрото, или като допълнително заредими.

Заредимите драйвери са в Windows .sys файловете, а в Линукс .ko. Предимството на заредимите драйвери е че те могат да бъдат заредени само когато има нужда от тях и после освободени, така пестейки от паметта на ядрото.

Разработка[редактиране | edit source]

Писането на драйвер изисква добро разбиране на хардуера и на софтуерната платформа, за която се пише. Драйверите работят във високо привилигерована среда и могат да предизвикат големи проблеми. Повечето софтуер, който работи на ниво потребител в съвременните операционни системи, може да бъде спрян без да афектира останалата част от системата. Дори драйвери, изпълняващи се в потребителски режим, могат да сринат системата, ако драйверът не е правилно програмиран. Тези фактори затрудняват диагностицирането на проблеми.

Писането на драйвери обикновено е задача за софтуерния инженер, който работи за компании, разработващи хардуерни устройства. Това е така, защото те имат повече информация от външните лица за конструкцията на хардуера.