במדעי המחשב, **הרעבה** (באנגלית: **Starvation**) היא בעיה הנוצרת בסביבה המאפשרת ריבוי משימות (Multitasking), כאשר מתהליך מסוים נמנעת גישה לאחד ממשאבי המערכת כך שהתהליך לעולם לא יצליח לסיים את משימתו. 

הרעבה דומה בתוצאתה לקיפאון (Deadlock), אך בהרעבה אחד מהתהליכים כן מסוגל לגשת למשאבי המערכת, בעוד שבקיפאון אף אחד מהם אינו מסוגל לגשת למשאבים. הרעבה מודגמת באמצעות בעיית הפילוסופים הסועדים של אדסחר דייקסטרה.

הרעבת תהליך
-----------

הגורם להרעבה הוא אלגוריתם התזמון של סדרן התוכניות הפועל כחלק מליבת מערכת ההפעלה. אלגוריתם זה אמור לוודא חלוקת משאבים שווה בין התהליכים השונים והקצאת משאבים באופן שלא יפלה או ירעיב אף אחד מהתהליכים הזקוקים להם.

### מקור הבעיה

מערכות הפעלה רבות מפעילות אלגוריתם תזמון התומך במנגנון קדימויות לתהליכים, כך שתהליך א' שרץ בקדימות גבוהה יקבל את המשאב הנדרש לפני תהליך ב' שרץ בקדימות נמוכה יותר. אולם אם התהליך א' לא עוצר לעולם - תהליך ב' לעולם לא יוכל לקבל את המשאב שהוא זקוק לו וכך נוצרת הרעבה. במידה וקיים תהליך ג' הרץ בקדימות גבוהה מזו של תהליך א', אפילו אם תהליך ג' ממתין לתוצאת הפעולה של תהליך ב', גם הוא לא יסיים את ריצתו ולעולם ימתין לסיום פעולתו של תהליך ב'.

באופן דומה, אם תהליך א' רץ בקדימות גבוהה ותהליך ב' רץ בקדימות נמוכה, ייתכן שבזמן ריצתו של תהליך א' הצטרפו לתור תהליכים נוספים. אם תהליכים אלו בעלי עדיפות גבוהה מתהליך ב', הם יקבלו את המשאב לפני תהליך ב'. אם תהליך ב' הוא בעל עדיפות נמוכה מאוד, ייתכן מצב שבו תמיד ימתינו תהליכים נוספים בעלי עדיפות גבוהה מעדיפותו של תהליך ב'. במצב כזה תהליך ב' לעולם לא יקבל את המשאב הנדרש לו.

### הימנעות מהרעבה

אלגוריתמי תזמון מתקדמים מבטיחים שכל תהליך מקבל חלק מינימלי מהמשאבים הנדרשים כך שלעולם לא יקרה מצב בו הוא יורעב. כך למשל, נהוג להשתמש בעיקרון ההתיישנות. על פי עיקרון ההתיישנות, ככל שעובר זמן, עדיפותו של תהליך עולה. שימוש בהתיישנות מונע מצב שבו תהליך בעל עדיפות נמוכה מאוד נעקף שוב ושוב על ידי תהליכים בעלי עדיפות גבוהה ממנו. עם הזמן, תלך ותעלה עדיפותו של התהליך הממתין והוא יהיה התהליך בעל העדיפות הגבוהה ביותר.

הרעבת רשת
---------

בפרוטוקולי תקשורת מסוימים הנמצאים בשימוש בתקשורת מחשבים יש אלגוריתמי תזמון המוודאים שמשאבי הרשת זמינים לכולם ואין מחשב שמעוניין לשדר אך לא יוכל לבצע זאת. מרבית הפרוטוקולים האלו הם הפרוטוקולים היושבים בשכבה הפיזית של מודל TCP/IP שכן הם אלו ששולטים על הגישה לרשת. פרוטוקולים לדוגמה המבצעים זאת הם Ethernet ו-Wi-Fi.

| תחומים במדעי המחשב |
| --- |
| יסודות מתמטים | לוגיקה מתמטית • תורת הקבוצות • תורת המספרים • תורת הגרפים • תורת הטיפוסים • תורת הקטגוריות • אנליזה נומרית • תורת האינפורמציה |
| תורת החישוביות | תורת האוטומטים • תורת הרקורסיה • תורת הסיבוכיות • מחשוב קוונטי |
| אלגוריתמים ומבנה נתונים | אנליזה של אלגוריתמים • גאומטריה חישובית |
| שפות תכנות ומהדרים | מפרש • פרדיגמת תכנות (תכנות פרוצדורלי • תכנות מונחה עצמים • תכנות פונקציונלי • תכנות לוגי) |
| חישוב מבוזר ועיבוד מקבילי | עיבוד מקבילי • מחשוב סריגי • בקרת מקביליות |
| הנדסת תוכנה | ניתוח מערכות מידע • עיצוב תוכנה • תכנות מחשבים • שיטות פורמליות • בדיקות תוכנה • מתודולוגיית פיתוח תוכנה |
| תקשורת | ניתוב • טופולוגיית רשת • קריפטוגרפיה |
| מסד נתונים | מסד נתונים יחסי • SQL • תנועה • אינדקסים • כריית מידע • CAP theorem |
| בינה מלאכותית | חשיבה אוטומטית • בלשנות חישובית • ראייה ממוחשבת • עיבוד שפה טבעית • בינה חישובית • מערכת מומחה • למידה חישובית • רובוטיקה |
| גרפיקה | הדמיה ממוחשבת • הנפשה ממוחשבת • עיבוד תמונה |
| שפות פורמליות | שפה רגולרית • שפה חסרת הקשר • שפה תלוית הקשר • ההיררכיה של חומסקי |
| שימושים במדע | ביואינפורמטיקה • מדעים קוגניטיביים • כימיה חישובית • פיזיקה חישובית • אנליזה נומרית |