מערכת הפעלה

המונח "OS" מפנה לכאן. לערך העוסק ביסוד כימי, ראו אוסמיום. מערכת הפעלה היא תוכנה המנהלת את משאבי החומרה והתוכנה במחשב. בנוסף, מערכת ההפעלה מספקת את התשתית הנחוצה עבור הרצה של יישומי ההפעלה המתבצעת עם הדלקת המחשב, הנקראת אתחול. מערכת ההפעלה היא רכיב חיוני בכל מחשב, תפקידה הוא לגשר בין המשתמש לחומרה. המערכת הנפוצה ביותר עבור מחשבים היא Microsoft Windows, ולטלפונים חכמים – אנדרואיד. מערכת ההפעלה מספקת שלושה ממשקים: ממשק משתמש (User Interface). ממשק עבור החומרה על ידי מנהלי התקנים. ממשק תכנות היישומים (API). ניתן למנות שלושה תפקידים עיקריים של מערכת ההפעלה: הקצאת משאבי החומרה. תזמון פעולות רכיבי החומרה ומרכיבי התוכנה. העמדת תשתית משותפת ומסגרת מאורגנת של ממשק ושירותים למשתמש ולחבילות התוכנה. פרק זה טעון עריכה. אנא תרמו לוויקיפדיה ועזרו לערוך אותו. ייתכן שתמצאו פירוט בדף השיחה. הסיבה היא: חסרים חלקים מהותיים (דרייברים, HAL, תכנות שירות), יש בלבול בין ממשק שורת פקודה ובין API, אין הבחנה בין ארכיטקטורות שונות (למשל ארכיטקטורה מונוליטית מול מיקרוקרנל), וכן שגיאות מהותיות (הסיבה, למשל, להפרדה בין מרחב מערכת למרחב משתמש *אינה* "תוכניות זדוניות". החלקים העיקריים של מערכת הפעלה הם: ליבה (Kernel) – שכבת התוכנה אשר אחראית על הקשר שבין שכבת התוכניות אל שכבת החומרה. היא גם אחראית על תגובה ראשונית לפסיקות חומרה או תוכנה (Interrupt Handling). בנוסף על הליבה לתזמן את התוכניות הרצות על המעבדים על מנת שכל תוכנה תוכל לרוץ בזמן שנקבע לה (עם אשליה של תפעול מלא), כך שתוכניות לא יישארו "מורעבות" (כלומר, לא יקבלו זמן ריצה), ושתוכניות לא יגזלו לעצמן את כל משאבי המעבד. ממשק תכנות יישומים (Application Programming Interface – API) – נותן למשתמש הקצה את האפשרות להריץ פקודות של מערכת ההפעלה. כדי לשמור על אבטחת המערכת ופעילותה התקינה, הרי שרוב הקריאות למערכת ההפעלה עוברות דרך שכבת תוכנה אשר מקשרת את תוכנת המשתמש אשר רצה לרוב ממרחב המשתמש (user space) למערכת ההפעלה עצמה. קריאות אלה הן קריאות מערכת (System Calls) והיא מאפשרת למערכת ההפעלה להגן על עצמה ועל החומרה מפני תוכנות אשר מנסות להשתמש בה ובמשאביה בצורה מוטעית, או לצרכים פסולים. מנהל התקן (Driver) – תוכנת מחשב המתווכת בין מערכת ההפעלה ותוכנות מחשב שרצות בה, לבין החומרה של המחשב הכוללת במקרים רבים עכבר, מקלדת, התקני אחסון, כרטיס מסך, מדפסת, סורק, מצלמה ועוד. ממשק המשתמש הוא הדרך לתקשר בין המשתמש והמחשב, באמצעות הצגת נתונים למשתמש על צג לשם הפעלה של תוכנות וקבלת תוצאות מהן. מערכות ההפעלה מגיעות עם ממשק קונסולה (מעטפת פקודה), שהוא ממשק תווי (לרוב ברקע שחור) שבו אפשר לרשום פקודות למערכת ההפעלה (נקרא לרוב Terminal במערכות דמויות יוניקס, ו־Command line במערכות הפעלה של מיקרוסופט CMD וכו'.). ממשק זה קשה לתפעול עבור רוב המשתמשים ה"רגילים" שאינם טכנאים ומתכנתים והורגלו לעבוד בצורה כזו. דרך זו הייתה הדרך המועדפת לתקשורת אדם־מחשב עד אמצע שנות השמונים, ובמערכות הפעלה דמויות יוניקס היא עדיין פופולרית היום. בשל הקושי והסרבול בתקשור עם מערכת ההפעלה באמצעות שורת הפקודה פותחו ממשקי משתמש גרפיים (GUI). לרוב מערכות ההפעלה המודרניות כיום יש ממשק משתמש גרפי, שמאפשר תצוגה של אותיות, סמלים וציורים, ותקשור אינטואיטיבי וקל של המשתמש עם מערכת ההפעלה. דוגמאות נפוצות לממשק משתמש גרפי נראות במערכות הפעלה כמו Windows של חברת מיקרוסופט, Mac OS מחברת אפל, ממשקים גרפיים חופשיים ללינוקס כמו KDE ו־GNOME, או סביבות לטלפונים חכמים כמו iOS ואנדרואיד. ממשקים גרפיים מאפשרים למשתמש הפשוט לשלוט בכל הנעשה במחשב בעזרת העכבר (או מסך המגע), המקלדת, בעזרת צלמיות (Icons), רכיבי מסך כמו לחצנים, תיבות טקסט, רשימות נגללות וכן הלאה. זאת ללא צורך לכתוב פקודות וללא ידע בשפת מחשב כל שהיא. שורת הפקודה (CLI) מסוגלת לבצע כל פעולה שניתן לבצע באמצעות ממשק המשתמש הגרפי (GUI), וההבדל בין שני ערוצי התקשורת הללו עם המחשב הוא רק בנוחות המשתמש, ולא בפונקציונליות של דרך התקשורת. יתרה מזאת, מערכות הפעלה רבות יודעות לשמור פרופיל משתמש המכיל התאמות אישיות והעדפות שהוא ביצע לממשק המשתמש, ובכך לשמור את ההגדרות האלו מהפעלה להפעלה ולייעל את השימוש במחשב. עם זאת, ממשק גרפי איננו הממשק היחיד בין אדם למכונה. בעבר שימשו כרטיסים מנוקבים למסירת הוראות למחשב, באמצעות שפת מחשב שנועדה לכך, ומאוחר יותר מכונות דמויות מכונת כתיבה (Teletype). עם התפתחות הטכנולוגיה, מפותחות דרכים נוספות לממשקי חיבור בין האדם למחשב, כגון חיבור ישיר, ממשק דיבור וסינתוז קולי. ממשק החומרה הוא החלק במערכת ההפעלה המתרגם פעולות של רכיבי חומרה לשימוש התוכנה. למשל, הזזה של העכבר המייצרת אות חשמלי תתורגם לרצף נתוני תוכנה כך שהתוכנה תזיז את סמן העכבר למקום המתאים. כאשר משתמש פותח תוכנה חדשה, מערכת ההפעלה מעבירה לצג רשימה של הוראות להדלקה וכיבוי פיקסלים על מנת להציג את התמונה הנכונה. ניהול ממשק החומרה מתבצע על ידי ליבת מערכת ההפעלה (Kernel), באמצעות רכיבים הנקראים מנהלי התקן (דרייברים). לכל רכיב חומרה (התקן) מתאים מנהל התקן המתרגם את הפקודות המבוקשות משפת מחשב לשפת מכונה ומעביר אותן להתקן. קיימים מנהלי התקנים סטנדרטיים עבור כל משפחה של התקנים (מדפסות, צגים, עכברים וכולי) המאפשרים שימוש בסיסי ברכיבים. עבור רוב ההתקנים, מספק יצרן ההתקן מנהלי התקנים המתאימים להתקן ומרחיבים את הפעילות שלו ביחס לנדרש בתקן. API (ראשי תיבות של Application Programming Interface – ממשק תכנות יישומים) – ממשק זה מאפשר לכותבי היישומים להשתמש בשירותיה של מערכת ההפעלה, כמו ציור של חלונות על המסך, אחסון מידע בקבצים, ושימוש בזיכרון המחשב (RAM), מבלי שיזדקקו לנהל פעולות אלו בעצמם. כך, כותבי היישומים יכולים להתמקד במטרת היישום כמו עיבוד תמלילים, נגינת קובצי MP3, הכנת אלבום תמונות, ניהול חשבונות וכדומה. את ממשק היישומים מממשת בדרך כלל רשימה של פונקציות שכותב היישום יכול להפעילן מתוך התוכנית שהוא כותב. פונקציות אלו עשויות להפעיל רכיב בממשק המשתמש, רכיב חומרה דרך ממשק החומרה, או שירות אחר שנותנת מערכת הפעלה כמו קשר עם יישומים אחרים. פרק זה טעון עריכה. אנא תרמו לוויקיפדיה ועזרו לערוך אותו. ייתכן שתמצאו פירוט בדף השיחה. מערכות שולחן עבודה, PC – Personal Computer systems במערכות מחשב מסוג זה תפקידו של המחשב הוא לשרת את המשתמש הבודד ולכן מערכת הפעלה כזו פועלת על עקרונות של נוחות למשתמש וזמן תגובה מהיר. במערכות מסוג זה ניתן לאמץ טכנולוגיות ממערכות הפעלה גדולות יותר. דוגמאות למערכות כאלה: Time-Sharing Systems – מחשבים אינטראקטיביים זמן המעבד מחולק בין מספר משימות (jobs), אשר מאוחסנות בזיכרון ובדיסק (המעבד מוקצה אך ורק למשימה אשר נמצאת בזיכרון). כאשר אין מספיק מקום בזיכרון, נעשה שימוש בזיכרון וירטואלי, כלומר המידע השייך למשימה מועבר פנימה והחוצה מהזיכרון לדיסק. מערכות מקביליות – מחשב מקבילי הוא מחשב המצויד ביותר ממעבד אחד, עם תקשורת צמודה: מערכות הפעלה מקביליות הן Tightly coupled systems, כלומר המעבדים חולקים זיכרון ושעון. התקשורת נעשית לרוב דרך הזיכרון המשותף. יתרונות המערכת המקבילית הם תפוקה מוגברת; חיסכון – ניצול של מספר מעבדים עם זיכרון ושעון יחיד; אמינות גבוהה – כל מעבד מגובה על ידי האחרים. מערכות מקביליות הן סימטריות או אסימטריות: מערכות הפעלה סימטריות (SMP – Symmetric Multi Processing) – כל מעבד מריץ עותק זהה של מערכת ההפעלה. מעבדים רבים יכולים לרוץ בו־זמנית. רוב מערכות ההפעלה המודרניות תומכות ב־SMP. מערכות הפעלה אסימטריות – לכל מעבד מקצים משימה (task) ספציפית. מערכות מסוג זה נפוצות במערכות גדולות מאוד. מערכות מבוזרות – במערכות אלו החישוב מבוזר בין מספר מעבדים פיזיים. מערכות אלו הן Loosely coupled system – לכל מעבד יש את הזיכרון המקומי שלו. המעבדים מתקשרים ביניהם דרך קווי תקשורת מסוגים שונים, כמו אפיקים (buses) מהירים או קווי טלפון. יתרונות המערכת המבוזרת הם שיתוף משאבים, אמינות, שיתוף בעומס המאפשר חישוב מהיר יותר. מערכות זמן־אמת – מערכות מחשב אשר בהן יש דרישות לביצועים בזמנים מסוימים. הן נחלקות לשני סוגים: Hard real-time – במערכות כאלה מובטח כי זמן הריצה הגרוע ביותר האפשרי לא עובר רף מסוים. בשל האיטיות היחסית של אחסון הזיכרון המשני, במערכות Hard real-time שטח הזיכרון המשני מוגבל או שלא נעשה בו כלל שימוש והמידע מאוחסן בזיכרון קצר טווח או בזיכרון לקריאה בלבד (ROM). קיימת התנגשות בין דרישות אלו לדרישות של time-sharing systems, ולכן שילוב כזה לא נתמך על ידי מערכות הפעלה שנועדו למגוון מטרות (להבדיל ממערכות הפעלה ייעודיות). Soft real-time – במערכות כאלה המשתמש מרוצה יותר כאשר המערכת מגיבה בצורה אופטימלית, אך בו בזמן המשתמש לא יראה תגובה איטית יותר כ"כישלון". סוג זה שימושי ביישומים כגון מולטימדיה ומציאות מדומה (virtual reality). Handheld Systems – מערכות הפעלה אלו נמצאות בשימוש במחשבי כף יד ובטלפונים סלולריים מתקדמים. למערכות הפעלה מסוג זה יש זיכרון מוגבל, מעבדים איטיים ומסכי תצוגה קטנים. ערך מורחב – Microsoft Windows מערכת ההפעלה הראשונה של חברת מיקרוסופט הייתה MS-DOS מערכת זו הייתה מערכת אצוות לא גרפית. בהמשך ניתן היה להלביש על מערכת הפעלה זו ממשק גרפי שנקרא Microsoft Windows 3.0 וגרסאות 3.1 ו־3.11 שלו. סדרת מערכות הפעלה עוקבת הייתה, חלונות 95, חלונות 98 וחלונות ME שהגרעין שלהם עדיין התבסס בחלקו על DOS. במקביל החל פיתוח חלונות NT בגרסאות 3.1‏, 3.5‏, 4.0 ו־5.0 הידועה גם בשם חלונות 2000 עבור מחשבים אישיים ו־Windows 2000 server לשרתים. הגרסה הבאה הייתה NT 5.1 הידועה גם כחלונות XP ו־Windows 2003 server. בנובמבר 2006 השיקה מיקרוסופט את חלונות ויסטה למחשבים אישיים ובאפריל 2008 השיקה את גרסת השרתים שנקראת Windows 2008 Server. באוקטובר 2009 השיקה מיקרוסופט את Windows 7 למחשבים אישיים ובמקביל את גרסת השרתים Windows 2008 R2 עם ממשק משתמש דומה. באוקטובר 2012 הושקה Windows 8 המתאימה גם למעבדי ARM (האופייניים למחשבי לוח וטלפונים חכמים), שולחן העבודה המסורתי הוחלף בממשק אריחים המותאם למסך מגע. בנוסף ישנן גם מערכות הפעלה המנסות לחקות את פעולת מערכות ההפעלה ממשפחת מיקרוסופט, כדוגמת ReactOS ו־Haiku. ערכים מורחבים – יוניקס, לינוקס יוניקס היא מערכת הפעלה מסחרית אשר פותחה במעבדות בל. בהמשך פתחו חברות רבות מערכות הפעלה המבוססות על ליבת מערכת ההפעלה יוניקס. ביניהן AIX ,HP-UX, סולאריס, SunOS ,IRIX. משפחת BSD הכוללת את OS X ,FreeBSD ,NetBSD ,OpenBSD. ומשפחת לינוקס הכוללת הפצות רבות בהן דביאן GNU/לינוקס, Tails, אובונטו לינוקס, Suse ,RedHat, Fedora, מנדריבה, ג'נטו, סלאקוור, Linspire (לשעבר Knoppix,Lindows). מערכת ההפעלה לטלפון החכם אנדרואיד מבוססת על לינוקס. ערך מורחב – IBM System/360 מערכת ההפעלה הראשונה של משפחה זו הייתה IBM/360 ושווקה בתחילת שנות ה־60. מערכת הפעלה זאת הייתה מיועדת למחשבי Mainframe. ‏IBM עדיין משווקת מערכות הפעלה תחת משפחה זו. מערכות הפעלה אלה כוללות את IBM/370 ,IBM/4300, IBM/3080 ו־IBM/3090. קיימות מערכות הפעלה רבות נוספות. חלקן בשימוש נרחב בעוד האחרות נכתבות עבור שימושים ספציפיים. iOS, אנדרואיד וסימביאן (לטלפונים חכמים) ו־PalmOS (למחשבי כף יד) הן שתי דוגמאות. סוג נוסף של מערכות הפעלה דוגמת INtime מיועדות לטיפול במערכות קריטיות בזמן אמת. קיימות מערכות הפעלה שיצורן הופסק מסיבות היסטוריות או שאוחדו לתוך מערכות הפעלה אחרות. בין אלה ניתן למצוא את CP/M,‏ Mac OS,‏ OS/2 וכולי. ערך מורחב – פרצת אבטחה לעיתים מתגלות במערכות הפעלה פרצות אבטחה המאפשרות להזיק למשתמש בהן. ניתן להתגונן מפני פרצות אלו על ידי התקנת טלאי אבטחה המסופקים על ידי יצרן מערכת ההפעלה. תוכנה – מונחים מערכת קבצים מדיה וקבצים בנושא מערכת הפעלה בוויקישיתוף מערכות הפעלה (מחשבים), דף שער בספרייה הלאומית