स्लीप (सिस्टम कॉल)

From Vigyanwiki
Revision as of 15:54, 18 August 2023 by alpha>Jyotigoel

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

उपयोग

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

विंडोज़

विंडोज़ पर, 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.