איך מייצרים מערכת הפעלה ממוחשבת?

1. השתתף בקורסים למדעי המחשב.
2. למדו שפת תכנות ברמה גבוהה ברמה מתקדמת.
3. למד שפת הרכבה ברמה נמוכה.
4. השלם הדרכת מערכת הפעלה.
5. תכנן את מערכת ההפעלה שלך.
6. צור את סביבת התכנות שלך.
7. לבנות ולבדוק.
8. שחרר מועמד לשחרור.

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

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

חלק 1 מתוך 2: לימוד היסודות

  1. 1
    השתתף בקורסים בסיסיים למדעי המחשב. בניגוד לפיתוח באינטרנט, יצירת מערכת הפעלה מצריכה הבנה חזקה של אלגוריתמים, מבני נתונים, חומרת מחשב וניהול משאבים. אנשים מקבלים תארים בחומר הזה, אז אל תצפו לכתוב מערכת הפעלה שלמה לאחר קריאת הדרכה מקוונת! קורס מבוא למדעי המחשב של הרווארד זמין באופן מקוון דרך EDX ללא עלות.
  2. 2
    למד שפת תכנות גבוהה כמו C. ברגע שיש לך הבנה בסיסית של מדעי המחשב, השלב הבא הוא לשלוט ב- C ו / או C ++. כמו ללמוד על מדעי המחשב, שליטה בשפה אינה אופציונלית - לא תוכל לקודד מערכת הפעלה אם אינך יכול לכתוב יישומים מוצקים.
  3. 3
    למדו שפת הרכבה. שפות הרכבה הן שפות ברמה נמוכה המיועדות לתקשר עם מעבדים שונים. מכיוון שההרכבה שונה עבור סוגי מעבדים שונים (למשל, שפת הרכבה x86 עבור אינטל, AMD, VIA ומעבדים אחרים), יהיה עליכם ללמוד את הגרסה לסוג המעבד אליו אתם מקודדים.
    • ספר קוד פתוח זה, אם הוא נקרא בשלמותו, יכול לתת לך הבנה מספיק מוצקה לבניית מערכת הפעלה.
    • אומנות שפת ההרכבה היא ספר מומלץ ביותר על הרכבה הזמין גם במצב לא מקוון.
    • אתה צריך גם לעשות הרבה מחקר על סוג (ים) המעבדים שעליהם מערכת ההפעלה שלך צריכה לפעול. את המדריכים לארכיטקטורת המעבדים ניתן למצוא בקלות באמצעות חיפוש בגוגל ("מדריכי אינטל", "מדריכי ARM וכו ').
  4. 4
    השלם הדרכה למערכת הפעלה. מדריכי מערכת הפעלה ינחו אתכם בתהליך יצירת מערכת הפעלה בסיסית. זה מתרגל לתהליך ומסייע לך להבין אם יש חלקים שחסרים לך. לאחר שתסיימו הדרכה או שתיים, תהיו בדרך ליצור מערכת הפעלה משלכם.
    • עצמות חשופות היא הדרכה המסייעת לך לכתוב את ליבת 32 הסיביות הפשוטה הראשונה שלך. לאחר השלמת ההדרכה, השלב הבא הוא להשתמש בשלד Meaty כדי לבנות את מערכת ההפעלה שלך.
    • לינוקס מאפס הוא ספר מקוון שמנחה אותך ביצירת מערכת הפעלה משלך בלינוקס.
    • מערכות הפעלה בין 0 ל -1 הוא ספר חינמי העוסק ביצירת מערכות הפעלה שונות מההתחלה ועד הסוף.
    הליבה היא הליבה של מערכת ההפעלה שלך
    הליבה היא הליבה של מערכת ההפעלה שלך, ומספקת ממשק בין המשתמש לחומרת המחשב.
  5. 5
    בררו את יעדי מערכת ההפעלה שלכם. מה אתה רוצה שמערכת ההפעלה שלך תעשה? איך זה צריך להיראות? האם אתה באמת צריך לכתוב מערכת הפעלה שלמה או שאתה רק מחפש ליצור מראה מסוים לשולחן העבודה שלך? כל אלה יש לקחת בחשבון לפני שמתחילים לקודד.
    • שקול להתפתח עם צוות מתכנתים אחרים. קיום צוות מפתחים שעובד על הפרויקט יקצר משמעותית את זמן הפיתוח.
    • הוסף את המטרות, התוכניות והשאלות שלך לפרויקט למאגר הציבורי שלך, כך שאחרים יוכלו לעזור לך בקלות.

חלק 2 מתוך 2: בניית מערכת ההפעלה שלך

  1. 1
    בחרו סביבת פיתוח. זו הפלטפורמה בה תשתמש לקידוד מערכת ההפעלה החדשה שלך. זה עניין של העדפה אישית, אך רוב האנשים משתמשים ב- Windows או בטעם של UNIX. אם אתה משתמש ב- Windows, מומלץ להתקין סביבת UNIX כמו Cygwin או MinGW. בדרך כלל תרצה לוודא שהסביבה בה אתה משתמש כוללת את הדברים הבאים:
    • GCC (מהדר גנו). אם אתה משתמש ב- Windows, אתה יכול להתקין אותו ב- Cygwin או ב- MinGW.
    • Binutils הוא אוסף כלים המשמשים למניפולציה של קבצי אובייקטים. שוב, אם אתה משתמש ב- Windows, אתה יכול להתקין אותו ב- Cygwin.
    • עורך טקסטים טוב. Vim ו- emacs משמשים בדרך כלל בסביבות UNIX. משתמשי Windows יכולים להשתמש ב- Notepad, או לבדוק ב- Notepad ++ לצורך שדרוג רב-לשוניות.
    • פרל ו / או פייתון. אחד או שניהם מומלצים למניפולציה במחרוזות.
  2. 2
    הגדר את מערכת בקרת הגרסאות שלך. כתיבת מערכת הפעלה פירושה שסביר להניח שתיצור מאות (או אלפי!) שורות קוד. כשאתה עובד על תיקונים, זה יכול להיות מבלבל. כמה אפשרויות לבדוק הן CVS, Mercurial ו- Subversion.
  3. 3
    החלט על מאתחל. אם אתה לא רוצה ליצור משלך, אתה יכול להשתמש בתוכנה קיימת כמו Grandloader מאוחד (GRUB). אם אתה מרגיש נועז מספיק כדי לקודד אתחול האתחול, בדוק את גלגל מטען האתחול שלך באתר OSDev.org.
  4. 4
    בחר עיצוב ליבה. הליבה היא הליבה של מערכת ההפעלה שלך, ומספקת ממשק בין המשתמש לחומרת המחשב. ישנם גרעינים מונוליטיים ומיקרו גרעינים. גרעינים מונוליטיים מיישמים את כל השירותים שבגרעין, בעוד שלמיקרו-גרעינים יש גרעין קטן בשילוב עם יישומי הדמונים של המשתמשים. באופן כללי, גרעינים מונוליטיים מהירים יותר, אך למיקרו-גרעינים בידוד ואמינות טובים יותר.
  5. 5
    תתחיל בקטן. התחל בדברים קטנים כגון הצגת טקסט והפרעות לפני שתעבור לדברים כמו ניהול זיכרון ורב משימות. אתה יכול גם לנסות ליצור מערכת הפעלה פשוטה של 16 סיביות, במקום לקחת קפיצה גדולה.
    • לא תהיה לך מערכת מלאה בעוד שבועיים. התחל עם מערכת הפעלה שמתניידת ואז עוברים לדברים המגניבים.
    שליטה בשפה אינה אופציונלית - לא תוכל לקודד מערכת הפעלה אם אינך יכול לכתוב יישומים מוצקים
    כמו ללמוד על מדעי המחשב, שליטה בשפה אינה אופציונלית - לא תוכל לקודד מערכת הפעלה אם אינך יכול לכתוב יישומים מוצקים.
  6. 6
    בדוק את מערכת ההפעלה החדשה שלך באמצעות מכונה וירטואלית. במקום לאתחל את המחשב בכל פעם שאתה מבצע שינויים או צורך להעביר את הקבצים ממחשב הפיתוח למחשב הבדיקה שלך, השתמש ביישום מכונה וירטואלית. Vmware היא אפשרות נפוצה שעובדת גם עם Windows וגם עם Linux, וכך גם Bochs. בדוק אם חסמים פוטנציאליים ובאגים אחרים ותקן אותם לפי הצורך.
  7. 7
    שחרר "מועמד לשחרור. " אתה יכול לעשות זאת על ידי העלאת הקוד שנבדק למאגר הציבורי שלך. זה יאפשר לאנשים לבדוק את מערכת ההפעלה שלך ולדווח על כל הבעיה שהם נתקלים בה.
  8. 8
    רשת עם מפתחי מערכות הפעלה אחרות. יש קהילה שלמה של מפתחי מערכות הפעלה שמתכנסים בפורומים שונים, כולל / r / osdev ב- Reddit ו- Exchange Engineering Stack. כזה שקיבלתם פיתוח מערכת הפעלה בסיסית, קראו פוסטים קיימים כדי לראות איזה דברים עולים במהלך תהליך הפיתוח.

טיפים

  • הקפד ליישם תכונות אבטחה בראש סדר העדיפויות שלך אם תרצה שהמערכת שלך תהיה קיימא.
  • אחרי שכל הפיתוח נעשה, החלט אם ברצונך לשחרר את הקוד כמקור פתוח, או קנייני.
  • אל תצטרף לפורומים של OSDev.org ותתחיל לשאול שאלות ברורות. זה פשוט יביא לתשובות "קרא את המדריך". כדאי לנסות לקרוא את ויקיפדיה ואת המדריכים לכלים השונים שבהם ברצונך להשתמש.
  • אל תתחיל פרויקט של מערכת הפעלה כדי להתחיל בתכנות למידה. אם אתה עדיין לא מכיר C, C ++, פסקל או איזו שפה מתאימה אחרת, כולל מניפולציה עם מצביע, מניפולציה של סיביות ברמה נמוכה, העברת סיביות, שפת הרכבה מוטבעת וכו ', אינך מוכן לפיתוח מערכות הפעלה..
    יצירת מערכת הפעלה מצריכה הבנה חזקה של אלגוריתמים
    בניגוד לפיתוח באינטרנט, יצירת מערכת הפעלה מצריכה הבנה חזקה של אלגוריתמים, מבני נתונים, חומרת מחשב וניהול משאבים.
  • מערכת הפעלה יכולה להיות גם ידידותית למשתמש. הקפד להוסיף תכונות ידידותיות למשתמש, מה שהופך אותן לחלק בלתי נפרד מהעיצוב שלך.
  • כדי שמערכת הפעלה תוכל לטפל במספר מעבדים, על מנהל הזיכרון שלך להיות מנגנוני "נעילה" כדי למנוע ממעבדים מרובים לגשת לאותו משאב בו זמנית. ה"מנעולים "המשמשים לכך ידרשו נוכחות של מתזמן כדי לוודא שרק מעבד אחד ניגש למשאב קריטי בכל זמן נתון וכל האחרים ממתינים. עם זאת המתזמן תלוי בנוכחות מנהל זיכרון. זהו מקרה של תלות במבוי סתום. אין דרך סטנדרטית לפתור בעיות כאלה; כמתכנת, מצפים ממך להיות מיומן מספיק כדי להבין את דרכו להתמודד איתו.
  • אם אתה עושה משהו שאינו מומלץ, כמו לכתוב בתים אקראיים ליציאות קלט / פלט אקראיות, אתה תקרוס את מערכת ההפעלה שלך ותוכל (בתיאוריה) לטגן את החומרה שלך.

שאלות ותשובות

  • האם אוכל למזג את מערכות ההפעלה Windows ו- Android?
    אתה יכול, אבל שתיהן שתי מערכות הפעלה שונות וזה ידרוש ניסיון רב ועבודה בתכנות. לפיכך, אלא אם כן אתה מצליח לבצע את התכנות, אל תנסה זאת.
  • כיצד אוכל למזג מערכות הפעלה Windows ו- Android?
    Windows הוא מערכת הפעלה לא מובנית, שלא לדבר על זה שאינו קוד פתוח, הוספת פונקציונליות ל- Windows היא משימה די קשה. בעוד שאפשר לומר כי אנדרואיד הוא גרסה של לינוקס, מערכת הפעלה מובנית ומקור פתוח, הוספת שכבות פונקציונליות היא קלה, אך יותר מדי שכבות גורמות לחוויית משתמש גרועה. בחזרה לשאלה, זה בהחלט ידרוש ממך ידע נרחב באנדרואיד (אתה יכול לנסות לבשל אנדרואיד ROM) וידע פנימי על האופן שבו כמה מרכיבי ליבה של Windows עובדים, אז מה תקבל לאחר מיזוג שני מערכות ההפעלה הללו, האם זה להיות מובנה או לא מובנה, מלכתחילה? יש יותר מדי עמימות!
  • האם קידוד הליבה שלי טוב יותר מאשר שימוש בגרעין קיים?
    השגת ליבת קוד פתוח עדיפה על קידוד אם אתה נמצא ב- uni או משהו מכיוון שאתה לא צריך להתחיל מאפס או לשלם עבור זה מכיוון שהוא קוד פתוח. עם זאת, קידוד אחד מוכיח ידע גבוה יותר בתכנות, שעשוי להעדיף.
  • כמה זמן ייקח לבנות מערכת הפעלה חדשה?
    זה ייקח חודשים אם לא שנים ליצור מערכת הפעלה שעובדת כראוי עם הרבה פונקציונליות. אין דרך אפשרית לבשל מערכת הפעלה תוך כמה שבועות או ימים.
  • האם אוכל לעשות זאת אם אין לי ניסיון בתכנות?
    רק אם אתה מוכן ללמוד הרבה. תזדקק להבנה מלאה של לפחות קוד הרכבה, ומוטיבציה ללמוד עוד. בניית מערכת הפעלה משלך אינה משימה קטנה.
  • באילו יישומים אוכל להשתמש כדי לתכנת את מערכת ההפעלה שלי?
    זה תלוי בשפת התכנות בה אתה משתמש. עם זאת, מומלץ להשתמש ב- IDE, או בסביבת פיתוח משולבת, כדי לתכנת את מערכת ההפעלה שלך, שכן ל- IDE יש כלים ותכונות מובנים שיעזרו להקל על הפיתוח. אולם לא כל IDEs תומכים בכל שפה, לכן תרצה לחפש ספציפי IDEs התומכים בשפה (או בשפות) בהן אתה משתמש.
  • מה צריך להיות הצעד הראשון שלי?
    למדו שפות תכנות ומושגים, והתרגלו להיות מתכנתים חזקים מאוד.
  • האם אוכל ליצור מערכת הפעלה באמצעות Java בלבד?
    כן, מישהו עשה זאת בעבר. עם זאת, אם אתה רוצה שאנשים ישתמשו בפועל במערכת ההפעלה שלך אל תשתמש ב- Java. זה לא רק ייקח הרבה יותר זמן, אלא שהוא גם לא יהיה טוב כמו מערכת הפעלה העשויה משפת קידוד אחרת. אז, אתה יכול, כן, אבל אתה צריך? כנראה שלא.
  • מהן כמה כישורים חיוניים לפיתוח מערכת הפעלה?
    אתה זקוק להרבה מאוד ידע בנוגע להרכבה ושפה ברמה נמוכה, כגון C. תזדקק גם לידע רב על טיפול בזיכרון ותצטרך להיות מסוגל לטפל בחיבורים עם מכשירים וציוד היקפי.
  • האם תוכל לתת לי מידע נוסף על גרפיקה ואיפה להתחיל?
    אתה יכול להכין את הגרפיקה בעצמך, ותוכל להתחיל בכל עת ובכל מקום שתרצה. כל מה שאתה צריך זה קצת ידע בתכנות וקצת תוכנה לתכנת איתו. אם אינך בטוח מה לעשות, ביצוע הדרכה מקוונת עם מקומות כמו קוד האקדמיה או האקדמיה של חאן עשוי לעזור.

תגובות (6)

  • gokon
    אני רוצה ליצור מערכת הפעלה. אני מכיר כמה שפות תכנות, אבל זה הכל.
  • chance61
    לא חשבתי שמאמר מדריך יהיה אי פעם רציני!
  • connmellie
    למדתי כיצד נוצר מערכת הפעלה. תודה.
  • damien21
    אני אוהב את הצעדים, הטיפים והאזהרות. שלושת הדברים האלה יעזרו לך להמשיך. תודה, מדריך, שנתת לנו את הידע הזה.
  • lila42
    מפורט מאוד ועשה עבודה נהדרת, עם הדרכה שלב אחר שלב.
  • eldredmcglynn
    זה פירט עבורי מה לעשות בשביל זה.
FacebookTwitterInstagramPinterestLinkedInGoogle+YoutubeRedditDribbbleBehanceGithubCodePenWhatsappEmail