מפתח ליבה (kernal ) - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

מפתח ליבה (kernal )


yigael_o

Recommended Posts

היי, אני מפתח מתחיל ב C# כרגע פחות משנה.

עברתי על רשימות שכר והשכר של מפתח ליבה (kernal) מאוד קורץ לי, מישהו יודע ויכול להמליץ על ספרי לימוד ברמה טובה?

קצת בעסה שחלק גדול מהמאמץ שעשיתי יירד לטמיון (אני כמעט מסיים את Thinking in C# ועמוק בתהליך של קריאת המסמכים שמגיעים עם ה VS2005 שמתארים את הספסיפיקציות של השפה, אגב, הם נמצאים גם אצלכם ב C:\Program Files\Microsoft Visual Studio 8\VC#\Specifications\1033 אם יש לכם VS2005)

בכל מקרה אני בטוח שעכשיו אני אצטרך להתמקד הרבה יותר ב C++ ו C וכנראה אסמבלר.

בכל מקרה, אני צריך ספר מומלץ בנושא, כמובן שזה אמור להיות שונה למערכות הפעלה שונות. ונראה לי שבהתחלה אני אתמקד ב WIN אבל אם מישהו יודע שיש משהו אחר שעדיף מבחינת ביקוש (UNIX, SOLARIS QNX ) שיתקן אותי.

קישור לתוכן
שתף באתרים אחרים

למיטב ידיעתי כל הקרנלים הקיימים בשימוש מסחרי היום (מחוץ למטרות מחקר) כתובים ב-C, C++ או אסמבלר (ולרוב שילוב של הנ"ל). גם כל הפיתוח בתוך הקרנל (דרייברים, תוספות שונות) נעשה בשפות אלה.

למרות הההתקדמות הרבה שנעשית בשפות אחרות, לא נראה לי שהמצב הולך להשתנות בעשר השנים הקרובות (ולמעשה יותר, לדעתי).

אני מכיר מעט מאוד (מאוד!) מקרים של פיתוח ב-kernel space בשפות אחרות, וכמו שאמרתי, כולם במערכות נישה למטרות מחקר וכו'.

דברים שכדאי לדעת:

* קוראים לזה kernel ולא kernal (אם כי לROM של קומודור 64 קראו KERNAL מסיבות משונות).

* אתה לומד את השפה הלא נכונה, כמו שכבר ניחשת.

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

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

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

* אין הרבה מקומות שמפתחים ממש קרנל. יש יותר מקומות שמפתחים ברמת הקרנל (לדוגמא דרייברים) אבל עדיין נדמה לי שיש יותר מפתחים ברמת ה-USER.

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

אתם אתם זוכרים את WIN95 וכמה שהוא היה גרוע? ובכן חלק גדול מהקריסות והבעיות שלו היו דרייברים כתובים גרוע שכל חברת צד שלישי שמייצרת עכבר ב-50 שקל כתבה ודחפה על המחשב שלכם.

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

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

לדעתי דרך טובה להתחיל היא להתקין לינוקס: הוא חינם. הוא בא עם כל הקוד של הקרנל, וכן הקוד של הרבה מודולים ודרייברים. יש המון אנשים שעובדים עליו ותוכל לשאול אותם שאלות. יש המון מידע וספרים על איך לכתוב (מומלץ device drivers 3rd edition שהוא אפילו חינם!).

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

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

קישור לתוכן
שתף באתרים אחרים

תודה על התיקון של ה kernel.

יש לי נסיון מועט עם משכורת מסודרת, נכון. עדיין יש לי נסיון לא כל כך רע (אני מודה שלא מספיק) ב C , אני מניח שזה שיש לי תואר במדעי המחשב עוזר לא? לא עשיתי אותו בשביל הכיף. רוב הפרויקטים שכתבתי במכון סלע ובבר אילן היו ב C, למעשה ככה התפרנסתי רוב הזמן בתור סטודנט, הייתי עושה עבודות ופרוייקטים בתשלום. חלקם לתלמידי תואר שני ואפילו פעמיים לתואר שלישי, אולי לא תמיד עשיתי הכל לבד אבל 90% ומעלה מהפיתוח היה שלי.

שוב, אני לא אומר שאני ברמה מספיקה, אני רק מנסה להראות לך שהרמה לא רחוקה כמו שאתה חושב (האמת, אחרי כל המאמץ שלי להיות מתכנת יותר טוב אפילו נעלבתי קצת, נו, שווין)

עכשיו, שוב.

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

קישור לתוכן
שתף באתרים אחרים

ב- אני לא יכול לעזור לך יותר מדי.

(מצד שני קרנלים דומים אחד לשני יותר ממה שאתה חושב).

גם במשהו אחר תופס.

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

קישור לתוכן
שתף באתרים אחרים

http://lwn.net/Kernel/LDD3/

http://kernelnewbies.org/

http://kernelbook.sourceforge.net/

וכמובן חומר על מערכות הפעלה יעזור: לדוגמא http://www.amazon.com/Operating-Systems-Implementation-Prentice-Software/dp/0131429388/

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

אגב תתעלם מההערה על דמיון בין קרנלים - הניסוח שלי היה לא טוב. יש הרבה דמיון והרבה שוני בין קרנלים. הנקודה היתה שברגע שהבנת מה זה לעבוד ב-kernel space, עם API-ים מיוחדים של קרנלים, ועם שיקולים מתאימים, אז מעבר לקרנל אחר הוא יותר קל.

קישור לתוכן
שתף באתרים אחרים

איך בדיוק תריץ קרנל בC#? רוב פיתוח הקרנלים בשוק הוא לembedded כל אין לך חומרה שיודעת להריץ dotnet framework אין לך איך לכתוב קרנל בC#. אתה צריך לרדת כמה שיותר קרוב לרמה של שפת המכונה, הקרנלים הרציניים נכתבים באסמבלר הפשוטים יותר בC/C++...

וברמה של לעבוד בתוך הkernel space וכדומה גם שמה C# לא יעזור לך בגרוש. C# כרגע נמצא בביקוש גבוה, אין כמעט מתכנתים בעלי נסיון בC# אם תכנתת בצבא בזה אז עבודה עם שכר נורמאלי לא תיהיה לך בעיה למצוא אם אתה סתם מלימוד עצמי עם תואר במדעי המחשב משהו מעל משכורת מינימום(להיטק כמובן) לא תמצא.

קישור לתוכן
שתף באתרים אחרים

איך בדיוק תריץ קרנל בC#? רוב פיתוח הקרנלים בשוק הוא לembedded כל אין לך חומרה שיודעת להריץ dotnet framework אין לך איך לכתוב קרנל בC#. אתה צריך לרדת כמה שיותר קרוב לרמה של שפת המכונה, הקרנלים הרציניים נכתבים באסמבלר הפשוטים יותר בC/C++...

וברמה של לעבוד בתוך הkernel space דרייברים וכדומה גם שמה C# לא יעזור לך בגרוש. C# כרגע נמצא בביקוש גבוה, אין כמעט מתכנתים בעלי נסיון בC# אם תכנתת בצבא בזה אז עבודה עם שכר נורמאלי לא תיהיה לך בעיה למצוא אם אתה סתם מלימוד עצמי עם תואר במדעי המחשב משהו מעל משכורת מינימום(להיטק כמובן) לא תמצא.

מה לא היה מובן במה שאמרתי?

כרגע אני באמת עובד ב C# (תגיד, 13 זה מעל המינימום שלך למתכנת בלי נסיון?)

אני רוצה לעבור לתיכנות קרנל.

דרך אגב בצהל אני חי"ר, לא שטויות של לשבת מול מחשב.

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

קישור לתוכן
שתף באתרים אחרים

הקרנלים הגדולים לא כתובים באסמבלר מלבד חלקים קטנים מאוד (יחסית לגודל הקרנל).

קרנלים קטנים יותר כתובים לפעמים בהרבה אסמבלר (יחסית), כי הרבה פעמים הם מיועדים ל-RT או embedded.

ועדיין, גם קרנלים ל-RT/embedded כתובים ב-C (לדוגמא VxWorks).

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...