यूजर स्पेस और कर्नेल स्पेस: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 5: Line 5:
{{anchor|KERNEL}}
{{anchor|KERNEL}}


कर्नेल स्पेस विशेषाधिकार प्राप्त [[ऑपरेटिंग सिस्टम कर्नेल]], कर्नेल एक्सटेंशन और अधिकांश [[डिवाइस ड्राइवर]] चलाने के लिए सख्ती से आरक्षित है। इसके विपरीत, यूजर स्पेस मेमोरी क्षेत्र है जहां [[अनुप्रयोग प्रक्रिया सामग्री]] और कुछ ड्राइवर निष्पादित होते हैं।
कर्नेल स्पेस प्रिविलेज [[ऑपरेटिंग सिस्टम कर्नेल]], कर्नेल एक्सटेंशन और अधिकांश [[डिवाइस ड्राइवर]] को रन कराने के लिए सख्ती से आरक्षित है। इसके विपरीत, यूजर स्पेस मेमोरी क्षेत्र है जहाँ [[अनुप्रयोग प्रक्रिया सामग्री|एप्लिकेशन सॉफ़्टवेयर]] और कुछ ड्राइवर निष्पादित होते हैं।


== {{Anchor|USERLAND}}अवलोकन ==
== {{Anchor|USERLAND}}अवलोकन ==
यूजर स्पेस (या यूजरलैंड) उन सभी कोड को संदर्भित करता है जो ऑपरेटिंग सिस्टम के कर्नेल के बाहर चलता है।<ref>{{cite web
यूजर स्पेस (या यूजरलैंड) उन सभी कोड को संदर्भित करता है जो ऑपरेटिंग सिस्टम के कर्नेल के बाहर रन करते हैं।<ref>{{cite web
| url = http://www.catb.org/jargon/html/U/userland.html
| url = http://www.catb.org/jargon/html/U/userland.html
| title = userland, n.
| title = userland, n.
Line 15: Line 15:
| access-date = 2016-08-14}}</ref>  यूजर स्पेस सामान्यतः विभिन्न प्रोग्रामों और [[ पुस्तकालय (कम्प्यूटिंग) ]] को संदर्भित करता है जिसका उपयोग ऑपरेटिंग सिस्टम कर्नेल से इंटरैक्ट करने के लिए करता है- सॉफ्टवेयर जो इनपुट/आउटपुट करता है, [[फाइल सिस्टम]] ऑब्जेक्ट्स, एप्लिकेशन सॉफ़्टवेयर आदि में परिवर्तन करता है।
| access-date = 2016-08-14}}</ref>  यूजर स्पेस सामान्यतः विभिन्न प्रोग्रामों और [[ पुस्तकालय (कम्प्यूटिंग) ]] को संदर्भित करता है जिसका उपयोग ऑपरेटिंग सिस्टम कर्नेल से इंटरैक्ट करने के लिए करता है- सॉफ्टवेयर जो इनपुट/आउटपुट करता है, [[फाइल सिस्टम]] ऑब्जेक्ट्स, एप्लिकेशन सॉफ़्टवेयर आदि में परिवर्तन करता है।


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


{{Linux layers}}
{{Linux layers}}

Revision as of 05:29, 29 April 2023

आधुनिक कंप्यूटर ऑपरेटिंग सिस्टम सामान्यतः आभासी मेमोरी को यूजर स्पेस और कर्नेल स्पेस में पृथक करता है।[lower-alpha 1] मुख्य रूप से, यह पृथक्करण विद्वेषी या सॉफ़्टवेयर के त्रुटिपूर्ण व्यवहार से मेमोरी और हार्डवेयर को सुरक्षा प्रदान करने का कार्य करता है।

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

अवलोकन

यूजर स्पेस (या यूजरलैंड) उन सभी कोड को संदर्भित करता है जो ऑपरेटिंग सिस्टम के कर्नेल के बाहर रन करते हैं।[1] यूजर स्पेस सामान्यतः विभिन्न प्रोग्रामों और पुस्तकालय (कम्प्यूटिंग) को संदर्भित करता है जिसका उपयोग ऑपरेटिंग सिस्टम कर्नेल से इंटरैक्ट करने के लिए करता है- सॉफ्टवेयर जो इनपुट/आउटपुट करता है, फाइल सिस्टम ऑब्जेक्ट्स, एप्लिकेशन सॉफ़्टवेयर आदि में परिवर्तन करता है।

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

Various layers within Linux, also showing separation between the userland and kernel space
User mode User applications bash, LibreOffice, GIMP, Blender, 0 A.D., Mozilla Firefox, ...
System components init daemon:
OpenRC, runit, systemd...
System daemons:
polkitd, smbd, sshd, udevd...
Window manager:
X11, Wayland, SurfaceFlinger (Android)
Graphics:
Mesa, AMD Catalyst, ...
Other libraries:
GTK, Qt, EFL, SDL, SFML, FLTK, GNUstep, ...
C standard library fopen, execv, malloc, memcpy, localtime, pthread_create... (up to 2000 subroutines)
glibc aims to be fast, musl aims to be lightweight, uClibc targets embedded systems, bionic was written for Android, etc. All aim to be POSIX/SUS-compatible.
Kernel mode Linux kernel stat, splice, dup, read, open, ioctl, write, mmap, close, exit, etc. (about 380 system calls)
The Linux kernel System Call Interface (SCI), aims to be POSIX/SUS-compatible[2]
Process scheduling
subsystem
IPC
subsystem
Memory management
subsystem
Virtual files
subsystem
Network
subsystem
Other components: ALSA, DRI, evdev, klibc, LVM, device mapper, Linux Network Scheduler, Netfilter
Linux Security Modules: SELinux, TOMOYO, AppArmor, Smack
Hardware (CPU, main memory, data storage devices, etc.)

कार्यान्वयन

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

कई ऑपरेटिंग सिस्टम सिंगल एड्रेस स्पेस ऑपरेटिंग सिस्टम हैं - उनके पास सभी यूजर-मोड कोड के लिए एक सिंगल एड्रेस स्पेस है। (कर्नेल-मोड कोड एक ही एड्रेस स्पेस में हो सकता है, या यह दूसरे एड्रेस स्पेस में हो सकता है)। कई अन्य ऑपरेटिंग सिस्टम में प्रति-प्रक्रिया पता स्थान होता है, प्रत्येक उपयोगकर्ता-मोड प्रक्रिया के लिए एक अलग पता स्थान होता है।

प्रायोगिक ऑपरेटिंग सिस्टम में लिया गया एक अन्य दृष्टिकोण सभी सॉफ़्टवेयर के लिए एक ही पता स्थान है, और यह सुनिश्चित करने के लिए प्रोग्रामिंग भाषा के शब्दार्थ पर निर्भर है कि मनमाना मेमोरी तक पहुँचा नहीं जा सकता है - एप्लिकेशन केवल उन वस्तुओं के लिए कोई संदर्भ (कंप्यूटर विज्ञान) प्राप्त नहीं कर सकते हैं जो उन्हें प्रवेश की अनुमति नहीं है।[3][4] यह दृष्टिकोण JX (ऑपरेटिंग सिस्टम), यूनुनियम के साथ-साथ माइक्रोसॉफ्ट के सिंगुलैरिटी (ऑपरेटिंग सिस्टम) रिसर्च प्रोजेक्ट में लागू किया गया है।

यह भी देखें

टिप्पणियाँ

  1. Older operating systems, such as DOS and Windows 3.1x, do not use this architecture.


संदर्भ

  1. "userland, n." The Jargon File. Eric S. Raymond. Retrieved 2016-08-14.
  2. "Admin Guide README". git.kernel.org.
  3. "Unununium System Introduction". Archived from the original on 2001-12-15. Retrieved 2016-08-14.
  4. "uuu/docs/system_introduction/uuu_intro.tex". UUU System Introduction Guide. 2001-06-01. Retrieved 2016-08-14.


बाहरी संबंध