स्लीप (सिस्टम कॉल): Difference between revisions
(Created page with "{{Short description|Computer system call}} एक कंप्यूटर प्रोग्राम (प्रक्रिया (कंप्यूटिंग), [...") |
mNo edit summary |
||
Line 3: | Line 3: | ||
== उपयोग == | == उपयोग == | ||
एक सामान्य स्लीप [[सिस्टम कॉल]] एक | एक सामान्य स्लीप [[सिस्टम कॉल]] एक मापदंड के रूप में समय मान लेता है, जो निष्पादन को फिर से शुरू करने से पहले प्रक्रिया को सोने के लिए न्यूनतम समय निर्दिष्ट करता है। मापदंड आम तौर पर सेकंड निर्दिष्ट करता है, हालांकि कुछ ऑपरेटिंग सिस्टम बेहतर रिज़ॉल्यूशन प्रदान करते हैं, जैसे मिलीसेकंड या माइक्रोसेकंड। | ||
=== | === विंडोज़ === | ||
विंडोज़ पर, <code>Sleep()</code> फ़ंक्शन सोने के लिए मिलीसेकंड की संख्या का एक एकल | विंडोज़ पर, <code>Sleep()</code> फ़ंक्शन सोने के लिए मिलीसेकंड की संख्या का एक एकल मापदंड लेता है। <code>Sleep()</code> e> फ़ंक्शन कर्नेल32.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> | ||
Line 13: | Line 13: | ||
=== यूनिक्स === | === यूनिक्स === | ||
यूनिक्स-जैसे और अन्य [[POSIX]] ऑपरेटिंग सिस्टम पर, <code>sleep()</code> फ़ंक्शन को सोने के लिए सेकंड की संख्या के अहस्ताक्षरित पूर्णांक प्रकार का एकल | यूनिक्स-जैसे और अन्य [[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 (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> | ||
Line 36: | Line 36: | ||
स्लीप के कारण थ्रेड या प्रक्रिया अपना शेष समय भाग छोड़ देती है और निर्दिष्ट अवधि के लिए नॉट रननेबल स्थिति में रहती है। हालांकि आम तौर पर न्यूनतम समय अवधि के लिए गारंटी होती है, लेकिन इस बात की कोई सख्त गारंटी नहीं है कि निर्दिष्ट समय बीत जाने के बाद थ्रेड तुरंत या जल्द ही, या बिल्कुल भी चलेगा। यह शेड्यूलर के विवेक पर निर्भर है, और थ्रेड प्राथमिकताओं और कार्यान्वयन विवरण जैसे टाइमर रिज़ॉल्यूशन पर निर्भर करता है जब स्लीपिंग थ्रेड फिर से चलेगा। | स्लीप के कारण थ्रेड या प्रक्रिया अपना शेष समय भाग छोड़ देती है और निर्दिष्ट अवधि के लिए नॉट रननेबल स्थिति में रहती है। हालांकि आम तौर पर न्यूनतम समय अवधि के लिए गारंटी होती है, लेकिन इस बात की कोई सख्त गारंटी नहीं है कि निर्दिष्ट समय बीत जाने के बाद थ्रेड तुरंत या जल्द ही, या बिल्कुल भी चलेगा। यह शेड्यूलर के विवेक पर निर्भर है, और थ्रेड प्राथमिकताओं और कार्यान्वयन विवरण जैसे टाइमर रिज़ॉल्यूशन पर निर्भर करता है जब स्लीपिंग थ्रेड फिर से चलेगा। | ||
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> | ||
=== निर्बाध नींद === | === निर्बाध नींद === | ||
एक निर्बाध नींद की स्थिति एक नींद की स्थिति है जो तुरंत | एक निर्बाध नींद की स्थिति एक नींद की स्थिति है जो तुरंत संकेत को संभाल नहीं पाएगी। के परिणामस्वरूप ही जागेगा <!-- 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. | 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. | ||
Line 55: | Line 55: | ||
== यह भी देखें == | == यह भी देखें == | ||
* | * संकेत (कंप्यूटिंग) | ||
* [[सिस्टम समय]] | * [[सिस्टम समय]] | ||
*[[नींद (आदेश)]] | *[[नींद (आदेश)]] |
Revision as of 15:56, 13 August 2023
एक कंप्यूटर प्रोग्राम (प्रक्रिया (कंप्यूटिंग), कार्य (कंप्यूटर), या थ्रेड (कंप्यूटर विज्ञान)) सो सकता है, जो इसे कुछ समय के लिए प्रक्रिया स्थिति में रखता है। अंततः अंतराल घड़ी की समाप्ति, या सिग्नल (कंप्यूटिंग) की प्राप्ति या रुकावट के कारण प्रोग्राम का निष्पादन फिर से शुरू हो जाता है।
उपयोग
एक सामान्य स्लीप सिस्टम कॉल एक मापदंड के रूप में समय मान लेता है, जो निष्पादन को फिर से शुरू करने से पहले प्रक्रिया को सोने के लिए न्यूनतम समय निर्दिष्ट करता है। मापदंड आम तौर पर सेकंड निर्दिष्ट करता है, हालांकि कुछ ऑपरेटिंग सिस्टम बेहतर रिज़ॉल्यूशन प्रदान करते हैं, जैसे मिलीसेकंड या माइक्रोसेकंड।
विंडोज़
विंडोज़ पर, Sleep()
फ़ंक्शन सोने के लिए मिलीसेकंड की संख्या का एक एकल मापदंड लेता है। Sleep()
e> फ़ंक्शन कर्नेल32.dll में शामिल है।
[1]
Sleep()}()
फ़ंक्शन का रिज़ॉल्यूशन वर्तमान टाइमर रिज़ॉल्यूशन से अधिक नहीं है, आमतौर पर 16 एमएस लेकिन न्यूनतम 1 एमएस, के माध्यम से समायोज्यtimeBeginPeriod()
मीडिया टाइमर एपीआई का परिवार। उच्च परिशुद्धता के लिए, व्यस्त लूप ओवर का उपयोग करना आवश्यक हैQueryPerformanceCounter()
, जैसे कि gnulib में उपयोग किया जाता है।[2]
यूनिक्स
यूनिक्स-जैसे और अन्य POSIX ऑपरेटिंग सिस्टम पर, sleep()
फ़ंक्शन को सोने के लिए सेकंड की संख्या के अहस्ताक्षरित पूर्णांक प्रकार का एकल मापदंड प्रदान करना कहा जाता है।[3] एक उच्च परिशुद्धता संस्करण है nanosleep()
फ़ंक्शन और अब बहिष्कृत usleep
.[4] POSIX विस्तारित संस्करण के माध्यम से घड़ी स्रोतों को चुनने की भी अनुमति देता है clock_nanosleep()
.[5]
का एक संस्करण clock_nanosleep()
को सी प्रोग्रामिंग भाषा का हिस्सा बनने का प्रस्ताव दिया गया था, लेकिन इसे अस्वीकार कर दिया गया था। उसी प्रस्ताव का UTC समय भाग C11 (C मानक संशोधन) में जोड़ा गया था।[6]
सी उदाहरण
विंडोज़ एपीआई में:
Sleep(2 * 1000); // Sleep for 2 seconds
यूनिक्स या POSIX सिस्टम कॉल में:
sleep(2); // Sleep for 2 seconds
निम्न स्तर की कार्यक्षमता
स्लीप के कारण थ्रेड या प्रक्रिया अपना शेष समय भाग छोड़ देती है और निर्दिष्ट अवधि के लिए नॉट रननेबल स्थिति में रहती है। हालांकि आम तौर पर न्यूनतम समय अवधि के लिए गारंटी होती है, लेकिन इस बात की कोई सख्त गारंटी नहीं है कि निर्दिष्ट समय बीत जाने के बाद थ्रेड तुरंत या जल्द ही, या बिल्कुल भी चलेगा। यह शेड्यूलर के विवेक पर निर्भर है, और थ्रेड प्राथमिकताओं और कार्यान्वयन विवरण जैसे टाइमर रिज़ॉल्यूशन पर निर्भर करता है जब स्लीपिंग थ्रेड फिर से चलेगा।
POSIX सिस्टम पर, नैनोस्लीप और संबंधित सिस्कल संकेत द्वारा बाधित होते हैं, जिससे शेष नींद का समय वापस आ जाता है। दूसरी ओर, स्लीप लाइब्रेरी फ़ंक्शन, कई पुराने सिस्टमों पर अलार्म सिस्कल के माध्यम से कार्यान्वित किया जाता है, इस प्रकार यह केवल संकेत वितरित करके काम करता है। विंडोज स्लीप फ़ंक्शन संकेत की अनुपस्थिति (थ्रेड या इसकी प्रक्रिया समाप्त होने के अलावा) के कारण गैर-बाधित है, हालांकि संबंधित स्लीपएक्स फ़ंक्शन का उपयोग थ्रेड को अलर्ट स्थिति में रखने के लिए किया जा सकता है, जिससे थ्रेड के दौरान एपीसी कॉल की जा सकती है सो रही है। साथ ही, किसी मामले में थ्रेड तकनीकी रूप से बाधित हो सकता है। प्रक्रिया किसी भिन्न थ्रेड में अपवाद के कारण समाप्त हो जाती है।
उपयोग
कुछ डेमॉन (कंप्यूटर सॉफ़्टवेयर) जो कभी भी इवेंट लूप को निष्पादित नहीं करते हैं, प्रत्येक चक्र की शुरुआत में सो जाते हैं और उन्हें जगाने के लिए किसी ईवेंट की प्रतीक्षा करते हैं। एक बार जब कोई ईवेंट प्राप्त हो जाता है, तो प्रोग्राम उस ईवेंट की सेवा देता है, फिर अगले प्रतीक्षा चक्र की शुरुआत में वापस आ जाता है।
अन्य कार्यक्रम समय-समय पर सोने के लिए जाकर और एक विशिष्ट समय अंतराल के बाद निष्पादन फिर से शुरू करके घटनाओं के लिए मतदान (कंप्यूटर विज्ञान) करते हैं। एक बार जब निष्पादन फिर से शुरू हो जाता है, तो प्रोग्राम घटनाओं या स्थिति में बदलाव के लिए सर्वेक्षण करता है, और फिर सोते समय हुई सभी सेवाओं को सेवाएं प्रदान करता है। इवेंट की सर्विसिंग के बाद, प्रोग्राम अगले समय अंतराल के लिए फिर से सो जाता है। इस प्रकार के कार्यक्रमों द्वारा कुछ प्रकार के निगरानी घड़ी इवेंट या कीप-अलाइव संकेत उत्पन्न किए जा सकते हैं। sleep()
ई> चल रहे प्रोग्राम या कोड के निष्पादन को धीमा करने के लिए फ़ंक्शन कॉल को थोड़े समय के लिए बार-बार कॉल किया जा सकता है। इस तरीके से थ्रॉटलिंग कोड ओवरहीटिंग हार्डवेयर के प्रभावों को कम करने के लिए एक मोटा तंत्र प्रदान करता है[7] या विरासती कार्यक्रमों के लिए समय संबंधी मुद्दों को आसान बनाना। सॉफ़्टवेयर की निष्पादन गति को नियंत्रित करने के लिए चक्र अनुकरण (एमुलेटर के माध्यम से) का लाभ उठाने के बजाय साइकिल चलाने की नींद और चलने की स्थिति का नकारात्मक पक्ष यह है कि यदि बहुत कम समय जागते हुए बिताया जाता है, बहुत अधिक समय सोने में बिताया जाता है, या इंटरैक्टिव सॉफ़्टवेयर उल्लेखनीय हकलाना प्राप्त कर लेगा। दोनों का संयोजन.[8]
निर्बाध नींद
एक निर्बाध नींद की स्थिति एक नींद की स्थिति है जो तुरंत संकेत को संभाल नहीं पाएगी। के परिणामस्वरूप ही जागेगा एक प्रतीक्षित संसाधन उपलब्ध होना या टाइम-आउट के बाद उस प्रतीक्षा के दौरान होता है (यदि सोने के समय निर्दिष्ट किया गया हो)। इसका उपयोग अधिकतर डिस्क या नेटवर्क IO (इनपुट/आउटपुट) की प्रतीक्षा कर रहे डिवाइस ड्राइवरों द्वारा किया जाता है। जब प्रक्रिया निर्बाध रूप से सो रही होती है, तो प्रक्रिया के सिस्टम कॉल या ट्रैप से लौटने पर नींद के दौरान जमा हुए संकेतों पर ध्यान दिया जाएगा।
यूनिक्स जैसी प्रणालियों में कमांड 'ps -l
' कोड का उपयोग करता हैD
किसी प्रक्रिया की निर्बाध नींद की स्थिति के लिए।[9] ऐसी प्रक्रियाओं को SIGKILL| से भी ख़त्म नहीं किया जा सकताSIGKILL
और उनसे छुटकारा पाने का एकमात्र गैर-परिष्कृत तरीका सिस्टम को रीबूट करना है।[10][11]
यह भी देखें
- संकेत (कंप्यूटिंग)
- सिस्टम समय
- नींद (आदेश)
- स्लीप मोड
- प्रतीक्षा करें (सिस्टम कॉल)
संदर्भ
- ↑ MSDN Library Reference - Sleep()
- ↑ "winapi - Is there a Windows equivalent of nanosleep?". Stack Overflow.
- ↑ Linux Manual –
- ↑ Linux Manual –
- ↑ Linux Manual –
- ↑ Kuhn, Markus. "आईएसओ सी के लिए आधुनिकीकृत एपीआई". www.cl.cam.ac.uk.
- ↑ 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.
- ↑ Marletta, Angelo (2015-03-12). "सीपीयू सीमा". GitHub. Retrieved 2017-02-09.
- ↑ "शीर्ष(1) - लिनक्स मैनुअल पेज". man7.org. 2016-12-12. Retrieved 2017-02-09.
- ↑ "निर्बाध निद्रा (डी) अवस्था में प्रक्रियाएँ". Novell. 2009-02-21. Retrieved 2017-02-09.
- ↑ Fusco, John (2007-03-06). लिनक्स प्रोग्रामर का टूलबॉक्स. Pearson Education. ISBN 9780132703048.