Shortest Remaining Time First (SJF with Preemption) CPU Scheduling

Hashemi Rafsan
3 min readMay 26, 2020

--

ধরুন আপনার CPU তে A1, B1, C1, D1 চার টি প্রসেস Ready Queue তে চলে এসেছে। এখন আমরা প্রসেস গুলো কে Shortest Remaining Time First (SJF with Pre-emption) এর টার্ম ব্যবহার করে সমাধান করার চেষ্টা করব।

কিন্তু তার আগে জানতে Pre-emption কি বা কিভাবে কাজ করে।
Pre-emption হচ্ছে একটি প্রসেস কে পুরোপুরি Execute না করে একটি নির্দিষ্ট সময় পর পর Execute করে যতক্ষণ পর্যন্ত Burst time অবশিষ্ট থাকে ।
এর আগের টপিক Shortest First Job থেকে আমরা জেনেছিলাম এই Scheduling এ Burst Time যার কম তাঁকেই বেশি প্রাধান্য দেয়া হয় এবং যতক্ষণ না পর্যন্ত একটি প্রসেস শেষ না হয় অন্য প্রসেস Execute হয় না (Non-preempitive)।

Shortest Remaining Time First এটিতেও Burst Time এর উপর ভিত্তি করে Execute করা হয় তবে একটি নির্দিষ্ট সময় পর পর । তবে যদি কখন ও একাধিক প্রসেস এর Burst time সমান হয়ে যায় তখন যে প্রসেস টি আগে Arrive করেছে সেটা আগে Execute হবে ।

চলুন এবার প্রসেস গুলোর Arrival time , Burst time এর উপর নির্ভর করে প্রসেস গুলোর একটা তালিকা তৈরি করিঃ

তালিকা অনুযায়ী A1 এর Arrival time যেহেতু ০ সেহেতু A1 ই প্রথম Ready Queue তে চলে গেল Execution শুরু করার জন্য।

এবার দেখা যাচ্ছে একটি নির্দিষ্ট সময় পর্যন্ত A1 প্রসেস টি চলেছিল, এবং A1 এঁর Burst time নির্দিষ্ট সময় কমে গিয়েছে, এখন দেখতে হবে এই সময়ে অন্য কোন প্রসেস Ready Queue তে চলে এসেছে কিনা ।
তালিকা অনুযায়ী দেখা যাচ্ছে এই সময়ে অন্য কোন প্রসেস Ready Queue তে আসে নি সুতরাং A1 প্রসেস টিই আবার Execute হবে

এবার যদি আমরা আবার দেখি একটি নির্দিষ্ট সময় পর্যন্ত A1 প্রসেস টি আবার চলেছিল, এবং A1 এঁর Burst time নির্দিষ্ট সময় কমে গিয়েছে, এখন দেখতে হবে এই সময়ে অন্য কোন প্রসেস Ready Queue তে চলে এসেছে কিনা ।

হ্যাঁ এইবার B1 প্রসেসটি Ready Queue তে চলে এসেছে এবং B1 এঁর Burst time হচ্ছে ২ । আগে থেকে যেহেতু A1, Ready Queue তে আছে এবং B1 ও যেহেতু চলে এসেছে এখন আমরা দেখবো কোনটির Burst time কম এবং সেটা কে আগে Execute করবো ।

আবার যদি আমরা দেখি একটি নির্দিষ্ট সময় পর্যন্ত A1 প্রসেস টি চলেছিল, এবং A1 এঁর Burst time নির্দিষ্ট সময় কমে গিয়েছে, এখন দেখতে হবে এই সময়ে অন্য কোন প্রসেস Ready Queue তে চলে এসেছে কিনা ।

হ্যাঁ এইবার C1 প্রসেসটি Ready Queue তে চলে এসেছে এবং C1 এঁর Burst time হচ্ছে ৩ । আগে থেকে যেহেতু B1, Ready Queue তে আছে এবং C1 ও যেহেতু চলে এসেছে এখন আমরা দেখবো কোনটির Burst time কম এবং সেটা কে আগে Execute করবো ।

এবার ও আমরা আগের উপায় ব্যবহার করে যেটির Burst time কম সেটিকে আগে Execute করেছি এবং এভাবে যদি আমরা পরের গুলো কে ও Execute করি তাহলে তালিকা টি দাঁড়াবে এমনঃ

আর এভাবেই আমরা Shortest Remaining Time First পব্দতিতে ৪ টি প্রসেসকে Execute করে ফেললাম । আরও জানতে অবশ্যই গুগল করতে হবে।

--

--

No responses yet