Sleep (system call)
একটি কম্পিউটার প্রোগ্রাম (প্রসেস, টাস্ক বা থ্রেড) ঘুমিয়ে থাকতে পারে, যা এটিকে একটি নির্দিষ্ট সময়ের জন্য নিষ্ক্রিয় অবস্থায় রাখে। অবশেষে একটি বিরতি টাইমারের মেয়াদ শেষ হয়ে যাওয়া, বা একটি সংকেত বা বাধা প্রাপ্তির ফলে প্রোগ্রামটি আবার কার্যকর হতে শুরু করে। ব্যবহার একটি সাধারণ স্লিপ সিস্টেম কল একটি পরামিতি হিসাবে একটি সময় মান নেয়, যা কার্যকরকরণ পুনরায় শুরু করার আগে প্রক্রিয়াটি ঘুমানোর জন্য ন্যূনতম সময় নির্দিষ্ট করে। প্যারামিটারটি সাধারণত সেকেন্ড নির্দিষ্ট করে, যদিও কিছু অপারেটিং সিস্টেম মিলিসেকেন্ড বা মাইক্রোসেকেন্ডের মতো সূক্ষ্ম রেজোলিউশন প্রদান করে। উইন্ডোজে, স্লিপ () ফাংশনটি ঘুমানোর জন্য মিলিসেকেন্ডের সংখ্যার একটি একক পরামিতি নেয়। স্লিপ () ফাংশনটি kernel32.dll-এ অন্তর্ভুক্ত করা হয়েছে। ফাংশনটির রেজোলিউশন বর্তমান টাইমার রেজোলিউশনের চেয়ে বেশি নয়, সাধারণত 16 মিমি কিন্তু ন্যূনতম 1 মিমি, যা "মিডিয়া টাইমার" এপিআই-এর পরিবারের মাধ্যমে সামঞ্জস্যযোগ্য। উচ্চতর নির্ভুলতার জন্য, একটি ব্যস্ত লুপ ওভার ব্যবহার করা প্রয়োজন, যেমন গনুলিবে ব্যবহৃত। ইউনিক্স-সদৃশ এবং অন্যান্য পজিক্স অপারেটিং সিস্টেমে, স্লিপ () ফাংশনকে বলা হয় ঘুমের জন্য সেকেন্ডের সংখ্যার স্বাক্ষরহীন পূর্ণসংখ্যার একক পরামিতি প্রদান করা। একটি উচ্চতর-নির্ভুল সংস্করণ হল ফাংশন এবং এখন অবচিত। পোসিক্স বর্ধিত সংস্করণের মাধ্যমে ঘড়ির উৎসগুলি বেছে নেওয়ারও অনুমতি দেয়। এর একটি সংস্করণ সি প্রোগ্রামিং ভাষার অংশ হওয়ার প্রস্তাব দেওয়া হয়েছিল, কিন্তু তা প্রত্যাখ্যান করা হয়েছিল। একই প্রস্তাবের ইউটিসি সময় অংশটি সি11-এ যোগ করা হয়েছিল। উইন্ডোজ এপিআই-এ উদাহরণস্বরূপঃ ঘুম (2 * 1000);// ইউনিক্স বা পোসিক্স সিস্টেম কলগুলিতে 2 সেকেন্ডের জন্য ঘুমঃ ঘুম (2);// 2 সেকেন্ডের জন্য ঘুম নিম্ন স্তরের কার্যকারিতা ঘুম থ্রেড বা প্রক্রিয়াটিকে তার অবশিষ্ট সময় স্লাইস ছেড়ে দেয় এবং নির্দিষ্ট সময়ের জন্য রানযোগ্য অবস্থায় থাকে। যদিও সাধারণত ন্যূনতম সময়ের জন্য একটি গ্যারান্টি থাকে, তবে নির্দিষ্ট সময় অতিবাহিত হওয়ার পরে থ্রেডটি অবিলম্বে বা শীঘ্রই বা এমনকি আদৌ চলবে এমন কোনও কঠোর গ্যারান্টি নেই। এটি সময়সূচীকারের বিবেচনার উপর নির্ভর করে এবং থ্রেডের অগ্রাধিকার এবং বাস্তবায়নের বিশদ বিবরণের উপর নির্ভর করে যেমন টাইমার রেজোলিউশন যখন স্লিপিং থ্রেড আবার চলবে। পোসিক্স সিস্টেমে, ন্যানোস্লিপ এবং সম্পর্কিত সিসকলগুলি সংকেত দ্বারা বাধাগ্রস্ত হয়, অবশিষ্ট ঘুমের সময় ফিরিয়ে দেয়। অন্যদিকে, স্লিপ লাইব্রেরি ফাংশনটি অনেক পুরানো সিস্টেমে অ্যালার্ম সিসকালের মাধ্যমে প্রয়োগ করা হয়, সুতরাং এটি শুধুমাত্র একটি সংকেত সরবরাহ করে কাজ করে। সংকেতের অনুপস্থিতির কারণে উইন্ডোজ স্লিপ ফাংশনটি অ-বাধাহীন (থ্রেড বা এর প্রক্রিয়াটি বন্ধ করা ছাড়া), যদিও সম্পর্কিত স্লিপএক্স ফাংশনটি থ্রেডটিকে একটি সতর্ক অবস্থায় রাখতে ব্যবহার করা যেতে পারে, যার ফলে থ্রেডটি ঘুমন্ত অবস্থায় এপিসি কল করা যেতে পারে। এছাড়াও, একটি থ্রেড প্রযুক্তিগতভাবে "বিঘ্নিত" হতে পারে উদাহরণস্বরূপ। একটি ভিন্ন থ্রেডে ব্যতিক্রমের কারণে প্রক্রিয়াটি শেষ হয়। কিছু সিস্টেম প্রোগ্রাম ব্যবহার করে যা কখনও কোনও ইভেন্ট লুপটি কার্যকর করে না, প্রতিটি চক্রের শুরুতে ঘুমাতে যায় এবং কোনও ইভেন্ট তাদের জাগিয়ে তোলার জন্য অপেক্ষা করে। একবার একটি ইভেন্ট প্রাপ্ত হলে, প্রোগ্রামটি ইভেন্টটি পরিবেশন করে, তারপর পরবর্তী অপেক্ষার চক্রের শুরুতে ফিরে আসে। অন্যান্য প্রোগ্রামগুলি পর্যায়ক্রমে ঘুমাতে গিয়ে এবং একটি নির্দিষ্ট সময়ের বিরতির পরে কার্যকারিতা পুনরায় শুরু করে ইভেন্টগুলির জন্য পোল করে। একবার কার্যকরকরণ পুনরায় শুরু হয়ে গেলে, প্রোগ্রামটি ইভেন্ট বা স্থিতির পরিবর্তনের জন্য ভোট দেয় এবং তারপরে ঘুমন্ত অবস্থায় যা ঘটেছিল তার পরিষেবা দেয়। অনুষ্ঠানগুলি পরিবেশন করার পরে, প্রোগ্রামটি পরবর্তী সময়ের ব্যবধানের জন্য আবার ঘুমাতে যায়। এই ধরনের প্রোগ্রামগুলির মাধ্যমে নির্দিষ্ট ধরনের হার্টবিট ইভেন্ট বা কিপ-অ্যালাইভ সংকেত তৈরি করা যেতে পারে। একটি চলমান প্রোগ্রাম বা কোডের কার্যকারিতা ধীর করার জন্য স্লিপ () ফাংশন কলটি স্বল্প সময়ের জন্য বারবার কল করা যেতে পারে। এই পদ্ধতিতে থ্রটলিং কোড অতিরিক্ত গরম করার হার্ডওয়্যারের প্রভাবগুলি হ্রাস করার জন্য বা লিগ্যাসি প্রোগ্রামগুলির জন্য সময় সমস্যাগুলি সহজ করার জন্য একটি মোটা প্রক্রিয়া সরবরাহ করে। সফ্টওয়্যারের কার্যকারিতার গতি নিয়ন্ত্রণের জন্য সাইকেল চালানোর ঘুম এবং দৌড়ের অবস্থার নেতিবাচক দিক হল যে ইন্টারেক্টিভ সফ্টওয়্যার একটি উল্লেখযোগ্য নড়াচড়া অর্জন করবে যদি খুব কম সময় জেগে কাটানো হয়, খুব বেশি সময় ঘুমিয়ে কাটানো হয়, বা উভয়ের সংমিশ্রণ হয়। একটি নিরবচ্ছিন্ন ঘুমের অবস্থা হল একটি ঘুমের অবস্থা যা এখনই একটি সংকেত পরিচালনা করবে না। এটি শুধুমাত্র একটি অপেক্ষারত সম্পদ উপলব্ধ হওয়ার ফলস্বরূপ বা সেই অপেক্ষার সময় একটি সময়সীমা শেষ হওয়ার পরে জেগে উঠবে (যদি নির্দিষ্ট করা থাকে যখন ঘুমিয়ে রাখা হয়)। এটি বেশিরভাগই ডিস্ক বা নেটওয়ার্ক আইও (ইনপুট/আউটপুট)-এর জন্য অপেক্ষা করা ডিভাইস ড্রাইভারদের দ্বারা ব্যবহৃত হয়। যখন প্রক্রিয়াটি নিরবচ্ছিন্নভাবে ঘুমিয়ে থাকে, তখন ঘুমের সময় জমা হওয়া সংকেতগুলি লক্ষ্য করা যায় যখন প্রক্রিয়াটি সিস্টেম কল বা ট্র্যাপ থেকে ফিরে আসে। ইউনিক্স-সদৃশ সিস্টেমে 'পিএস-এল' কমান্ডটি কোনও প্রক্রিয়ার নিরবচ্ছিন্ন ঘুমের অবস্থার জন্য কোড "ডি" ব্যবহার করে। এই ধরনের প্রক্রিয়াগুলি সিগকিল দিয়েও ধ্বংস করা যায় না এবং এগুলি থেকে মুক্তি পাওয়ার একমাত্র অ-পরিশীলিত উপায় হল সিস্টেমটি পুনরায় চালু করা। আরও দেখুন সিগন্যাল সিস্টেম টাইম স্লিপ (কমান্ড) স্লিপ মোড ওয়েট (সিস্টেম কল) রেফারেন্স প্রসেস (কম্পিউটিং) থ্রেড (কম্পিউটিং)