Управљачки програм

С Википедије, слободне енциклопедије

Управљачки програм или драјвер (енгл. driver) је рачунарски програм који омогућава комуникацију између програма вишег нивоа (оперативног система, апликација итд.) и рачунарске опреме. Једноставно речено, управљачки програми омогућавају оперативном систему да користи одређену рачунарску опрему, коју обичан корисник уопште не би могао да користи.

Управљачки програм обично комуницира с уређајима преко магистрале или рачунарског подсистема на који је дати уређај прикачен. Када одређени програм захтева извршење неке наредбе од драјвера, драјвер захтева извршење те наредбе од одговарајућег уређаја. Када уређај да одговор, тај одговор се прослеђује позивајућем програму.

Управљачки програми су различити за различите врсте рачунарске опреме и различите оперативне системе.

Намена[уреди | уреди извор]

Управљачки програми поједностављују програмирање тако што за све различите врсте одређеног типа уређаја (нпр. за све штампаче или све мониторе итд.) пружају јединствен скуп наредби које програмер мора да познаје, без улажења у посебности дате врсте уређаја. Јер свака врста одређеног типа уређаја може захтевати посебне наредбе за своје правилно извршавање или посебне врсте параметара. Да би се избегло писање различитих програма за различите врсте уређаја, драјвери преузимају на себе терет различитости а програмер може да користи јединствени скуп наредби за комуникацију с драјвером. Драјвери прихватају ове наредбе и преводе их у одговарајуће наредбе за дату врсту уређаја. Тако, на примјер, програмери могу да користе наредбу write за писање и read за читање са сваког тврдог диска, а драјвер за одређену врсту тврдог диска ће те наредбе превести у оне које та врста разумије.

Структура[уреди | уреди извор]

У структури драјвера разликујемо два апстрактна слоја: логички и физички. Логички слој рукује одређеним типом уређаја, попут мрежних картица, тврдих дискова итд. Физички слој рукује одређеном врстом датог типа уређаја. На примјер, логички слој драјвера за серијске портове рукује, између осталог, протоколом XON/XOFF, који је заједнички за све врсте серијских портова. Физички слој истог драјвера, међутим, комуницира с одређеном врстом серијског порта. На примјер, наредбе за серијски порт с чипом 16550 UART се разликују од наредби серијског порта с чипом PL-011; физички слој обрађује те разлике. По договору, захтјеви програма вишег нивоа прво стижу у логички слој. Потом се логички слој обраћа физичком слоју, који дате захтјеве преводи у разумљиве за дату врсту рачунарске опреме. У обрнутом случају, подаци од уређаја пролазе прво кроз физички слој, преко логичког слоја до датог програма вишег нивоа.

Линуксови драјвери су уграђени у језгро оперативног система. Ако су доступни технички детаљи о одређеној врсти уређаја, развојни тим језгра Линукса гарантује да ће написати одговарајуће драјвере за линукс, без новчане надокнаде[1][2][3]. На тај начин произвођачи рачунарске опреме не морају да пишу драјвере своје опреме за линукс.

Поред тога што драјвери могу да учествују у грађи језгра, они могу да представљају и засебне целине. Windows датотеке с наставком .sys и линуксове датотеке с наставком .ko представљају драјвере у облику засебних целина, који се могу учитати за време рада оперативног система. Њихова предност је што се могу учитати по потреби, и уклонити из меморије када више нису потребни, што штеди меморијски простор језгра.

Развој[уреди | уреди извор]

Писање драјвера за одређени уређај захтева одлично разумевање начина функционисања тог уређаја, као и оперативног система за који се драјвер пише. Драјвери имају висок ниво дозвола у свом радном окружењу и могу проузроковати велику штету за рачунарски систем ако се не напишу добро и ствари крену наопако[4], за разлику од већине програма вишег нивоа, нарочито апликација, чија се упутства у случају опасности могу обуставити без веће штете по оперативни и рачунарски систем. Чак и драјвери у тзв. корисничком режиму рада могу задати озбиљну штету оперативном и рачунарском систему уколико су лоше програмирани. Због ових проблема, драјвере углавном пишу инжењери који раде у фирмама које производе рачунарску опрему, јер имају више података о посебностима рада одређеног уређаја у односу на већину људи ван фирме. Обично се логички слој драјвера за неки тип опреме пише од стране произвођача датог оперативног система, док физички слој пишу произвођачи дате врсте уређаја. У скорије време, међутим, с порастом коришћења слободних оперативних система и програма, све већи број добровољаца пише драјвере за разне врсте опреме. Да би се то остварило, битно је да произвођач одређеног уређаја пружи детаљне податке о начину његовог функционисања. Иако ови подаци могу бити откривени тзв. обрнутим инжењерингом, тај поступак је много спорији него код програма.

Мајкрософт је покушао да смањи ризик при коришћењу лоше написаних драјвера, стварањем шаблона за писање истих, званог „Темељ за Windows драјвере“ (енгл. Windows Driver Foundation, WDF). Овај шаблон садржи подшаблон за драјвере у корисничком режиму рада (енгл. User-Mode Driver Framework, UMDF), који налаже да се на основу њега пишу одређене врсте драјвера, првенствено оне који су засновани на размени порука, и подшаблон за драјвере у режиму рада језгра (енгл. Kernel-Mode Driver Framework, KMDF), који пружа решења за проблеме који се често дешавају у овом режиму, укључујући отказивање улаза/излаза, управљање електричном енергијом и проблеме с уређајима који се прикључују рачунарском систему за време његовог рада.

Епл има шаблон „I/O Kit“ („Опрема за улаз/излаз“) која је лишена ауторског права и служи за писање драјвера за Mac OS X.

Примена[уреди | уреди извор]

Управљачки програми се данас користе у повезивању програма вишег нивоа и широке лепезе рачунарске опреме. Ту се убрајају:

Одабир одговарајућих драјвера за саставне делове рачунарског система је обично кључни део подешавања тог рачунарског система.

Виртуелни драјвери[уреди | уреди извор]

Посебна врста драјвера су тзв. виртуелни драјвери. Они се користе у окружењима где се симулира рад неког другог окружења, нпр. рад линукса под оперативним системом Windows. Уместо да се том симулатору дозволи приступ рачунарској опреми, ствара се посебна виртуелна машина и виртуелни драјвери за њу, тако да симулатор „мисли“ да приступа правој опреми преко драјвера, док ти виртуелни драјвери заправо захтевају приступ опреми преко правих драјвера. На овај начин се чува безбедност оперативног система-домаћина и анализира рад оперативног система-госта.

Извори[уреди | уреди извор]

  1. ^ Грег Кроа-Хартман, „Слободан развој линуксових драјвера“ (23. мај 2007) (језик: енглески)
  2. ^ Дон Марти, „Пројекат развоја линуксових драјвера доноси плодове“ Архивирано на сајту Wayback Machine (30. октобар 2007) (23. мај 2007) (језик: енглески)
  3. ^ „Линуксови драјвери“ Архивирано на сајту Wayback Machine (26. октобар 2007) (14. јун 2007) (језик: енглески)
  4. ^ Linux-Tutorial.info Архивирано на сајту Wayback Machine (27. септембар 2007) (језик: енглески)

Спољашње везе[уреди | уреди извор]

  • UpDrivers.com – бесплатни драјвери за Windows (језик: енглески)
  • DynamicLink.nl – потпун и абецедно уређен списак свих 1536 „.sys“ драјвера за Windows] (језик: енглески)
  • rcnp.osaka-u.ac.jp – упутство за писање драјвера (језик: енглески)