डिवाइस फ़ाइल

From Vigyanwiki
Revision as of 13:05, 14 June 2023 by alpha>Mithlesh

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

अवलोकन

डिवाइस फ़ाइलें सामान्यतः मानक उपकरणों (जैसे प्रिंटर और सीरियल पोर्ट) के लिए सरल इंटरफेस प्रदान करती हैं, किंतु उन उपकरणों पर विशिष्ट अद्वितीय संसाधनों तक पहुंचने के लिए भी उपयोग की जा सकती हैं, जैसे कि डिस्क विभाजन हैं। इसके अतिरिक्त, डिवाइस फ़ाइलें उन प्रणाली संसाधनों (कंप्यूटर विज्ञान) तक पहुँचने के लिए उपयोगी होती हैं जिनका किसी वास्तविक उपकरण से कोई संबंध नहीं होता है, जैसे डेटा सिंक और यादृच्छिक संख्या जनरेटर है।

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

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

कुछ यूनिक्स जैसी प्रणालियों में, अधिकांश डिवाइस फ़ाइलों को वर्चुअल फाइल प्रणाली के भाग के रूप में प्रबंधित किया जाता है जो परंपरागत रूप से /dev, पर आरोहित होता है, संभवतः नियंत्रित डेमॉन से जुड़ा हुआ है, जो रन टाइम पर हार्डवेयर जोड़ने और विस्थापित करने का निरीक्षण करता है, डिवाइस फ़ाइल प्रणाली में संबंधित परिवर्तन करता है यदि यह स्वचालित रूप से कर्नेल द्वारा नहीं किया जाता है, और संभवतः विशेष डिवाइस की आवश्यकताओं को पूर्ण करने के लिए प्रणाली या उपयोगकर्ता स्थान में स्क्रिप्ट को प्रारम्भ करता है। फ्रीबीएसडी, ड्रेगनफ्लाईबीएसडी और डार्विन (ऑपरेटिंग प्रणाली) के पास समर्पित फ़ाइल प्रणाली devfs है; इस फाइल प्रणाली द्वारा कर्नेल स्थान में डिवाइस नोड्स को स्वचालित रूप से प्रबंधित किया जाता है। लिनक्स में एक समान devfs कार्यान्वयन हुआ करता था, किंतु पश्चात में इसे छोड़ दिया गया, और फिर संस्करण 2.6.17 के पश्चात से विस्थापित कर दिया गया;[2] लिनक्स अब मुख्य रूप से उपयोगकर्ता स्थान कार्यान्वयन का उपयोग करता है जिसे udev के रूप में जाना जाता है, किंतु इसके कई संस्करण हैं।

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

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


यूनिक्स और यूनिक्स जैसी प्रणालियाँ

File:Simplified Structure of the Linux Kernel.svg
लिनक्स कर्नेल की एक सरलीकृत संरचना। फाइल प्रणाली I/O सबप्रणाली के भाग के रूप में कार्यान्वित किए जाते हैं।

डिवाइस नोड्स उन संसाधनों के अनुरूप होते हैं जो ऑपरेटिंग प्रणाली के कर्नेल (कंप्यूटर साइंस) ने पहले ही आवंटित कर दिए हैं। यूनिक्स उन संसाधनों की प्रमुख संख्या और छोटी संख्या द्वारा पहचान करता है,[4] दोनों नोड (कंप्यूटर विज्ञान) की संरचना के भाग के रूप में संग्रहीत हैं। इन नंबरों का असाइनमेंट भिन्न-भिन्न ऑपरेटिंग प्रणाली और भिन्न-भिन्न कंप्यूटर प्लेटफॉर्म पर विशिष्ट रूप से होता है। सामान्यतः, प्रमुख संख्या डिवाइस ड्राइवर की पहचान करती है और छोटी संख्या विशेष डिवाइस (संभवतः कई में से) की पहचान करती है जिसे ड्राइवर नियंत्रित करता है:[5] इस स्थिति में, प्रणाली ड्राइवर को माइनर नंबर दे सकता है। चूँकि, डायनेमिक नंबर आवंटन की उपस्थिति में, यह विषय नहीं हो सकता है (उदाहरण के लिए फ्रीबीएसडी 5 और ऊपर)।

अन्य विशेष फ़ाइल प्रकारों के जैसे, कंप्यूटर प्रणाली मानक प्रणाली कॉल का उपयोग करके डिवाइस नोड्स तक पहुँचता है और उन्हें नियमित कंप्यूटर फ़ाइलों के जैसे व्यवहार करता है। दो मानक प्रकार की डिवाइस फ़ाइलें उपस्थित हैं; दुर्भाग्य से उनके नाम ऐतिहासिक कारणों से प्रति-सहज हैं, और परिणामस्वरूप दोनों के मध्य अंतर की व्याख्या प्रायः त्रुटिपूर्ण होती है।

वर्ण उपकरण

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

करैक्टर उपकरणों को कभी-कभी रॉ उपकरणों के रूप में जाना जाता है जिससे इस तथ्य के निकट के भ्रम से बचा जा सके कि ब्लॉक-आधारित हार्डवेयर के टुकड़े के लिए करैक्टर डिवाइस को सामान्यतः संरेखित ब्लॉकों को पढ़ने और लिखने के लिए प्रोग्राम की आवश्यकता होगी।

ब्लॉक डिवाइस

विशेष फाइलों को ब्लॉक करें या ब्लॉक डिवाइस हार्डवेयर उपकरणों को बफर्ड एक्सेस प्रदान करें, और साधारण से कुछ सार प्रदान करें।[6] कैरेक्टर उपकरणों के विपरीत, ब्लॉक डिवाइस सदैव प्रोग्रामर को किसी भी आकार (एकल अक्षर/बाइट सहित) और किसी भी संरेखण के ब्लॉक को पढ़ने या लिखने की अनुमति देगा। नकारात्मक पक्ष यह है कि क्योंकि ब्लॉक डिवाइस बफ़र किए जाते हैं, प्रोग्रामर को यह नहीं ज्ञात होता है कि कर्नेल के बफ़र्स से लिखित डेटा को वास्तविक डिवाइस पर पास करने में कितना समय लगेगा, या वास्तव में किस क्रम में भौतिक डिवाइस पर दो भिन्न-भिन्न राइट्स आएंगे। इसके अतिरिक्त, यदि हार्डवेयर कैरेक्टर और ब्लॉक डिवाइस दोनों को उजागर करता है, तो कैरेक्टर डिवाइस का उपयोग करने वाले क्लाइंट को ब्लॉक डिवाइस के बफ़र्स में किए गए परिवर्तनों से अपरिचित होने के कारण डेटा भ्रष्टाचार की आशंका होती है।

अधिकांश प्रणाली हार्ड डिस्क जैसे हार्डवेयर का प्रतिनिधित्व करने के लिए ब्लॉक और कैरेक्टर डिवाइस दोनों बनाते हैं। फ्रीबीएसडी और लिनक्स विशेष रूप से नहीं; पूर्व ने ब्लॉक उपकरणों के लिए विस्थापित कर दिया है,[7] जबकि पश्चात वाले ने केवल ब्लॉक उपकरणों का निर्माण किया है। लिनक्स में, डिस्क के लिए कैरेक्टर डिवाइस प्राप्त करने के लिए, रॉ ड्राइवर का उपयोग करना चाहिए, चूँकि लिनक्स-विशिष्ट O_DIRECT फ्लैग के साथ ब्लॉक डिवाइस को विवृत करके कैरेक्टर डिवाइस को विवृत करने के समान प्रभाव प्राप्त कर सकते हैं।

सूडो उपकरण

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

  • /dev/null – इसमें लिखे गए सभी इनपुट को स्वीकार करता है और बहिष्कृत करता है; पढ़ने पर फ़ाइल का अंत संकेत प्रदान करता है।
  • /dev/zero – इसमें लिखे गए सभी इनपुट को स्वीकार करता है और बहिष्कृत करता है; जब से पढ़ा जाता है तो आउटपुट के रूप में अशक्त वर्णों (शून्य-मान बाइट्स) की सतत धारा उत्पन्न करता है।
  • /dev/full – पढ़ने पर आउटपुट के रूप में अशक्त वर्णों (शून्य-मान बाइट्स) की सतत धारा उत्पन्न करता है, और इसे लिखने का प्रयास करते समय ENOSPC (डिस्क पूर्ण) त्रुटि उत्पन्न करता है।
  • /dev/random – कर्नेल के क्रिप्टोग्राफिक रूप से सुरक्षित सूडो यादृच्छिक संख्या जनरेटर द्वारा बाइट उत्पन्न करता है। इसका त्रुटिहीन व्यवहार कार्यान्वयन से भिन्न होता है, और कभी-कभी वेरिएंट जैसे /dev/urandom या /dev/arandom भी दिए गए हैं।
  • /dev/stdin, /dev/stdout, /dev/stderr – प्रक्रिया के मानक स्ट्रीम तक पहुँचें।
  • /dev/fd/एन – प्रक्रिया के फाइल डिस्क्रिप्टर n को एक्सेस करता है।

इसके अतिरिक्त, ioctl इंटरफ़ेस वाले बीएसडी विशिष्ट सूडो उपकरणों में ये भी सम्मिलित हो सकते हैं:

  • /dev/pf – ioctl इंटरफेस के माध्यम से उपयोगकर्ता भूमि प्रक्रियाओं को पीएफ (फ़ायरवॉल) को नियंत्रित करने की अनुमति देता है ।
  • /dev/bio – उपकरणों को ioctl एक्सेस प्रदान करता है अन्यथा /dev नोड्स, के रूप में नहीं मिलता है, जिसका उपयोग bioctl द्वारा ओपनबीएसडी और नेटबीएसडी में रेड प्रबंधन को प्रारम्भ करने के लिए किया जाता है।
  • /dev/sysmon – हार्डवेयर निरीक्षण के लिए नेटबीएसडी के envsys फ्रेमवर्क द्वारा उपयोग किया जाता है, envstat उपयोगिता द्वारा proplib(3) के माध्यम से उपयोक्ता भूमि में पहुँचा जाता है।[8]


नोड निर्माण

mknod प्रणाली कॉल द्वारा नोड बनाए जाते हैं। नोड बनाने के लिए कमांड-लाइन प्रोग्राम को भी mknod कहा जाता है। सामान्य फाइलप्रणाली प्रणाली कॉल (rename, unlink) और कमांड (कंप्यूटिंग) (mv, rm) द्वारा नोड्स को स्थानांतरित या विस्थापित किया जा सकता है.

कुछ यूनिक्स संस्करणों में निर्देशिका में सभी आवश्यक उपकरण बनाने के लिए Makedev या MAKEDEV नाम की एक स्क्रिप्ट सम्मिलित है। /dev यह केवल उन प्रणालियों पर समझ में आता है जिनके उपकरणों को स्थिर रूप से प्रमुख संख्याएँ प्रदान की जाती हैं (उदाहरण के लिए, उनके कर्नेल मॉड्यूल में हार्डकोडिंग के माध्यम से)।

जबकि कुछ अन्य यूनिक्स प्रणाली जैसे कि फ्रीबीएसडी, कर्नेल-आधारित डिवाइस नोड प्रबंधन का उपयोग केवल devfs के माध्यम से करते हैं, और मैन्युअल नोड निर्माण का समर्थन नहीं करते हैं। mknod(2) प्रणाली कॉल और mknod(8) कमांड POSIX के साथ संगतता बनाए रखने के लिए उपस्थित है, किंतु devfs के बाहर मैन्युअल रूप से बनाए गए डिवाइस नोड कार्य नहीं करेंगे।[9]


नामकरण परंपराएं

डिवाइस के प्रकार की पहचान करने के लिए, /dev पदानुक्रम में कुछ उपकरणों के नाम के लिए निम्नलिखित उपसर्गों का उपयोग किया जाता है:

कुछ ऑपरेटिंग प्रणाली में अतिरिक्त उपसर्ग सामान्य उपयोग में आ गए हैं:

  • fb: फ्रेम बफर
  • fd: (प्लेटफ़ॉर्म) फ्लॉपी डिस्क, चूँकि इसी संक्षिप्त नाम का उपयोग सामान्यतः फ़ाइल डिस्क्रिप्टर को संदर्भित करने के लिए भी किया जाता है
  • hd: (क्लासिक) एकीकृत ड्राइव इलेक्ट्रॉनिक्स ड्राइवर (पहले एटीए हार्ड डिस्क ड्राइव, एटीएपीआई ऑप्टिकल डिस्क ड्राइव, आदि के लिए उपयोग किया जाता था)
    • hda: पहले एटीए चैनल पर मास्टर डिवाइस (सामान्यतः प्रमुख संख्या 3 और छोटी संख्या 0 द्वारा पहचाना जाता है)
    • hdb: पहले एटीए चैनल पर स्लेव डिवाइस
    • hdc: दूसरे एटीए चैनल पर मास्टर डिवाइस
    • hdd: दूसरे एटीए चैनल पर स्लेव डिवाइस
  • parport, pp: समानांतर पोर्ट्स
  • mem: मुख्य मेमोरी (कैरेक्टर डिवाइस)
  • एनवीएम एक्सप्रेस चालक:
    • nvme0: प्रथम पंजीकृत डिवाइस का डिवाइस कंट्रोलर (कैरेक्टर डिवाइस)
    • nvme0n1: प्रथम पंजीकृत डिवाइस का प्रथम नेमस्पेस (ब्लॉक डिवाइस)
    • nvme0n1p1: प्रथम पंजीकृत डिवाइस का प्रथम नामस्थान का प्रथम विभाजन (ब्लॉक डिवाइस)
  • मल्टीमीडिया कार्ड ड्राइवर:
    • mmcblk: मल्टीमीडिया कार्ड मीडिया के लिए स्टोरेज ड्राइवर (एसडी कार्ड, लैपटॉप पर इएमएमसी चिप्स, आदि)
      • mmcblk0: प्रथम पंजीकृत उपकरण
      • mmcblk0p1: प्रथम पंजीकृत डिवाइस का प्रथम विभाजन
  • एससीएसआई ड्राइवर, libATA (आधुनिक समानांतर PATA/SATA ड्राइवर), यूनिवर्सल सीरियल बस, आईईईई 1394, आदि द्वारा भी उपयोग किया जाता है।
    • sd: मास-स्टोरेज ड्राइवर (ब्लॉक डिवाइस)
      • sda: प्रथम पंजीकृत उपकरण
      • sdb, sdc, आदि: दूसरा, तीसरा, आदि पंजीकृत उपकरण
    • ses: संलग्नक चालक
    • sg: सामान्य एससीएसआई परत
    • sr: ROM ड्राइवर (डेटा-उन्मुख ऑप्टिकल डिस्क ड्राइव; scd केवल एक द्वितीयक उपनाम है)
    • st: चुंबकीय टेप चालक
  • tty: कंप्यूटर टर्मिनल
    • ttyS: (प्लेटफ़ॉर्म) आनुक्रमिक पोर्ट ड्राइवर
    • ttyUSB: यूएसबी सीरियल कन्वर्टर्स, मोडेम, आदि।

लिनक्स में प्रयुक्त उपसर्गों की विहित सूची लिनक्स डिवाइस सूची, लिनक्स ऑपरेटिंग प्रणाली के लिए आवंटित डिवाइस नंबरों की आधिकारिक रजिस्ट्री और /dev निर्देशिका नोड में पाई जा सकती है।[10]

अधिकांश उपकरणों के लिए, इस उपसर्ग के पश्चात विशिष्ट रूप से विशिष्ट उपकरण की पहचान करने वाला एक नंबर होता है। हार्ड ड्राइव के लिए, उपकरणों की पहचान के लिए एक अक्षर का उपयोग किया जाता है और उसके पश्चात डिस्क विभाजन की पहचान करने के लिए एक संख्या होती है। इस प्रकार फाइल प्रणाली डिस्क पर क्षेत्र को /dev/sda3 के रूप में जान सकता है, उदाहरण के लिए, या नेटवर्क से जुड़े टर्मिनल सत्र को /dev/pts/14 से जुड़ा "देख" सकता है।

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

डिवाइस के नाम सामान्यतः विभिन्न यूनिक्स-जैसे प्रणाली वेरिएंट के मध्य पोर्टेबल नहीं होते हैं, उदाहरण के लिए, कुछ बीएसडी प्रणाली पर, आईडीई डिवाइसों को नाम /dev/wd0, /dev/wd1 आदि होता है।

डेवफ्स

डेवफ्स यूनिक्स जैसे ऑपरेटिंग प्रणाली पर डिवाइस फ़ाइल प्रणाली का विशिष्ट कार्यान्वयन है, जिसका उपयोग डिवाइस फ़ाइलों को प्रस्तुत करने के लिए किया जाता है। ओएस के आधार पर कार्यान्वयन की अंतर्निहित प्रणाली भिन्न हो सकती है।

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

डिवाइस प्रदर्शित होने के लिए तैयार होने पर परिभाषित करना तुच्छ नहीं है। डेवफ्स दृष्टिकोण डिवाइस ड्राइवर के लिए सक्षम और अक्षम डिवाइस से संबंधित डेवफ्स प्रविष्टियों को बनाने और विस्थापित करने के अनुरोध करने के लिए है।

पीसी डॉस, टीओएस, ओएस/2, और विंडोज़

डिवाइस फ़ाइल आरक्षित कीवर्ड है जिसका उपयोग आईबीएम पीसी डॉस, टीओएस, ओएस / 2, और विंडोज प्रणाली में कुछ पोर्ट और डिवाइस तक पहुंच की अनुमति देने के लिए किया जाता है।

एमएस-डॉस ने यूनिक्स से विशेष फाइलों की अवधारणा को उधार ली थी किंतु उनका नाम परिवर्तित करके डिवाइस कर दिया।[1] क्योंकि एमएस-डॉस के प्रारंभिक संस्करण निर्देशिका (फाइल प्रणाली) पदानुक्रम का समर्थन नहीं करते थे, उपकरणों को उनके नाम को आरक्षित शब्द बनाकर नियमित फाइलों से भिन्न किया गया था। इसका अर्थ है कि कुछ फ़ाइल नाम उपकरणों के लिए आरक्षित थे, और उन्हें नई फ़ाइलों या निर्देशिकाओं के नाम के लिए उपयोग नहीं किया जाना चाहिए।[11]आरक्षित नामों को स्वयं सीपी/एम में PIP कमांड की "विशेष फाइलों" के साथ संगत होने के लिए चयन किया गया था। डॉस में दो प्रकार के उपकरण थे: ब्लॉक डिवाइसेस (डिस्क ड्राइव के लिए प्रयुक्त) और कैरेक्टर डिवाइसेस (सामान्यतः कॉम और पीआरएन डिवाइस सहित अन्य सभी डिवाइस)।[12]

डॉस प्रिंटर और पोर्ट तक पहुँचने के लिए डिवाइस फ़ाइलों का उपयोग करता है। विंडोज के अधिकांश संस्करणों में भी यह समर्थन होता है, जो कुछ नामों की फाइलों और फ़ोल्डरों को बनाने के प्रयास करते समय भ्रम उत्पन्न कर सकता है, क्योंकि उनके पास ये नाम नहीं हो सकते।[13] एमएस-डॉस के संस्करण 2.x AVAILDEV CONFIG.SYS पैरामीटर प्रदान करते हैं, जो कि FALSE पर सेट होने पर, इन विशेष नामों को केवल तभी सक्रिय बनाता है जब \DEV\, के साथ उपसर्ग किया जाता है, इस प्रकार इन नामों के साथ साधारण फ़ाइलों को बनाने की अनुमति मिलती है। [14]

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

डिवाइस कीवर्ड[13] इनपुट के रूप में प्रयोग करें आउटपुट के रूप में प्रयोग करें
कॉन ^Z (Ctrl-Z) दबाए जाने तक टाइप किए गए डेटा को प्राप्त करता है। डेटा को कंसोल पर प्रिंट करता है।
पीआरएन[15] प्रिंटर पर टेक्स्ट प्रिंट करता है, सामान्यतः पीएलटी1 या एलएसटी पर रीडायरेक्ट किया जाता है। कभी-कभी अन्य उपकरणों के लिए पुन: कॉन्फ़िगर करने योग्य।[16][17][18]
औक्स (ओएस/2 में नहीं[15]) एक सहायक उपकरण से डेटा पढ़ता है, सामान्यतः सीरियल डिवाइस जैसे COM1.कभी-कभी अन्य उपकरणों के लिए पुन: कॉन्फ़िगर करने योग्य।[16][17][18] सहायक डिवाइस को डेटा भेजता है, सामान्यतः सीरियल डिवाइस जैसे कॉम1 कभी-कभी अन्य उपकरणों के लिए पुन: कॉन्फ़िगर करने योग्य।[16][17][18]
नल शून्य या कोई डेटा नहीं देता है। प्राप्त डेटा को त्यागें।
क्लॉक$ (एमएस-डॉस 2.11 के कुछ संस्करणों में अभी भी क्लॉक नाम दिया गया है[19][16][17])
केबीडी$ (केवल मल्टीटास्किंग एमएस-डॉस) ? ?
केबीडी$ (केवल ओएस/2 में[15]) ? ?
स्क्रीन$ (केवल मल्टीटास्किंग एमएस-डॉस और ओएस/2 में[15]) ? ?
पॉइंटर$ (केवल ओएस/2 में[15]) ? ?
माउस$ (केवल ओएस/2 में[15]) ? ?
$आईडीएलइ$ (केवल डीआर-डॉस (5.0 से) और बहुउपयोगकर्ता डॉस (समवर्ती डॉस 386) से सदस्यों में)
कॉन्फिग$ (केवल एमएस-डॉस 7.0 और उच्चतर में)
एलएसटी (केवल 86-डॉस और डॉस 1.x में, एचपी पोर्टेबल प्लस के लिए हेवलेट पैकर्ड के एमएस-डॉस 2.11 में भी[16][17]) कोई डेटा नहीं लौटाता. लाइन प्रिंटर को डेटा भेजता है। (हेवलेट-पैकार्ड के एमएस-डॉस 2.11 के लिए एलपीटी2[16][17])
पीएलटी (एचपी पोर्टेबल प्लस के लिए केवल हेवलेट पैकर्ड के एमएस-डॉस 2.11 में[16][17]) कोई डेटा नहीं लौटाता. असाइन किए गए प्लॉटर को डेटा भेजता है। संलग्न प्लॉटर डिवाइस पुनः कॉन्फ़िगर करने योग्य है।[16][17]
पीएलटी1, पीएलटी2, पीएलटी3,और कभी-कभी पीएलटी4 (डीआर-डॉस 7.02 और उच्चतर और बहुउपयोगकर्ता डॉस कुछ संस्करणों में) चयनित समांतर पोर्ट पर डेटा भेजता है।
कॉम1, कॉम2, कॉम3, कॉम4 चयनित सीरियल पोर्ट से डेटा पढ़ता है। चयनित सीरियल पोर्ट पर डेटा भेजता है।
82164A (एचपी पोर्टेबल प्लस के लिए केवल हेवलेट पैकर्ड के एमएस-डॉस 2.11 में [16][17]) कॉम2 पर रीडायरेक्ट करता है। कॉम2 पर रीडायरेक्ट करता है।

शेल पुनर्निर्देशन (कंप्यूटिंग) और पाइप का उपयोग करके, डेटा को डिवाइस से भेजा या प्राप्त किया जा सकता है। उदाहरण के लिए, निम्नलिखित टाइप करने से फाइल c:\data.txt प्रिंटर को भेज दी जाएगी:

TYPE c:\data.txt > PRN

पाइप, मेलस्लॉट और एमयूपी अन्य मानक विंडोज उपकरण हैं।[20]


आईओसीएस

पीसी-ई500, पीसी-ई500एस आदि जैसे शार्प पॉकेट कंप्यूटरों के 8-बिट ऑपरेटिंग प्रणाली में बेसिक दुभाषिया, डॉस2-लाइक फाइल कंट्रोल सिस्टम (FCS) प्रारम्भ होता है। जो अल्पविकसित 12-बिट फैट-जैसी फाइलप्रणाली को प्रारम्भ करता है, और बीआईओएस-जैसी इनपुट/आउटपुट कंट्रोल प्रणाली (IOCS) कई मानक कैरेक्टर और ब्लॉक डिवाइस ड्राइवरों के साथ-साथ एसटीडीओ:/एससीआरएन: (डिस्प्ले), एसटीडीआई:/केवाईबीडी: (कीबोर्ड), कॉम:( सहित विशेष फाइल डिवाइस को प्रारम्भ करता है (सीरियल इनपुट/आउटपुट), एसटीडीएल:/पीआरएन: (प्रिंटर), कैस: (कैसेट टेप), इ:/एफ:/जी: (मेमोरी फ़ाइल), एस1:/एस2:/एस3: (मेमोरी कार्ड), एक्स:/वाई: (फ्लॉपी), सिस्टम: (प्रणाली), और निल: (फंक्शन)।[21]


कार्यान्वयन

Operating System Filesystem or managing software Standard mount point Author Notes
लिनक्स 2.3.46pre5–2.6.17 devfs[22] and devfsd /dev Richard Gooch Implemented fully in the kernel, with optional daemon devfsd to handle device node events in user space.[23] Obsolete – users are encouraged to migrate to udev and/or devtmpfs.
लिनक्स 2.5– udev on any fs, but usually tmpfs /dev Greg Kroah-Hartman, Kay Sievers and Dan Stekloff Implemented largely in user space, device information is gathered from sysfs. Device files can be stored on a conventional general-purpose file system, or in a memory file system (tmpfs).
लिनक्स 2.6.32– devtmpfs with or without udev /dev Kay Sievers, Jan Blunck, Greg Kroah-Hartman A hybrid kernel/userspace approach of a device filesystem to provide nodes before udev runs for the first time[24]
Solaris devfs[25] /devices Sun Microsystems Introduced with dynamic loaded drivers in Solaris-2.1
FreeBSD 2.0– devfs /dev Poul-Henning Kamp Implemented fully in the kernel.
DragonFly BSD 2.3.2– devfs /dev Alex Hornung Implemented fully in the kernel.
macOS devfs /dev Apple Inc. Implemented fully in the kernel.
HP-UX B.11.31 devfs /dev HP Implemented fully in the kernel.
Plan 9 # Bell Labs Implemented in the kernel.
RISC OS DeviceFS Devices: Acorn Computers DeviceFS was started in 1991[26] and first appeared in RISC OS 3. It manages several device like special files, most commonly: Parallel, Serial, FastParallel, and USB. The SystemDevices module implements the pseudo devices such as: Vdu, Kbd, Null and Printer.