स्लीप (सिस्टम कॉल): Difference between revisions

From Vigyanwiki
mNo edit summary
mNo edit summary
Line 1: Line 1:
{{Short description|Computer system call}}
{{Short description|Computer system call}}
[[कंप्यूटर प्रोग्राम]] ([[प्रक्रिया (कंप्यूटिंग)|प्रक्रिया]], [[कार्य (कंप्यूटर)|कार्य]] या [[थ्रेड (कंप्यूटर विज्ञान)|तंतु]]) कुछ समय अवधि के लिए विश्राम कर सकता है, जो [[कंप्यूटर प्रोग्राम]] को कुछ समय के लिए निष्क्रिय स्थिति में रखता है। अंततः अंतराल [[ घड़ी |समय]] की समाप्ति, या [[सिग्नल (कंप्यूटिंग)|संकेत (कंप्यूटिंग)]] की प्राप्ति या किसी प्रकार के रुकावट के कारण प्रोग्राम का निष्पादन फिर से शुरू हो जाता है।
[[कंप्यूटर प्रोग्राम]] ([[प्रक्रिया (कंप्यूटिंग)|प्रक्रिया]], [[कार्य (कंप्यूटर)|कार्य]] या [[थ्रेड (कंप्यूटर विज्ञान)|तंतु]]) जब कुछ समय तक कोई आदेश प्राप्त नहीं करता है तब [[कंप्यूटर प्रोग्राम]] कुछ समय के लिए निष्क्रिय स्थिति में हो जाता है जिसे '''विश्राम'''(स्लीप) अवस्था कहते है। अंततः अंतराल [[ घड़ी |समय]] की समाप्ति, [[सिग्नल (कंप्यूटिंग)|संकेत (कंप्यूटिंग)]] की प्राप्ति या किसी प्रकार के रुकावट के कारण प्रोग्राम का निष्पादन फिर से शुरू हो जाता है।


== उपयोग ==
== उपयोग ==
एक सामान्य स्लीप [[सिस्टम कॉल]] समय मान को एक मापदंड के रूप में लेता है, जो निष्पादन को फिर से शुरू करने से पहले प्रक्रिया को सोने के लिए न्यूनतम समय निर्दिष्ट करता है। मापदंड सामान्य तौर पर सेकंड निर्दिष्ट करता है, हालांकि कुछ प्रचालन तंत्र बेहतर वियोजन जैसे मिलीसेकंड या माइक्रोसेकंड प्रदान करते हैं।
एक सामान्य विश्राम [[सिस्टम कॉल]] समय मान को एक मापदंड के रूप में लेता है, जो निष्पादन को फिर से शुरू करने से पहले प्रक्रिया को '''विश्राम''' करने के लिए न्यूनतम समय निर्दिष्ट करता है। मापदंड सामान्य तौर पर सेकंड निर्दिष्ट करता है, हालांकि कुछ प्रचालन तंत्र बेहतर वियोजन जैसे मिलीसेकंड या माइक्रोसेकंड प्रदान करते हैं।


=== विंडोज़ ===
=== विंडोज़ ===
विंडोज़ पर, <code>Sleep()</code> क्रिया सोने के लिए मिलीसेकंड की संख्या का एक एकल मापदंड लेता है। <code>Sleep()</code> e> क्रिया कर्नेल32.dll में शामिल है।
विंडोज़ पर, <code>Sleep()</code> क्रिया विश्राम के लिए मिलीसेकंड की संख्या का एक एकल मापदंड लेता है। <code>Sleep()</code> e> क्रिया kernel32.dll. में सम्मिलित है।<ref>[http://msdn.microsoft.com/en-us/library/ms686298(VS.85).aspx MSDN Library Reference - Sleep()]</ref>
<ref>[http://msdn.microsoft.com/en-us/library/ms686298(VS.85).aspx MSDN Library Reference - Sleep()]</ref>


  {{code|Sleep()}()}} क्रिया का वियोजन वर्तमान समय अवधि वियोजन से अधिक नहीं है, सामान्यतौर पर 16 एमएस लेकिन न्यूनतम 1 एमएस, के माध्यम से समायोज्य {{code|timeBeginPeriod()}}मीडिया समय अवधि    एपीआई का परिवार। उच्च परिशुद्धता के लिए, व्यस्त लूप ओवर का उपयोग करना आवश्यक है {{code|QueryPerformanceCounter()}}, जैसे कि [[gnulib]] में उपयोग किया जाता है।<ref>{{cite web |title=winapi - Is there a Windows equivalent of nanosleep? |url=https://stackoverflow.com/questions/7827062/is-there-a-windows-equivalent-of-nanosleep |website=Stack Overflow}}</ref>
  {{code|Sleep()}()}} क्रिया का वियोजन समायोज्य मीडिया समय अवधि एपीआई का श्रेणी {{code|timeBeginPeriod()}}के माध्यम से वर्तमान समय अवधि, सामान्यतौर पर 16 एमएस लेकिन न्यूनतम 1 एमएस वियोजन से अधिक नहीं होती है। उच्च परिशुद्धता के लिए, व्यस्त लूप ओवर का उपयोग करना आवश्यक है {{code|QueryPerformanceCounter()}}, जैसे कि [[gnulib]] में उपयोग किया जाता है।<ref>{{cite web |title=winapi - Is there a Windows equivalent of nanosleep? |url=https://stackoverflow.com/questions/7827062/is-there-a-windows-equivalent-of-nanosleep |website=Stack Overflow}}</ref>


'''<big><br />यूनिक्स</big>'''
'''<big><br />यूनिक्स</big>'''


यूनिक्स-जैसे और अन्य [[POSIX]] प्रचालन तंत्र   पर, <code>sleep()</code> क्रिया को सोने के लिए सेकंड की संख्या के अहस्ताक्षरित पूर्णांक प्रकार का एकल मापदंड प्रदान करना कहा जाता है।<ref>{{Man|3p|sleep|Linux}}</ref> एक उच्च परिशुद्धता संस्करण है {{code|nanosleep()}} क्रिया और अब बहिष्कृत {{code|usleep}}.<ref>{{Man|3p|nanosleep|Linux}}</ref> POSIX विस्तारित संस्करण के माध्यम से घड़ी स्रोतों को चुनने की भी अनुमति देता है {{code|clock_nanosleep()}}.<ref>{{Man|3p|clock_nanosleep|Linux}}</ref>
यूनिक्स-लाइक और अन्य [[POSIX|पोसिक्स]] प्रचालन तंत्र पर, <code>sleep()</code> क्रिया को विश्राम के लिए सेकंड की संख्या के असंकेतित पूर्णांक प्रकार का एकल मापदंड प्रदान करना कहा जाता है।<ref>{{Man|3p|sleep|Linux}}</ref> एक उच्च परिशुद्धता संस्करण {{code|nanosleep()}} क्रिया है और अब अप्रामाणित {{code|usleep}}है।<ref>{{Man|3p|nanosleep|Linux}}</ref> [[POSIX|पोसिक्स]] विस्तारित संस्करण के माध्यम से घड़ी स्रोतों {{code|clock_nanosleep()}} को चुनने की भी अनुमति देता है।<ref>{{Man|3p|clock_nanosleep|Linux}}</ref>
का एक संस्करण {{code|clock_nanosleep()}} को [[सी प्रोग्रामिंग भाषा]] का हिस्सा बनने का प्रस्ताव दिया गया था, लेकिन इसे अस्वीकार कर दिया गया था। उसी प्रस्ताव का UTC समय भाग C11 (C मानक संशोधन) में जोड़ा गया था।<ref>{{cite web |last1=Kuhn |first1=Markus |title=आईएसओ सी के लिए आधुनिकीकृत एपीआई|url=https://www.cl.cam.ac.uk/~mgk25/time/c/ |website=www.cl.cam.ac.uk}}</ref>
 
{{code|clock_nanosleep()}}के एक संस्करण को [[सी प्रोग्रामिंग भाषा]] का हिस्सा बनने का प्रस्ताव दिया गया था, लेकिन इसे अस्वीकार कर दिया गया। उसी प्रस्ताव का UTC समय भाग C11 में जोड़ा गया था।<ref>{{cite web |last1=Kuhn |first1=Markus |title=आईएसओ सी के लिए आधुनिकीकृत एपीआई|url=https://www.cl.cam.ac.uk/~mgk25/time/c/ |website=www.cl.cam.ac.uk}}</ref>


'''<big><br />सी उदाहरण</big>'''
'''<big><br />सी उदाहरण</big>'''
Line 22: Line 22:
Sleep(2 * 1000);  // Sleep for 2 seconds
Sleep(2 * 1000);  // Sleep for 2 seconds
</syntaxhighlight>
</syntaxhighlight>
यूनिक्स या POSIX सिस्टम कॉल में:
यूनिक्स या [[POSIX|पोसिक्स]] सिस्टम कॉल में:
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
sleep(2);      // Sleep for 2 seconds
sleep(2);      // Sleep for 2 seconds
</syntaxhighlight>
</syntaxhighlight>
<!--
'''<big>निम्नस्तरीय कार्यक्षमता</big>'''
Please do not try to write a "cross-platform" macro.
'#define sleep(x) (Sleep((x)*1000))' would be prone to integer overflow, and '1000ULL' won't make a difference since it is implicitly cast to DWORD (the parameter type) anyway.
Should some programmers be unable to come up with a macro like this, they are probably better off using a platform abstraction library instead.
-->
 
'''<big><br />निम्न स्तर की कार्यक्षमता</big>'''


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


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


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


अन्य कार्यक्रम समय-समय पर सोने के लिए जाकर और एक विशिष्ट समय अंतराल के बाद निष्पादन फिर से शुरू करके घटनाओं के लिए [[मतदान (कंप्यूटर विज्ञान)]] करते हैं। एक बार जब निष्पादन फिर से शुरू हो जाता है, तो प्रोग्राम घटनाओं या स्थिति में बदलाव के लिए सर्वेक्षण करता है, और फिर सोते समय हुई सभी सेवाओं को सेवाएं प्रदान करता है। इवेंट की सर्विसिंग के बाद, प्रोग्राम अगले समय अंतराल के लिए फिर से सो जाता है। इस प्रकार के कार्यक्रमों द्वारा कुछ प्रकार के [[ निगरानी घड़ी ]] इवेंट या कीप-अलाइव संकेत उत्पन्न किए जा सकते हैं। <code>sleep()</code> ई> चल रहे प्रोग्राम या कोड के निष्पादन को धीमा करने के लिए क्रिया कॉल को थोड़े समय के लिए बार-बार कॉल किया जा सकता है। इस तरीके से थ्रॉटलिंग कोड ओवरहीटिंग हार्डवेयर के प्रभावों को कम करने के लिए एक मोटा तंत्र प्रदान करता है<ref>{{cite web |url=http://mion.faireal.net/BES/ |author=mion |title=BES – Battle Encoder Shirase 1.6.3 (stable) & 1.7.4 for Windows 7/XP/2000 |date=2016-12-06 |website=mion.faireal.net |access-date=2017-02-09}}</ref> या विरासती कार्यक्रमों के लिए समय संबंधी मुद्दों को आसान बनाना। सॉफ़्टवेयर की निष्पादन गति को नियंत्रित करने के लिए चक्र अनुकरण (एमुलेटर के माध्यम से) का लाभ उठाने के बजाय साइकिल चलाने की नींद और चलने की स्थिति का नकारात्मक पक्ष यह है कि यदि बहुत कम समय जागते हुए बिताया जाता है, बहुत अधिक समय सोने में बिताया जाता है, या इंटरैक्टिव सॉफ़्टवेयर उल्लेखनीय हकलाना प्राप्त कर लेगा। दोनों का संयोजन.<ref>{{cite web |url=https://github.com/opsengine/cpulimit/blob/master/README.md |last=Marletta |first=Angelo |title=सीपीयू सीमा|date=2015-03-12 |website=GitHub |access-date=2017-02-09}}</ref>
अन्य कार्यक्रम समय-समय पर विश्राम के लिए जाकर और एक विशिष्ट समय अंतराल के बाद निष्पादन फिर से शुरू करके घटनाओं के लिए [[मतदान (कंप्यूटर विज्ञान)]] करते हैं। एक बार जब निष्पादन फिर से शुरू हो जाता है, तो प्रोग्राम घटनाओं या स्थिति में बदलाव के लिए सर्वेक्षण करता है, और फिर सोते समय हुई सभी सेवाओं को सेवाएं प्रदान करता है। इवेंट की सर्विसिंग के बाद, प्रोग्राम अगले समय अंतराल के लिए फिर से सो जाता है। इस प्रकार के कार्यक्रमों द्वारा कुछ प्रकार के [[ निगरानी घड़ी ]] इवेंट या कीप-अलाइव संकेत उत्पन्न किए जा सकते हैं। <code>sleep()</code> ई> चल रहे प्रोग्राम या कोड के निष्पादन को धीमा करने के लिए क्रिया कॉल को थोड़े समय के लिए बार-बार कॉल किया जा सकता है। इस तरीके से थ्रॉटलिंग कोड ओवरहीटिंग हार्डवेयर के प्रभावों को कम करने के लिए एक मोटा तंत्र प्रदान करता है<ref>{{cite web |url=http://mion.faireal.net/BES/ |author=mion |title=BES – Battle Encoder Shirase 1.6.3 (stable) & 1.7.4 for Windows 7/XP/2000 |date=2016-12-06 |website=mion.faireal.net |access-date=2017-02-09}}</ref> या विरासती कार्यक्रमों के लिए समय संबंधी मुद्दों को आसान बनाना। सॉफ़्टवेयर की निष्पादन गति को नियंत्रित करने के लिए चक्र अनुकरण (एमुलेटर के माध्यम से) का लाभ उठाने के बजाय साइकिल चलाने की नींद और चलने की स्थिति का नकारात्मक पक्ष यह है कि यदि बहुत कम समय जागते हुए बिताया जाता है, बहुत अधिक समय विश्राम में बिताया जाता है, या इंटरैक्टिव सॉफ़्टवेयर उल्लेखनीय हकलाना प्राप्त कर लेगा। दोनों का संयोजन.<ref>{{cite web |url=https://github.com/opsengine/cpulimit/blob/master/README.md |last=Marletta |first=Angelo |title=सीपीयू सीमा|date=2015-03-12 |website=GitHub |access-date=2017-02-09}}</ref>


'''<big><br />निर्बाध नींद</big>'''
'''<big><br />निर्बाध नींद</big>'''


एक निर्बाध नींद की स्थिति एक नींद की स्थिति है जो तुरंत संकेत को संभाल नहीं पाएगी। के परिणामस्वरूप ही जागेगा <!-- a hardware interrupt or of -->एक प्रतीक्षित संसाधन उपलब्ध होना या टाइम-आउट के बाद उस प्रतीक्षा के दौरान होता है (यदि सोने के समय निर्दिष्ट किया गया हो)। इसका उपयोग अधिकतर डिस्क या नेटवर्क IO (इनपुट/आउटपुट) की प्रतीक्षा कर रहे डिवाइस ड्राइवरों द्वारा किया जाता है।
एक निर्बाध नींद की स्थिति एक नींद की स्थिति है जो तुरंत संकेत को संभाल नहीं पाएगी। के परिणामस्वरूप ही जागेगा <!-- a hardware interrupt or of -->एक प्रतीक्षित संसाधन उपलब्ध होना या टाइम-आउट के बाद उस प्रतीक्षा के दौरान होता है (यदि विश्राम के समय निर्दिष्ट किया गया हो)। इसका उपयोग अधिकतर डिस्क या नेटवर्क IO (इनपुट/आउटपुट) की प्रतीक्षा कर रहे डिवाइस ड्राइवरों द्वारा किया जाता है।


जब प्रक्रिया निर्बाध रूप से सो रही होती है, तो प्रक्रिया के सिस्टम कॉल या ट्रैप से लौटने पर नींद के दौरान जमा हुए संकेतों पर ध्यान दिया जाएगा।
जब प्रक्रिया निर्बाध रूप से सो रही होती है, तो प्रक्रिया के सिस्टम कॉल या ट्रैप से लौटने पर नींद के दौरान जमा हुए संकेतों पर ध्यान दिया जाएगा।
Line 56: Line 50:
* [[सिस्टम समय]]
* [[सिस्टम समय]]
*[[नींद (आदेश)]]
*[[नींद (आदेश)]]
* [[स्लीप मोड]]
* [[स्लीप मोड|विश्राम मोड]]
* [[प्रतीक्षा करें (सिस्टम कॉल)]]
* [[प्रतीक्षा करें (सिस्टम कॉल)]]



Revision as of 16:05, 15 August 2023

कंप्यूटर प्रोग्राम (प्रक्रिया, कार्य या तंतु) जब कुछ समय तक कोई आदेश प्राप्त नहीं करता है तब कंप्यूटर प्रोग्राम कुछ समय के लिए निष्क्रिय स्थिति में हो जाता है जिसे विश्राम(स्लीप) अवस्था कहते है। अंततः अंतराल समय की समाप्ति, संकेत (कंप्यूटिंग) की प्राप्ति या किसी प्रकार के रुकावट के कारण प्रोग्राम का निष्पादन फिर से शुरू हो जाता है।

उपयोग

एक सामान्य विश्राम सिस्टम कॉल समय मान को एक मापदंड के रूप में लेता है, जो निष्पादन को फिर से शुरू करने से पहले प्रक्रिया को विश्राम करने के लिए न्यूनतम समय निर्दिष्ट करता है। मापदंड सामान्य तौर पर सेकंड निर्दिष्ट करता है, हालांकि कुछ प्रचालन तंत्र बेहतर वियोजन जैसे मिलीसेकंड या माइक्रोसेकंड प्रदान करते हैं।

विंडोज़

विंडोज़ पर, Sleep() क्रिया विश्राम के लिए मिलीसेकंड की संख्या का एक एकल मापदंड लेता है। Sleep() e> क्रिया kernel32.dll. में सम्मिलित है।[1]

Sleep()}() क्रिया का वियोजन समायोज्य मीडिया समय अवधि एपीआई का श्रेणी timeBeginPeriod()के माध्यम से वर्तमान समय अवधि, सामान्यतौर पर 16 एमएस लेकिन न्यूनतम 1 एमएस वियोजन से अधिक नहीं होती है। उच्च परिशुद्धता के लिए, व्यस्त लूप ओवर का उपयोग करना आवश्यक है QueryPerformanceCounter(), जैसे कि gnulib में उपयोग किया जाता है।[2]


यूनिक्स

यूनिक्स-लाइक और अन्य पोसिक्स प्रचालन तंत्र पर, sleep() क्रिया को विश्राम के लिए सेकंड की संख्या के असंकेतित पूर्णांक प्रकार का एकल मापदंड प्रदान करना कहा जाता है।[3] एक उच्च परिशुद्धता संस्करण nanosleep() क्रिया है और अब अप्रामाणित usleepहै।[4] पोसिक्स विस्तारित संस्करण के माध्यम से घड़ी स्रोतों clock_nanosleep() को चुनने की भी अनुमति देता है।[5]

clock_nanosleep()के एक संस्करण को सी प्रोग्रामिंग भाषा का हिस्सा बनने का प्रस्ताव दिया गया था, लेकिन इसे अस्वीकार कर दिया गया। उसी प्रस्ताव का UTC समय भाग C11 में जोड़ा गया था।[6]


सी उदाहरण

विंडोज़ एपीआई में:

Sleep(2 * 1000);  // Sleep for 2 seconds

यूनिक्स या पोसिक्स सिस्टम कॉल में:

sleep(2);       // Sleep for 2 seconds

निम्नस्तरीय कार्यक्षमता

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

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

उपयोग

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

अन्य कार्यक्रम समय-समय पर विश्राम के लिए जाकर और एक विशिष्ट समय अंतराल के बाद निष्पादन फिर से शुरू करके घटनाओं के लिए मतदान (कंप्यूटर विज्ञान) करते हैं। एक बार जब निष्पादन फिर से शुरू हो जाता है, तो प्रोग्राम घटनाओं या स्थिति में बदलाव के लिए सर्वेक्षण करता है, और फिर सोते समय हुई सभी सेवाओं को सेवाएं प्रदान करता है। इवेंट की सर्विसिंग के बाद, प्रोग्राम अगले समय अंतराल के लिए फिर से सो जाता है। इस प्रकार के कार्यक्रमों द्वारा कुछ प्रकार के निगरानी घड़ी इवेंट या कीप-अलाइव संकेत उत्पन्न किए जा सकते हैं। sleep() ई> चल रहे प्रोग्राम या कोड के निष्पादन को धीमा करने के लिए क्रिया कॉल को थोड़े समय के लिए बार-बार कॉल किया जा सकता है। इस तरीके से थ्रॉटलिंग कोड ओवरहीटिंग हार्डवेयर के प्रभावों को कम करने के लिए एक मोटा तंत्र प्रदान करता है[7] या विरासती कार्यक्रमों के लिए समय संबंधी मुद्दों को आसान बनाना। सॉफ़्टवेयर की निष्पादन गति को नियंत्रित करने के लिए चक्र अनुकरण (एमुलेटर के माध्यम से) का लाभ उठाने के बजाय साइकिल चलाने की नींद और चलने की स्थिति का नकारात्मक पक्ष यह है कि यदि बहुत कम समय जागते हुए बिताया जाता है, बहुत अधिक समय विश्राम में बिताया जाता है, या इंटरैक्टिव सॉफ़्टवेयर उल्लेखनीय हकलाना प्राप्त कर लेगा। दोनों का संयोजन.[8]


निर्बाध नींद

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

जब प्रक्रिया निर्बाध रूप से सो रही होती है, तो प्रक्रिया के सिस्टम कॉल या ट्रैप से लौटने पर नींद के दौरान जमा हुए संकेतों पर ध्यान दिया जाएगा।

यूनिक्स जैसी प्रणालियों में कमांड 'ps -l' कोड का उपयोग करता हैDकिसी प्रक्रिया की निर्बाध नींद की स्थिति के लिए।[9] ऐसी प्रक्रियाओं को SIGKILL| से भी ख़त्म नहीं किया जा सकताSIGKILLऔर उनसे छुटकारा पाने का एकमात्र गैर-परिष्कृत तरीका सिस्टम को रीबूट करना है।[10][11]


यह भी देखें

संदर्भ

  1. MSDN Library Reference - Sleep()
  2. "winapi - Is there a Windows equivalent of nanosleep?". Stack Overflow.
  3. sleep(3p) – Linux Manual
  4. nanosleep(3p) – Linux Manual
  5. clock_nanosleep(3p) – Linux Manual
  6. Kuhn, Markus. "आईएसओ सी के लिए आधुनिकीकृत एपीआई". www.cl.cam.ac.uk.
  7. mion (2016-12-06). "BES – Battle Encoder Shirase 1.6.3 (stable) & 1.7.4 for Windows 7/XP/2000". mion.faireal.net. Retrieved 2017-02-09.
  8. Marletta, Angelo (2015-03-12). "सीपीयू सीमा". GitHub. Retrieved 2017-02-09.
  9. "शीर्ष(1) - लिनक्स मैनुअल पेज". man7.org. 2016-12-12. Retrieved 2017-02-09.
  10. "निर्बाध निद्रा (डी) अवस्था में प्रक्रियाएँ". Novell. 2009-02-21. Retrieved 2017-02-09.
  11. Fusco, John (2007-03-06). लिनक्स प्रोग्रामर का टूलबॉक्स. Pearson Education. ISBN 9780132703048.