डिवाइस फ़ाइल
यूनिक्स जैसे ऑपरेटिंग सिस्टम में, एक डिवाइस फ़ाइल या विशेष फ़ाइल एक डिवाइस ड्राइवर के लिए एक इंटरफ़ेस (कंप्यूटर विज्ञान) है जो फाइल सिस्टम में दिखाई देता है जैसे कि यह एक सामान्य कम्प्यूटर फाइल हो। DOS, OS/2, और Windows में भी विशेष फ़ाइलें हैं। ये विशेष फाइलें मानक इनपुट/आउटपुट सिस्टम कॉल के माध्यम से अपने डिवाइस ड्राइवर का उपयोग करके एक एप्लिकेशन प्रोग्राम को डिवाइस के साथ इंटरैक्ट करने की अनुमति देती हैं। मानक सिस्टम कॉल का उपयोग करना कई प्रोग्रामिंग कार्यों को सरल करता है, और डिवाइस सुविधाओं और कार्यों की परवाह किए बिना संगत उपयोगकर्ता-स्थान I/O तंत्र की ओर जाता है।
सिंहावलोकन
डिवाइस फ़ाइलें आमतौर पर मानक उपकरणों (जैसे प्रिंटर और सीरियल पोर्ट) के लिए सरल इंटरफेस प्रदान करती हैं, लेकिन उन उपकरणों पर विशिष्ट विशिष्ट संसाधनों तक पहुंचने के लिए भी उपयोग किया जा सकता है, जैसे कि डिस्क विभाजन। इसके अतिरिक्त, उपकरण फ़ाइलें संसाधन (कंप्यूटर विज्ञान) तक पहुँचने के लिए उपयोगी होती हैं जिनका किसी वास्तविक उपकरण से कोई संबंध नहीं होता है, जैसे डेटा सिंक और यादृच्छिक संख्या जनरेटर।
यूनिक्स जैसे ऑपरेटिंग सिस्टम में दो सामान्य प्रकार की डिवाइस फाइलें होती हैं, जिन्हें कैरेक्टर स्पेशल फाइल्स और ब्लॉक स्पेशल फाइल्स के रूप में जाना जाता है। उनके बीच का अंतर यह है कि ऑपरेटिंग सिस्टम और हार्डवेयर द्वारा कितना डेटा पढ़ा और लिखा जाता है। इन्हें एक साथ नामित पाइपों के विपरीत 'डिवाइस विशेष फ़ाइलें' कहा जा सकता है, जो डिवाइस से कनेक्ट नहीं हैं लेकिन सामान्य फ़ाइलें भी नहीं हैं।
MS-DOS ने यूनिक्स से विशेष फाइलों की अवधारणा को उधार लिया लेकिन उनका नाम बदलकर डिवाइस कर दिया।[1]क्योंकि MS-DOS के शुरुआती संस्करण एक निर्देशिका (फ़ाइल सिस्टम) पदानुक्रम का समर्थन नहीं करते थे, उपकरणों को उनके नाम आरक्षित शब्द बनाकर नियमित फ़ाइलों से अलग किया गया था, उदाहरण के लिए: कुख्यात CON. इन्हें सीपी/एम के साथ संगतता की डिग्री के लिए चुना गया था और अभी भी पिछड़े संगतता के लिए आधुनिक विंडोज़ में मौजूद हैं।
कुछ यूनिक्स जैसी प्रणालियों में, अधिकांश डिवाइस फ़ाइलों को पारंपरिक रूप से माउंटेड वर्चुअल फाइल सिस्टम के हिस्से के रूप में प्रबंधित किया जाता है /dev, संभवतः एक नियंत्रित डेमॉन से जुड़ा हुआ है, जो रन टाइम पर हार्डवेयर जोड़ने और हटाने की निगरानी करता है, डिवाइस फ़ाइल सिस्टम में संबंधित परिवर्तन करता है यदि वह कर्नेल द्वारा स्वचालित रूप से नहीं किया जाता है, और विशेष डिवाइस की जरूरतों को पूरा करने के लिए सिस्टम या यूजर स्पेस में स्क्रिप्ट्स को आमंत्रित करता है। FreeBSD, DragonFly BSD और डार्विन (ऑपरेटिंग सिस्टम) के पास एक समर्पित फ़ाइल सिस्टम devfs है; इस फाइल सिस्टम द्वारा कर्नेल स्थान में डिवाइस नोड्स को स्वचालित रूप से प्रबंधित किया जाता है। लिनक्स में एक समान devfs कार्यान्वयन हुआ करता था, लेकिन बाद में इसे छोड़ दिया गया, और फिर संस्करण 2.6.17 के बाद से हटा दिया गया;[2] लिनक्स अब मुख्य रूप से एक उपयोक्ता स्थान कार्यान्वयन का उपयोग करता है जिसे udev के रूप में जाना जाता है, लेकिन इसके कई रूप हैं।
यूनिक्स सिस्टम में जो चुरोट प्रक्रिया अलगाव का समर्थन करता है, जैसे कि सोलारिस कंटेनर, आमतौर पर प्रत्येक चेरोट वातावरण को स्वयं की आवश्यकता होती है /dev; ये आरोह बिंदु वैश्विक फ़ाइल सिस्टम ट्री में विभिन्न नोड्स पर होस्ट OS पर दिखाई देंगे। के चेरोट उदाहरणों में पॉप्युलेट किए गए डिवाइस नोड्स को प्रतिबंधित करके /dev, हार्डवेयर आइसोलेशन को चेरोट वातावरण द्वारा लागू किया जा सकता है (एक प्रोग्राम हार्डवेयर के साथ दखल नहीं दे सकता है जिसे वह न तो देख सकता है और न ही नाम दे सकता है - यूनिक्स फ़ाइल सिस्टम अनुमतियों की तुलना में अभिगम नियंत्रण का एक और भी मजबूत रूप)।
MS-DOS प्रत्येक डिवाइस फ़ाइल को विशेष रूप से खुला बनाकर हार्डवेयर डिवाइस विवाद को प्रबंधित करता है (टर्मिनेट-एंड-स्टे-रेजिडेंट प्रोग्राम देखें)। पहले से उपयोग में आने वाले डिवाइस तक पहुंचने का प्रयास करने वाला एप्लिकेशन खुद को डिवाइस फ़ाइल नोड खोलने में असमर्थ पाएगा। यूनिक्स और लिनक्स में समवर्ती पहुंच के संबंध में विभिन्न प्रकार के डिवाइस ड्राइवर सिमेंटिक्स लागू किए गए हैं।[3]
यूनिक्स और यूनिक्स जैसी प्रणालियाँ
डिवाइस नोड्स उन संसाधनों के अनुरूप हैं जो एक ऑपरेटिंग सिस्टम के कर्नेल (कंप्यूटर साइंस) ने पहले ही आवंटित कर दिए हैं। यूनिक्स उन संसाधनों की एक बड़ी संख्या और एक छोटी संख्या द्वारा पहचान करता है,[4] दोनों एक नोड (कंप्यूटर विज्ञान) की संरचना के हिस्से के रूप में संग्रहीत हैं। इन नंबरों का असाइनमेंट अलग-अलग ऑपरेटिंग सिस्टम और अलग-अलग कंप्यूटर मंच पर विशिष्ट रूप से होता है। आम तौर पर, प्रमुख संख्या डिवाइस ड्राइवर की पहचान करती है और छोटी संख्या एक विशेष डिवाइस की पहचान करती है (संभवतः कई में से) जिसे ड्राइवर नियंत्रित करता है:[5] इस मामले में, सिस्टम ड्राइवर को माइनर नंबर दे सकता है। हालाँकि, डायनेमिक नंबर आवंटन की उपस्थिति में, यह मामला नहीं हो सकता है (उदाहरण के लिए FreeBSD 5 और ऊपर)।
अन्य विशेष फ़ाइल प्रकारों की तरह, कंप्यूटर सिस्टम मानक सिस्टम कॉल का उपयोग करके डिवाइस नोड्स तक पहुँचता है और उन्हें नियमित कंप्यूटर फ़ाइलों की तरह व्यवहार करता है। दो मानक प्रकार की डिवाइस फ़ाइलें मौजूद हैं; दुर्भाग्य से उनके नाम ऐतिहासिक कारणों से प्रति-सहज हैं, और परिणामस्वरूप दोनों के बीच अंतर की व्याख्या अक्सर गलत होती है।
वर्ण उपकरण
कैरेक्टर स्पेशल फाइल्स या कैरेक्टर डिवाइस हार्डवेयर डिवाइस तक बिना बफर, सीधी पहुंच प्रदान करते हैं। जरूरी नहीं कि वे कार्यक्रमों को एक बार में एक अक्षर को पढ़ने या लिखने की अनुमति दें; यह प्रश्न में डिवाइस पर निर्भर है। उदाहरण के लिए, हार्ड डिस्क के लिए कैरेक्टर डिवाइस को सामान्य रूप से आवश्यकता होगी कि सभी पढ़ने और लिखने को ब्लॉक सीमाओं के साथ गठबंधन किया जाए और सबसे निश्चित रूप से एक बाइट को पढ़ने की अनुमति नहीं दी जाएगी।
चरित्र उपकरणों को कभी-कभी कच्चे उपकरणों के रूप में जाना जाता है ताकि इस तथ्य के आस-पास के भ्रम से बचा जा सके कि ब्लॉक-आधारित हार्डवेयर के एक टुकड़े के लिए एक चरित्र डिवाइस को आम तौर पर संरेखित ब्लॉकों को पढ़ने और लिखने के लिए प्रोग्राम की आवश्यकता होगी।
ब्लॉक डिवाइस
विशेष फ़ाइलों को ब्लॉक करें या डिवाइस को ब्लॉक करें, हार्डवेयर डिवाइस को बफ़र्ड एक्सेस प्रदान करें, और उनकी बारीकियों से कुछ अमूर्तता प्रदान करें।[6] चरित्र उपकरणों के विपरीत, ब्लॉक डिवाइस हमेशा प्रोग्रामर को किसी भी आकार (एकल अक्षर/बाइट सहित) और किसी भी संरेखण के ब्लॉक को पढ़ने या लिखने की अनुमति देगा। नकारात्मक पक्ष यह है कि क्योंकि ब्लॉक डिवाइस बफ़र किए जाते हैं, प्रोग्रामर को यह नहीं पता होता है कि कर्नेल के बफ़र्स से लिखित डेटा को वास्तविक डिवाइस पर पास करने में कितना समय लगेगा, या वास्तव में किस क्रम में भौतिक डिवाइस पर दो अलग-अलग राइट्स आएंगे। इसके अतिरिक्त, यदि एक ही हार्डवेयर कैरेक्टर और ब्लॉक डिवाइस दोनों को उजागर करता है, तो कैरेक्टर डिवाइस का उपयोग करने वाले क्लाइंट को ब्लॉक डिवाइस के बफ़र्स में किए गए परिवर्तनों से अनजान होने के कारण डेटा भ्रष्टाचार का खतरा होता है।
अधिकांश सिस्टम हार्ड डिस्क जैसे हार्डवेयर का प्रतिनिधित्व करने के लिए ब्लॉक और कैरेक्टर डिवाइस दोनों बनाते हैं। FreeBSD और Linux विशेष रूप से नहीं; पूर्व ने ब्लॉक उपकरणों के लिए समर्थन हटा दिया है,[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 तक पहुँचता है।
इसके अतिरिक्त, बीएसडी-विशिष्ट स्यूडो-डिवाइस a ioctl इंटरफ़ेस में ये भी शामिल हो सकते हैं:
- /dev/pf – उपयोगकर्ताभूमि प्रक्रियाओं को पीएफ (फ़ायरवॉल) को नियंत्रित करने की अनुमति देता है a ioctl इंटरफेस।
- /dev/bio – प्रदान करता है ioctl उपकरणों तक पहुंच अन्यथा नहीं मिली /dev नोड्स, द्वारा उपयोग किया जाता है bioctl OpenBSD और NetBSD में RAID प्रबंधन लागू करने के लिए।
- /dev/sysmon – सिस्टम मॉनिटर के लिए NetBSD के envsys फ्रेमवर्क द्वारा उपयोग किया जाता है, जिसके माध्यम से यूजरलैंड में एक्सेस किया जाता है proplib(3) से envstat उपयोगिता।[8]
नोड निर्माण
द्वारा नोड बनाए जाते हैं mknod सिस्टम कॉल। नोड बनाने के लिए कमांड-लाइन प्रोग्राम को भी कहा जाता है mknod. सामान्य फाइलसिस्टम सिस्टम कॉल द्वारा नोड्स को स्थानांतरित या हटाया जा सकता है (rename, unlink) और कमांड (कंप्यूटिंग) (mv, rm).
कुछ यूनिक्स संस्करणों में निर्देशिका में सभी आवश्यक उपकरण बनाने के लिए Makedev या MAKEDEV नाम की एक स्क्रिप्ट शामिल है /dev. यह केवल उन प्रणालियों पर समझ में आता है जिनके उपकरणों को स्थिर रूप से प्रमुख संख्याएँ सौंपी जाती हैं (उदाहरण के लिए, उनके कर्नेल मॉड्यूल में हार्डकोडिंग के माध्यम से)।
जबकि कुछ अन्य यूनिक्स सिस्टम जैसे कि FreeBSD, कर्नेल-आधारित डिवाइस नोड प्रबंधन का उपयोग केवल devfs के माध्यम से करते हैं, और मैन्युअल नोड निर्माण का समर्थन नहीं करते हैं। mknod(2) सिस्टम कॉल और mknod(8) कमांड POSIX के साथ संगतता बनाए रखने के लिए मौजूद है, लेकिन devfs के बाहर मैन्युअल रूप से बनाए गए डिवाइस नोड काम नहीं करेंगे।[9]
नामकरण परंपराएं
निम्नलिखित उपसर्गों का उपयोग कुछ उपकरणों के नामों के लिए किया जाता है /dev पदानुक्रम, डिवाइस के प्रकार की पहचान करने के लिए:
- lp: लाइन प्रिंटर (एलपी की तुलना करें (यूनिक्स))
- pt: छद्म टर्मिनल|छद्म-टर्मिनल (वर्चुअल टर्मिनल)
- tty: कंप्यूटर टर्मिनल
कुछ ऑपरेटिंग सिस्टम में कुछ अतिरिक्त उपसर्ग सामान्य उपयोग में आ गए हैं:
- fb: फ्रेम बफर
- fd: (प्लेटफ़ॉर्म) फ्लॉपी डिस्क, हालांकि इसी संक्षिप्त नाम का इस्तेमाल आमतौर पर फ़ाइल डिस्क्रिप्टर को संदर्भित करने के लिए भी किया जाता है
- hd: (क्लासिक) एकीकृत ड्राइव इलेक्ट्रॉनिक्स ड्राइवर (पहले ATA हार्ड डिस्क ड्राइव, ATAPI ऑप्टिकल डिस्क ड्राइव, आदि के लिए उपयोग किया जाता था)
- hda: पहले एटीए चैनल पर मास्टर डिवाइस (आमतौर पर प्रमुख संख्या 3 और छोटी संख्या 0 द्वारा पहचाना जाता है)
- hdb: पहले ATA चैनल पर स्लेव डिवाइस
- hdc: दूसरे एटीए चैनल पर मास्टर डिवाइस
- hdd: दूसरे ATA चैनल पर स्लेव डिवाइस
- parport, pp: समानांतर बंदरगाह
- mem: मुख्य मेमोरी (कैरेक्टर डिवाइस)
- एनवीएम एक्सप्रेस चालक:
- nvme0: पहले पंजीकृत डिवाइस का डिवाइस कंट्रोलर (कैरेक्टर डिवाइस)
- nvme0n1: पहले पंजीकृत डिवाइस का पहला नेमस्पेस (ब्लॉक डिवाइस)
- nvme0n1p1: पहले पंजीकृत डिवाइस का पहला नामस्थान का पहला विभाजन (ब्लॉक डिवाइस)
- मल्टीमीडिया कार्ड ड्राइवर:
- mmcblk: मल्टीमीडिया कार्ड मीडिया के लिए स्टोरेज ड्राइवर (एसडी कार्ड कार्ड, लैपटॉप पर eMMC चिप्स, आदि)
- mmcblk0: पहला पंजीकृत उपकरण
- mmcblk0p1: पहले पंजीकृत डिवाइस का पहला विभाजन
- mmcblk: मल्टीमीडिया कार्ड मीडिया के लिए स्टोरेज ड्राइवर (एसडी कार्ड कार्ड, लैपटॉप पर eMMC चिप्स, आदि)
- SCSI ड्राइवर, libATA (आधुनिक समानांतर ATA/सीरियल ATA ड्राइवर), यूनिवर्सल सीरियल बस, IEEE 1394, आदि द्वारा भी उपयोग किया जाता है।
- sd: मास-स्टोरेज ड्राइवर (ब्लॉक डिवाइस)
- sda: पहला पंजीकृत उपकरण
- sdb, sdc, आदि: दूसरा, तीसरा, आदि पंजीकृत उपकरण
- ses: संलग्नक चालक
- sg: सामान्य एससीएसआई परत
- sr: ROM ड्राइवर (डेटा-उन्मुख ऑप्टिकल डिस्क ड्राइव; scd केवल एक द्वितीयक उपनाम है)
- st: चुंबकीय टेप चालक
- sd: मास-स्टोरेज ड्राइवर (ब्लॉक डिवाइस)
- tty: कंप्यूटर टर्मिनल
- ttyS: (प्लेटफ़ॉर्म) आनुक्रमिक द्वार ड्राइवर
- ttyUSB: यूएसबी सीरियल कन्वर्टर्स, मोडेम, आदि।
Linux में उपयोग किए जाने वाले उपसर्गों की विहित सूची Linux Device List में पाई जा सकती है, आवंटित डिवाइस नंबरों की आधिकारिक रजिस्ट्री और /dev लिनक्स ऑपरेटिंग सिस्टम के लिए निर्देशिका नोड।[10] अधिकांश उपकरणों के लिए, इस उपसर्ग के बाद विशिष्ट रूप से विशिष्ट उपकरण की पहचान करने वाला एक नंबर होता है। हार्ड ड्राइव के लिए, उपकरणों की पहचान के लिए एक अक्षर का उपयोग किया जाता है और उसके बाद डिस्क विभाजन की पहचान करने के लिए एक संख्या होती है। इस प्रकार एक फाइल सिस्टम डिस्क पर एक क्षेत्र को जान सकता है /dev/sda3, उदाहरण के लिए, या नेटवर्क से जुड़े टर्मिनल सत्र को देखें /dev/pts/14.
विशिष्ट पीसी मास्टर बूट दस्तावेज़ का उपयोग करने वाले डिस्क पर, प्राथमिक और वैकल्पिक विस्तारित विभाजन की डिवाइस संख्या 1 से 4 तक होती है, जबकि किसी भी तार्किक विभाजन की अनुक्रमणिका 5 और आगे होती है, पूर्व विभाजनों के लेआउट की परवाह किए बिना (उनके पैरेंट विस्तारित) विभाजन को डिस्क पर चौथा विभाजन होने की आवश्यकता नहीं है, न ही सभी चार प्राथमिक विभाजनों का अस्तित्व होना चाहिए)।
डिवाइस के नाम आमतौर पर विभिन्न यूनिक्स-जैसे सिस्टम वेरिएंट के बीच पोर्टेबल नहीं होते हैं, उदाहरण के लिए, कुछ बीएसडी सिस्टम पर, आईडीई डिवाइसों को नाम दिया जाता है /dev/wd0, /dev/wd1, वगैरह।
डेवफ्स
devfs यूनिक्स जैसे ऑपरेटिंग सिस्टम पर डिवाइस फ़ाइल सिस्टम का एक विशिष्ट कार्यान्वयन है, जिसका उपयोग डिवाइस फ़ाइलों को प्रस्तुत करने के लिए किया जाता है। ओएस के आधार पर कार्यान्वयन की अंतर्निहित तंत्र भिन्न हो सकती है।
भौतिक रूप से कार्यान्वित फ़ाइल सिस्टम जैसे कि हार्ड ड्राइव पर इन विशेष फ़ाइलों को बनाए रखना असुविधाजनक है, और चूंकि इसे वैसे भी कर्नेल सहायता की आवश्यकता होती है, यह विचार एक विशेष-उद्देश्य तार्किक फ़ाइल सिस्टम से उत्पन्न हुआ जो भौतिक रूप से संग्रहीत नहीं है।
डिवाइस प्रदर्शित होने के लिए तैयार होने पर परिभाषित करना तुच्छ नहीं है। devfs दृष्टिकोण डिवाइस ड्राइवर के लिए सक्षम और अक्षम डिवाइस से संबंधित devfs प्रविष्टियों को बनाने और हटाने का अनुरोध करने के लिए है।
PC DOS, TOS, OS/2, और Windows
एक डिवाइस फ़ाइल आईबीएम पीसी डॉस, टीओएस (अटारी), ओएस / 2, और विंडोज सिस्टम में कुछ बंदरगाहों और उपकरणों तक पहुंच की अनुमति देने के लिए उपयोग किया जाने वाला एक आरक्षित कीवर्ड है।
MS-DOS ने यूनिक्स से विशेष फाइलों की अवधारणा को उधार लिया लेकिन उनका नाम बदलकर डिवाइस कर दिया।[1] क्योंकि MS-DOS के शुरुआती संस्करण एक निर्देशिका (फाइल सिस्टम) पदानुक्रम का समर्थन नहीं करते थे, उपकरणों को उनके नाम को आरक्षित शब्द बनाकर नियमित फाइलों से अलग किया गया था। इसका अर्थ है कि कुछ फ़ाइल नाम उपकरणों के लिए आरक्षित थे, और उन्हें नई फ़ाइलों या निर्देशिकाओं के नाम के लिए उपयोग नहीं किया जाना चाहिए।[11]
आरक्षित नामों को विशेष फाइलों को संभालने के साथ संगत होने के लिए चुना गया था PIP सीपी/एम में कमांड। डॉस में दो प्रकार के उपकरण थे: ब्लॉक डिवाइसेस (डिस्क ड्राइव के लिए प्रयुक्त) और कैरेक्टर डिवाइसेस (आम तौर पर कॉम और पीआरएन डिवाइस सहित अन्य सभी डिवाइस)।[12]
DOS प्रिंटर और पोर्ट तक पहुँचने के लिए डिवाइस फ़ाइलों का उपयोग करता है। विंडोज के अधिकांश संस्करणों में भी यह समर्थन होता है, जो कुछ नामों की फाइलों और फ़ोल्डरों को बनाने की कोशिश करते समय भ्रम पैदा कर सकता है, क्योंकि उनके पास ये नाम नहीं हो सकते।[13] MS-DOS के संस्करण 2.x प्रदान करते हैं AVAILDEV CONFIG.SYS पैरामीटर, यदि सेट किया गया है FALSE, इन विशेष नामों को केवल तभी सक्रिय बनाता है जब इसके साथ उपसर्ग किया जाता है \DEV\, इस प्रकार साधारण फ़ाइलों को इन नामों से बनाने की अनुमति देता है।[14]
GEMDOS, अटारी TOS का DOS जैसा हिस्सा, DOS के समान डिवाइस नामों का समर्थन करता है, लेकिन DOS के विपरीत इसे एक अनुगामी की आवश्यकता होती है: सामान्य फ़ाइलनामों के विपरीत उपकरणों के रूप में उनकी पहचान करने के लिए वर्ण (DOS पर, यह वैकल्पिक है) (इस प्रकार CON: होगा DOS और TOS दोनों पर काम करते हैं, लेकिन CON TOS पर एक साधारण फ़ाइल का नाम देगा लेकिन DOS पर कंसोल डिवाइस)। MiNT और MagiC में, U: ड्राइव लेटर के माध्यम से एक्सेस किए गए एक विशेष यूनिक्स-जैसे एकीकृत फ़ाइल सिस्टम व्यू में डिवाइस फ़ाइलों को U:\DEV में भी रखा गया है।
| Device keyword[13] | Use as input | Use as output |
|---|---|---|
| CON | Receives typed data until ^Z (Ctrl-Z) is pressed. | Prints data to the console. |
| PRN[15] | — | Prints text to the printer, usually redirected to LPT1 or LST. Sometimes reconfigurable to other devices.[16][17][18] |
| AUX (not in OS/2[15]) | Reads data from an auxiliary device, usually a serial device like COM1. Sometimes reconfigurable to other devices.[16][17][18] | Sends data to an auxiliary device, usually a serial device like COM1. Sometimes reconfigurable to other devices.[16][17][18] |
| NUL | Returns null or no data. | Discards received data. |
| CLOCK$ (still named CLOCK in some versions of MS-DOS 2.11[19][16][17]) | — | — |
| KEYBD$ (only in multitasking MS-DOS) | ? | ? |
| KBD$ (only in OS/2[15]) | ? | ? |
| SCREEN$ (only in multitasking MS-DOS and OS/2[15]) | ? | ? |
| POINTER$ (only in OS/2[15]) | ? | ? |
| MOUSE$ (only in OS/2[15]) | ? | ? |
| $IDLE$ (only in DR-DOS (since 5.0) and Multiuser DOS (since Concurrent DOS 386) families) | — | — |
| CONFIG$ (only in MS-DOS 7.0 and higher) | — | — |
| LST (only in 86-DOS and DOS 1.x, also in Hewlett-Packard's MS-DOS 2.11 for the HP Portable Plus[16][17]) | Returns no data. | Sends data to the line printer. (LPT2 for Hewlett-Packard's MS-DOS 2.11[16][17]) |
| PLT (only in Hewlett-Packard's MS-DOS 2.11 for the HP Portable Plus[16][17]) | Returns no data. | Sends data to the assigned plotter. The attached plotter device is reconfigurable.[16][17] |
| LPT1, LPT2, LPT3, and sometimes LPT4 (in DR-DOS 7.02 and higher and some versions of Multiuser DOS) | — | Sends data to the selected parallel port. |
| COM1, COM2, COM3, COM4 | Reads data from the selected serial port. | Sends data to the selected serial port. |
| 82164A (only in Hewlett-Packard's MS-DOS 2.11 for the HP Portable Plus[16][17]) | Redirects to COM2. | Redirects to COM2. |
शेल पुनर्निर्देशन (कंप्यूटिंग) और पाइप का उपयोग करके, डेटा को डिवाइस से भेजा या प्राप्त किया जा सकता है। उदाहरण के लिए, निम्नलिखित टाइप करने से फाइल भेज दी जाएगी c:\data.txt प्रिंटर के लिए:
टाइप c:\data.txt > PRN
पाइप, मेलस्लॉट और एमयूपी अन्य मानक विंडोज डिवाइस हैं।[20]
आईओसीएस
Sharp Corporation पॉकेट कंप्यूटर के 8-बिट ऑपरेटिंग सिस्टम जैसे Sharp PC-E500|PC-E500, Sharp PC-E500S|PC-E500S आदि में एक BASIC दुभाषिया, एक DOS 2-जैसी फाइल कंट्रोल सिस्टम (FCS) लागू होता है। एक अल्पविकसित 12-बिट FAT-जैसी फाइलसिस्टम, और एक BIOS-जैसी इनपुट/आउटपुट कंट्रोल सिस्टम (IOCS) कई मानक कैरेक्टर और ब्लॉक डिवाइस ड्राइवरों को लागू करने के साथ-साथ STDO:/SCRN: (डिस्प्ले), STDI सहित विशेष फाइल डिवाइस :/KYBD: (कीबोर्ड), COM: (सीरियल I/O), STDL:/PRN: (प्रिंटर), CAS: (कैसेट टेप), E:/F:/G: (मेमोरी फ़ाइल), S1:/S2 :/S3: (मेमोरी कार्ड), X:/Y: (फ्लॉपी), SYSTM: (सिस्टम), और NIL: (फंक्शन)।[21]
कार्यान्वयन
| Operating System | Filesystem or managing software | Standard mount point | Author | Notes |
|---|---|---|---|---|
| Linux 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. |
| Linux 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). |
| Linux 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. |
| MS-DOS, PC DOS, DR-DOS | FAT | \DEV (and /DEV)
|
various | As implemented in the kernel, character devices appear in the virtual \DEV directory and any disk directory. Under MS-DOS/PC DOS 2.x, the CONFIG.SYS AVAILDEV=FALSE directive can be used to force devices to exist only in \DEV. |
| MagiC, MiNT, MultiTOS | U:\DEV[27][28]
|
Application Systems Heidelberg, Eric R. Smith, Atari Corp. | The special U: drive contains a virtual DEV directory, inside which one can find device files. | |
| Windows 9x | \\devices\
|
Microsoft | ||
| Windows NT | \Device
|
Microsoft | The \Device directory is a part of Windows NT object namespace.
| |
| Windows NT Win32 Subsystem | \\.\
|
Microsoft | The \\.\ prefix makes supporting APIs access the Win32 device namespace instead of the Win32 file namespace. The Win32 device names are symbolic links to device names under Windows NT \Device directory.
|