במחשוב, מערכת הפעלה (באנגלית: Operating system) היא תוכנה שדרכה מתפעלים מערכת מחשב במובן של שליטה על החומרה שמהווה אותה (או התוכנה שמהווה אותה במקרה ומדובר במערכת מחשב וירטואלית).
זוהי תוכנה בסיסית הבאה שכבה אחת מעל תוכנה יסודית כגון תוכנה קושחתית (כגון BIOS) אם כי לפעמים אין הבדל של ממש בין מערכת הפעלה לתוכנה קושחתית.
שכבות
באופן כללי ניתן לחלק את כלל מערכות ההפעלה הנפוצות כיום לשלוש שכבות:
- ליבה: ליבת מערכת הפעלה מתעלת משאבי חומרה ומקצה אותם למערכת ההפעלה עצמה ולתוכנות הרצות עליה (תהליכים)
- מעטפת: מעטפת מערכת הפעלה מורכבת מתהליכי ממשקי משתמש ותהליכי ממשק תוכנת יישומים (API) המאפשר איחוד קלטים (inputs) ופלטים (outputs) שונים לכדי מבני מידע בעלי מטרת שימוש מוגדרת, השמורים בזיכרון
- תוכנות נספחות: תוכנות שאינן חלק ממערכת ההפעלה אך הן מגיעות עימה לאחר התקנתה
תהליכים מכל השכבות יכולים "לרוץ ברקע" ולייצר פלט ברקע, אז הם לעתים מכונים Daemon (ישנה הבחנה בין foreground process ל background process).
תיעול משאבי חומרה נעשה בדרך כלל לפי הוראות תוכנה הנקראת מנהל התקן (דרייבר) אשר ניתן להגדירה כחלק מן הליבה או כחלק מן המעטפת.
זיכרון מידע במערכת מחשב (ומכאן גם בהקשר מערכת הפעלה) הוא בדרך כלל בלתי נדיף (nonvolatile); כלומר, אין צורך באספקת חשמל רצופה בכדי לשמור מידע עם זיכרון כזה כך שגם אם ייפסק זרם חשמלי נאות המידע יישמר ואמנם זיכרון RAM למשל הוא לפי הידוע לי, בכללותו, נדיף (volatile).
מעטפת מערכת הפעלה
במערכות הפעלה מסוימות מעטפת מערכת הפעלה (באנגלית: Operating system shell ובקצרה shell) היא תוכנה המהווה חלק מחבילת תוכנת מערכת הפעלה שמטרתה במינימום, לאפשר שליטה "מינימלית" או "בסיסית" במערכת ההפעלה עצמה.
כתוכנה בעצמה, מעטפת מערכת הפעלה כוללת למשל מאפיינים אלה:
- קריאת מערכת אחת לפחות (system call); ביצוע פעולה ארוכה מאד שלא ניתן או שלא משתלם לבצע בכל פעם מחדש מן ה shell
- ממשק משתמש אחד לפחות (למשל, ממשק משתמש שורת פקודה)
- פירסור: איך לעבד קלט (input), כפקודות המיועדות למערכת ההפעלה; איך להציג פלט
- ניהול עבודות (job control); ניהול תהליכים ברמת המעטפת במובן של מה מותחל עם אתחול מערכת ההפעלה, מה מושהה ומה מחוסל
- ניהול משתמשים והתחברות עם שם משתמש, תפקיד משתמש וסיסמה
- ניהול תהליכים ברמת המעטפת בהקשר רקע וחזית (background/foreground)
- הרשאות קבצי מידע
המונח "מעטפת" הוא ארכיטקטורי בעיקרו; לא כל ארכיטקטורת מערכת הפעלה בהכרח תכיל מושג זה לתיאור ארכיטקטורה אך סביר לי להניח שבאופן כללי זה יקרה
מערכת קבצים
בדרך כלל המידע במערכת הפעלה מאורגן במבני מידע או "מסמכים" הנקראים קובץ; לכלל מערכות ההפעלה מערכת קבצים שהיא שיטת ארגון קבצים במחיצה אחת או יותר ומכתיבה איך קבצים יוגשו למשתמש (להרצה); מערכות קבצים נפוצות הן NTFS במערכות ווינדווס או ext4 בלינוקס (Debian). היסטורית היו אלה בעיקר FAT בווינדווס ו MINIX בלינוקס.
חלוקת זמן
כלל מערכות ההפעלה כיום חולקות זמן (time sharing) כך שהן מאפשרות לשני משתמשים או יותר להריץ תהליך אחד או יותר במערכת מחשב אחת בו זמנית (לחלוק זמן יחדיו) ולא רק למשתמש אחד בכל פעם. בפועל, במערכת מחשב אישית משתמש רק אדם אחד שמריץ תהליכים רבים אך תאורטית יכולה להיות מערכת מחשב מרכזית אחת אשר משפיעים עליה מכמה מערכות מחשב נספחות ("מסופים") במקביל באם מערכת ההפעלה שלה מאפשרת חלוקת זמן כזו.
מימושים
מערכות הפעלה ממומשות למגוון מערכות מחשב בין אם אלו מחשבי שולחן (לא ניידים או ניידים, לפטופים, נטופים וכדומה וכן גם סמארטפונים שהם מערכות מחשב לכל דבר ועניין וכדומה). משפחות תוכנה נפוצות של מערכות הפעלה הן למשל Linux, Windows וכן Mac OS (אשר היא במובנים שונים נגזרת של לינוקס). מערכות הפעלה משמשות לא רק לשליטה על מערכות מחשב טיפוסיות בעלות מסך כמכשיר מרכזי לפלט כמו אלה שתיארתי אלא גם למשל על רובוטים.
שיווק מערכות הפעלה
שיווק מערכות הפעלה כמוצר תוכנה החל לצד שיווק מערכות מחשב ביתיות.
התחרות בתחום זה נמשכת עד ימינו בעיקר בין מייקרוסופט לבין אפל לבין גוגל.
בכל הנוגע למחשבים ביתיים, ידה של מייקרוסופט על העליונה (Windows).
מייקרוסופט ואפל חוות הפרעה עסקית הולכת וגדלה מצד קהילת הלינוקס אשר משווקת מערכות הפעלה משל עצמה (כגון Ubuntu) כמוצר כלכלה שיתופית.
בכל הנוגע לסמארטפונים, גוגל משתלטת על השוק על מערכת ההפעלה Android.
הערות כלליות
- מושג חשוב בתורת ניהול תהליכים הינו מושג הפסיקה (interrupt)
- אני בעד שמערכות מחשב ישווקו ללא מערכת הפעלה כלל מלבד מערכות הפעלה חופשיות עם ממשק משתמש שורת פקודה בלבד כגון GNU/Linux או FreeDOS.
- אני בעד איסור על משווקי מחשבים להציע ללקוח מערכת הפעלה אחת בלבד אלא להציג לו לפחות שתי אופציות בלתי-תלויות שלפחות אחת מהן תוכנה חופשית עם הסבר על יתרונות וחסרונות ולשאול את הלקוח באיזו מערכת הפעלה הוא מעוניין שלו ולוודא האם הוא בטוח בכך שהוא רוצה מערכת XYZ. באם הלקוח מצהיר על עצמו כלא בקיא בנושא וכנותן אמון בספק יש להסביר לו שאם ירצה לשנות את מערכת ההפעלה תמיד יוכל לעשות כן בעצמו או בעזרת טכנאי כל שהוא.