स्लीप (सिस्टम कॉल)
एक कंप्यूटर प्रोग्राम (प्रक्रिया (कंप्यूटिंग), कार्य (कंप्यूटर), या थ्रेड (कंप्यूटर विज्ञान)) सो सकता है, जो इसे कुछ समय के लिए प्रक्रिया स्थिति में रखता है। अंततः अंतराल घड़ी की समाप्ति, या सिग्नल (कंप्यूटिंग) की प्राप्ति या रुकावट के कारण प्रोग्राम का निष्पादन फिर से शुरू हो जाता है।
उपयोग
एक सामान्य स्लीप सिस्टम कॉल एक पैरामीटर के रूप में समय मान लेता है, जो निष्पादन को फिर से शुरू करने से पहले प्रक्रिया को सोने के लिए न्यूनतम समय निर्दिष्ट करता है। पैरामीटर आम तौर पर सेकंड निर्दिष्ट करता है, हालांकि कुछ ऑपरेटिंग सिस्टम बेहतर रिज़ॉल्यूशन प्रदान करते हैं, जैसे मिलीसेकंड या माइक्रोसेकंड।
खिड़कियाँ
विंडोज़ पर, 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.