MicroKernelיהו...

יותר מזה,

Darwin הוא כל התשתית. מוטי, מה שאתה מחפש יכול להתחיל בארכיטקטורה בסיסית של MICROKERNEL, כמו ה-MACH. אח"כ, אתה מוזמן לקרוא את INSIDE WINDOWS NT של MICROSOFT. אמור להיות שם מידע טכני יותר ספציפי ל-NT.
 

MotiAd

New member
תודה...

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

אבל אני לא ממש נגעתי בדברים האלה. יש באתר של דארווין אצל אפל הכוונות ל MACH ול FREEBSD שמשילוב של שניהם נוצר הקרנל של דרווין, ובנוסף יש שם רשימת תפוצה בשם darwin-kernel שאני מאמין שיוכלו להכווין אותך משם.
 
לדעתי,

אתה צודק, והכיוון הוא נכון. מכיוון שמערכת ההפעלה היא יצור המנהל משאבים משותפים, מן ההגיון שיהיה משוייך DRIVER ספציפי לכל סוג אובייקט במערכת. זו לדעתי הגישה הכי יפה. לדוגמה, אם יש לך I/O MANAGER במערכת ההפעלה, סביר להניח שהוא יכיר את מערכות הקבצים (ה-PARTITIONS) כאובייקטים, וישייך לכל אחת מהן DRIVER אחר: FAT, NTFS או MOTI_FS
גם ל-I/O MANAGER בעצמו יהיה DRIVER. סידור המשאבים בצורה הירארכית לפי הקשרים היא גישה טובה. כמובן שצריך לבדוק כל מקרה לגופו. מכיוון שצריך לנהל גם מנגנוני LOCKING על משאבים משותפים, אני מציע שתעיין ב-FLYWEIGHT DESIGN PATTERN.
 

MotiAd

New member
מצויין...

תודה רבה רבה אינגו וגם לאלון ואלדד. אני אפנה אליך אינגו בהמשך בשמחה. תודה רבה שוב, שלכם, מוטי.
 

אלדד28

New member
זו בדיוק הגישה של לינוקס.

לכל Mountpoint משוייך driver מסוים. כשאתה ניגש לאיזשהו קובץ באותה נקודה, כל הקריאות ל-system calls עוברות ל-driver המתאים, ודרכו מתבצעות. בצורה כזו אתה יכול לקמפל רק את ה-driver המתאים, et voila.
 

MotiAd

New member
נכון... אבל,

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

barakbl

New member
מה?

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

MotiAd

New member
ואז הוא הופף להיות מודול או....

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

barakbl

New member
אני לא יודע על מה אתה מדבר...

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

MotiAd

New member
נכון ועשיתי את זה בעבר אבל...

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

MotiAd

New member
וזאת רק ההתחלה...

מה לגבי תמיכה בסטנדרטים אחרים? נניח SCSI or ATA או כל דבר אחר.
 

barakbl

New member
צ'מע, כמעט הכלל זמין כמודולים

חיצוניים ככה שאפשר לקמפל מתי שרוצים, כולל USB/ATA/SCSI, התקני כרטיס קול, חיבורים שונים וכו'.... יש מעט מאוד דברים שכדי לשנות אותם צריך להדר מחדש ליבה, ואפשר לאמר שמדובר רק (או אולי בעיקר) בשינויים פנימים של הקרנל, אבל כאן אתה מוזמן לשאול את mulix (שכותב בפורום בתפוז) שהוא לינוקס קרנל האקר ויודע יותר מכולנו בנושא.
 

אלדד28

New member
לא נכון.

שוב, זה לא שחור ולבן. קרנל מונוליטי זה לא אומר שהכל הכל הכל בתוכו, ושאין לו מודולריות, או שאין לו PLUGINS - ובמיוחד לא במקרה של הקרנל של לינוקס. הקרנל הוא מונוליטי במובן הזה שהבסיס נמצא בתוך הקרנל (למשל ה-VFS, ה-Virtual File System, שמאפשרת קישור ל-DRIVER-ים שתחתיה) - אבל המימוש "האמיתי", ה-LOW LEVEL-י, מתבצע פעמים רבות ברמת מודולים נפרדים שמתחברים אל הקרנל לפי הצורך.
 

MotiAd

New member
כן...

זה תמיד בה על חשבון משהו אחר ואף פעם המודולריות היא לא טוטאלית.
 
למעלה