কম্পিউটার

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


প্রদত্ত প্রক্রিয়া, যথাক্রমে একটি প্রক্রিয়ার বিস্ফোরণের সময় এবং একটি কোয়ান্টাম সীমা; কাজটি হল অপেক্ষার সময়, টার্নঅ্যারাউন্ড টাইম এবং তাদের নিজ নিজ গড় সময় খুঁজে বের করা এবং প্রিন্ট করা সংক্ষিপ্ততম চাকরির প্রথম শিডিউলিং অ-প্রিমম্পটিভ পদ্ধতি ব্যবহার করে।

সংক্ষিপ্ততম কাজ প্রথম সময়সূচী কি?

সংক্ষিপ্ততম কাজের প্রথম সময়সূচী হল চাকরি বা প্রক্রিয়া নির্ধারণের অ্যালগরিদম যা অপ্রত্যাশিত সময়সূচী শৃঙ্খলা অনুসরণ করে। এতে, শিডিউলার অপেক্ষার সারি থেকে ন্যূনতম সমাপ্তির সময় সহ প্রক্রিয়াটি নির্বাচন করে এবং সেই কাজ বা প্রক্রিয়াটিতে CPU বরাদ্দ করে। FIFO অ্যালগরিদমের চেয়ে শর্টেস্ট জব ফার্স্ট বেশি আকাঙ্খিত কারণ SJF বেশি অনুকূল কারণ এটি গড় অপেক্ষার সময় কমিয়ে দেয় যা থ্রুপুট বাড়াবে।

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

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

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

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

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

উদাহরণ

আমাদেরকে দেওয়া হল P1, P2, P3, P4 এবং P5 প্রসেসগুলির সাথে তাদের সংশ্লিষ্ট বিস্ফোরণের সময় নীচে দেওয়া হল

প্রক্রিয়া বার্স্ট টাইম
P1 4
P2 2
P3 8
P4 1
P5 9

যেহেতু P4 প্রক্রিয়ার বিস্ফোরণের সময়টি সমস্ত প্রক্রিয়ার মধ্যে সর্বনিম্ন তাই এটি প্রথমে CPU বরাদ্দ করা হবে। এর পরে, P2 তারপর P1, P3 এবং P5 সারিবদ্ধ হবে।

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

গ্যান্ট চার্টের ভিত্তিতে গড় অপেক্ষার সময় গণনা করা হয়। P1-কে 3-এর জন্য অপেক্ষা করতে হবে, P2-কে 1-এর জন্য অপেক্ষা করতে হবে, P3-কে 7-এর জন্য অপেক্ষা করতে হবে, P4-কে 0-এর জন্য অপেক্ষা করতে হবে এবং P5-কে 15-এর জন্য অপেক্ষা করতে হবে। সুতরাং, তাদের গড় অপেক্ষার সময় হবে −

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

অ্যালগরিদম

StartStep 1-> ফাংশনে swap(int *a, int *b) সেট temp =*a Set *a =*b সেট *b =temp ধাপ 2-> ফাংশন arrangeArrival(int num, int mat[][][] 3]) লুপ ফর i=0 এবং i ম্যাট[1][j+1] হয় তাহলে, এর জন্য k=0 এবং k<5 এবং k++ কল ফাংশন swap(mat[k][j], mat[k][j+1])ধাপ 3-> ফাংশন সমাপ্তির সময় (int num, int mat[][3]) ঘোষণা করুন টেম্প, ভ্যাল সেট ম্যাট[3][0] =ম্যাট[1][0] + ম্যাট[2][0] সেট ম্যাট[5][0] =ম্যাট[3][0] - ম্যাট[1][ 0] সেট ম্যাট[4][0] =ম্যাট[5][0] - ম্যাট[2][0] লুপ ফর i=1 এবং i
=mat[1][j] &&low>=mat[2][j] তারপর, সেট low =mat[2 [j] সেট ভ্যাল =j সেট ম্যাট[3][val] =temp + ম্যাট[2][val] সেট ম্যাট[5][val] =ম্যাট[3][val] - mat[1][val] সেট ম্যাট[4][ভাল] =ম্যাট[5][ভাল] - ম্যাট[2][ভাল] লুপ ফর k=0; k<6; k++ কল ফাংশন swap(mat[k][val], mat[k][i])ধাপ 4-> ফাংশনে int main() ডিক্লেয়ার এবং সেট num =3, টেম্প ডিক্লেয়ার এবং সেট ম্যাট[6][3] ={1, 2, 3, 3, 6, 4, 2, 3, 4} প্রিন্ট প্রসেস আইডি, আগমনের সময়, i=0 এবং i 

উদাহরণ

নেমস্পেস std;void swap(int *a, int *b) { int temp =*a; *a =*b; *b =temp;} void arrangeArrival(int num, int mat[][3]) { for(int i=0; i mat[1][j+1]) { for(int k=0; k<5; k++) { swap(mat[k][j], mat[ k][j+1]); } } } }} void completiontime(int num, int mat[][3]) { int temp, val; ম্যাট[3][0] =ম্যাট[1][0] + ম্যাট[2][0]; ম্যাট[5][0] =মাদুর[3][0] - মাদুর[1][0]; ম্যাট[4][0] =মাদুর[5][0] - মাদুর[2][0]; জন্য(int i=1; i =mat[1][j] &&low>=mat[2][j]) { low =mat[2][j]; val =j; } } mat[3][val] =temp + mat[2][val]; ম্যাট[5][ভাল] =ম্যাট[3][ভাল] - ম্যাট[1][ভাল]; ম্যাট[4][ভাল] =ম্যাট[5][ভাল] - ম্যাট[2][ভাল]; জন্য(int k=0; k<6; k++) { swap(mat[k][val], mat[k][i]); } }} int main() { int num =3, temp; int mat[6][3] ={1, 2, 3, 3, 6, 4, 2, 3, 4}; cout<<"ব্যবস্থা করার আগে...\n"; cout<<"প্রসেস আইডি\tআগমন সময়\tবার্স্ট টাইম\n"; for(int i=0; i

আউটপুট

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


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

  2. C++ এ পিরামিডের আয়তনের জন্য প্রোগ্রাম

  3. QuickSort-এর জন্য C++ প্রোগ্রাম?

  4. প্রথম n প্রাকৃতিক সংখ্যার বর্গের সমষ্টির জন্য C++ প্রোগ্রাম?