הגרעין (kernel) הוא הרכיב המרכזי של מערכת ההפעלה. מערכת ההפעלה היא התוכנה שמנהלת את המחשב. הגרעין שולט בחומרה ומתווך אותה לתוכניות שרצות.
הגרעין מנהל משאבים פיזיים כמו המעבד והזיכרון, והתקנים חיצוניים. הוא גם מנהל משאבים וירטואליים, כגון טבלת תהליכים, רשימה של התוכניות שרצות כרגע. בעזרת שכבה של אבסטרקציה (הסבר: הפשטה שמסתירה פרטים מורכבים) הגרעין מבודד תהליכים ומפשט לתכנתים את השימוש בחומרה.
תהליך הוא מופע של תוכנית שרצה. הגרעין יוצר לכל תוכנית מרחב כתובות ומטפל בטעינת הקוד ובאיתחול המחסנית. גרעינים תומכים בריבוי משימות: הם מאפשרים להריץ כמה תהליכים בו-זמנית בעזרת מתזמנים (scheduler). בריבוי משימות מוסדר (preemptive) הגרעין נותן לכל תוכנית פרוסת זמן ומחליף במהירות בין תהליכים. במערכות פשוטות יש ריבוי משימות שיתופי (cooperative), שבו התהליך מוותר על המעבדה כדי לאפשר לאחרים לרוץ.
הגרעין גם מספק תקשורת בין תהליכים (IPC). שיטות נפוצות הן זיכרון משותף והעברת מסרים. במערכות מרובות מעבדים (multiprocessing) יש צורך במנגנוני סנכרון כדי למנוע התנגשויות בעת שינוי נתונים משותפים.
הגרעין שולט בזיכרון ומאפשר גישה בטוחה לתהליכים. מיעון וירטואלי (virtual addressing) יוצר כתובות וירטואליות שנראות לתוכנית כאילו הן כתובות פיזיות. כך לכל תוכנית נראה שהיא היחידה שרצה, וזה מגן על הזיכרון שלה מפגיעה על ידי תוכניות אחרות.
כתובות וירטואליות יכולות להצביע על נתונים שלא נמצאים כרגע בזיכרון. במצב כזה הגרעין מבצע דפדוף לדרישה (demand paging): הוא כותב חלקים שלא בשימוש לדיסק וטוען נתונים חדשים לזיכרון. שיטה זו מאפשרת לתוכניות להשתמש ביותר זיכרון מאשר הזיכרון הפיזי במערכת.
הגרעין גם מחלק את הזיכרון לשטח שמור עבור הגרעין עצמו (מרחב גרעין) ולשטח עבור תוכניות משתמש. המעבד מונע מתוכניות לגשת לזיכרון הגרעין, וכך מגן על פעולתו.
התקנים חיצוניים (peripherals) כמו מסך, מדפסת וכרטיס רשת נשלטים דרך מנהלי התקנים (device drivers). דרייבר הוא תוכנה שמסבירה לגרעין כיצד לתקשר עם התקן מסוים. כאשר תוכנית מבקשת להציג דבר על המסך, הבקשה נשלחת לגרעין וממנו לדרייבר של המסך.
הגרעין שומר רשימה של התקנים זמינים. זיהוי ההתקנים יכול להיות ידני או אוטומטי דרך plug and play, בו הגרעין וסריקה של ערוצים כמו PCI ו-USB מזהים התקנים ומחפשים דרייברים מתאימים.
קריאת מערכת (system call) היא הדרך בה תוכניות מבקשות שירות מהגרעין. קריאה כזו משנה לעתים את מצב המעבד כדי לאפשר גישה למשאבים מוגנים. דוגמאות נפוצות לקריאות מערכת הן open, read, write ו-close. בדרך כלל ישנה ספרייה בשפת C או ממשק API שמסתיר את הפרטים הנמוכים של קריאות אלו.
קיימות גישות עיצוב שונות לגרעין. העיקריות הן: גרעין מונוליטי, מיקרו-גרעין וגרעין היברידי. לכל גישה יש יתרונות וחסרונות.
בגרעין מונוליטי כל שירותי מערכת ההפעלה ורוב מנהלי ההתקנים רצים במרחב הגרעין האחיד. זה נותן גישה חזקה ומהירה לחומרה. חסרונו הוא שבאג בדרייבר יכול לגרום לקריסה של כל המערכת, וגרעין גדול עשוי להיות קשה לתחזוקה. ליבות מונוליטיות מודרניות, כמו זו של לינוקס, מאפשרות טעינת מודולים בזמן ריצה כדי לצמצם את כמות הקוד הפעיל בזיכרון.
מיקרו-גרעין שומר רק את החלקים החיוניים במרחב הגרעין, כגון ניהול זיכרון בסיסי, תקשורת בין תהליכים ומתזמן מינימלי. שירותים אחרים רצים כ'שרתים' במרחב המשתמש. זה מקל על תחזוקה ובידוד שגיאות, אך הגדלת מספר המעברים בין שרת לגרעין עלולה להפחית ביצועים.
גרעין היברידי מנסה לשלב תכונות משני העיצובים. הוא שומר חלקים קריטיים במרחב הגרעין, אך משאיר שירותים אחרים כשרתים. דוגמאות בולטות הן משפחת Windows NT ומערכת macOS עם גרעין XNU שמשלב Mach ו-FreeBSD.
הגרעין נקרא גם ליבה. באנגלית המונח הוא kernel. לעיתים משתמשים גם בתעתיק קרנל (קֶרְנֶל).
הגרעין הוא החלק המרכזי של מערכת ההפעלה. מערכת ההפעלה מנהלת את המחשב.
הגרעין שולט בחומרה כמו המעבד והזיכרון. הוא אומר לתוכניות מתי ומתי לא להשתמש במשאבים.
תהליך הוא תוכנית שרצה. הגרעין מתחיל תהליכים ומחליף ביניהם במהירות. כך נראה שהרבה תוכניות רצות בו־זמנית.
המיעון הווירטואלי (הסבר: כתובות שמתרגמות את הזיכרון) מגן על זיכרון של תוכנית אחת מהשנייה. אם אין מספיק זיכרון, הגרעין יכול להעביר חלקים לדיסק ולחזור.
להתקנים כמו מסך או מדפסת יש דרייברים (הסבר: תוכנה שמדברת עם ההתקן). הגרעין שולח לדרייבר בקשות להפעיל את ההתקן.
תוכניות מבקשות מהגרעין שירותים בעזרת קריאות מערכת. דוגמאות פשוטות הן open, read ו-write.
יש שלוש שיטות עיקריות: גרעין מונוליטי, הרבה קוד ברמת הגרעין, מיקרו-גרעין, רק החלקים החשובים בגרעין והשאר ברמת המשתמש, וגרעין היברידי, שילוב ביניהן. דוגמאות למערכות שימושיות: Windows, macOS ו-Linux.
תגובות גולשים