דף הבית » איך ל » מהו הקרנל של לינוקס ומה זה עושה?

    מהו הקרנל של לינוקס ומה זה עושה?


    עם יותר מ -13 מיליון שורות קוד, הקרנל של לינוקס הוא אחד הפרויקטים הגדולים ביותר בקוד פתוח בעולם, אבל מה זה הקרנל ומה הוא משמש עבור?

    אז מהו הקרנל?

    ליבה היא הרמה הנמוכה ביותר של תוכנה להחלפה בקלות, כי ממשקים עם החומרה במחשב. הוא אחראי על מיצוב כל היישומים הפועלים ב "מצב משתמש" עד החומרה הפיזית, ומאפשר תהליכים, הידועים כשרתים, כדי לקבל מידע אחד מהשני באמצעות תקשורת בין תהליכים (IPC).

    סוגים שונים של גרעינים

    ישנן, כמובן, דרכים שונות לבנות קרנל ושיקולים אדריכליים בעת בניית אחד מאפס. באופן כללי, רוב הגרעינים נופלים לאחד משלושה סוגים: מונוליטי, מיקרו-קרנל והיברידי. לינוקס הוא ליבה מונוליטית בעוד OS X (XNU) ו- Windows 7 להשתמש גרעינים היברידיים. בוא נלך לסיור מהיר של שלוש הקטגוריות כדי שנוכל להיכנס לפרטים נוספים מאוחר יותר.


    תמונה על ידי פופקורן

    מיקרו
    Microkernel לוקח את הגישה של ניהול רק מה יש לו: מעבד, זיכרון, ו- IPC. די הרבה כל דבר אחר במחשב ניתן לראות כאביזר והוא יכול להיות מטופל במצב המשתמש. Microkernels יש יתרון של הטלטלות, כי הם לא צריכים לדאוג אם אתה משנה את כרטיס המסך שלך או אפילו את מערכת ההפעלה, כל עוד מערכת ההפעלה עדיין מנסה לגשת לחומרה באותו אופן. Microkernels יש גם טביעת רגל קטנה מאוד, הן זיכרון והן שטח התקנה, והם נוטים להיות בטוחים יותר, כי רק תהליכים ספציפיים לרוץ במצב המשתמש שבו אין הרשאות גבוהות כמצב המנחה.

    מקצוענים

    • ניידות
    • טביעת רגל קטנה
    • טביעת רגל קטנה
    • אבטחה

    חסרונות

    • חומרה מופשטת יותר באמצעות נהגים
    • חומרה עשויה להגיב לאט יותר מכיוון שמנהלי ההתקן נמצאים במצב משתמש
    • תהליכים צריכים לחכות בתור כדי לקבל מידע
    • תהליכים אינם יכולים לקבל גישה לתהליכים אחרים ללא המתנה

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

    מקצוענים

    • גישה ישירה יותר לחומרה עבור תוכניות
    • קל יותר עבור תהליכים לתקשר בין כל אחד
    • אם ההתקן שברשותך נתמך, הוא אמור לפעול ללא התקנה נוספת
    • תהליכים מגיבים מהר יותר מכיוון שאין תור לזמן המעבד

    חסרונות

    • טביעת רגל גדולה
    • טביעת רגל גדולה
    • פחות מאובטח מפני שהכל פועל במצב מפקח


    תמונה באמצעות schoschie על Flickr

    קרנל היברידי
    ליבות היברידיות יש את היכולת לבחור ולבחור מה הם רוצים לרוץ במצב המשתמש ומה הם רוצים לרוץ במצב מפקח. פעמים רבות דברים כמו מנהלי התקנים ו- I / O של קובצי מערכת יופעלו במצב משתמש, בעוד ששיחות IPC ושרת יישמרו במצב המנחה. זה נותן את הטוב שבשני העולמות, אבל לעתים קרובות ידרוש יותר עבודה של יצרן החומרה כי כל אחריות הנהג תלוי בהם. זה גם יכול להיות חלק מבעיות חביון כי הוא מובנה עם microkernels.

    מקצוענים

    • מפתח יכול לבחור ולבחור מה פועל במצב משתמש ומה פועל במצב מפקח
    • טביעת רגל קטנה יותר מאשר גרעין מונוליטי
    • גמיש יותר מאשר דגמים אחרים

    חסרונות

    • יכול לסבול מאותו תהליך בפיגור כמו microkernel
    • מנהלי התקנים צריכים להיות מנוהלים על ידי המשתמש (בדרך כלל)

    איפה הם לינוקס קבצים לינוקס?

    קובץ הקרנל, באובונטו, מאוחסן בתיקייה / boot ו נקרא vmlinuz-גרסה. השם vmlinuz בא מעולם unix שבו הם מכנים את הגרעינים שלהם פשוט "יוניקס" בחזרה של 60 כך לינוקס התחיל לקרוא ליבה שלהם "לינוקס" כאשר הוא פותח לראשונה בשנות ה -90.

    כאשר זיכרון וירטואלי פותח עבור יכולות ריבוי משימות קל יותר, "vm" הושם בחזית הקובץ כדי להראות כי הקרנל תומך בזיכרון וירטואלי. במשך זמן מה הליבה לינוקס נקרא vmlinux, אבל הקרנל גדל גדול מדי כדי להתאים את זיכרון האתחול זמין כך התמונה הקרנל היה דחוס ואת הסיום x השתנה ל z להראות שזה היה דחוס עם דחיסת zlib. דחיסה זו לא תמיד בשימוש, מוחלפת לעתים קרובות עם LZMA או BZIP2, וכמה גרעינים נקראים פשוט zImage.

    מספר הגירסה יהיה בפורמט A.B.C.D שבו B.B יהיה כנראה 2.6, C תהיה הגרסה שלך ו- D מציין את התיקונים או התיקונים שלך.

    בתיקייה / boot יש גם קבצים חשובים אחרים הנקראים initrd.img-version, system.map-version ו- config-version. קובץ initrd משמש דיסק קטן RAM מחלץ ומבצע את הקובץ הקרנל בפועל. הקובץ system.map משמש לניהול זיכרון לפני שהקרנל נטען במלואו, וקובץ ההגדרות מציין את הקרנל אילו אפשרויות ומודולים לטעינת התמונה הקרנל כאשר הוא נערך.

    אדריכלות ליבה של לינוקס

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

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

    תארו לעצמכם אם אתה יכול לשדרג ל- Windows Pack Service ללא צורך אי פעם אתחול מחדש ...

    מודולי הקרנל

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

    מודול בדרך כלל מוסיף פונקציונליות ליבת הבסיס עבור דברים כמו התקנים, מערכות קבצים, ושיחות מערכת. LKMs יש סיומת הקובץ .ko מאוחסנים בדרך כלל בספרייה / lib / מודולים. בגלל הטבע המודולרי שלהם אתה יכול בקלות להתאים אישית את הקרנל שלך על ידי הגדרת מודולים לטעון, או לא לטעון, במהלך ההפעלה עם הפקודה menuconfig או על ידי עריכת / boot / config הקובץ שלך, או שאתה יכול לטעון ולפרוק מודולים על לטוס עם modprobe פקודה.

    מודולים של צד שלישי ומקור סגור זמינים בחלק מההפצות, כמו אובונטו, וייתכן שלא יותקנו כברירת מחדל מכיוון שקוד המקור של המודולים אינו זמין. המפתחים של התוכנה (כלומר, nVidia, ATI, בין היתר) אינם מספקים את קוד המקור אלא הם בונים מודולים משלהם ועורכים את הקבצים הדרושים. בעוד מודולים אלה הם בחינם כמו בירה, הם אינם חופשיים כמו בדיבור ולכן אינם נכללים על ידי כמה הפצות כי המרגישים להרגיש את זה "taints" הקרנל על ידי מתן תוכנה חופשית.

    ליבה היא לא קסם, אבל זה חיוני לחלוטין לכל מחשב פועל כראוי. הקרנל של לינוקס שונה מ- OS X ו- Windows משום שהוא כולל נהגים ברמת הליבה ועושה דברים רבים הנתמכים "מחוץ לקופסה". אני מקווה שאתה תדע קצת יותר על האופן שבו התוכנה והחומרה שלך עובד ביחד ומה הקבצים שאתה צריך כדי לאתחל את המחשב.

    Kernel.org
    תמונה על ידי ingridtaylar