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

From Vigyanwiki
mNo edit summary
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{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 एमएस वियोजन होती है। उच्च परिशुद्धता के लिए,[[gnulib]] जैसे व्यस्त लूप ओवर {{code|QueryPerformanceCounter()}}का उपयोग करना आवश्यक है।<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>'''


=== यूनिक्स ===
<code>sleep()</code>क्रिया यूनिक्स-लाइक और अन्य [[POSIX|पोसिक्स]] प्रचालन तंत्र पर स्लीप के लिए सेकंड की संख्या के असंकेतित पूर्णांक प्रकार का एकल मापदंड प्रदान करती है।<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>'''


=== सी उदाहरण ===
[[विंडोज़ एपीआई]] में:
[[विंडोज़ एपीआई]] में:
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
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.
-->


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


== निम्न स्तर की कार्यक्षमता ==
[[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>'''


=== निर्बाध नींद ===
एक अबाधित स्लीप की स्थिति एक ऐसी स्लीप की स्थिति है जो तुरंत संकेत को संभाल नहीं पाती है। यह केवल प्रतीक्षारत संसाधन उपलब्ध होने के परिणामस्वरूप या उस प्रतीक्षा के दौरान समय समाप्त होने के बाद ही जागृत होता है। इसका उपयोग अधिकतर डिस्क या नेटवर्क IO (निविष्ट/उत्पादन) की प्रतीक्षा कर रहे उपकरण संचालको द्वारा किया जाता है।
एक निर्बाध नींद की स्थिति एक नींद की स्थिति है जो तुरंत संकेत को संभाल नहीं पाएगी। के परिणामस्वरूप ही जागेगा <!-- a hardware interrupt or of -->एक प्रतीक्षित संसाधन उपलब्ध होना या टाइम-आउट के बाद उस प्रतीक्षा के दौरान होता है (यदि सोने के समय निर्दिष्ट किया गया हो)। इसका उपयोग अधिकतर डिस्क या नेटवर्क IO (इनपुट/आउटपुट) की प्रतीक्षा कर रहे डिवाइस ड्राइवरों द्वारा किया जाता है।
<!--
The kernel ''could'' conceivably wake such processes under other circumstances (e.g. a hardware interrupt's handler could decide to wake up a specific process), but that would almost certainly make no sense.
-->
जब प्रक्रिया निर्बाध रूप से सो रही होती है, तो प्रक्रिया के सिस्टम कॉल या ट्रैप से लौटने पर नींद के दौरान जमा हुए संकेतों पर ध्यान दिया जाएगा।


यूनिक्स जैसी प्रणालियों में कमांड '<code>ps -l</code>' कोड का उपयोग करता है<code>D</code>किसी प्रक्रिया की निर्बाध नींद की स्थिति के लिए।<ref>{{cite web |url=http://man7.org/linux/man-pages/man1/top.1.html |title=शीर्ष(1) - लिनक्स मैनुअल पेज|date=2016-12-12 |website=man7.org |access-date=2017-02-09}}</ref> ऐसी प्रक्रियाओं को SIGKILL| से भी ख़त्म नहीं किया जा सकता<code>SIGKILL</code>और उनसे छुटकारा पाने का एकमात्र गैर-परिष्कृत तरीका सिस्टम को रीबूट करना है।<ref>{{cite web |url=https://www.novell.com/support/kb/doc.php?id=7002725 |title=निर्बाध निद्रा (डी) अवस्था में प्रक्रियाएँ|date=2009-02-21 |website=Novell |access-date=2017-02-09}}</ref><ref>{{cite book |last=Fusco |first=John |date=2007-03-06 |title=लिनक्स प्रोग्रामर का टूलबॉक्स|publisher=Pearson Education |isbn=9780132703048}}</ref>
जब प्रक्रिया अबाधित रूप से स्लीप अवस्था में होती है, तो प्रक्रिया के सिस्टम कॉल या ट्रैप से लौटने पर स्लीप के दौरान एकत्रित हुए संकेतों पर ध्यान दिया जाता है।


यूनिक्स जैसी प्रणालियों में आदेश<nowiki>''</nowiki> किसी प्रक्रिया की अबाधित स्लीप की स्थिति के लिए <code>ps -l</code>कोड " का उपयोग करता है।<ref>{{cite web |url=http://man7.org/linux/man-pages/man1/top.1.html |title=शीर्ष(1) - लिनक्स मैनुअल पेज|date=2016-12-12 |website=man7.org |access-date=2017-02-09}}</ref> ऐसी प्रक्रियाओं को SIGKILL| से भी समाप्त नहीं किया जा सकता है और उनसे मुक्त करने का एकमात्र गैर-परिष्कृत तरीका तंत्र को पुन:प्रारंभ करना है।<ref>{{cite web |url=https://www.novell.com/support/kb/doc.php?id=7002725 |title=निर्बाध निद्रा (डी) अवस्था में प्रक्रियाएँ|date=2009-02-21 |website=Novell |access-date=2017-02-09}}</ref><ref>{{cite book |last=Fusco |first=John |date=2007-03-06 |title=लिनक्स प्रोग्रामर का टूलबॉक्स|publisher=Pearson Education |isbn=9780132703048}}</ref>


== यह भी देखें ==
'''<big><br />यह भी देखें</big>'''
* संकेत (कंप्यूटिंग)
* संकेत (कंप्यूटिंग)
* [[सिस्टम समय]]
* [[सिस्टम समय]]
*[[नींद (आदेश)]]
*[[नींद (आदेश)]]
* [[स्लीप मोड]]
* [[स्लीप मोड|स्लीप अवस्था]]
* [[प्रतीक्षा करें (सिस्टम कॉल)]]
* [[प्रतीक्षा करें (सिस्टम कॉल)]]


Line 70: Line 62:
[[Category: Machine Translated Page]]
[[Category: Machine Translated Page]]
[[Category:Created On 09/08/2023]]
[[Category:Created On 09/08/2023]]
[[Category:Vigyan Ready]]

Latest revision as of 07:11, 16 October 2023

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

उपयोग

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

विंडोज़

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

Sleep()}() क्रिया का वियोजन,सामान्यतौर पर एपीआई की श्रेणी 'समय साधन'timeBeginPeriod()के माध्यम से वर्तमान समय अवधि, अधिकतम 16 एमएस लेकिन न्यूनतम 1 एमएस वियोजन होती है। उच्च परिशुद्धता के लिए,gnulib जैसे व्यस्त लूप ओवर QueryPerformanceCounter()का उपयोग करना आवश्यक है।[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

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

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

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

उपयोग

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

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

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


अबाधित स्लीप

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

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

यूनिक्स जैसी प्रणालियों में आदेश'' किसी प्रक्रिया की अबाधित स्लीप की स्थिति के लिए ps -lकोड " का उपयोग करता है।[9] ऐसी प्रक्रियाओं को 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.