डिवाइस ड्राइवर

संगणक में, यंत्र चालक (डिवाइस ड्राइवर) एक संगणक क्रमादेश (प्रोग्राम) होता है, जो किसी विशेष प्रकार के यंत्र (डिवाइस) को संचालित या नियंत्रित करता है जो संगणक (कंप्यूटर) या स्वयं गतिशील वस्तु (ऑटोमेटन) से जुड़ा होता है। चालक (ड्राइवर) धातु सामग्री (हार्डवेयर) उपकरणों को प्रक्रिया सामग्री (सॉफ्टवेयर) इंटरफ़ेस प्रदान करता है, ऑपरेटिंग सिस्टम और अन्य संगणक क्रमादेश (कंप्यूटर प्रोग्राम) को  धातु सामग्री  कार्यों (हार्डवेयर फ़ंक्शंस) के उपयोग के बारे में सटीक विवरण जानने की आवश्यकता के बिना हार्डवेयर कार्यों का उपयोग करने के लिए सक्षम करता है।

चालक (ड्राइवर) संगणक (कंप्यूटर) बस या संचार उपतंत्र (सबसिस्टम) के माध्यम से यंत्र (डिवाइस) के साथ संचार करता है जिससे धातु सामग्री (हार्डवेयर) सम्बंधित (कनेक्ट) होता है। जब एक कार्यक्रम कॉलिंग क्रमादेश चालक (प्रोग्राम ड्राइवर) में एक नियमित कार्यक्रम का उद्धृत करता है, तो यंत्र चालक (डिवाइस ड्राइवर) उपकरण को आदेश जारी करता है (इसे ड्राइव करता है)।एक बार जब उपकरण यंत्र चालक (डिवाइस ड्राइवर) को जानकारी (डेटा) वापस भेज देता है, तो चालक (ड्राइवर) मूल कॉलिंग क्रमादेश (प्रोग्राम) में रूटीन को लागू कर सकता है।

चालक (ड्राइवर) हार्डवेयर निर्भर और ऑपरेटिंग-सिस्टम-विशिष्ट हैं। वे आमतौर पर किसी भी आवश्यक अतुल्यकालिक समय-निर्भर हार्डवेयर इंटरफ़ेस के लिए आवश्यक अवरोध सेवा (इंटरप्ट हैंडलिंग) प्रदान करते हैं।

उद्देश्य
यंत्र चालक (डिवाइस ड्राइवर) का मुख्य उद्देश्य हार्डवेयर यंत्र (डिवाइस) और इसका उपयोग करने वाले अनुप्रयोगों या ऑपरेटिंग सिस्टम के बीच अनुवादक के रूप में कार्य करके अमूर्तता प्रदान करना है। क्रमादेशक (प्रोग्रामर) उच्च-स्तरीय अनुप्रयोग कोड को स्वतंत्र रूप से लिख सकते हैं, जो भी विशिष्ट हार्डवेयर का उपयोग कर रहे हैं। उदाहरण के लिए, सीरियल पोर्ट के साथ बातचीत करने के लिए एक उच्च-स्तरीय आवेदन (एप्लिकेशन) में जानकारी भेजने और जानकारी प्राप्त करने के लिए बस दो कार्य हो सकते हैं। निचले स्तर पर, इन कार्यों को लागू करने वाला एक यंत्र चालक (डिवाइस ड्राइवर) उपयोगकर्ता के संगणक (कंप्यूटर)  पर स्थापित विशेष सीरियल पोर्ट नियंत्रकों (कंट्रोलर) को सूचित करेगा।16550 यूएआरटी को नियंत्रित करने के लिए आवश्यक आदेश एफटीडीआई सीरियल पोर्ट परिवर्त्तक (कनवर्टर) को नियंत्रित करने के लिए आवश्यक आदेशों से बहुत अलग हैं, लेकिन प्रत्येक हार्डवेयर-विशिष्ट उपकरण चालक इन विवरणों को एक ही (या समान) सॉफ्टवेयर इंटरफ़ेस में अमूर्त करता है।

विकास
यंत्र चालक (डिवाइस ड्राइवर) को लिखने के लिए किसी दिए गए प्लेटफ़ॉर्म फ़ंक्शन के लिए हार्डवेयर और सॉफ़्टवेयर कैसे काम करता है, इसकी गहन समझ की आवश्यकता होती है। क्योंकि चालक (ड्राइवर) को संचालित करने के लिए धातु सामग्री  कार्यों (हार्डवेयर फ़ंक्शंस) तक निम्न-स्तरीय पहुंच की आवश्यकता होती है, चालक (ड्राइवर) आमतौर पर अत्यधिक विशेषाधिकार प्राप्त वातावरण में काम करते हैं और यदि कुछ गलत हो जाता है तो संचालन प्रणाली मुद्दों का कारण बन सकता है। इसके विपरीत, आधुनिक ऑपरेटिंग तंत्र पर अधिकांश उपयोगकर्ता-स्तरीय सॉफ़्टवेयर को बाकी तंत्र को बहुत प्रभावित किए बिना रोका जा सकता है। यहां तक कि उपयोगकर्ता प्रकार में निष्पादित करने वाले  चालक (ड्राइवर) एक तंत्र को टक्कर कर सकते हैं यदि यंत्र (डिवाइस) को गलत तरीके से तंत्र किया जाता है। ये कारक समस्याओं का निदान करना अधिक कठिन और खतरनाक बनाते हैं। इस प्रकार चालक (ड्राइवर) लिखने का काम आमतौर पर सॉफ्टवेयर इंजीनियरों या कंप्यूटर इंजीनियरों पर पड़ता है जो हार्डवेयर-विकास कंपनियों के लिए काम करते हैं। ऐसा इसलिए है क्योंकि उनके पास अपने हार्डवेयर के रचना (डिजाइन) के बारे में अधिकांश बाहरी लोगों की तुलना में बेहतर जानकारी है। इसके अलावा, यह पारंपरिक रूप से हार्डवेयर निर्माता की रुचि में माना जाता था कि उनके ग्राहक अपने हार्डवेयर का उपयोग इष्टतम तरीके से कर सकते हैं। आमतौर पर, लॉजिकल  यंत्र चालक (डिवाइस ड्राइवर) (एलडीडी) ऑपरेटिंग तंत्र विक्रेता द्वारा लिखा जाता है, जबकि भौतिक यंत्र चालक  (फिजिकल डिवाइस ड्राइवर) (पीडीडी) यंत्र (डिवाइस) विक्रेता द्वारा लागू किया जाता है। हालांकि, हाल के वर्षों में, गैर-वेंडर ने मालिकाना उपकरणों के लिए कई यंत्र चालक (डिवाइस ड्राइवर) लिखे हैं, मुख्य रूप से मुफ्त और खुले स्रोत ऑपरेटिंग  तंत्र के साथ उपयोग के लिए। ऐसे मामलों में, यह महत्वपूर्ण है कि हार्डवेयर निर्माता इस बारे में जानकारी प्रदान करें कि कैसे यंत्र (डिवाइस) संचार करता है। यद्यपि इस जानकारी को रिवर्स इंजीनियरिंग द्वारा सीखा जा सकता है, यह सॉफ्टवेयर की तुलना में हार्डवेयर के साथ अधिक कठिन है।

माइक्रोसॉफ्ट ने खराब लिखित यंत्र चालको (डिवाइस ड्राइवर) के कारण तंत्र (सिस्टम)  की अस्थिरता को कम करने का प्रयास किया है और चालक (ड्राइवर) विकास के लिए एक नया ढांचा बनाया है, जिसे विंडोज ड्राइवर फ्रेमवर्क (डब्ल्यूडीएफ) कहा जाता है। इसमें उपयोगकर्ता- संचार चालक ढांचा (मोड ड्राइवर फ्रेमवर्क) (यूएमडीएफ) शामिल है जो कुछ प्रकार के ड्राइवरों के विकास को प्रोत्साहित करता है -मुख्य रूप से वे जो अपने उपकरणों के साथ संचार करने के लिए एक संदेश-आधारित संलेख (प्रोटोकॉल) को उपयोगकर्ता- संचार चालक (मोड ड्राइवर) के रूप में लागू करते हैं। अगर ऐसे चालकों में खराबी आती है तो वे तंत्र (सिस्टम) में अस्थिरता पैदा नहीं करते हैं। कर्नेल- संचार चालक ढांचा (मोड ड्राइवर फ्रेमवर्क)  (केएमडीएफ) मॉडल कर्नेल- संचार चालक ढांचा (मोड ड्राइवर फ्रेमवर्क) के विकास की अनुमति देता है, लेकिन उन कार्यों के मानक कार्यान्वयन प्रदान करने का प्रयास करता है जो समस्याओं का कारण बनते हैं, जो आई/ओ ऑपरेशन, ऊर्जा प्रबंधन और प्लग एंड प्ले यंत्र समर्थन (डिवाइस सपोर्ट) सहित समस्याओं को पैदा करने के लिए जाने जाते हैं।

एप्पल के पास मैक ओएस पर ड्राइवरों के विकास के लिए एक ओपन-सोर्स फ्रेमवर्क है, जिसे I/O किट कहा जाता है।

लिनक्स वातावरण में, प्रोग्रामर कर्नल के भागों के रूप में यंत्र चालको (डिवाइस ड्राइवर) का निर्माण कर सकते हैं, अलग से लोड करने योग्य (लोडेबल) मॉड्यूल के रूप में, या उपयोगकर्ता- संचार चालक (मोड ड्राइवरों) के रूप में (कुछ प्रकार के उपकरणों के लिए जहां कर्नल इंटरफेस मौजूद हैं, जैसे यूएसबी उपकरण के लिए)। मेकदेव में लिनक्स में उपकरणों की एक सूची शामिल है, जिसमें टीटी वाई सी(टर्मिनल), एलपी (समानांतर पोर्ट), एचडी (डिस्क),फंदा (लूप) और ध्वनि (साउंड) शामिल हैं (इनमें मिक्सर, सीक्वेंसर, डीएसपी और ऑडियो शामिल हैं)। माइक्रोसॉफ्ट विंडो एस वाई एस फ़ाइलें और लिनक्स .के ओ फ़ाइलों में भार करने योग्य यंत्र चालक (डिवाइस ड्राइवर) हो सकते हैं। भार (लोड) करने योग्य यंत्र चालक (डिवाइस ड्राइवर)  का लाभ यह है कि उन्हें केवल आवश्यक होने पर  भार (लोड) किया जा सकता है और फिर उतार देना (अनलोड)किया जाता है, इस प्रकार कर्नल स्मृति को बचाया जा सकता है।

कर्नेल संचार (मोड) बनाम उपयोगकर्ता संचार (मोड)
यंत्र चालक (डिवाइस ड्राइवर), आधुनिक माइक्रोसॉफ्ट विंडोज प्लेटफ़ॉर्म पर,कर्नेल संचार (मोड) (एक्स86 सीपीयू पर रिंग 0) या यूजर-मोड (एक्स86 सीपीयू पर रिंग 3) में चल सकते हैं। उपयोगकर्ता संचार (मोड) में चालक (ड्राइवर) चलाने का प्राथमिक लाभ स्थिरता में सुधार किया जाता है, क्योंकि एक खराब लिखित उपयोगकर्ता-संचार चालक ढांचा (मोड ड्राइवर) कर्नेल स्मृति (मेमोरी) को अधिलेखित करके तंत्र (सिस्टम) को गिराकर ध्वस्त (क्रैश) नहीं कर सकता है। दूसरी ओर, उपयोगकर्ता/कर्नेल-संचार (मोड) संक्रमण आमतौर पर एक काफी प्रदर्शन ऊपरी (ओवरहेड) लागू करते हैं, इस प्रकार कर्नेल-संचार चालक (मोड ड्राइवरों) को कम-विलंबता नेटवर्किंग के लिए पसंद करते हैं।

कर्नेल अंतराल (स्पेस) को केवल आह्वान तंत्र (सिस्टम कॉल) के उपयोग के माध्यम से उपयोगकर्ता मॉड्यूल द्वारा अभिगम (एक्सेस) किया जा सकता है। यूनिक्स शेल या अन्य जीयूआई-आधारित एप्लिकेशन जैसे अंतिम उपयोगकर्ता कार्यक्रम उपयोगकर्ता स्थान का हिस्सा हैं। ये अनुप्रयोग कर्नल समर्थित कार्यों के माध्यम से हार्डवेयर के साथ बातचीत करते हैं।

आधुनिक हार्डवेयर और ऑपरेटिंग तंत्र (सिस्टम)  की विविधता के कारण, चालक (ड्राइवर) कई अलग-अलग वातावरण में काम करते हैं। [7]  चालक (ड्राइवर) के साथ इंटरफेस हो सकता है:


 * वीडियो एडेप्टर
 * नेटवर्क कार्ड
 * साउंड कार्ड
 * विभिन्न प्रकार की स्थानीय बसें - विशेष रूप से, आधुनिक प्रणालियों पर बस महारत हासिल करने के लिए
 * कम-बैंडविड्थ इनपुट/आउटपुट | विभिन्न प्रकार के I/O बसें (माइस, कीबोर्ड, आदि जैसे उपकरणों को इंगित करने के लिए)
 * संगणक भंडारण उपकरण (कंप्यूटर स्टोरेज डिवाइस) जैसे हार्ड डिस्क, सीडी-रोम और फ्लॉपी डिस्क बसें (एटीए, एसएटीए, एससीएसआई, एसएएस)
 * विभिन्न फाइल प्रणालियों (सिस्टम) के लिए समर्थन लागू करना
 * छवि स्कैनर
 * डिजिटल कैमरों
 * डिजिटल स्थलीय टेलीविजन ट्यूनर
 * वायरलेस पर्सनल एरिया नेटवर्क के लिए रेडियो फ्रीक्वेंसी कम्युनिकेशन ट्रांससीवर एडाप्टर जैसा कि होम ऑटोमेशन में शॉर्ट-डिस्टेंस और लो-रेट वायरलेस संचार के लिए इस्तेमाल किया जाता है (जैसे कि ब्लूटूथ लो एनर्जी (बल), थ्रेड, ज़िगबी और जेड-वे)। आईआरडीए एडाप्टर उपकरण ड्राइवरों के लिए अमूर्तता के सामान्य स्तर में शामिल हैं:
 * वायरलेस पर्सनल एरिया नेटवर्क के लिए रेडियो फ्रीक्वेंसी कम्युनिकेशन ट्रांससीवर एडाप्टर जैसा कि होम ऑटोमेशन में शॉर्ट-डिस्टेंस और लो-रेट वायरलेस संचार के लिए इस्तेमाल किया जाता है (जैसे कि ब्लूटूथ लो एनर्जी (बल), थ्रेड, ज़िगबी और जेड-वे)। आईआरडीए एडाप्टर उपकरण ड्राइवरों के लिए अमूर्तता के सामान्य स्तर में शामिल हैं:


 * हार्डवेयर के लिए:
 * सीधे इंटरफेसिंग
 * उपकरण नियंत्रण रजिस्टर में लिखना या पढ़ना
 * कुछ उच्च-स्तरीय अंतरफलक का उपयोग (जैसे कि) वीडियो बायोस एक अन्य निचले स्तर के उपकरण चालक का उपयोग (जैसे कि) डिस्क ड्राइवरों का उपयोग कर फ़ाइल सिस्टम ड्राइवर
 * पूरी तरह से अलग कुछ करते हुए, हार्डवेयर के साथ काम का अनुकरण करना
 * सॉफ्टवेयर के लिए:
 * ऑपरेटिंग सिस्टम को हार्डवेयर संसाधनों तक सीधी पहुंच की अनुमति
 * केवल आदिम लागू करना
 * गैर-चालक सॉफ्टवेयर के लिए एक इंटरफ़ेस को लागू करना (जैसे ट्वेन)
 * एक भाषा को लागू करना, कभी-कभी काफी उच्च-स्तरीय (जैसे पोस्टस्क्रिप्ट)

तो दिए गए हार्डवेयर के लिए सही उपकरण चालक (ड्राइवर) को चुनना और इंस्टॉल करना अक्सर संगणक तंत्र (कंप्यूटर सिस्टम) विन्यास का एक प्रमुख घटक है

वर्चुअल उपकरण चालक
आभासी उपकरण चालक (डिवाइस ड्राइवर) के एक विशेष संस्करण का प्रतिनिधित्व करते हैं। वे एक हार्डवेयर डिवाइस का अनुकरण करने के लिए उपयोग किए जाते हैं, विशेष रूप से आभासी वातावरण में, उदाहरण के लिए जब एक डॉस प्रोग्राम को माइक्रोसॉफ्ट विंडोज कंप्यूटर पर चलाया जाता है या जब एक अतिथि ऑपरेटिंग सिस्टम चलाया जाता है, उदाहरण के लिए, एक एक्सन होस्ट। हार्डवेयर के साथ संवाद करने के लिए अतिथि ऑपरेटिंग सिस्टम को सक्षम करने के बजाय, वर्चुअल डिवाइस ड्राइवर विपरीत भूमिका निभाते हैं और हार्डवेयर के एक टुकड़े का अनुकरण करते हैं, ताकि एक वर्चुअल मशीन के अंदर चलने वाले अतिथि ऑपरेटिंग सिस्टम और उसके ड्राइवरों को वास्तविक हार्डवेयर तक पहुंचने का भ्रम हो सकता है। हार्डवेयर तक पहुंचने के लिए अतिथि ऑपरेटिंग सिस्टम द्वारा प्रयास होस्ट ऑपरेटिंग सिस्टम में वर्चुअल डिवाइस ड्राइवर को उदा।, और nbsp; फ़ंक्शन कॉल के रूप में रूट किए जाते हैं। वर्चुअल डिवाइस ड्राइवर सिम्युलेटेड प्रोसेसर-स्तरीय ईवेंट भी भेज सकता है जैसे वर्चुअल मशीन में रुकावट करता है।

वर्चुअल डिवाइस एक गैर-वर्टीयलाइज्ड वातावरण में भी काम कर सकते हैं। उदाहरण के लिए, एक वर्चुअल नेटवर्क एडाप्टर का उपयोग वर्चुअल प्राइवेट नेटवर्क के साथ किया जाता है, जबकि एक वर्चुअल डिस्क डिवाइस का उपयोग ISCSI के साथ किया जाता है। वर्चुअल डिवाइस ड्राइवरों के लिए एक अच्छा उदाहरण डेमॉन टूल हो सकता है।

वर्चुअल डिवाइस ड्राइवरों के कई वेरिएंट हैं, जैसे कि वीएक्सडी, वीएलएम और वीडीडी।

ओपन सोर्स ड्राइवर्स

 * फ्री एंड ओपन-सोर्स ग्राफिक्स डिवाइस ड्राइवर | ग्राफिक्स डिवाइस ड्राइवर
 * प्रिंटर: कप
 * छापे: CCISS (SCSI-3 समर्थन के लिए COMPAQ कमांड इंटरफ़ेस )
 * स्कैनर: sane
 * वीडियो: Vidix, डायरेक्ट रेंडरिंग इन्फ्रास्ट्रक्चर

आमतौर पर इस्तेमाल किए जाने वाले डिवाइस ड्राइवरों के सोलारिस विवरण:
 * एफएएस: फास्ट/वाइड एससीएसआई कंट्रोलर
 * HME: फास्ट (10/100 Mbit/s) ईथरनेट
 * ISP: डिफरेंशियल SCSI कंट्रोलर और SunSwift कार्ड
 * GLM: (Gigabaud लिंक मॉड्यूल ) अल्ट्राससी नियंत्रक
 * SCSI: छोटे कंप्यूटर सीरियल इंटरफ़ेस (SCSI) डिवाइस
 * एसएफ: एसओसी+ या सोशल फाइबर चैनल आर्बिट्रेटेड लूप (एफसीएएल)
 * SOC: SPARC स्टोरेज एरे (SSA) कंट्रोलर और कंट्रोल डिवाइस
 * सामाजिक: FCAL (SOC+) के लिए सीरियल ऑप्टिकल कंट्रोलर

एपिस

 * विंडोज डिस्प्ले ड्राइवर मॉडल (WDDM) - विंडोज विस्टा और बाद में ग्राफिक डिस्प्ले ड्राइवर आर्किटेक्चर।
 * एकीकृत ऑडियो मॉडल (UAM)
 * विंडोज ड्राइवर फाउंडेशन (WDF)
 * घोषणात्मक घटक हार्डवेयर (DCH) - यूनिवर्सल विंडोज प्लेटफॉर्म ड्राइवर
 * विंडोज ड्राइवर मॉडल (WDM)
 * नेटवर्क ड्राइवर इंटरफ़ेस विनिर्देश (NDIS) - एक मानक नेटवर्क कार्ड ड्राइवर एपीआई
 * एडवांस्ड लिनक्स साउंड आर्किटेक्चर (ALSA)-स्टैंडर्ड लिनक्स साउंड-ड्राइवर इंटरफ़ेस
 * स्कैनर एक्सेस नाउ ईज़ी (SANE)-एक पब्लिक-डोमेन इंटरफ़ेस जो कि रैस्टर-इमेज स्कैनर-हार्डवेयर के लिए है
 * इंस्टॉल करने योग्य फ़ाइल सिस्टम (IFS) - IBM OS/2 और Microsoft Windows NT के लिए एक फाइलसिस्टम API
 * ओपन डेटा-लिंक इंटरफ़ेस (ODI)-NDIS के समान नेटवर्क कार्ड API
 * यूनिफ़ॉर्म ड्राइवर इंटरफ़ेस (UDI)-एक क्रॉस-प्लेटफ़ॉर्म ड्राइवर इंटरफ़ेस प्रोजेक्ट
 * Dynax ड्राइवर फ्रेमवर्क (DXD)-C ++ KMDF और IOKIT के लिए ओपन सोर्स क्रॉस-प्लेटफॉर्म ड्राइवर फ्रेमवर्क

पहचानकर्ता
PCI बस या USB पर एक डिवाइस की पहचान दो IDs द्वारा की जाती है, जिसमें प्रत्येक में 4 हेक्साडेसिमल नंबर होते हैं।विक्रेता आईडी डिवाइस के विक्रेता की पहचान करता है।डिवाइस आईडी उस निर्माता/विक्रेता से एक विशिष्ट डिवाइस की पहचान करता है।

एक पीसीआई डिवाइस में अक्सर डिवाइस की मुख्य चिप के लिए एक आईडी जोड़ी होती है, और एक सबसिस्टम आईडी जोड़ी भी होती है जो विक्रेता की पहचान करती है, जो चिप निर्माता से अलग हो सकती है।

यह भी देखें

 * ड्राइवर (सॉफ्टवेयर)
 * क्लास ड्राइवर
 * डिवाइस ड्राइवर संश्लेषण और सत्यापन
 * ड्राइवर रैपर
 * मुफ्त सॉफ्टवेयर
 * फर्मवेयर
 * लोड करने योग्य कर्नेल मॉड्यूल
 * Makedev
 * माइक्रोकंट्रोलर
 * ओपन-सोर्स हार्डवेयर
 * छपाई यंत्र का चालक
 * प्रतिकृति (ऑपरेटिंग सिस्टम)
 * udev (Userspace /dev)

बाहरी संबंध

 * Windows Hardware Dev Center
 * Linux Hardware Compatibility Lists and Linux Drivers
 * Understanding Modern Device Drivers(Linux)
 * BinaryDriverHowto, Ubuntu.
 * Linux Drivers Source