डिवाइस फ़ाइल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|Interface to a device driver that appears in a file system as if it were an ordinary file}}
{{Short description|Interface to a device driver that appears in a file system as if it were an ordinary file}}
{{Distinguish|Device tree}}
{{Distinguish|युक्ति ट्री }}


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


यूनिक्स जैसे [[ऑपरेटिंग सिस्टम]] में, एक डिवाइस फ़ाइल या विशेष फ़ाइल एक [[डिवाइस ड्राइवर]] के लिए एक [[इंटरफ़ेस (कंप्यूटर विज्ञान)]] है जो [[फाइल सिस्टम]] में दिखाई देता है जैसे कि यह एक सामान्य [[कम्प्यूटर फाइल]] हो। DOS, OS/2, और [[Windows]] में भी विशेष फ़ाइलें हैं। ये विशेष फाइलें मानक इनपुट/आउटपुट [[सिस्टम कॉल]] के माध्यम से अपने डिवाइस ड्राइवर का उपयोग करके एक एप्लिकेशन प्रोग्राम को डिवाइस के साथ इंटरैक्ट करने [[की]] अनुमति देती हैं। मानक सिस्टम कॉल का उपयोग करना कई प्रोग्रामिंग कार्यों को सरल करता है, और डिवाइस सुविधाओं और कार्यों की परवाह किए बिना संगत उपयोगकर्ता-स्थान I/O तंत्र की ओर जाता है।
== अवलोकन ==
डिवाइस फ़ाइलें सामान्यतः मानक उपकरणों (जैसे प्रिंटर और सीरियल पोर्ट) के लिए सरल इंटरफेस प्रदान करती हैं, किंतु उन उपकरणों पर विशिष्ट अद्वितीय संसाधनों तक पहुंचने के लिए भी उपयोग की जा सकती हैं, जैसे कि [[डिस्क विभाजन]] हैं। इसके अतिरिक्त, डिवाइस फ़ाइलें उन प्रणाली [[संसाधन (कंप्यूटर विज्ञान)|संसाधनों (कंप्यूटर विज्ञान)]] तक पहुँचने के लिए उपयोगी होती हैं जिनका किसी वास्तविक उपकरण से कोई संबंध नहीं होता है, जैसे [[डेटा सिंक]] और यादृच्छिक संख्या जनरेटर है।


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


यूनिक्स जैसे ऑपरेटिंग सिस्टम में दो सामान्य प्रकार की डिवाइस फाइलें होती हैं, जिन्हें कैरेक्टर स्पेशल फाइल्स और ब्लॉक स्पेशल फाइल्स के रूप में जाना जाता है। उनके बीच का अंतर यह है कि ऑपरेटिंग सिस्टम और हार्डवेयर द्वारा कितना डेटा पढ़ा और लिखा जाता है। इन्हें एक साथ [[नामित पाइप]]ों के विपरीत 'डिवाइस विशेष फ़ाइलें' कहा जा सकता है, जो डिवाइस से कनेक्ट नहीं हैं लेकिन सामान्य फ़ाइलें भी नहीं हैं।
[[MS-DOS|एमएस-डॉस]] ने यूनिक्स से विशेष फाइलों की अवधारणा को उधार ली थी किंतु उनका नाम परिवर्तित करके डिवाइस कर दिया।<ref name="kb90239"/>क्योंकि एमएस-डॉस के प्रारंभिक संस्करण निर्देशिका (फ़ाइल प्रणाली) पदानुक्रम का समर्थन नहीं करते थे, उपकरणों को उनके नाम [[आरक्षित शब्द]] बनाकर नियमित फ़ाइलों से भिन्न किया गया था, उदाहरण के लिए: इन्फमोउस <code>CON</code> हैं। इन्हें सीपी/एम के साथ संगतता की डिग्री के लिए चयन किया गया था और अभी भी पिछड़े संगतता के लिए आधुनिक विंडोज़ में उपस्थित हैं।


[[MS-DOS]] ने यूनिक्स से विशेष फाइलों की अवधारणा को उधार लिया लेकिन उनका नाम बदलकर डिवाइस कर दिया।<ref name="kb90239"/>क्योंकि MS-DOS के शुरुआती संस्करण एक निर्देशिका (फ़ाइल सिस्टम) पदानुक्रम का समर्थन नहीं करते थे, उपकरणों को उनके नाम [[आरक्षित शब्द]] बनाकर नियमित फ़ाइलों से अलग किया गया था, उदाहरण के लिए: कुख्यात <code>CON</code>. इन्हें सीपी/एम के साथ संगतता की डिग्री के लिए चुना गया था और अभी भी पिछड़े संगतता के लिए आधुनिक विंडोज़ में मौजूद हैं।
कुछ यूनिक्स जैसी प्रणालियों में, अधिकांश डिवाइस फ़ाइलों को [[वर्चुअल फाइल सिस्टम|वर्चुअल फाइल प्रणाली]] के भाग के रूप में प्रबंधित किया जाता है जो परंपरागत रूप से <code>/dev</code>, पर आरोहित होता है, संभवतः नियंत्रित डेमॉन से जुड़ा हुआ है, जो रन टाइम पर हार्डवेयर जोड़ने और विस्थापित करने का निरीक्षण करता है, डिवाइस फ़ाइल प्रणाली में संबंधित परिवर्तन करता है यदि यह स्वचालित रूप से कर्नेल द्वारा नहीं किया जाता है, और संभवतः विशेष डिवाइस की आवश्यकताओं को पूर्ण करने के लिए प्रणाली या उपयोगकर्ता स्थान में स्क्रिप्ट को प्रारम्भ करता है। [[FreeBSD|फ्रीबीएसडी]], [[DragonFly BSD|ड्रेगनफ्लाईबीएसडी]] और [[डार्विन (ऑपरेटिंग सिस्टम)|डार्विन (ऑपरेटिंग प्रणाली)]] के पास समर्पित फ़ाइल प्रणाली ''devfs'' है; इस फाइल प्रणाली द्वारा [[कर्नेल स्थान]] में डिवाइस नोड्स को स्वचालित रूप से प्रबंधित किया जाता है। लिनक्स में एक समान ''devfs ''कार्यान्वयन हुआ करता था, किंतु पश्चात में इसे छोड़ दिया गया, और फिर संस्करण 2.6.17 के पश्चात से विस्थापित कर दिया गया;<ref>{{cite web |last1=Kroah-Hartman |first1=Greg |title=[PATCH] devfs: Remove devfs from the kernel tree |url=https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/fs/devfs?id=d8deac5094988c7ad1127ee61f52c59a952fcabb |website=Linux kernel source tree |access-date=2021-06-12 |date=2005-06-20}}</ref> लिनक्स अब मुख्य रूप से[[ उपयोक्ता स्थान | उपयोगकर्ता स्थान]] कार्यान्वयन का उपयोग करता है जिसे [[udev]] के रूप में जाना जाता है, किंतु इसके कई संस्करण हैं।


कुछ यूनिक्स जैसी प्रणालियों में, अधिकांश डिवाइस फ़ाइलों को पारंपरिक रूप से माउंटेड [[वर्चुअल फाइल सिस्टम]] के हिस्से के रूप में प्रबंधित किया जाता है <code>/dev</code>, संभवतः एक नियंत्रित डेमॉन से जुड़ा हुआ है, जो रन टाइम पर हार्डवेयर जोड़ने और हटाने की निगरानी करता है, डिवाइस फ़ाइल सिस्टम में संबंधित परिवर्तन करता है यदि वह कर्नेल द्वारा स्वचालित रूप से नहीं किया जाता है, और विशेष डिवाइस की जरूरतों को पूरा करने के लिए सिस्टम या यूजर स्पेस में स्क्रिप्ट्स को आमंत्रित करता है। [[FreeBSD]], [[DragonFly BSD]] और [[डार्विन (ऑपरेटिंग सिस्टम)]] के पास एक समर्पित फ़ाइल सिस्टम ''devfs'' है; इस फाइल सिस्टम द्वारा [[कर्नेल स्थान]] में डिवाइस नोड्स को स्वचालित रूप से प्रबंधित किया जाता है। लिनक्स में एक समान '' devfs '' कार्यान्वयन हुआ करता था, लेकिन बाद में इसे छोड़ दिया गया, और फिर संस्करण 2.6.17 के बाद से हटा दिया गया;<ref>{{cite web |last1=Kroah-Hartman |first1=Greg |title=[PATCH] devfs: Remove devfs from the kernel tree |url=https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/fs/devfs?id=d8deac5094988c7ad1127ee61f52c59a952fcabb |website=Linux kernel source tree |access-date=2021-06-12 |date=2005-06-20}}</ref> लिनक्स अब मुख्य रूप से एक [[ उपयोक्ता स्थान ]] कार्यान्वयन का उपयोग करता है जिसे [[udev]] के रूप में जाना जाता है, लेकिन इसके कई रूप हैं।
यूनिक्स प्रणाली में जो [[चुरोट|क्रोट]] प्रक्रिया भिन्नता का समर्थन करता है, जैसे कि [[सोलारिस कंटेनर]], सामान्यतः प्रत्येक क्रोट वातावरण को स्वयं <code>/dev</code>की आवश्यकता होती है; ये आरोह बिंदु वैश्विक फ़ाइल प्रणाली ट्री में विभिन्न नोड्स पर होस्ट ओएस पर दिखाई देंगे। <code>/dev</code> के क्रोट पॉप्युलेट किए गए डिवाइस नोड्स को प्रतिबंधित करके, हार्डवेयर भिन्नता को क्रोट वातावरण द्वारा प्रारम्भ किया जा सकता है (प्रोग्राम हार्डवेयर के साथ हस्तक्षेप नहीं कर सकता है जिसे वह न तो देख सकता है और न ही नाम दे सकता है- यूनिक्स फ़ाइल प्रणाली अनुमतियों की तुलना में [[अभिगम नियंत्रण]] का एक और भी स्थिर रूप)।


यूनिक्स सिस्टम में जो [[चुरोट]] प्रक्रिया अलगाव का समर्थन करता है, जैसे कि [[सोलारिस कंटेनर]], आमतौर पर प्रत्येक चेरोट वातावरण को स्वयं की आवश्यकता होती है <code>/dev</code>; ये आरोह बिंदु वैश्विक फ़ाइल सिस्टम ट्री में विभिन्न नोड्स पर होस्ट OS पर दिखाई देंगे। के चेरोट उदाहरणों में पॉप्युलेट किए गए डिवाइस नोड्स को प्रतिबंधित करके <code>/dev</code>, हार्डवेयर आइसोलेशन को चेरोट वातावरण द्वारा लागू किया जा सकता है (एक प्रोग्राम हार्डवेयर के साथ दखल नहीं दे सकता है जिसे वह न तो देख सकता है और न ही नाम दे सकता है - यूनिक्स फ़ाइल सिस्टम अनुमतियों की तुलना में [[अभिगम नियंत्रण]] का एक और भी मजबूत रूप)।
एमएस-डॉस प्रत्येक डिवाइस फ़ाइल को विशेष रूप से विवृत बनाकर हार्डवेयर डिवाइस विवाद को प्रबंधित करता है ([[टर्मिनेट-एंड-स्टे-रेजिडेंट प्रोग्राम]] देखें)। पहले से उपयोग में आने वाले डिवाइस तक पहुंचने का प्रयास करने वाला एप्लिकेशन स्वयं को डिवाइस फ़ाइल नोड विवृत करने में असमर्थ पाएगा। यूनिक्स और लिनक्स में समवर्ती पहुंच के संबंध में विभिन्न प्रकार के डिवाइस ड्राइवर सिमेंटिक्स प्रारम्भ किए गए हैं।<ref>{{cite book |last=Corbet |first=Jonathan |last2= Kroah-Hartman |first2=Greg |last3=Rubini |first3=Alessandro |date=2005 |title=Linux Device Drivers, 3rd Edition |section=Access Control on a Device File|url=http://www.makelinux.net/ldd3/chp-6-sect-6.shtml |publisher=[[O'Reilly Media|O'Reilly]] |access-date=28 April 2017 |quote=The next step beyond a single-open device is to let a single user open a device in multiple processes but allow only one user to have the device open at a time.}}</ref>
 
MS-DOS प्रत्येक डिवाइस फ़ाइल को विशेष रूप से खुला बनाकर हार्डवेयर डिवाइस विवाद को प्रबंधित करता है ([[टर्मिनेट-एंड-स्टे-रेजिडेंट प्रोग्राम]] देखें)। पहले से उपयोग में आने वाले डिवाइस तक पहुंचने का प्रयास करने वाला एप्लिकेशन खुद को डिवाइस फ़ाइल नोड खोलने में असमर्थ पाएगा। यूनिक्स और लिनक्स में समवर्ती पहुंच के संबंध में विभिन्न प्रकार के डिवाइस ड्राइवर सिमेंटिक्स लागू किए गए हैं।<ref>{{cite book |last=Corbet |first=Jonathan |last2= Kroah-Hartman |first2=Greg |last3=Rubini |first3=Alessandro |date=2005 |title=Linux Device Drivers, 3rd Edition |section=Access Control on a Device File|url=http://www.makelinux.net/ldd3/chp-6-sect-6.shtml |publisher=[[O'Reilly Media|O'Reilly]] |access-date=28 April 2017 |quote=The next step beyond a single-open device is to let a single user open a device in multiple processes but allow only one user to have the device open at a time.}}</ref>




== यूनिक्स और यूनिक्स जैसी प्रणालियाँ ==
== यूनिक्स और यूनिक्स जैसी प्रणालियाँ ==
[[File:Simplified Structure of the Linux Kernel.svg|thumb|लिनक्स कर्नेल की एक सरलीकृत संरचना। फाइल सिस्टम I/O सबसिस्टम के हिस्से के रूप में कार्यान्वित किए जाते हैं।]]डिवाइस नोड्स उन संसाधनों के अनुरूप हैं जो एक ऑपरेटिंग सिस्टम के कर्नेल (कंप्यूटर साइंस) ने पहले ही आवंटित कर दिए हैं। यूनिक्स उन संसाधनों की एक बड़ी संख्या और एक छोटी संख्या द्वारा पहचान करता है,<ref>{{cite book |title=यूनिक्स प्रोग्रामिंग पर्यावरण|page=[https://archive.org/details/unixprogramminge0000kern/page/66 66] |author-first1=Brian W. |author-last1=Kernighan |author-link1=Brian W. Kernighan |author-first2=Rob |author-last2=Pike |author-link2=Rob Pike |publisher=[[Prentice-Hall]] |date=1984 |isbn=0-13-937681-X |url-access=registration |url=https://archive.org/details/unixprogramminge0000kern/page/66 }}</ref> दोनों एक [[नोड (कंप्यूटर विज्ञान)]] की संरचना के हिस्से के रूप में संग्रहीत हैं। इन नंबरों का असाइनमेंट अलग-अलग [[ऑपरेटिंग सिस्टम]] और अलग-अलग [[ कंप्यूटर मंच ]] पर विशिष्ट रूप से होता है। आम तौर पर, प्रमुख संख्या डिवाइस ड्राइवर की पहचान करती है और छोटी संख्या एक विशेष डिवाइस की पहचान करती है (संभवतः कई में से) जिसे ड्राइवर नियंत्रित करता है:<ref>{{cite web |author=Neil Brown |title=Ghosts of Unix Past: a historical search for design patterns |website=Linux Weekly News |date=October 27, 2010 |access-date=30 March 2014 |url=https://lwn.net/Articles/411845/}}</ref> इस मामले में, सिस्टम ड्राइवर को माइनर नंबर दे सकता है। हालाँकि, डायनेमिक नंबर आवंटन की उपस्थिति में, यह मामला नहीं हो सकता है (उदाहरण के लिए FreeBSD 5 और ऊपर)।
[[File:Simplified Structure of the Linux Kernel.svg|thumb|लिनक्स कर्नेल की एक सरलीकृत संरचना। फाइल प्रणाली I/O सबप्रणाली के भाग के रूप में कार्यान्वित किए जाते हैं।]]डिवाइस नोड्स उन संसाधनों के अनुरूप होते हैं जो ऑपरेटिंग प्रणाली के कर्नेल (कंप्यूटर साइंस) ने पहले ही आवंटित कर दिए हैं। यूनिक्स उन संसाधनों की प्रमुख संख्या और छोटी संख्या द्वारा पहचान करता है,<ref>{{cite book |title=यूनिक्स प्रोग्रामिंग पर्यावरण|page=[https://archive.org/details/unixprogramminge0000kern/page/66 66] |author-first1=Brian W. |author-last1=Kernighan |author-link1=Brian W. Kernighan |author-first2=Rob |author-last2=Pike |author-link2=Rob Pike |publisher=[[Prentice-Hall]] |date=1984 |isbn=0-13-937681-X |url-access=registration |url=https://archive.org/details/unixprogramminge0000kern/page/66 }}</ref> दोनों [[नोड (कंप्यूटर विज्ञान)]] की संरचना के भाग के रूप में संग्रहीत हैं। इन नंबरों का असाइनमेंट भिन्न-भिन्न [[ऑपरेटिंग सिस्टम|ऑपरेटिंग प्रणाली]] और भिन्न-भिन्न [[ कंप्यूटर मंच |कंप्यूटर प्लेटफॉर्म]] पर विशिष्ट रूप से होता है। सामान्यतः, प्रमुख संख्या डिवाइस ड्राइवर की पहचान करती है और छोटी संख्या विशेष डिवाइस (संभवतः कई में से) की पहचान करती है जिसे ड्राइवर नियंत्रित करता है:<ref>{{cite web |author=Neil Brown |title=Ghosts of Unix Past: a historical search for design patterns |website=Linux Weekly News |date=October 27, 2010 |access-date=30 March 2014 |url=https://lwn.net/Articles/411845/}}</ref> इस स्थिति में, प्रणाली ड्राइवर को माइनर नंबर दे सकता है। चूँकि, डायनेमिक नंबर आवंटन की उपस्थिति में, यह विषय नहीं हो सकता है (उदाहरण के लिए फ्रीबीएसडी 5 और ऊपर)।


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


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


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


===ब्लॉक डिवाइस ===
===ब्लॉक डिवाइस ===
विशेष फ़ाइलों को ब्लॉक करें या डिवाइस को ब्लॉक करें, हार्डवेयर डिवाइस को बफ़र्ड एक्सेस प्रदान करें, और उनकी बारीकियों से कुछ अमूर्तता प्रदान करें।<ref>{{cite web|title=IEEE Std 1003.1, 2013 Edition|url=http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_79|access-date=24 April 2014}}</ref> चरित्र उपकरणों के विपरीत, ब्लॉक डिवाइस हमेशा प्रोग्रामर को किसी भी आकार (एकल अक्षर/बाइट सहित) और किसी भी संरेखण के ब्लॉक को पढ़ने या लिखने की अनुमति देगा। नकारात्मक पक्ष यह है कि क्योंकि ब्लॉक डिवाइस बफ़र किए जाते हैं, प्रोग्रामर को यह नहीं पता होता है कि कर्नेल के बफ़र्स से लिखित डेटा को वास्तविक डिवाइस पर पास करने में कितना समय लगेगा, या वास्तव में किस क्रम में भौतिक डिवाइस पर दो अलग-अलग राइट्स आएंगे। इसके अतिरिक्त, यदि एक ही हार्डवेयर कैरेक्टर और ब्लॉक डिवाइस दोनों को उजागर करता है, तो कैरेक्टर डिवाइस का उपयोग करने वाले क्लाइंट को ब्लॉक डिवाइस के बफ़र्स में किए गए परिवर्तनों से अनजान होने के कारण डेटा भ्रष्टाचार का खतरा होता है।
विशेष फाइलों को ब्लॉक करें या ब्लॉक डिवाइस हार्डवेयर उपकरणों को बफर्ड एक्सेस प्रदान करें, और साधारण से कुछ सार प्रदान करें।<ref>{{cite web|title=IEEE Std 1003.1, 2013 Edition|url=http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_79|access-date=24 April 2014}}</ref> कैरेक्टर उपकरणों के विपरीत, ब्लॉक डिवाइस सदैव प्रोग्रामर को किसी भी आकार (एकल अक्षर/बाइट सहित) और किसी भी संरेखण के ब्लॉक को पढ़ने या लिखने की अनुमति देगा। नकारात्मक पक्ष यह है कि क्योंकि ब्लॉक डिवाइस बफ़र किए जाते हैं, प्रोग्रामर को यह नहीं ज्ञात होता है कि कर्नेल के बफ़र्स से लिखित डेटा को वास्तविक डिवाइस पर पास करने में कितना समय लगेगा, या वास्तव में किस क्रम में भौतिक डिवाइस पर दो भिन्न-भिन्न राइट्स आएंगे। इसके अतिरिक्त, यदि हार्डवेयर कैरेक्टर और ब्लॉक डिवाइस दोनों को उजागर करता है, तो कैरेक्टर डिवाइस का उपयोग करने वाले क्लाइंट को ब्लॉक डिवाइस के बफ़र्स में किए गए परिवर्तनों से अपरिचित होने के कारण डेटा भ्रष्टाचार की आशंका होती है।


अधिकांश सिस्टम हार्ड डिस्क जैसे हार्डवेयर का प्रतिनिधित्व करने के लिए ब्लॉक और कैरेक्टर डिवाइस दोनों बनाते हैं। FreeBSD और Linux विशेष रूप से नहीं; पूर्व ने ब्लॉक उपकरणों के लिए समर्थन हटा दिया है,<ref>{{cite web|title=फ्रीबीएसडी आर्किटेक्चर हैंडबुक|url=http://www.freebsd.org/doc/en/books/arch-handbook/driverbasics-block.html|access-date=7 March 2013}}</ref> जबकि बाद वाला केवल ब्लॉक डिवाइस बनाता है। लिनक्स में, डिस्क के लिए एक कैरेक्टर डिवाइस प्राप्त करने के लिए, कच्चे ड्राइवर का उपयोग करना चाहिए, हालांकि लिनक्स-विशिष्ट के साथ ब्लॉक डिवाइस को खोलकर एक कैरेक्टर डिवाइस को खोलने के समान प्रभाव प्राप्त कर सकते हैं। {{mono|O_DIRECT}} झंडा।
अधिकांश प्रणाली हार्ड डिस्क जैसे हार्डवेयर का प्रतिनिधित्व करने के लिए ब्लॉक और कैरेक्टर डिवाइस दोनों बनाते हैं। फ्रीबीएसडी और लिनक्स विशेष रूप से नहीं; पूर्व ने ब्लॉक उपकरणों के लिए विस्थापित कर दिया है,<ref>{{cite web|title=फ्रीबीएसडी आर्किटेक्चर हैंडबुक|url=http://www.freebsd.org/doc/en/books/arch-handbook/driverbasics-block.html|access-date=7 March 2013}}</ref> जबकि पश्चात वाले ने केवल ब्लॉक उपकरणों का निर्माण किया है। लिनक्स में, डिस्क के लिए कैरेक्टर डिवाइस प्राप्त करने के लिए, रॉ ड्राइवर का उपयोग करना चाहिए, चूँकि लिनक्स-विशिष्ट {{mono|O_DIRECT}} फ्लैग के साथ ब्लॉक डिवाइस को विवृत करके कैरेक्टर डिवाइस को विवृत करने के समान प्रभाव प्राप्त कर सकते हैं।


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


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


इसके अतिरिक्त, बीएसडी-विशिष्ट स्यूडो-डिवाइस a {{mono|[[ioctl]]}} इंटरफ़ेस में ये भी शामिल हो सकते हैं:
इसके अतिरिक्त, {{mono|[[ioctl]]}} इंटरफ़ेस वाले बीएसडी विशिष्ट सूडो उपकरणों में ये भी सम्मिलित हो सकते हैं:
* {{mono|[[/dev/pf]]}}{{snd}} उपयोगकर्ताभूमि प्रक्रियाओं को [[पीएफ (फ़ायरवॉल)]] को नियंत्रित करने की अनुमति देता है a {{mono|ioctl}} इंटरफेस।
* {{mono|[[/dev/pf]]}}{{snd}} {{mono|ioctl}} इंटरफेस के माध्यम से उपयोगकर्ता भूमि प्रक्रियाओं को [[पीएफ (फ़ायरवॉल)]] को नियंत्रित करने की अनुमति देता है   ।
* {{mono|[[/dev/bio]]}}{{snd}} प्रदान करता है {{mono|ioctl}} उपकरणों तक पहुंच अन्यथा नहीं मिली {{mono|/dev}} नोड्स, द्वारा उपयोग किया जाता है {{mono|[[bioctl]]}} [[OpenBSD]] और [[NetBSD]] में [[RAID]] प्रबंधन लागू करने के लिए।
* {{mono|[[/dev/bio]]}}{{snd}} उपकरणों को {{mono|ioctl}} एक्सेस प्रदान करता है अन्यथा {{mono|/dev}} नोड्स, के रूप में नहीं मिलता है, जिसका उपयोग {{mono|[[bioctl]]}} द्वारा [[OpenBSD|ओपनबीएसडी]] और [[NetBSD|नेटबीएसडी]] में [[RAID|रेड]] प्रबंधन को प्रारम्भ करने के लिए किया जाता है।
* {{mono|[[/dev/sysmon]]}}{{snd}} [[सिस्टम मॉनिटर]] के लिए NetBSD के [[envsys]] फ्रेमवर्क द्वारा उपयोग किया जाता है, जिसके माध्यम से यूजरलैंड में एक्सेस किया जाता है {{mono|[[proplib(3)]]}} से {{mono|envstat}} उपयोगिता।<ref name=envstat>{{cite web |url= http://bxr.su/n/usr.sbin/envstat/envstat.c |title= usr.sbin/envstat/envstat.c |website= BSD Cross Reference |publisher= [[NetBSD]] |date=November 2021}}
* {{mono|[[/dev/sysmon]]}}{{snd}}हार्डवेयर निरीक्षण के लिए नेटबीएसडी के [[envsys]] फ्रेमवर्क द्वारा उपयोग किया जाता है, {{mono|envstat}} उपयोगिता द्वारा {{mono|[[proplib(3)]]}} के माध्यम से उपयोक्ता भूमि में पहुँचा जाता है।<ref name=envstat>{{cite web |url= http://bxr.su/n/usr.sbin/envstat/envstat.c |title= usr.sbin/envstat/envstat.c |website= BSD Cross Reference |publisher= [[NetBSD]] |date=November 2021}}
*{{cite book |section=envstat -- utility to handle environmental sensors |title=NetBSD System Manager's Manual |url= http://mdoc.su/n/envstat.8 |archive-url=https://web.archive.org/web/20190323041807/http://netbsd.gw.com/cgi-bin/man-cgi?envstat+8 |archive-date=2019-03-23}}</ref>
*{{cite book |section=envstat -- utility to handle environmental sensors |title=NetBSD System Manager's Manual |url= http://mdoc.su/n/envstat.8 |archive-url=https://web.archive.org/web/20190323041807/http://netbsd.gw.com/cgi-bin/man-cgi?envstat+8 |archive-date=2019-03-23}}</ref>




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


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


जबकि कुछ अन्य यूनिक्स सिस्टम जैसे कि FreeBSD, कर्नेल-आधारित डिवाइस नोड प्रबंधन का उपयोग केवल 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>
जबकि कुछ अन्य यूनिक्स प्रणाली जैसे कि फ्रीबीएसडी, कर्नेल-आधारित डिवाइस नोड प्रबंधन का उपयोग केवल 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|/dev}} पदानुक्रम में कुछ उपकरणों के नाम के लिए निम्नलिखित उपसर्गों का उपयोग किया जाता है:


* {{mono|lp}}: [[लाइन प्रिंटर]] (एलपी की तुलना करें (यूनिक्स))
* {{mono|lp}}: [[लाइन प्रिंटर]] (एलपी की तुलना करें (यूनिक्स))
* {{mono|pt}}: [[छद्म टर्मिनल]]|छद्म-टर्मिनल (वर्चुअल टर्मिनल)
* {{mono|pt}}: [[छद्म टर्मिनल|सूडो टर्मिनल]] (वर्चुअल टर्मिनल)
* {{mono|tty}}: [[कंप्यूटर टर्मिनल]]
* {{mono|tty}}: [[कंप्यूटर टर्मिनल]]


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


* {{mono|fb}}: [[फ्रेम बफर]]
* {{mono|fb}}: [[फ्रेम बफर]]
* {{mono|fd}}: (प्लेटफ़ॉर्म) [[फ्लॉपी डिस्क]], हालांकि इसी संक्षिप्त नाम का इस्तेमाल आमतौर पर फ़ाइल डिस्क्रिप्टर को संदर्भित करने के लिए भी किया जाता है
* {{mono|fd}}: (प्लेटफ़ॉर्म) [[फ्लॉपी डिस्क]], चूँकि इसी संक्षिप्त नाम का उपयोग सामान्यतः फ़ाइल डिस्क्रिप्टर को संदर्भित करने के लिए भी किया जाता है
* {{mono|hd}}: (क्लासिक) [[ एकीकृत ड्राइव इलेक्ट्रॉनिक्स ]] ड्राइवर (पहले ATA [[हार्ड डिस्क ड्राइव]], ATAPI [[ऑप्टिकल डिस्क ड्राइव]], आदि के लिए उपयोग किया जाता था)
* {{mono|hd}}: (क्लासिक) [[ एकीकृत ड्राइव इलेक्ट्रॉनिक्स |एकीकृत ड्राइव इलेक्ट्रॉनिक्स]] ड्राइवर (पहले एटीए [[हार्ड डिस्क ड्राइव]], एटीएपीआई [[ऑप्टिकल डिस्क ड्राइव]], आदि के लिए उपयोग किया जाता था)
** {{mono|hda}}: पहले [[एटीए चैनल]] पर मास्टर डिवाइस (आमतौर पर प्रमुख संख्या 3 और छोटी संख्या 0 द्वारा पहचाना जाता है)
** {{mono|hda}}: पहले [[एटीए चैनल]] पर मास्टर डिवाइस (सामान्यतः प्रमुख संख्या 3 और छोटी संख्या 0 द्वारा पहचाना जाता है)
** {{mono|hdb}}: पहले ATA चैनल पर स्लेव डिवाइ