5Aug
עם יותר מ -13 מיליון שורות קוד, הקרנל של לינוקס הוא אחד הפרויקטים הגדולים ביותר בקוד פתוח בעולם, אבל מה זה ליבה ומה זה משמש?
אז מהו הקרנל?
ליבה היא הרמה הנמוכה ביותר של תוכנה הניתנת להחלפה בקלות, שמתממשת עם החומרה במחשב.הוא אחראי על מיצוב כל היישומים הפועלים ב "מצב משתמש" עד החומרה הפיזית, ומאפשר תהליכים, המכונה שרתים, כדי לקבל מידע אחד מהשני באמצעות תקשורת בין תהליכים( IPC).
סוגים שונים של גרעינים
ישנן, כמובן, דרכים שונות לבנות קרנל ושיקולים אדריכליים בעת בניית אחד מאפס.באופן כללי, רוב הגרעינים נופלים לאחד משלושה סוגים: מונוליטי, מיקרו-קרנל והיברידי.לינוקס הוא ליבה מונוליטית בעוד OS X( XNU) ו- Windows 7 להשתמש גרעינים היברידיים.בוא נלך לסיור מהיר של שלוש הקטגוריות כדי שנוכל להיכנס לפרטים נוספים מאוחר יותר.
תמונה על ידי uptown פופקורן
Microkernel
מיקרוגרנל לוקח את הגישה של ניהול רק מה יש לו: מעבד, זיכרון, ו- IPC.די הרבה כל דבר אחר במחשב ניתן לראות כאביזר והוא יכול להיות מטופל במצב המשתמש.Microkernels יש יתרון של הטלטלות, כי הם לא צריכים לדאוג אם אתה משנה את כרטיס המסך שלך או אפילו את מערכת ההפעלה, כל עוד מערכת ההפעלה עדיין מנסה לגשת לחומרה באותו אופן.Microkernels יש גם טביעת רגל קטנה מאוד, הן זיכרון והן שטח התקנה, והם נוטים להיות בטוחים יותר, כי רק תהליכים ספציפיים לרוץ במצב המשתמש שבו אין הרשאות גבוהות כמצב המנחה.
Pros חסרונות
- חומרה מופשטת יותר באמצעות מנהלי התקן
- חומרה עשויה להגיב לאט יותר מכיוון שהנהגים נמצאים במצב משתמש
- תהליכים חייבים להמתין בתור לקבלת מידע
- תהליכים אינם יכוליםלקבל גישה לתהליכים אחרים בלי לחכות
ליבה מונוליטית
גרעינים מונוליטיים הם ההיפך של microkernels כי הם מקיפים לא רק את המעבד, זיכרון, ו- IPC, אבל הם כוללים גם דברים כמו מנהלי התקנים, ניהול מערכת קבצים, ושיחות שרת המערכת.גרעינים מונוליטי נוטים להיות טובים יותר בגישה חומרה ריבוי משימות, כי אם התוכנית צריכה לקבל מידע מהזיכרון או תהליך אחר פועל יש לו קו ישיר יותר לגשת אליו ואינו צריך לחכות בתור לעשות דברים.זה עם זאת יכול לגרום לבעיות כי יותר דברים לרוץ במצב מפקח, יותר דברים שיכולים להפיל את המערכת שלך אם אחד לא מתנהג כמו שצריך.
Pros
- עוד גישה ישירה לחומרה עבור תוכניות
- קל יותר לתהליכים לתקשר בין כל אחד מהם
- אם המכשיר שלך נתמך, הוא אמור לפעול ללא התקנות נוספות
- תהליכים מגיבים מהר יותר מכיוון שאין תור לזמן המעבד
Cons
- Largeהתקנת טביעת רגל
- טביעת רגל גדולה
- פחות מאובטחת משום שהכל פועל במצב פיקוח
תמונה באמצעות schoschie ב- Flickr
גרעין היברידי
גרעינים היברידיים יכולים לבחור ולבחור מה הם רוצים להפעיל במצב משתמש ומה הם רוצים להפעיל במנחהמצב.פעמים רבות דברים כמו מנהלי התקנים ו- I / O במערכת הקבצים יופעלו במצב משתמש, בעוד ששיחות IPC ושרת יישמרו במצב המנחה.זה נותן את הטוב שבשני העולמות, אבל לעתים קרובות ידרוש יותר עבודה של יצרן החומרה כי כל אחריות הנהג תלוי בהם.זה גם יכול להיות כמה בעיות כמיסות הטמון עם microkernels.
Pros
- מפתח יכול לבחור ולבחור מה פועל במצב משתמש ומה פועל במצב המפקח
- קטן יותר להתקין טביעת רגל מאשר הקרנל מונוליטי
- יותר גמישה מודלים אחרים
חסרונות
- יכול לסבול מהפיגור בתהליך זהה כמו microkernel
- מנהלי ההתקן צריך להיות מנוהל על ידי המשתמש( בדרך כלל)
איפה הם קבצי ליבה לינוקס?
קובץ הקרנל, באובונטו, מאוחסן בתיקייה / boot והינו נקרא vmlinuz - version .השם vmlinuz בא מן העולם יוניקס שבו הם היו מכנים את הגרעינים שלהם פשוט "יוניקס" בחזרה של 60 אז לינוקס התחיל לקרוא ליבה שלהם "לינוקס" כאשר הוא פותח לראשונה בשנות ה -90.
כאשר זיכרון וירטואלי פותח עבור יכולות ריבוי משימות קל יותר, "vm" היה לשים בחזית הקובץ להראות כי הקרנל תומך בזיכרון וירטואלי.במשך זמן מה הליבה של לינוקס נקראה vmlinux, אבל הקרנל גדל גדול מכדי שיתאים לזיכרון האתחול הזמין, כך שתמונת הקרנל נדחסה והסיום x השתנה ל- z כדי להראות שהוא נדחס עם דחיסת zlib.דחיסה זה לא תמיד בשימוש, מוחלפים לעתים קרובות עם LZMA או BZIP2, וכמה גרעינים נקראים פשוט zImage.
מספור הגרסאות יהיה בתבנית A.B.C.D כאשר A1B יהיה כנראה 2.6, C תהיה הגרסה שלך ו- D מציין את התיקונים או התיקונים.
בתיקייה / boot יש גם קבצים חשובים אחרים הנקראים initrd.img-version, system.map-version ו- config-version.קובץ initrd משמש דיסק קטן RAM מחלץ ומבצע את הקובץ הקרנל בפועל.קובץ system.map משמש לניהול זיכרון לפני שהקרנל נטען במלואו, וקובץ ההגדרות מציין את הקרנל אילו אפשרויות ומודולים נטענים לתמונת הקרנל כאשר הוא נערך.
ליבת לינוקס לינוקס
בגלל הקרנל לינוקס הוא מונוליטי, יש לו את טביעת הרגל הגדולה ביותר ואת המורכבות ביותר על סוגים אחרים של גרעינים.זה היה תכונה עיצוב אשר היה תחת די הרבה ויכוח בימים הראשונים של לינוקס ועדיין נושאת כמה פגמים עיצוב זהה כי גרעינים מונוליטי הם הטמון.
דבר אחד שמפתחי הליבה של לינוקס עשו כדי לעקוף את הפגמים הללו היה להפוך מודולים של ליבה שניתן לטעון ולפרוק בזמן ריצה, כלומר ניתן להוסיף או להסיר תכונות של הקרנל שלך על לטוס.זה יכול ללכת מעבר רק הוספת פונקציונליות חומרה ליבה, על ידי הכללת מודולים המפעילים תהליכים שרת, כמו וירטואליזציה ברמה נמוכה, אבל זה גם יכול לאפשר את כל הקרנל להיות מוחלף ללא צורך לאתחל את המחשב שלך במקרים מסוימים.
תארו לעצמכם אם אתה יכול לשדרג ל - Windows Service Pack ללא צורך אי פעם לאתחל. ..
ליבות מודולים
מה אם Windows היה כל מנהל זמין כבר מותקן ואתה רק צריך להפעיל את מנהלי ההתקנים שאתה צריך?זה בעצם מה מודולים ליבה לעשות עבור לינוקס.מודולים של הליבה, הידועים גם כמודול ליבה נטען( LKM), חיוניים לשמירה על תפקוד הקרנל עם כל החומרה מבלי לצרוך את כל הזיכרון הזמין.
מודול מוסיף בדרך כלל פונקציונליות לגרעין הבסיס עבור דברים כמו התקנים, מערכות קבצים ושיחות מערכת.LKMs יש סיומת הקובץ. ko מאוחסנים בדרך כלל בספריית המודולים /lib/.בגלל הטבע המודולרי שלהם אתה יכול בקלות להתאים אישית את הקרנל שלך על ידי הגדרת מודולים לטעון, או לא לטעון, במהלך ההפעלה עם הפקודה menuconfig או על ידי עריכת קובץ תצורת /boot/ שלך, או שאתה יכול לטעון ולפרוק מודולים על לטוס עם הפקודה modprobe.
צד שלישי ומודולים של מקור סגור זמינים בחלק מההפצות, כמו אובונטו, וייתכן שלא יותקנו כברירת מחדל מכיוון שקוד המקור של המודולים אינו זמין.המפתחים של התוכנה( כלומר, nVidia, ATI, בין היתר) אינם מספקים את קוד המקור אלא הם בונים מודולים משלהם ומרכיבים את קבצי ה-. ko הדרושים להפצה.בעוד מודולים אלה הם בחינם כמו בירה, הם אינם חופשיים כמו בדיבור ולכן אינם נכללים על ידי כמה הפצות, כי המרגישים להרגיש את זה "taints" הקרנל על ידי מתן תוכנה חופשית.
ליבה היא לא קסם, אבל זה חיוני לחלוטין לכל מחשב פועל כהלכה.הקרנל של לינוקס שונה מ- OS X ו- Windows משום שהוא כולל מנהלי התקנים ברמת הליבה ועושה דברים רבים הנתמכים "מחוץ לקופסה".אני מקווה שאתה תדע קצת יותר על האופן שבו התוכנה והחומרה שלך עובד ביחד ומה הקבצים שאתה צריך כדי לאתחל את המחשב.
Kernel.org
תמונה מאת ingridtaylar