Төхөөрөмжийн драйвэр

Компьютерийн хувьд, **төхөөрөмжийн драйвер** (ихэвчлэн  драйвер гэж ярьдаг) гэдэг нь  компьютерт холбогдож  байгаа төрөл бүрийн төхөөрөмжийг удирдан ажиллуулдаг компьютерийн программ юм.  Драйвер нь ашиглаж байгаа төхөөрөмжийн талаар нарийн  мэдэх шаардлагагүйгээр үйлдлийн систем болон бусад компьютерийн програмыг техник хангамжид  холбож  интерфэйсээр хангаж өгнө.
 Драйвер нь ихэвчлэн техник хангамжинд холбогдсон харилцааны дэд систем эсвэл  computer bus -аар дамжин төхөөрөмжтэй харилцдаг. 
Програм нь драйверийг ажиллуулах  үед драйвер асуудлыг төхөөрөмжид тушаана. Төхөөрөмж өгөгдөлийг буцааж драйверт илгээмэгц драйвер ажиллаж буй програмын жинхэнэ ажиллах зарчимыг шаардана. Драйвер нь хамааралтай техник хангамж болон тодорхой үйлдлийн систем юм.

## Зорилго
Төхөөрөмжийн драйверууд нь тоног төхөөрөмж болон хэрэглээний програмууд,  үйлдлийн системүүдийг ажиллахад хооронд нь орчуулагч холбогчийн үүрэг гүйцэтгэн ажилладаг хялбаршуулсан програм юм.   Програмистууд  эцсийн хэрэглэгчид ашиглахад зориулсан ямар ч  техник хангамжийн програмын  дээд түвшний  код бичиж болно. Жишээ нь: өндөр түвшний програм "өгөгдлийг хүлээн авах", "өгөгдлийг илгээх" хоёр төрлийн үйл ажиллагаатай serial port-той харилцан үйлчлэлцэнэ. Доод түвшинд, төхөөрөмжийн драйвер нь хэрэглэгчийн компьютер дээр суулгасан тухайн serial port  хянагчтай харилцах үйл ажиллагааг хэрэгжүүлнэ. 16550 UART-ыг удирдахад шаардсан комманд нь  FTDI serial port хөрвүүлэгчийг удирдахад шаардсан коммандаас маш их ялгаатай хэдий software interface-тэй адилхан хийсвэр зүйл юм.

## Хөгжүүлэлт 
Төхөөрөмжийн драйверийг бичих нь өгөгдсөн platform-ийн үйл ажиллагаанд техник хангамж болон програм хангамжыг хэрхэн ажиллуулах талаар гүнзгий ойлголтыг шаарддаг. Учир нь драйверүүд нь техник хангамжуудыг ажиллуулахын тулд бага түвшиний хандалтыг шаарддаг, маш давуу эрхтэй орчинд  ажилладаг ба буруу ажиллах юм бол гэмтэх аюултай. Орчин үеийн үйлдлийн системтэй програмууд нь системийн нөлөөлөлгүйгээр зогсдог. Хэрвээ төхөөрөмж  алдаатай  програмчлагдсан бол user mode гүйцэтгэж байгаа драйвер нь системийг сүйрүүлж  болох юм. Эдгээр зүйлс  нь илүү хүнд хэцүү, аюултай асуудлуудыг шийдвэрлэдэг.   Драйверуудыг бичих  нь програм хангамжийг хөгжүүлж буй компаниудад ажилладаг  software engineers, computer engineer-үүдийг багасгаж байна. Учир нь тэд техник хангамжийн загварын талаар мэдээлэл ихтэй байдаг. Түүнээс гадна техник хангамж үйлдвэрлэгчид нь бүтээгдэхүүндээ баталгаа гаргаж өгсөнөөр хэрэглэгчид тэдний техник хангамжуудыг хэрэглэх сонирхол нэмэгдэх юм. physical device driver (PDD)-ыг төхөөрөмж борлуулагчид хэрэглэж байхад  logical device driver (LDD)-ыг үйлдэлийн системийн борлуулагчид бичдэг. Гэвч сүүлийн жилүүдэд non-vendors  олон тооны төхөөрөмжийн драйвер бичсэн ба голдуу free and open source operating systems хэрэглэж байна. Ийм тохиолдолд техник хангамж үйлдвэрлэгчид  төхөөрөмжтэй хэрхэн харьцах талаар мэдээллээр хангаж байх нь чухал юм. Энэ мэдээлэл нь  reverse engineering  сурахын оронд байж болох ч програм хангамжаас техник хангамжийн хувьд хэцүү юм.

Microsoft  драйверийг хөгжүүлж буй шинэ framework-р чанаргүй бичигдсэн төхөөрөмжийн драйверүүдийн системийн тогтворгүй байдлыг багасгахыг оролдож байна. Энэ нь Windows Driver Foundation (WDF) гэж нэрлэгддэг ба user mode драйвер шиг төхөөрөмжтэй харилцах  message-based protocol –г  ашигладаг драйверийн хөгжүүлэлтийг дэмждэг User-Mode Driver Framework (UMDF)-ыг агуулдаг. Хэрвээ драйвер нь malfunction бол тэд системийн тогтворгүй байдлын шалтгаан биш. Kernel-Mode Driver Framework (KMDF) загвар нь kernel-mode төхөөрөмжийн драйверийн хөгжүүлэлтийг зөвшөөөрдөг ба төхөөрөмжийг ажиллуулах, хүчин чадлыг удирдах, I/O үйл ажиллагааг цуцлах, асуудлын шалтгааныг мэдэх зэрэг үйл ажиллагааны хэрэгжилтийн стандартыг хангахыг оролддог.  

Apple  нь  I/O Kit  гэж нэрлэгдэх Mac OS X-ын драйверүүдийг хөгжүүлдэг нээлттэй эхийн платформтой. 
Linux-ын орчинд програмистууд  kernel-н хэсэг шиг, тусдаа ажиллах боломжтой modules эсвэл User-Mode драйвер ( USB төхөөрөмж гэх мэт) шиг төхөөрөмжүүдийн драйверүүдийг зохиодог.

## Kernel mode vs.user mode
Орчин үеийн  Microsoft Windows платформ дээрх төхөөрөмжийн драйверүүд нь  kernel-mode (Ring 0 on x86 CPUs) эсвэл  user-mode (Ring 3 on x86 CPUs)  дээр ажилладаг.   user mode дээр ажиллаж буй драйверийн гол давуу тал нь тогтвортой байдлыг сайжруулах юм. муу бичигдсэн user mode төхөөрөмжийн драйвер нь сайн бичигдсэн kernel системийг гэмтээж чадахгүй.  Өөрөөр хэлбэл user/kernel-mode  нь ихэвчлэн үйл ажиллагааны илүү зардлыг бий болгодог. 
## Хэрэглээ
Орчин үеийн тоног төхөөрөмж болон үйлдлийн системийн олон төрлөөс улбаалан драйвер (удирдаж байгаа программ) нь маш олон өөр өөр төрлийн нөхцөл байдалд үйл ажиллагаагаа явуулж байна.
•	Хэвлэгч printers 
•	Дүрс бичлэг тохируулагч video adapters
•	Сүлжээний карт Network cards
•	Дуу бичлэгийн карт Sound cards
•	Төрөл бүрийн дотоод шугам buses – голдуу орчин үеийн системийн шугамыг төгс эзэмших bus mastering
•	Төрөл бүрийн богино мэдээллийн хэмжээний оролт/ гаралтын шугам Low-bandwidth I/O  (заагч төхөөрөмж pointing devices: хулганууд, удирдлагууд, USB mice, keyboards, USB)
•	Хатуу хавтан hard disk,  CD-ROM, уян хавтан  floppy disk зэрэг компьютерын хадгалалтын төхөөрөмж Computer storage  (ATA, SATA, SCSI)
•	Өөр файлын системд file systems дэмжлэг үзүүэх
•	Зургийн дүрс буулгагч Image scanners
•	Дижитал камер Digital cameras
Төхөөрөмжийн драйверын хийсвэрлэлийн нийтлэг түвшин нь:
•	Техник хангамж:
o	Шууд холболт
o	Төхөөрөмжийн бүртэлээс device control register бичих эсвэл унших 
o	Өндөр түвшний холболт ашиглах (жишээ нь: Video BIOS)
o	Өөр нэг доод түвшний төхөөрөмжийн драйвер ашиглах [citation needed] (хавтангийн драйвер ашиглан системийн драйверийг боловсруулах)
o	бүхэлд нь ямар нэг өөр зүйл хийж байхад, тоног төхөөрөмжийн хувьд ажиллахгүй дууриамал байх
•	Программ хангамж:
o	Тоног төхөөрөмжийн эх үүсвэрүүдэд үйлдлийн систем нь шууд хандах боломж олгодог primitives
o	Зөвхөн комманд хэрэгжүүлэх
o	Драйвер-бус програм хангамж интерфэйсийг хэрэгжүүлэх (жишээ нь: TWAIN)
o	Зарим үед хэлийг бүр өндөр түвшинд хэрэгжүүлэх (жишээ нь: PostScript)
Тиймээс өгөдсөн тоног төхөөрөмжийн хувьд зөв төхөөрөмжийн драйверуудыг сонгон суулгах нь ихэвчлэн компьютерын системийн тохиргооны гол бүрэлдэхүүн хэсэг болдог. [citation needed]
## Виртуал төхөөрөмжийн драйверууд
Виртуал төхөөрөмжийн драйверууд нь төхөөрөмжүүдийн драйверуудын тодорхой нэг хувилбарыг төлөөлдөг. Тэдгээр нь багаж төхөөрөмжийн хэрэгсэлтэй өрсөлддөг байсан, ялангуяа виртуалчлагдсан virtualization орчинд , жишээ нь  DOS програм нь Microsoft Windows компьютер эсвэл зочин үйлдлийн систем operating system дээр ажиллаж байх үед, жишээ нь  Xen хост. Зочин үйлдлийн системд эрх олгохын оронд тоног төхөөрөмжтэй харилцах, виртуал төхөөрөмжийн  virtual machine драйверууд нь эсрэг үүрэг авч, тоног төхөөрөмжийн хэсэг нь даган дуурайж, ингэснээр виртуал машин дотор ажиллаж байгаа зочин үйлдлийн систем болон түүний драйверууд нь бодит тоног төхөөрөмж хандах хуурамч үзэгдэл байж болох юм. Хэрэглэгчийн O.S-ээс төхөөрөмжрүү нэвтрэх оролдлого нь гол O.S-ийн виртуал хадгаламжийн системд холбогдсон байдаг, жишээ нь  function calls гэх мэт. Виртуал төхөөрөмжийн драйвер нь виртуал машин руугаа interrupts зэрэг зохиомол процессор-түвшний хэмнэл илгээж болно. 
Виртуал төхөөрөмжүүд нь виртуал- бус орчинд үйл ажиллагаа явуулдаг байж болно. Жишээ нь виртуал дискний  disk төхөөрөмж iSCSI. ашиглаж байхад виртуал network adapter нь virtual private network ашиглаж байна.  Виртуал нь төхөөрөмжүүдийн драйверуудын хувьд сайн жишээ гэвэл Daemon Tools.байж болно. Виртуал төхөөрөмжийн драйверууд нь VxDs,  VLMs, VDDs зэрэг хэд хэдэн төрөл байдаг.
## Нээлттэй драйверууд
:*	Хэвлэгч: CUPS
:*	RAIDs:  CCISS  (Compaq Command Interface for SCSI-3 Support] )
:*	Сканнер: SANE
:*	Видео: Vidix, Direct Rendering Infrastructure
Түгээмэл хэрэглэгддэг төхөөрөмжүүдийн драйверын Solaris  тодорхойлолт
:*	fas: Хурданt/өргөн SCSI хяналт
:*	hme: Хурдан (10/100 Mbit/s) Итернэт
:*	isp: Ялгаатай SCSI хянагчууд болон the SunSwift карт
:*	glm: (Gigabaud Link Module ) UltraSCSI удирдлагууд
:*	scsi: Жижиг компьютерийн цуваа интерфэйс (SCSI) төхөөрөмж
:*	sf: soc+ эсвэл нийгмийн шилэн суваг Arbitrated Loop (FCAL)
:*	soc: SPARC Storage Array (SSA) хянагчууд болон хяналтын төхөөрөмж
:*	Шинэчлэлт: FCAL (soc+) –ын Цуваа Оптик Хянагчууд
## APIs
:*	Windows Display Driver Model (WDDM) – the graphic display driver architecture for Windows Vista, Windows 7 and Windows 8.
:*	Windows Driver Foundation (WDF)
:*	Windows Driver Model (WDM)
:*	Network Driver Interface Specification (NDIS) стандарт сүлжээний картын драйвер API
:*	Advanced Linux Sound Architecture (ALSA) – as of 2009 стандарт Linux дууны драйвер интерфэйс
:*	Scanner Access Now Easy (SANE) - нийтийн-домэйн нь  цэгэн зураг-зураг сканнер-тоног төхөөрөмжтэй холбодог
:*	I/O Kit – Apple-ийн Mac OS X-н төхөөрөмжийн драйверуудын хөгжлийн нээлттэй эх тогтолцоо
:*	Installable File System (IFS) – a filesystem API for IBM OS/2 and Microsoft Windows NT
:*	Open Data-Link Interface (ODI) –API сүлжээний карт нь NDIS – тэй төстэй.
:*	Uniform Driver Interface (UDI) – хөндлөн платформ драйверийн интерфэйсийг төсөл
:*	Dynax Driver Framework (dxd) – C++ KMDF болон IOKit нь нээлттэй эх үүсвэр хоорондын платформ драйвер хүрээ

## Танигч
PCI болон USB дээрх тоног төхөөрөмжүүд нь тус бүр 4 ширхэг арван зургаан тооноос бүртдэх 2 ID-аар тодорхойлогдоно. Борлуулагч ID нь тоног төхөөрөмжийн борлуулагч ID-г тодорхойлдог. Төхөөрөмжийн ID нь үйлдвэрлэгч / нийлүүлэгчийн тодорхой төхөөрөмжийг тодорхойлно. PCI төхөөрөмж нь ихэвчлэн төхөөрөмжийн гол чипэд зориулсан хос ID-тай байдаг, ба түүнчлэн чип үйлдвэрлэгчээс өөр байх борлуулагчыг тодорхойлдог дэд системийн хос ID-тай.

## Ашигласан материал
:* 1.	 "What is a device driver?, The purpose of device drivers". PC Gesund. RetrievedNovember 8, 2012.
:* 2.	Jump up^ EMC Education Services (2010). Information Storage and Management: Storing, Managing, and Protecting Digital Information. John Wiley & Sons.
:* 3.	Jump up^ Burke, Timothy (1995). Writing device drivers: tutorial and reference. Digital Press.
:* 4.	Jump up^ "MAKEDEV — Linux Command — Unix Command". Linux.about.com. 2009-09-11. Retrieved 2009-09-17.
:* 5.	Jump up^ "User-mode vs. Kernel-mode Drivers". Microsoft. 2003-03-01. Retrieved 2008-03-04.
:* 6.	Jump up^ "Introduction to the User-Mode Driver Framework (UMDF)". Microsoft. 2006-10-10. Retrieved 2008-03-04.
:* 7.	Jump up^ Deborah Morley (2009). Understanding Computers 2009: Today and Tomorrow. Cengage Learning.
:* 8.	Jump up^ "CCISS". SourceForge. 2010. Retrieved 2010-08-11. Drivers for the HP (previously Compaq) Smart Array controllers which provide hardware RAID capability.
:* 9.	Jump up^ Russell, Steve; et al. (2003-10-21). "Abbreviations and acronyms". Server Consolidation with the IBM eserver xSeries 440 and VMware ESX Serve. IBM International Technical Support Organization. p. 207. ISBN 0-7384-2684-9. Retrieved2011-08-14.
:* 10.	Jump up^ "US Patent 5969841 - Gigabaud link module with received power detect signal". PatentStorm LLC. Retrieved 2009-09-08. An improved Gigabaud Link Module (GLM) is provided for performing bi-directional data transfers between a host device and a serial transfer medium.

Ангилал:Драйвер (программ хангамж)