डिवाइस फ़ाइल: Difference between revisions
No edit summary |
No edit summary |
||
| Line 51: | Line 51: | ||
=== नोड निर्माण === | === नोड निर्माण === | ||
{{mono|mknod}} प्रणाली कॉल द्वारा नोड बनाए जाते हैं। नोड बनाने के लिए कमांड-लाइन प्रोग्राम को भी {{mono|mknod}} कहा जाता है। सामान्य फाइलप्रणाली प्रणाली कॉल ({{mono|[[rename (computing)|rename]]}}, {{mono|[[unlink (Unix)|unlink]]}}) और [[कमांड (कंप्यूटिंग)]] ({{mono|[[mv (Unix)|mv]]}}, {{mono|[[rm (Unix)|rm]]}}) द्वारा नोड्स को स्थानांतरित या विस्थापित किया जा सकता है. | |||
कुछ यूनिक्स संस्करणों में निर्देशिका में सभी आवश्यक उपकरण बनाने के लिए Makedev या MAKEDEV नाम की एक स्क्रिप्ट सम्मिलित | कुछ यूनिक्स संस्करणों में निर्देशिका में सभी आवश्यक उपकरण बनाने के लिए Makedev या MAKEDEV नाम की एक स्क्रिप्ट सम्मिलित है। {{mono|/dev}} यह केवल उन प्रणालियों पर समझ में आता है जिनके उपकरणों को स्थिर रूप से प्रमुख संख्याएँ प्रदान की जाती हैं (उदाहरण के लिए, उनके कर्नेल मॉड्यूल में हार्डकोडिंग के माध्यम से)। | ||
जबकि कुछ अन्य यूनिक्स प्रणाली जैसे कि | जबकि कुछ अन्य यूनिक्स प्रणाली जैसे कि फ्रीबीएसडी, कर्नेल-आधारित डिवाइस नोड प्रबंधन का उपयोग केवल devfs के माध्यम से करते हैं, और मैन्युअल नोड निर्माण का समर्थन नहीं करते हैं। {{mono|mknod(2)}} प्रणाली कॉल और {{mono|mknod(8)}} कमांड POSIX के साथ संगतता बनाए रखने के लिए उपस्थित है, किंतु devfs के बाहर मैन्युअल रूप से बनाए गए डिवाइस नोड कार्य नहीं करेंगे।<ref>{{cite web |title=mknod(8) |url=https://www.freebsd.org/cgi/man.cgi?query=mknod&apropos=0&sektion=8&manpath=FreeBSD+13.0-RELEASE&arch=default&format=html |website=FreeBSD Manual Pages |publisher=The FreeBSD Project |access-date=2021-06-12 |date=2016-10-03}}</ref> | ||
=== नामकरण परंपराएं === | === नामकरण परंपराएं === | ||
डिवाइस के प्रकार की पहचान करने के लिए, {{mono|/dev}} पदानुक्रम में कुछ उपकरणों के नाम के लिए निम्नलिखित उपसर्गों का उपयोग किया जाता है: | |||
* {{mono|lp}}: [[लाइन प्रिंटर]] (एलपी की तुलना करें (यूनिक्स)) | * {{mono|lp}}: [[लाइन प्रिंटर]] (एलपी की तुलना करें (यूनिक्स)) | ||
* {{mono|pt}}: [[छद्म टर्मिनल]] | * {{mono|pt}}: [[छद्म टर्मिनल|सूडो टर्मिनल]] (वर्चुअल टर्मिनल) | ||
* {{mono|tty}}: [[कंप्यूटर टर्मिनल]] | * {{mono|tty}}: [[कंप्यूटर टर्मिनल]] | ||
कुछ ऑपरेटिंग प्रणाली में | कुछ ऑपरेटिंग प्रणाली में अतिरिक्त उपसर्ग सामान्य उपयोग में आ गए हैं: | ||
* {{mono|fb}}: [[फ्रेम बफर]] | * {{mono|fb}}: [[फ्रेम बफर]] | ||
* {{mono|fd}}: (प्लेटफ़ॉर्म) [[फ्लॉपी डिस्क]], चूँकि इसी संक्षिप्त नाम का उपयोग सामान्यतः फ़ाइल डिस्क्रिप्टर को संदर्भित करने के लिए भी किया जाता है | * {{mono|fd}}: (प्लेटफ़ॉर्म) [[फ्लॉपी डिस्क]], चूँकि इसी संक्षिप्त नाम का उपयोग सामान्यतः फ़ाइल डिस्क्रिप्टर को संदर्भित करने के लिए भी किया जाता है | ||
* {{mono|hd}}: (क्लासिक) [[ एकीकृत ड्राइव इलेक्ट्रॉनिक्स ]] ड्राइवर (पहले | * {{mono|hd}}: (क्लासिक) [[ एकीकृत ड्राइव इलेक्ट्रॉनिक्स |एकीकृत ड्राइव इलेक्ट्रॉनिक्स]] ड्राइवर (पहले एटीए [[हार्ड डिस्क ड्राइव]], एटीएपीआई [[ऑप्टिकल डिस्क ड्राइव]], आदि के लिए उपयोग किया जाता था) | ||
** {{mono|hda}}: पहले [[एटीए चैनल]] पर मास्टर डिवाइस (सामान्यतः प्रमुख संख्या 3 और छोटी संख्या 0 द्वारा पहचाना जाता है) | ** {{mono|hda}}: पहले [[एटीए चैनल]] पर मास्टर डिवाइस (सामान्यतः प्रमुख संख्या 3 और छोटी संख्या 0 द्वारा पहचाना जाता है) | ||
** {{mono|hdb}}: पहले | ** {{mono|hdb}}: पहले एटीए चैनल पर स्लेव डिवाइस | ||
** {{mono|hdc}}: दूसरे एटीए चैनल पर मास्टर डिवाइस | ** {{mono|hdc}}: दूसरे एटीए चैनल पर मास्टर डिवाइस | ||
** {{mono|hdd}}: दूसरे | ** {{mono|hdd}}: दूसरे एटीए चैनल पर स्लेव डिवाइस | ||
* {{mono|parport}}, {{mono|pp}}: [[समानांतर बंदरगाह]] | * {{mono|parport}}, {{mono|pp}}: [[समानांतर बंदरगाह|समानांतर पोर्ट्स]] | ||
* {{mono|mem}}: मुख्य मेमोरी (कैरेक्टर डिवाइस) | * {{mono|mem}}: मुख्य मेमोरी (कैरेक्टर डिवाइस) | ||
* [[एनवीएम एक्सप्रेस]] चालक: | * [[एनवीएम एक्सप्रेस]] चालक: | ||
** {{mono|nvme0}}: | ** {{mono|nvme0}}: प्रथम पंजीकृत डिवाइस का डिवाइस कंट्रोलर (कैरेक्टर डिवाइस) | ||
** {{mono|nvme0n1}}: | ** {{mono|nvme0n1}}: प्रथम पंजीकृत डिवाइस का प्रथम नेमस्पेस (ब्लॉक डिवाइस) | ||
** {{mono|nvme0n1p1}}: | ** {{mono|nvme0n1p1}}: प्रथम पंजीकृत डिवाइस का प्रथम नामस्थान का प्रथम विभाजन (ब्लॉक डिवाइस) | ||
* [[मल्टीमीडिया कार्ड]] ड्राइवर: | * [[मल्टीमीडिया कार्ड]] ड्राइवर: | ||
** {{mono|mmcblk}}: मल्टीमीडिया कार्ड मीडिया के लिए स्टोरेज ड्राइवर ([[एसडी कार्ड]] | ** {{mono|mmcblk}}: मल्टीमीडिया कार्ड मीडिया के लिए स्टोरेज ड्राइवर ([[एसडी कार्ड]], लैपटॉप पर इएमएमसी चिप्स, आदि) | ||
*** {{mono|mmcblk0}}: | *** {{mono|mmcblk0}}: प्रथम पंजीकृत उपकरण | ||
*** {{mono|mmcblk0p1}}: | *** {{mono|mmcblk0p1}}: प्रथम पंजीकृत डिवाइस का प्रथम विभाजन | ||
* [[SCSI]] ड्राइवर, [[libATA]] (आधुनिक समानांतर | * [[SCSI|एससीएसआई]] ड्राइवर, [[libATA]] (आधुनिक समानांतर PATA/SATA ड्राइवर), [[यूनिवर्सल सीरियल बस]], [[IEEE 1394|आईईईई 1394]], आदि द्वारा भी उपयोग किया जाता है। | ||
** {{mono|sd}}: मास-स्टोरेज ड्राइवर (ब्लॉक डिवाइस) | ** {{mono|sd}}: मास-स्टोरेज ड्राइवर (ब्लॉक डिवाइस) | ||
*** {{mono|sda}}: | *** {{mono|sda}}: प्रथम पंजीकृत उपकरण | ||
*** {{mono|sdb, sdc}}, आदि: दूसरा, तीसरा, आदि पंजीकृत उपकरण | *** {{mono|sdb, sdc}}, आदि: दूसरा, तीसरा, आदि पंजीकृत उपकरण | ||
** {{mono|ses}}: संलग्नक चालक | ** {{mono|ses}}: संलग्नक चालक | ||
| Line 93: | Line 93: | ||
** {{mono|st}}: [[चुंबकीय टेप]] चालक | ** {{mono|st}}: [[चुंबकीय टेप]] चालक | ||
* {{mono|tty}}: कंप्यूटर टर्मिनल | * {{mono|tty}}: कंप्यूटर टर्मिनल | ||
** {{mono|ttyS}}: (प्लेटफ़ॉर्म) [[ आनुक्रमिक द्वार ]] ड्राइवर | ** {{mono|ttyS}}: (प्लेटफ़ॉर्म) [[ आनुक्रमिक द्वार |आनुक्रमिक पोर्ट]] ड्राइवर | ||
** {{mono|ttyUSB}}: यूएसबी सीरियल कन्वर्टर्स, मोडेम, आदि। | ** {{mono|ttyUSB}}: यूएसबी सीरियल कन्वर्टर्स, मोडेम, आदि। | ||
लिनक्स में प्रयुक्त उपसर्गों की विहित सूची लिनक्स डिवाइस सूची, लिनक्स ऑपरेटिंग प्रणाली के लिए आवंटित डिवाइस नंबरों की आधिकारिक रजिस्ट्री और {{mono|/dev}} निर्देशिका नोड में पाई जा सकती है।<ref>{{cite web | url = https://www.kernel.org/doc/Documentation/devices.txt | title = Linux allocated devices (2.6+ version) | work = [[Linux kernel]] (Documentation/devices.txt) | author = Linux Assigned Names and Numbers Authority | author-link = Linux Assigned Names and Numbers Authority | date = 2009-04-06 | access-date = 2013-06-08 | archive-url = https://web.archive.org/web/20160424173724/https://www.kernel.org/doc/Documentation/devices.txt | archive-date = 24 April 2016 | url-status = dead }}</ref> | |||
विशिष्ट | अधिकांश उपकरणों के लिए, इस उपसर्ग के पश्चात विशिष्ट रूप से विशिष्ट उपकरण की पहचान करने वाला एक नंबर होता है। हार्ड ड्राइव के लिए, उपकरणों की पहचान के लिए एक अक्षर का उपयोग किया जाता है और उसके पश्चात डिस्क विभाजन की पहचान करने के लिए एक संख्या होती है। इस प्रकार फाइल प्रणाली डिस्क पर क्षेत्र को {{mono|/dev/sda3}} के रूप में जान सकता है, उदाहरण के लिए, या नेटवर्क से जुड़े टर्मिनल सत्र को {{mono|/dev/pts/14}} से जुड़ा "देख" सकता है। | ||
डिवाइस के नाम सामान्यतः विभिन्न यूनिक्स-जैसे प्रणाली वेरिएंट के मध्य पोर्टेबल नहीं होते हैं, उदाहरण के लिए, कुछ [[बीएसडी]] प्रणाली पर, आईडीई डिवाइसों को नाम | विशिष्ट पीसी [[ मास्टर बूट दस्तावेज़ |मास्टर बूट रिकॉर्ड]] का उपयोग करने वाले डिस्क पर, प्राथमिक और वैकल्पिक विस्तारित विभाजन की डिवाइस संख्या 1 से 4 तक होती है, जबकि किसी भी तार्किक विभाजन की अनुक्रमणिका 5 और आगे होती है, पूर्व विभाजनों के लेआउट को ध्यान दिए बिना (उनके पैरेंट विस्तारित) विभाजन को डिस्क पर चौथा विभाजन होने की आवश्यकता नहीं है, न ही सभी चार प्राथमिक विभाजनों का अस्तित्व होना चाहिए)। | ||
डिवाइस के नाम सामान्यतः विभिन्न यूनिक्स-जैसे प्रणाली वेरिएंट के मध्य पोर्टेबल नहीं होते हैं, उदाहरण के लिए, कुछ [[बीएसडी]] प्रणाली पर, आईडीई डिवाइसों को नाम {{mono|/dev/wd0}}, {{mono|/dev/wd1}} आदि होता है। | |||
=== डेवफ्स === | === डेवफ्स === | ||
डेवफ्स यूनिक्स जैसे ऑपरेटिंग प्रणाली पर डिवाइस फ़ाइल प्रणाली का विशिष्ट कार्यान्वयन है, जिसका उपयोग डिवाइस फ़ाइलों को प्रस्तुत करने के लिए किया जाता है। ओएस के आधार पर कार्यान्वयन की अंतर्निहित प्रणाली भिन्न हो सकती है। | |||
भौतिक रूप से कार्यान्वित फ़ाइल प्रणाली जैसे कि हार्ड ड्राइव पर इन विशेष फ़ाइलों को बनाए रखना असुविधाजनक है, और चूंकि इसे वैसे भी कर्नेल सहायता की आवश्यकता होती है, यह विचार | भौतिक रूप से कार्यान्वित फ़ाइल प्रणाली जैसे कि हार्ड ड्राइव पर इन विशेष फ़ाइलों को बनाए रखना असुविधाजनक है, और चूंकि इसे वैसे भी कर्नेल सहायता की आवश्यकता होती है, यह विचार विशेष-उद्देश्य तार्किक फ़ाइल प्रणाली से उत्पन्न हुआ जो भौतिक रूप से संग्रहीत नहीं है। | ||
डिवाइस प्रदर्शित होने के लिए तैयार होने पर परिभाषित करना तुच्छ नहीं है। | डिवाइस प्रदर्शित होने के लिए तैयार होने पर परिभाषित करना तुच्छ नहीं है। डेवफ्स दृष्टिकोण डिवाइस ड्राइवर के लिए सक्षम और अक्षम डिवाइस से संबंधित डेवफ्स प्रविष्टियों को बनाने और विस्थापित करने के अनुरोध करने के लिए है। | ||
==PC DOS, TOS, OS/2, और Windows== | ==PC DOS, TOS, OS/2, और Windows== | ||
| Line 116: | Line 117: | ||
आरक्षित नामों को विशेष फाइलों को संभालने के साथ संगत होने के लिए चुना गया था <code>[[PIP (CP/M)|PIP]]</code> सीपी/एम में कमांड। डॉस में दो प्रकार के उपकरण थे: ब्लॉक डिवाइसेस (डिस्क ड्राइव के लिए प्रयुक्त) और कैरेक्टर डिवाइसेस (सामान्यतः कॉम और पीआरएन डिवाइस सहित अन्य सभी डिवाइस)।<ref>{{cite web|url=http://stanislavs.org/helppc/device_attributes.html |title=डिवाइस गुण|publisher=Stanislavs.org |access-date=2014-01-22}}</ref> | आरक्षित नामों को विशेष फाइलों को संभालने के साथ संगत होने के लिए चुना गया था <code>[[PIP (CP/M)|PIP]]</code> सीपी/एम में कमांड। डॉस में दो प्रकार के उपकरण थे: ब्लॉक डिवाइसेस (डिस्क ड्राइव के लिए प्रयुक्त) और कैरेक्टर डिवाइसेस (सामान्यतः कॉम और पीआरएन डिवाइस सहित अन्य सभी डिवाइस)।<ref>{{cite web|url=http://stanislavs.org/helppc/device_attributes.html |title=डिवाइस गुण|publisher=Stanislavs.org |access-date=2014-01-22}}</ref> | ||
DOS प्रिंटर और पोर्ट तक पहुँचने के लिए डिवाइस फ़ाइलों का उपयोग करता है। विंडोज के अधिकांश संस्करणों में भी यह समर्थन होता है, जो कुछ नामों की फाइलों और फ़ोल्डरों को बनाने की कोशिश करते समय भ्रम पैदा कर सकता है, क्योंकि उनके पास ये नाम नहीं हो सकते।<ref name="FileNameUse">{{cite web |title=MS-DOS डिवाइस ड्राइवर नाम का उपयोग फ़ाइल नाम के रूप में नहीं किया जा सकता है|date=2003-05-12 |version=Revision 2.0 |id=KB74496, Q74496 |publisher=[[Microsoft]] |url=http://support.microsoft.com/kb/74496/en-us |url-status=dead |archive-url=https://archive.today/2012.07.21-143046/http://support.microsoft.com/kb/74496/en-us |archive-date=2012-07-21}}</ref> MS-DOS के संस्करण 2.x प्रदान करते हैं <code>[[AVAILDEV]]</code> CONFIG.SYS पैरामीटर, यदि सेट किया गया है <code>FALSE</code>, इन विशेष नामों को केवल तभी सक्रिय बनाता है जब इसके साथ उपसर्ग किया जाता है <code>\DEV\</code>, इस प्रकार साधारण फ़ाइलों को इन नामों से बनाने की अनुमति देता है।<ref>{{cite web |title=अप्रमाणित आदेश|date=2002-04-12 |publisher=Kevtronics |work=4dos.info |url=http://www.4dos.info/tools/undoc_dos.txt |access-date=2014-05-16}}</ref> | DOS प्रिंटर और पोर्ट तक पहुँचने के लिए डिवाइस फ़ाइलों का उपयोग करता है। विंडोज के अधिकांश संस्करणों में भी यह समर्थन होता है, जो कुछ नामों की फाइलों और फ़ोल्डरों को बनाने की कोशिश करते समय भ्रम पैदा कर सकता है, क्योंकि उनके पास ये नाम नहीं हो सकते।<ref name="FileNameUse">{{cite web |title=MS-DOS डिवाइस ड्राइवर नाम का उपयोग फ़ाइल नाम के रूप में नहीं किया जा सकता है|date=2003-05-12 |version=Revision 2.0 |id=KB74496, Q74496 |publisher=[[Microsoft]] |url=http://support.microsoft.com/kb/74496/en-us |url-status=dead |archive-url=https://archive.today/2012.07.21-143046/http://support.microsoft.com/kb/74496/en-us |archive-date=2012-07-21}}</ref> MS-DOS के संस्करण 2.x प्रदान करते हैं <code>[[AVAILDEV]]</code> CONFIG.SYS पैरामीटर, यदि सेट किया गया है <code>FALSE</code>, इन विशेष नामों को केवल तभी सक्रिय बनाता है जब इसके साथ उपसर्ग किया जाता है <code>\DEV\</code>, इस प्रकार साधारण फ़ाइलों को इन नामों से बनाने की अनुमति देता है।<ref>{{cite web |title=अप्रमाणित आदेश|date=2002-04-12 |publisher=Kevtronics |work=4dos.info |url=http://www.4dos.info/tools/undoc_dos.txt |access-date=2014-05-16}}</ref> | ||
[[GEMDOS]], अटारी TOS का DOS [[जैसा]] हिस्सा, DOS के समान डिवाइस नामों का समर्थन करता है, किंतु DOS के विपरीत इसे एक अनुगामी की आवश्यकता होती है: सामान्य फ़ाइलनामों के विपरीत उपकरणों के रूप में उनकी पहचान करने के लिए वर्ण (DOS पर, यह वैकल्पिक है) (इस प्रकार CON: होगा DOS और TOS दोनों पर | [[GEMDOS]], अटारी TOS का DOS [[जैसा]] हिस्सा, DOS के समान डिवाइस नामों का समर्थन करता है, किंतु DOS के विपरीत इसे एक अनुगामी की आवश्यकता होती है: सामान्य फ़ाइलनामों के विपरीत उपकरणों के रूप में उनकी पहचान करने के लिए वर्ण (DOS पर, यह वैकल्पिक है) (इस प्रकार CON: होगा DOS और TOS दोनों पर कार्य करते हैं, किंतु CON TOS पर एक साधारण फ़ाइल का नाम देगा किंतु DOS पर कंसोल डिवाइस)। MiNT और [[MagiC]] में, U: ड्राइव लेटर के माध्यम से एक्सेस किए गए एक विशेष यूनिक्स-जैसे एकीकृत फ़ाइल प्रणाली व्यू में डिवाइस फ़ाइलों को U:\DEV में भी रखा गया है। | ||
{| class="wikitable" | {| class="wikitable" | ||
| Line 212: | Line 213: | ||
! Notes | ! Notes | ||
|- | |- | ||
! | ! लिनक्स 2.3.46pre5–2.6.17 | ||
| devfs<ref>{{cite web |last1=Gooch |first1=Richard |title=Linux Devfs (Device File System) FAQ |url=https://www.safe-mbox.com/~rgooch/linux/docs/devfs.html |access-date=2021-06-13 |date=2002-08-20}}</ref> and [[devfsd]] | | devfs<ref>{{cite web |last1=Gooch |first1=Richard |title=Linux Devfs (Device File System) FAQ |url=https://www.safe-mbox.com/~rgooch/linux/docs/devfs.html |access-date=2021-06-13 |date=2002-08-20}}</ref> and [[devfsd]] | ||
| <code>/dev</code> | | <code>/dev</code> | ||
| Line 218: | Line 219: | ||
| Implemented fully in the kernel, with optional daemon ''devfsd'' to handle device node events in user space.<ref>{{cite web |last1=Gooch |first1=Richard |title=My Linux Contributions |url=https://www.safe-mbox.com/~rgooch/linux/ |access-date=2021-06-13 |quote=Devfsd provides configurable management of device nodes using the Linux Device Filesystem.}}</ref> Obsolete – users are encouraged to migrate to [[udev]] and/or [[devtmpfs]]. | | Implemented fully in the kernel, with optional daemon ''devfsd'' to handle device node events in user space.<ref>{{cite web |last1=Gooch |first1=Richard |title=My Linux Contributions |url=https://www.safe-mbox.com/~rgooch/linux/ |access-date=2021-06-13 |quote=Devfsd provides configurable management of device nodes using the Linux Device Filesystem.}}</ref> Obsolete – users are encouraged to migrate to [[udev]] and/or [[devtmpfs]]. | ||
|- | |- | ||
! | ! लिनक्स 2.5– | ||
| [[udev]] on any fs, but usually [[tmpfs]] | | [[udev]] on any fs, but usually [[tmpfs]] | ||
| <code>/dev</code> | | <code>/dev</code> | ||
| Line 224: | Line 225: | ||
| 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]]). | | 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 | | devtmpfs with or without udev | ||
| <code>/dev</code> | | <code>/dev</code> | ||
Revision as of 11:28, 14 June 2023
यूनिक्स जैसे ऑपरेटिंग प्रणाली में, डिवाइस फ़ाइल या विशेष फ़ाइल डिवाइस ड्राइवर के लिए इंटरफ़ेस (कंप्यूटर विज्ञान) है जो फाइल प्रणाली में दिखाई देती है जैसे कि यह सामान्य कम्प्यूटर फाइल हो। डॉस, ओएस/2, और विंडोज में भी विशेष फ़ाइलें हैं। ये विशेष फाइलें मानक इनपुट/आउटपुट प्रणाली कॉल के माध्यम से अपने डिवाइस ड्राइवर का उपयोग करके एप्लिकेशन प्रोग्राम को डिवाइस के साथ इंटरैक्ट करने की अनुमति देती हैं। मानक प्रणाली कॉल का उपयोग करना कई प्रोग्रामिंग कार्यों को सरल करता है, और डिवाइस सुविधाओं और कार्यों को ध्यान किए बिना संगत उपयोगकर्ता-स्थान इनपुट/आउटपुट प्रणाली की ओर जाता है।
अवलोकन
डिवाइस फ़ाइलें सामान्यतः मानक उपकरणों (जैसे प्रिंटर और सीरियल पोर्ट) के लिए सरल इंटरफेस प्रदान करती हैं, किंतु उन उपकरणों पर विशिष्ट अद्वितीय संसाधनों तक पहुंचने के लिए भी उपयोग की जा सकती हैं, जैसे कि डिस्क विभाजन हैं। इसके अतिरिक्त, डिवाइस फ़ाइलें उन प्रणाली संसाधनों (कंप्यूटर विज्ञान) तक पहुँचने के लिए उपयोगी होती हैं जिनका किसी वास्तविक उपकरण से कोई संबंध नहीं होता है, जैसे डेटा सिंक और यादृच्छिक संख्या जनरेटर है।
यूनिक्स जैसे ऑपरेटिंग प्रणाली में दो सामान्य प्रकार की डिवाइस फाइलें होती हैं, जिन्हें कैरेक्टर स्पेशल फाइल्स और ब्लॉक स्पेशल फाइल्स के रूप में जाना जाता है। इनके मध्य का अंतर यह है कि ऑपरेटिंग प्रणाली और हार्डवेयर द्वारा कितना डेटा पढ़ा और लिखा जाता है। इन्हें एक साथ नामित पाइपों के विपरीत 'डिवाइस विशेष फ़ाइलें' कहा जा सकता है, जो डिवाइस से कनेक्ट नहीं हैं किंतु सामान्य फ़ाइलें भी नहीं हैं।
एमएस-डॉस ने यूनिक्स से विशेष फाइलों की अवधारणा को उधार ली थी किंतु उनका नाम परिवर्तित करके डिवाइस कर दिया।[1]क्योंकि एमएस-डॉस के प्रारंभिक संस्करण निर्देशिका (फ़ाइल प्रणाली) पदानुक्रम का समर्थन नहीं करते थे, उपकरणों को उनके नाम आरक्षित शब्द बनाकर नियमित फ़ाइलों से भिन्न किया गया था, उदाहरण के लिए: इन्फमोउस CON हैं। इन्हें सीपी/एम के साथ संगतता की डिग्री के लिए चयन किया गया था और अभी भी पिछड़े संगतता के लिए आधुनिक विंडोज़ में उपस्थित हैं।
कुछ यूनिक्स जैसी प्रणालियों में, अधिकांश डिवाइस फ़ाइलों को वर्चुअल फाइल प्रणाली के भाग के रूप में प्रबंधित किया जाता है जो परंपरागत रूप से /dev, पर आरोहित होता है, संभवतः नियंत्रित डेमॉन से जुड़ा हुआ है, जो रन टाइम पर हार्डवेयर जोड़ने और विस्थापित करने का निरीक्षण करता है, डिवाइस फ़ाइल प्रणाली में संबंधित परिवर्तन करता है यदि यह स्वचालित रूप से कर्नेल द्वारा नहीं किया जाता है, और संभवतः विशेष डिवाइस की आवश्यकताओं को पूर्ण करने के लिए प्रणाली या उपयोगकर्ता स्थान में स्क्रिप्ट को प्रारम्भ करता है। फ्रीबीएसडी, ड्रेगनफ्लाईबीएसडी और डार्विन (ऑपरेटिंग प्रणाली) के पास समर्पित फ़ाइल प्रणाली devfs है; इस फाइल प्रणाली द्वारा कर्नेल स्थान में डिवाइस नोड्स को स्वचालित रूप से प्रबंधित किया जाता है। लिनक्स में एक समान devfs कार्यान्वयन हुआ करता था, किंतु पश्चात में इसे छोड़ दिया गया, और फिर संस्करण 2.6.17 के पश्चात से विस्थापित कर दिया गया;[2] लिनक्स अब मुख्य रूप से उपयोगकर्ता स्थान कार्यान्वयन का उपयोग करता है जिसे udev के रूप में जाना जाता है, किंतु इसके कई संस्करण हैं।
यूनिक्स प्रणाली में जो क्रोट प्रक्रिया भिन्नता का समर्थन करता है, जैसे कि सोलारिस कंटेनर, सामान्यतः प्रत्येक क्रोट वातावरण को स्वयं /devकी आवश्यकता होती है; ये आरोह बिंदु वैश्विक फ़ाइल प्रणाली ट्री में विभिन्न नोड्स पर होस्ट ओएस पर दिखाई देंगे। /dev के क्रोट पॉप्युलेट किए गए डिवाइस नोड्स को प्रतिबंधित करके, हार्डवेयर भिन्नता को क्रोट वातावरण द्वारा प्रारम्भ किया जा सकता है (प्रोग्राम हार्डवेयर के साथ हस्तक्षेप नहीं कर सकता है जिसे वह न तो देख सकता है और न ही नाम दे सकता है- यूनिक्स फ़ाइल प्रणाली अनुमतियों की तुलना में अभिगम नियंत्रण का एक और भी स्थिर रूप)।
एमएस-डॉस प्रत्येक डिवाइस फ़ाइल को विशेष रूप से विवृत बनाकर हार्डवेयर डिवाइस विवाद को प्रबंधित करता है (टर्मिनेट-एंड-स्टे-रेजिडेंट प्रोग्राम देखें)। पहले से उपयोग में आने वाले डिवाइस तक पहुंचने का प्रयास करने वाला एप्लिकेशन स्वयं को डिवाइस फ़ाइल नोड विवृत करने में असमर्थ पाएगा। यूनिक्स और लिनक्स में समवर्ती पहुंच के संबंध में विभिन्न प्रकार के डिवाइस ड्राइवर सिमेंटिक्स प्रारम्भ किए गए हैं।[3]
यूनिक्स और यूनिक्स जैसी प्रणालियाँ
डिवाइस नोड्स उन संसाधनों के अनुरूप होते हैं जो ऑपरेटिंग प्रणाली के कर्नेल (कंप्यूटर साइंस) ने पहले ही आवंटित कर दिए हैं। यूनिक्स उन संसाधनों की प्रमुख संख्या और छोटी संख्या द्वारा पहचान करता है,[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/एन – प्रक्रिया के