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