কম্পিউটার

FCFS শিডিউলিংয়ের জন্য সি প্রোগ্রাম


আমাদেরকে প্রসেসের সংখ্যা দেওয়া হয়েছে যেমন P1, P2, P3,......., Pn এবং তাদের সংশ্লিষ্ট বিস্ফোরণের সময়। কাজটি হল FCFS CPU শিডিউলিং অ্যালগরিদম ব্যবহার করে গড় অপেক্ষার সময় এবং গড় পরিবর্তনের সময় খুঁজে বের করা৷

অপেক্ষার সময় এবং টার্নরাউন্ড টাইম কি?

  • টার্নরাউন্ড টাইম হল একটি প্রক্রিয়া জমা দেওয়া এবং তার সমাপ্তির মধ্যে সময়ের ব্যবধান।

    টার্নরাউন্ড টাইম =একটি প্রক্রিয়ার সমাপ্তি - একটি প্রক্রিয়া জমা দেওয়া

  • ওয়েটিং টাইম হল টার্নঅ্যারাউন্ড টাইম এবং বার্স্ট টাইমের মধ্যে পার্থক্য

    অপেক্ষার সময় =টার্নঅ্যারাউন্ড সময় – বিস্ফোরণের সময়

FCFS শিডিউলিং কি?

ফার্স্ট কাম, ফার্স্ট সার্ভড (এফসিএফএস) যা ফার্স্ট ইন, ফার্স্ট আউট (এফআইএফও) নামেও পরিচিত এটি হল সিপিইউ শিডিউলিং অ্যালগরিদম যেখানে সিপিইউকে প্রসেসগুলির জন্য বরাদ্দ করা হয় যে ক্রমে তারা প্রস্তুত সারিতে সারিবদ্ধ থাকে৷

FCFS নন-প্রিম্পটিভ শিডিউলিং অনুসরণ করে যার মানে একবার একটি প্রক্রিয়ার জন্য CPU বরাদ্দ করা হলে এটি CPU ত্যাগ করে না যতক্ষণ না প্রক্রিয়াটি বন্ধ না হয় বা কিছু I/O বাধার কারণে বন্ধ হয়ে যেতে পারে।

উদাহরণ

ধরা যাক, P2, P3, P1 হিসাবে ক্রমানুসারে চারটি প্রসেস আসছে তাদের সংশ্লিষ্ট এক্সিকিউশন টাইমের সাথে নিচের টেবিলে দেখানো হয়েছে। এছাড়াও, তাদের আগমনের সময় 0 হতে হবে।

প্রক্রিয়া আগমনের আদেশ এমসেক এ সঞ্চালনের সময়
P1 3 15
P2 13
P3 2 3

Gantt চার্ট সিস্টেমে P1, P2 এবং P3 প্রক্রিয়ার অপেক্ষার সময় দেখায়

FCFS শিডিউলিংয়ের জন্য সি প্রোগ্রাম

উপরে দেখানো হিসাবে,

P2 প্রক্রিয়ার অপেক্ষার সময় হল 0

P3 প্রক্রিয়ার অপেক্ষার সময় হল 3

প্রক্রিয়া P1 এর অপেক্ষার সময় হল 6

গড় সময় =(0 + 3 + 6) / 3 =3 মিসেক।

যেহেতু আমরা আগমনের সময় 0 করে নিয়েছি তাই সময় ঘুরিয়ে দেওয়া এবং সমাপ্তির সময় একই হবে৷

উদাহরণ

ইনপুট-:প্রসেস =P1, P2, P3 বার্স্ট টাইম =5, 8, 12আউটপুট-:প্রসেস বার্স্ট ওয়েটিং টার্ন চারপাশে 1 5 0 52 8 5 133 12 13 25 গড় অপেক্ষার সময় =6.000000 গড় ঘুরার সময় =3334।> 

অ্যালগরিদম

স্টার্ট স্টেপ 1-> ফাংশনে int waittime(int proc[], int n, int burst_time[], int wait_time[]) সেট wait_time[0] =0 লুপ এর জন্য i =1 এবং i  ফাংশনে int turnaroundtime(int proc[], int n, int burst_time[], int wait_time[], int tat[] ) লুপ ফর i =0 এবং i  ফাংশনে int avgtime(int proc[], int n, int burst_time[]) ঘোষণা করুন এবং অপেক্ষা করুন [n], tat[n], total_wt =0, total_tat =0; কল ওয়েটিংটাইম(proc, n, burst_time, wait_time) কল টার্নঅরাউন্ডটাইম(proc, n, burst_time, wait_time, tat) লুপ ফর i=0 এবং i int main() ইনপুট int proc ঘোষণা করুন[ ] ={ 1, 2, 3} ঘোষণা করুন এবং শুরু করুন n =sizeof proc / sizeof proc[0] ঘোষণা করুন এবং শুরু করুন burst_time[] ={10, 5, 8} কল avgtime(proc, n, burst_time)Stop

উদাহরণ

#include // সমস্ত প্রক্রিয়ার জন্য অপেক্ষার সময় বের করার ফাংশনটি অপেক্ষার সময় (int proc[], int n,int burst_time[], int wait_time[]) {// প্রথম প্রক্রিয়ার জন্য অপেক্ষার সময় 0 অপেক্ষার_সময়[0] =0; // (int i =1; i  

আউটপুট

প্রসেস বার্স্ট ওয়েটিং টার্ন এরাউন্ড 1 5 0 52 8 5 133 12 13 25 গড় অপেক্ষার সময় =6.000000গড় ঘোরার সময় =14.333333

  1. সি++ প্রোগ্রাম ফর শর্টেস্ট জব ফার্স্ট (এসজেএফ) শিডিউলিং (প্রিমম্পটিভ)

  2. সি++ প্রোগ্রাম ফর শর্টেস্ট জব ফার্স্ট (এসজেএফ) শিডিউলিংয়ের জন্য (অ-প্রাথমিক)

  3. অগ্রাধিকার নির্ধারণের জন্য C++ প্রোগ্রাম

  4. সহজ সময়সূচীর জন্য সেরা সময় অঞ্চল রূপান্তরকারী