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

From Vigyanwiki
mNo edit summary
mNo edit summary
Line 1: Line 1:
{{Short description|Computer system call}}
{{Short description|Computer system call}}
[[कंप्यूटर प्रोग्राम]] ([[प्रक्रिया (कंप्यूटिंग)|प्रक्रिया]], [[कार्य (कंप्यूटर)|कार्य]] या [[थ्रेड (कंप्यूटर विज्ञान)|तंतु]]) कुछ समय अवधि के लिए सो सकता है, जो इसे कुछ समय के लिए निष्क्रिय स्थिति में रखता है। अंततः अंतराल [[ घड़ी |घड़ी]] की समाप्ति, या [[सिग्नल (कंप्यूटिंग)|संकेत (कंप्यूटिंग)]] की प्राप्ति या रुकावट के कारण प्रोग्राम का निष्पादन फिर से शुरू हो जाता है।
[[कंप्यूटर प्रोग्राम]] ([[प्रक्रिया (कंप्यूटिंग)|प्रक्रिया]], [[कार्य (कंप्यूटर)|कार्य]] या [[थ्रेड (कंप्यूटर विज्ञान)|तंतु]]) कुछ समय अवधि के लिए सो सकता है, जो [[कंप्यूटर प्रोग्राम]] को कुछ समय के लिए निष्क्रिय स्थिति में रखता है। अंततः अंतराल [[ घड़ी |समय]] की समाप्ति, या [[सिग्नल (कंप्यूटिंग)|संकेत (कंप्यूटिंग)]] की प्राप्ति या रुकावट के कारण प्रोग्राम का निष्पादन फिर से शुरू हो जाता है।


== उपयोग ==
== उपयोग ==

Revision as of 22:31, 14 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]


यह भी देखें

संदर्भ

  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.