الگوریتم HRRN – آموزش و توضیح به زبان ساده
الگوریتم HRRN یا «بالاترین نسبت پاسخ» یکی از الگوریتمهای زمان بندی CPU است که عملیات اجرای پردازشها را با روش سریعتر، عادلانهتر و کارآمدتری زمانبندی میکند. این الگوریتم از نوع الگوریتمهای انحصاری است و به عنوان یکی از بهینهترین روشهای زمانبندی CPU شناخته میشود. «زمان بندی پردازشها» (Process Scheduling) در سیستم عامل به فرایندی گفته میشود که به کمک آن، میتوان تصمیم گرفت، کدام پردازش، CPU را اشغال کند و کدام پردازشها برای اجرا شدن در نوبت بمانند. هدف اصلی از فرایند زمانبندی CPU این است که سیستم عامل حداقل یکی از پردازشهای در دسترس را از صف پردازشهای آماده به اجرا برای زمانهای بیکار شدن CPU از پیش انتخاب کرده باشد. الگوریتم HRRN یا تکنیک زمانبندی «بالاترین نسبت پاسخ» (Highest Response Ratio Next) بخشی از زمانبندی CPU به روش انحصاری است.
- با مفهوم الگوریتم HRRN و نحوه عملکرد آن در زمانبندی پردازشها آشنا میشوید.
- میتوانید مزایا و معایب این الگوریتم را درک و تحلیل کنید.
- مراحل پیادهسازی الگوریتم HRRN را به شکل گامبهگام یاد میگیرید.
- با مثال عملی، شیوه محاسبه نسبت پاسخدهی را تشخیص میدهید.
- میتوانید پیادهسازی این الگوریتم را در زبانهای مختلف برنامهنویسی انجام دهید.
- به درک بهتری از کاربرد الگوریتم HRRN در بهینهسازی زمانبندی دست مییابید.


در این مطلب از مجله فرادرس درباره الگوریتم بالاترین نسبت پاسخ برای زمانبندی CPU و مزایا و معایب آن با بیان جزئیات، بحث کردهایم. همچنین، سعی میکنیم که فرایند اجرای این عملیات زمانبندی را با کمک مثالها، الگوریتمها و برنامههای مختلف نمایش دهیم. یکی از مهمترین فوائد الگوریتم HRRN «جلوگیری از گرسنگی» (Starvation Prevention) است. «گرسنگی» یا «قحطیزدگی» در علوم کامپیوتر، به مشکلی میگویند که در طی آن پردازشی به دلیل اولویت پایینتر نسبت به سایر پردازشها خیلی دیر یا حتی هیچگاه موفق به دسترسی به منبع CPU نمیشود.
الگوریتم HRRN چیست؟
الگوریتم HRRN یکی از بهینهترین روشهای زمانبندی CPU است. این الگوریتم توسط «برینچ هانسن» (Brinch Hansen) توسعه پیدا کرده تا از روی دادن مشکل گرسنگی جلوگیری کند. در الگوریتمهای «اول، کوتاهترین کار» (Shortest Job First) و «بعدا کوتاهترین کار» (Shortest Job Next) با مشکل گرسنگی روبهرو میشویم.
عبارت HRRN سرنامی از واژههای عبارت «Highest Response Ratio Next» است. این الگوریتم از نوع الگوریتمهای انحصاری یا «Non-Preemptive» است. به این معنا که الگوریتم HRRN هیچ پردازشی را بعد از شروع شدن متوقف نمیکند - مگر تا زمانی که فرایند اجرای پردازش به پایان برسد. - زمانبندی HRRN بر اساس پارامتر اضافی پایهگذاری شده است که به نام «نسبت پاسخ» (Response Ratio) شناخته میشود. در این نوع از مسائل، تعداد N پردازش با «زمان ورود» (Arrival Time) و «زمان تکمیل فرایند» (Burst Time) به ازای هر کدام داده میشود. هدف این است که میانگین زمان انتظار برای اجرا و میانگین زمان تکمیل فرایند را با استفاده از الگوریتم HRRN محاسبه کنیم.

همینطور که از نام الگوریتم مشخص است، در ابتدا باید نسبت پاسخ را برای همه پردازشهای در دسترس مشخص کنیم، سپس هر کدام که بالاترین نسبت پاسخ را داشت انتخاب میکنیم. هر پردازشی که انتخاب شد تا زمان تکمیل فرایندش به طور کامل، اجرا خواهد شد. در پایین فرمول محاسبه نسبت پاسخ را نمایش دادهایم.
نسبت پاسخ
در فرمول بالا WT نمایانگر زمان انتظار برای هر پردازش و BT نمایانگر زمان تکمیل فرایند برای هر پردازش است.
الگوریتمهای زمانبندی انواع مختلفی دارند. برای مثال چند مورد از این الگوریتمهای را در فهرست زیر معرفی کردهایم.
- الگوریتم FCFS
- الگوریتم RR
- الگوریتم HRRN
- الگوریتم SJF
- و غیره
مزایا و معایب الگوریتم HRRN
همینطور که میدانیم هر الگوریتمی بر اساس مزایا و نیازهایی طراحی شده است. اما از طرف دیگر، بیشتر الگوریتمها هم دارای محدودیتها و معایب خاص خود هستند. الگوریتم HRRN هم از این قضیه مستثنا نیست. در این بخش به معرفی مزایا و معایب این الگوریتم پرداختهایم.
مزایا
به صورت مختصر و مفید میتوان مزایای الگوریتم «بالاترین نسبت پاسخ» را در سه مورد کلی زیر، خلاصه کرد.
- این الگوریتم زمانبندی نسبت به الگوریتم زمانبندی «اول کوتاهترین کار» ( Shortest Job First) بازدهی بیشتری دارد.
- در این تکنیک زمان انتظار برای پردازشهای طولانی کاهش پیدا میکند. در عین حال CPU، بسته به نسبت پاسخ پردازشهای کوتاهتر هم اختصاص داده میشود.
- با استفاده از الگوریتم HRRN، توان عملیاتی افزایش پیدا میکند.
معایب
معایب این الگوریتم را نیز میتوان به صورت خلاصه به صورت موارد فهرست شده در زیر بیان کرد.
- از آنجا که زمان مورد نیاز برای اجرای هیچ فرایندی را نمیتوان از قبل تعیین کرد، این الگوریتم زمانبندی، قابل پیادهسازی نیست.
- امکان دارد که CPU با «سربار» (Overloading) روبهرو شود.
توجه داشته باشید که هر کدام از الگوریتمهای زمانبندی پردازشهای CPU مزایا و معایب خاص خود را دارند. مواردی مانند الگوریتم RR و الگوریتم FCFS نیز دارای مزایا و معایب خاص خود هستند. بنابراین نمیتوان هیچ الگوریتمی پیدا کرد که معایبی نداشته باشد. فقط باید به دنبال انتخاب بهینهترین الگوریتم گشت.
آشنایی با نوشتن الگوریتم در فرادرس
مطالعه این مطلب به این معنا است که تا حد خوبی با الگوریتمها آشنا هستیم. الگوریتمها در حال حاضر نقش بسیار کلیدی در اکثر پلتفرمها و برنامههای بزرگ و مهم بازی میکنند. برنامههای بزرگتر و کاربردیتر نیاز به مدیریت بهتری هم در مصرف منابع زمان و حافظه دارند. طراحی الگوریتم و پیادهسازی آن خود، تخصص دیگری است که برنامهنویسان خبره باید بر آن مسلط باشند. در ادامه این مطلب، نحوه نوشتن الگوریتم HRRN را نمایش دادهایم، ولی در جایگاه برنامهنویس باید به صورت مستقل نیز توانایی نوشتن الگوریتمها را داشته باشید.

فرادرس به عنوان یکی از معتبرترین تولید کنندگان فیلمهای آموزشی فارسی در کشور، فیلمهای آموزشی خوبی را درباره انواع الگوریتمها و تکنیکهای پیادهسازی و استفاده از هر کدام منتشر کرده است. فیلمهای آموزشی فرادرس با توجه به دو حوزه برنامهنویسی عملی و آموزشی تولید شدهاند. هر توسعهدهنده نرمافزاری با مشاهده این فیلمها میتواند مهارت و دانش خود را برای حل مسائل الگوریتمی به طرز بسیار خوبی افزایش دهد. از طرف دیگر دانشجویان و دانشآموزان نیز با کمک این فیلمها میتوانند خود را برای آزمونهای آکادمیک مانند کنکور ارشد و دکتری آماده کنند.
در پایین چهار مورد از فیلمهای آموزشی فرادرس درباره الگوریتم را معرفی کردهایم. هر کدام را که مایل هستید، با توجه به نیاز خود، انتخاب کنید. البته با کلیک بر روی تصویر بالا میتوانید به صفحه اصلی این مجموعه آموزشی هدایت شده و از باقی فیلمها نیز دیدن کنید.
- فیلم آموزش طراحی الگوریتم به صورت جامع و با مفاهیم کلیدی در فرادرس
- فیلم آموزش رابطه های بازگشتی در طراحی الگوریتم و ساختمان گسسته همراه با مرور و تست کنکور ارشد در فرادرس
- فیلم آموزش طراحی الگوریتم همراه با حل مثال های عملی در فرادرس
- فیلم آموزش حل سوالات آزمون های استخدامی طراحی الگوریتم در فرادرس
زمان بندی بالاترین نسبت پاسخ
همینطور که در مطالب بالا بیان شد، معیار زمانبندی بر اساس نسبت پاسخ تعیین میشود. در این تکنیک، پردازش بعدی که در صف پردازشهای آماده برای اجرا قرار دارد، بر اساس بالاترین نسبت پاسخ انتخاب شده و به CPU ارسال میشود.
نسبت پاسخ هم بر اساس فرمول گفته شده در بالا یعنی محاسبه میشود.
مثال
جدول نمایش داده شده در پایین را به عنوان مثالی از بالاترین نسبت پاسخ در نظر میگیریم، در این جدول سه ستون وجود دارد. در این ستونها اطلاعات مربوط به پردازشها و زمان ورود و تکمیل انجام فعالیتشان ذخیره شده است. همانطور که به پیش میرویم، میبینیم که نمودار Gantt چگونه توسعه پیدا میکند.
| پردازش | زمان ورود پردازش | «زمان مورد نیاز برای انجام کار» (Burst Time) |
| P1 | 0 | 2 |
| P2 | 2 | 6 |
| P3 | 4 | 7 |
| P4 | 5 | 3 |
| P5 | 7 | 5 |
فرایند الگوریتم زمانبندی CPU با روش بالاترین نسبت پاسخ به صورت زیر انجام میشود.
در زمان ۰
تنها فرایند P1 در دسترس است. بنابراین اجرای این فرایند شروع شده و تا زمان به پایان رسیدن تکمیل کار ادامه پیدا میکند.
ستونی به اسم ستون «زمان تکمیل عملیات» (Completion Time) به جدول اضافه شده است و جدول به شکل زیر تغییر میکند.
| «زمان ورود» (Arrival Time) - پردازش | «زمان مورد نیاز برای انجام کار» (Burst Time) | «زمان تکمیل عملیات» (Completion Time) |
| P1 - 0 | 2 | 2 |
| P2 - 2 | 6 | |
| P3 - 4 | 7 | |
| P4 - 5 | 3 | |
| P5 - 7 | 5 |
به ترتیب صف مربوط به وظایف انجام شده به شکل زیر شروع به پر شدن میکند.
| P1 |
در زمان ۲
در این زمان فرایندهای P1 و P2 در دسترس هستند. اما میدانیم که HRRN از نوع الگوریتمهای انحصاری است. بنابراین اول از همه باید روند اجرای پردازش در حال فعالیت - P1 - به پایان برسد و سپس پردازش بعدی - P2 - برای اجرا به CPU ارسال شود. بعد از به اتمام رسیدن کار P1 از آنجا که تنها پردازش در صف اجرا پردازش P2 است، P2 به CPU ارسال میشود.
پردازش P2 هم فرایند اجرای خود را در زمان ۸ به پایان میرساند. بنابراین جدول به شکل زیر تکمیل میشود.
| «زمان ورود» (Arrival Time) - پردازش | «زمان مورد نیاز برای انجام کار» (Burst Time) | «زمان تکمیل عملیات» (Completion Time) |
| P1 - 0 | 2 | 2 |
| P2 - 2 | 6 | 8 |
| P3 - 4 | 7 | |
| P4 - 5 | 3 | |
| P5 - 7 | 5 |
باز هم صف مربوط به وظایف پردازش شده، تکمیل میشود.
| P1 | P2 |
در زمان ۸
در این زمان پردازشهای P3 و P4 و P5 در دسترس هستند. زیرا زمان رسیدن به صف همه این پردازشها تا زمان ۸ اتفاق افتاده است.
از انجا که در صف پردازشهای آماده به اجرا سه پردازش مختلف وجود دارند، برای دسترسی به CPU باید همه آنها زمانبندی شوند. در نتیجه با استفاده از فرمول نمایش داده شده در بالای مطلب، «بالاترین نسبت پاسخ» را برای هر کدام از پردازشهای P3 و P4 و P5 حساب میکنیم.
نسبت پاسخ برای P3 برابر است با [(8 - 4) + 7]/ 7 = 1.57
نسبت پاسخ برای P4 برابر است با [(8 - 5) + 3]/ 3 = 2
نسبت پاسخ برای P5 برابر است با [(8 - 7) + 5]/ 5 = 1.2
با توجه به محاسبات بالا، نسبت پاسخ برای P4 بالاترین نسبت است. بنابراین پردازشی که باید در زمانبندی به عنوان گزینه بعدی به CPU ارسال شود P4 است.
| «زمان ورود» (Arrival Time) - پردازش | «زمان مورد نیاز برای انجام کار» (Burst Time) | «زمان تکمیل عملیات» (Completion Time) |
| P1 - 0 | 2 | 2 |
| P2 - 2 | 6 | 8 |
| P3 - 4 | 7 | |
| P4 - 5 | 3 | 11 |
| P5 - 7 | 5 |
در نتیجه صف مربوط به وظایف پردازش شده به شکل زیر میشود.
| P1 | P2 | P4 |
در زمان ۱۱
در این زمان P3 و P5 پردازشهای در دسترس هستند. از آنجا که زمان رسیدن این دو پردازش از صف آماده به اجرا درون زمان ۱۱ است، هر دوی این پردازشهای آماده ارسال به پردازنده هستند.

باز هم به شکل بالا باید عمل کنیم. یعنی در واقعی دو پردازش P3 و P5 به صورت همزمان آماده اشغال CPU هستند. باید بین این دو پردازش نسبت پاسخ محاسبه شود تا پردازشی با بالاترین Response Ratio شناسایی شده و در اول صف انتظار برای اشغال CPU قرار بگیرد.
نسبت پاسخ برای P3 برابر است با [(11 - 4) + 7)/ 7 = 2
نسبت پاسخ برای P5 برابر است با [(11 - 7) + 5)/ 5 = 1.8
با توجه به محاسبات بالا، بالاترین نسبت پاسخ به P3 تعلق میگیرد. بنابراین پردازشی که باید بعد از پایان عملیات CPU به آن ارسال شود P3 است.
| «زمان ورود» (Arrival Time) - پردازش | «زمان مورد نیاز برای انجام کار» (Burst Time) | «زمان تکمیل عملیات» (Completion Time) |
| P1 - 0 | 2 | 2 |
| P2 - 2 | 6 | 8 |
| P3 - 4 | 7 | 18 |
| P4 - 5 | 3 | 11 |
| P5 - 7 | 5 |
در نتیجه صف وظایف پردازش شده به شکل زیر میشود.
| P1 | P2 | P4 | P3 |
در زمان ۱۸
الان بعد از تکمیل عملیات P3 تنها پردازشی که در صف اجرا باقی مانده P5 است. بنابراین، P5 پردازش بعدی است که به CPU ارسال میشود و تا پایان فرایند اجرا هم CPU را در اختیار خودش نگهمیدارد.
| «زمان ورود» (Arrival Time) - پردازش | «زمان مورد نیاز برای انجام کار» (Burst Time) | «زمان تکمیل عملیات» (Completion Time) |
| P1 - 0 | 2 | 2 |
| P2 - 2 | 6 | 8 |
| P3 - 4 | 7 | 18 |
| P4 - 5 | 3 | 11 |
| P5 - 7 | 5 |
در نهایت، صف مربوط به وظایف پردازش شده به شکل زیر میشود.
| P1 | P2 | P4 | P3 | P5 |
همینطور که مشاهده میشود، در نهایت میتوانیم زمان کامل اجرای پردازشها را با استفاده از نمودار Gantt بدست بیاوریم.
تکمیل جدول و استخراج اطلاعات
الان میتوانیم از روی جدول اطلاعات بیشتری از قبیل «زمان مورد نیاز برای تکمیل فعالیت» (Turn Around Time | TAT) و «زمان انتظار» (Waiting Time | WT) را بدست بیاوریم.
- زمان مورد نیاز برای تکمیل فعالیت یا TAT برابر است با زمان تکمیل عملیات منهای زمان رسیدن پردازش.
- زمان انتظار یا WT برابر است با زمان مورد نیاز برای تکمیل فعالیت منهای زمان مورد نیاز برای انجام کار.
بنابراین، جدول نهایی به شکل زیر خواهد بود.
| Arrival Time - Burst Time - پردازش | Completion Time - Turn Around Time - Waiting Time | نسبت پاسخ |
| P1 - 0 - 2 | 0 - 2 - 2 | 0 = 0 - 0 |
| P2 - 2 - 6 | 0 - 6 - 8 | 0 = 2 - 2 |
| P3 - 4 - 7 | 7 - 14 - 18 | 7 = 4 - 11 |
| P4 - 5 - 3 | 3 - 6 - 11 | 3 = 5 - 8 |
| P5 - 7 - 5 | 11 - 16 - 23 | 11 = 7 - 18 |
همچنین با تولید جدول بالا میتوان اطلاعات زیر را نیز از جدول استخراج کرد.
- زمان کل تکمیل فعالیت برابر است با ۴۴، بنابراین میانگین زمان مورد نیاز برای تکمیل فعالیت به ازای هر پردازش برابر با ۸٫۸ است.
- مجموع زمان انتظار برابر است با ۲۱، بنابراین میانگین زمان انتظار برابر با ۴٫۲ است.
- مجموع زمان پاسخ برابر است با ۲۱، بنابراین میانگین زمان پاسخ به ازای هر پردازش برابر با ۴٫۲ است.
نکته جالب توجه این است که میزان مجموع کل و میانگین زمان پاسخ به ترتیب با میزان مجموع کل و میانگین زمان انتظار برابر هستند.
مراحل پیاده سازی الگوریتم HRRN
الگوریتم، شالوده و بنیان اصلی حل یک مساله است. طراحی یک الگوریتم مناسب برای حل مسائل، نقش بسزایی در نوشتن کد برنامهنویسی آن دارد. اگر افراد درک درستی از مراحل حل مساله به زبان عامیانه داشته باشند، یعنی بتوانند مراحل حل مساله، شامل اجزای یک مساله، ارتباط بین این اجزا، نحوه انجام محاسبات برای رسیدن به پاسخ منطقی و ایجاد خروجی مورد انتظار را یاد بگیرند، آنگاه به راحتی میتوانند برای مساله خود مستندات و نیازمندیهای لازم را بنویسند و آن را به کد برنامهنویسی تبدیل کنند. به همین منظور فرادرس فیلم آموزش مبانی برنامه نویسی درباره الگوریتم و فلوچارت با رویکرد حل مساله را تولید و منتشر کرده است. برای کمک به مخاطبان مجله لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
در ادامه این بخش به دنبال پیادهسازی این الگوریتم در زبانهای برنامه نویسی گوناگون هستیم. اما در ابتدا روند کاری الگوریتم را به صورت گام به گام بیان میکنیم.
- تعداد کل پردازشها، زمان ورود هر پردازش و زمان مورد نیاز برای انجام کار آن پردازش را وارد کنید.
- با توجه به زمان ورود پردازشها چینش همه آنها را مرتب کنید.
- در زمانهای داده شده، نسبتهای پاسخ را برای پردازشهای در دسترس محاسبه کرده و پردازش مناسب را برای تکمیل عملیات زمانبندی انتخاب کنید.
- میزان زمان مورد نیاز برای تکمیل فعالیت را از طریق کم کردن زمان ورود از زمان تکمیل عملیات محاسبه کنید. (زمان مورد نیاز برای تکمیل فعالیت = زمان ورود - زمان تکمیل عملیات)
- میزان زمان انتظار را با کم کردن زمان مورد نیاز برای انجام کار از زمان مورد نیاز برای تکمیل فعالیت محاسبه کنید. (زمان انتظار = زمان مورد نیاز برای انجام کار - زمان مورد نیاز برای تکمیل فعالیت)
- اگر زمان مورد نیاز برای تکمیل فعالیت را تقسیم بر زمان مورد نیاز برای انجام کار کنیم، حالت نرمال شده زمان مورد نیاز برای تکمیل فعالیت بدست میآید.
- به ازای همه پردازشها زمانهای انتظار و تکمیل فعالیت را با یکدیگر جمع ببندید، سپس تقسیم بر تعداد کل پردازشها بکنید. با این کار میانگین زمانهای انتظار و تکمیل فعالیت بدست میآیند.
در ادامه این بخش تمام مراحل بالا را برای پیادهسازی الگوریتم HRRN با کمک شش زبان برنامهنویسی مختلف کدنویسی کردهایم.
پیاده سازی الگوریتم HRRN با زبان ++C
در این قسمت از مطلب، الگوریتم HRRN یا بالاترین نسبت پاسخ را با استفاده زبان برنامه نویسی ++C کدنویسی کردهایم.
این پیادهسازی از روی روند کاری بیان شده در ابتدای بخش، انجام شده است.
پیاده سازی الگوریتم HRRN با زبان C
در این قسمت از مطلب، الگوریتم HRRN یا بالاترین نسبت پاسخ را با استفاده زبان برنامه نویسی C کدنویسی کردهایم.
این پیادهسازی از روی روند کاری بیان شده در ابتدای بخش، انجام شده است.
پیاده سازی الگوریتم HRRN با زبان جاوا
در این قسمت از مطلب، الگوریتم HRRN یا بالاترین نسبت پاسخ را با استفاده زبان برنامه نویسی جاوا کدنویسی کردهایم. این زبان برنامهنویسی در 23 مه 1995، برابر با ۲ خرداد ۱۳۷۴، توسط جیمز گاسلینگ (James Gosling) طراحی شده و به گواهی سایت معتبر Tiobe از سال 2001 همواره به عنوان اولین یا دومین زبان برنامهنویسی دنیا مطرح بوده است. برای آشنای کامل با این زبان، پیشنهاد میکنیم که مطلب زبان برنامه نویسی جاوا (Java) از صفر تا صد را از مجله فرادرس مطالعه کنید.
این پیادهسازی از روی روند کاری بیان شده در ابتدای بخش، انجام شده است.
پیاده سازی الگوریتم HRRN با زبان پایتون۳
در این قسمت از مطلب، الگوریتم HRRN یا بالاترین نسبت پاسخ را با استفاده زبان برنامه نویسی پایتون کدنویسی کردهایم.
این پیادهسازی از روی روند کاری بیان شده در ابتدای بخش، انجام شده است.
پیاده سازی الگوریتم HRRN با زبان #C
در این قسمت از مطلب، الگوریتم HRRN یا بالاترین نسبت پاسخ را با استفاده زبان برنامه نویسی #C کدنویسی کردهایم.
این پیادهسازی از روی روند کاری بیان شده در ابتدای بخش، انجام شده است.
پیاده سازی الگوریتم HRRN با زبان جاوا اسکریپت
در این قسمت از مطلب، الگوریتم HRRN یا بالاترین نسبت پاسخ را با استفاده زبان برنامه نویسی جاوا اسکریپت کدنویسی کردهایم.
این پیادهسازی از روی روند کاری بیان شده در ابتدای بخش، انجام شده است.
خروجی حاصل از اجرای کدهای بالا به صورت زیر به کاربر نمایش داده میشود.
Name Arrival time Burst time Waiting Time Turnaround Normalized TT
A 0 3 0 3 1.000000
B 2 6 1 7 1.166667
C 4 4 5 9 2.250000
E 8 2 5 7 3.500000
D 6 5 9 14 2.800000
Average waiting time: 4.000000
Average Turn Around time: 8.000000آموزش برنامه نویسی با استفاده از فیلم های پروژه محور
برای اینکه بتوانیم به بهترین شکل ممکن با سختافزار ارتباط برقرار کرده و از این نوع الگوریتمها استفاده کنیم، بسیار مهم است که در کار با زبانهای برنامهنویسی هم خبره باشیم. آموزش برنامهنویسی شامل مراحل و سطوح علمی مختلف میشود. این مسیر جالب از آموزش مطالب پایه و مقدماتی برای آشنایی با سینتکس زبان و مفاهیمی مانند حلقهها، عبارات شرطی و غیره شروع شده و تا مراحل پیشرفتهای مانند شیء گرایی ادامه پیدا میکند. اما یکی از بهترین روشها در آموزش برنامهنویس به منظور ورود به دنیای واقعی و بازار کار، معمولا اجرای تمرینات پروژه محور است.

در اجرای بعضی از تمرینات پروژه محور، حتی لازم میشود که از چند زبان برنامهنویسی و تکنولوژی مختلف در کنار هم استفاده کنیم. فرادرس به عنوان تولید کننده محتوای آموزشی در این زمینه هم فیلمهای بسیار مفیدی را تولید کرده است. در این بخش چند مورد از فیلمهای آموزشی پروژه محور برنامهنویسی توسط زبانهای مختلف را که در فرادرس آماده شده معرفی میکنیم. در فرادرس برای تهیه این فیلمهای آموزشی حداکثر حساسیت بهکار رفته تا مفیدترین گزینههای ممکن در دسترس شما قرار بگیرد.
- فیلم آموزش مقدماتی ساخت ربات تلگرام با پایتون از فرادرس
- فیلم آموزش پروژه محور برنامه نویسی تحت شبکه با C# در فرادرس
- فیلم آموزش رایگان پروژه محور JavaFX همراه با ساخت بازی Snake در فرادرس
- فیلم آموزش پروژه محور ساخت ربات اینستاگرام با سی شارپ و پایتون فرادرس
- فیلم آموزش پروژه محور ساخت بازی با Vanilla JavaScript فرادرس
جمع بندی
الگوریتم HRRN برای مدیریت زمانبندی اجرای پردازشها توسط CPU طراحی شده است. بر اساس نمرهای که به بالاترین نسبت پاسخ پردازشها اختصاص پیدا میکند، این الگوریتم، جدول زمانبندی استفاده از CPU را میچیند. HRRN از نوع الگوریتمهای «انحصاری» (Non-Preemptive) است، یعنی اینکه تا زمان به پایان رسیدن فرایند اجرای هر پردازش در CPU، بقیه پردازشها با هر اولویتی باید صبر کنند. استفاده از این الگوریتم باعث ارتقای کارایی سیستم عامل میشود.
در این مطلب از مجله فرادرس با الگوریتم HRRN آشنا شدیم. این الگوریتم برای جلوگیری از روی دادن مشکل گرسنگی توسعه یافته است. در ابتدای مطلب با الگوریتم آشنا شده و سپس روند کاری آن را با کمک مثال کوچکی، شرح دادیم.












