מערכת ההפעלה מאפשרת למשתמש לקיים אינטראקציה עם חומרת המחשב. המערכת מורכבת ממאות אלפי שורות קוד. בדרך כלל מערכת ההפעלה מיוצרת באמצעות שפות התכנות C#, C, C ++ והרכבה. מערכת ההפעלה מאפשרת לך לגלוש במחשב שלך תוך שמירה וביצוע פקודות. אל תחשוב שיצירת מערכת הפעלה היא קלה. נדרש ידע רב כדי להכין אותו.
שלב
שלב 1. קודם כל, למד על תכנות
שפת ההרכבה חשובה מאוד; מומלץ מאוד ללמוד שפה נוספת משלימה ברמה גבוהה כגון שפת C.
שלב 2. החליט באיזו מדיה ברצונך להשתמש כדי לטעון את מערכת ההפעלה
מדיה זו יכולה להיות כונן תקליטורים, כונן DVD, כונן הבזק, כונן קשיח, תקליטון או מחשב אחר.
שלב 3. הגדר את רעיון הליבה של SO
לדוגמה, ב- Windows, הרעיון המרכזי הוא GUI קל לשימוש והרבה אבטחה.
שלב 4. קבע באיזו פלטפורמת מעבד מערכת ההפעלה שלך תתמוך
IA-32, ARM ו- x86_64 הן הפלטפורמות הנפוצות ביותר למחשבים אישיים. אז, כולם הם הבחירה הטובה ביותר שלך.
שלב 5. תחליט אם אתה מעדיף לעשות הכל בעצמך מאפס, או שיש כבר גרעין שברצונך לבנות עליו
לדוגמה, לינוקס מאפס הוא פרויקט לאנשים שרוצים לבנות הפצת לינוקס משלהם.
שלב 6. החליטו אם תשתמשו במטען אתחול משלכם או במבנה שנבנה מראש כגון ה- Grand Unified Bootloader (GRUB)
קידוד מטען האתחול בעצמך ידרוש ידע נרחב בחומרה וב- BIOS. כתוצאה מכך, שלב זה עלול לעכב את לוח התכנות של הגרעין בפועל.
שלב 7. החליט באיזו שפת תכנות להשתמש
זה בסדר שיש מערכת הפעלה בשפה כמו Pascal או BASIC, אבל אתה צריך להשתמש ב- C או ב- Assembly. ההרכבה הכרחית מאוד מכיוון שחלקים חשובים במערכת ההפעלה דורשים זאת. מצד שני, השפה C ++ מכילה מילות מפתח הדורשות הפעלה מלאה נוספת של SO.
כדי לאסוף מערכת הפעלה מקוד C או C ++, כמובן שתשתמשו במהדר כזה או אחר. לכן, מומלץ להתייעץ עם מדריך למשתמש/במדריך/בתיעוד של מהדר C/C ++ לבחירתכם, בין אם הוא כלול בתוכנה ובין אם הוא זמין באתר המפיץ. אתה צריך לדעת הרבה דברים מסובכים על המהדר, ולפיתוח C ++, אתה צריך לדעת על תכנית ההתרסקות של המהדר ועל ה- ABI שלו. אתה אמור להבין את פורמטי ההפעלה השונים (ELF, PE, COFF, בינארי בסיסי וכו '), ולהבין שפורמט בלעדי של Windows, PE (.exe), מוגן בזכויות יוצרים
שלב 8. הגדר את ממשק תכנות היישומים שלך (API)
API טוב אחד לבחירה הוא POSIX מכיוון שהוא מתועד היטב. לכל מערכות יוניקס יש תמיכה חלקית לפחות ב- POSIX. אז חיבור תוכניות Unix למערכת ההפעלה שלך אמור להיות קל.
שלב 9. החליטו על העיצוב שלכם
יש דבר כזה גרעין מונוליטי וגרעין מיקרו. גרעינים מונוליטיים מיישמים את כל השירותים בגרעין, בעוד שבגרעיני מיקרו יש גרעינים קטנים המצורפים שירותי פריסת שדים של משתמשים. באופן כללי, גרעינים מונוליטיים מהירים יותר, אך למיקרו -קרנלים יש בידוד ואמינות טובים יותר של תקלות.
שלב 10. שקול לפתח ולעבוד בצוות
כך לוקח פחות זמן לפתור יותר בעיות, מה שכנראה יאיץ את בניית מערכת ההפעלה הטובה יותר.
שלב 11. אל תנגב את הכונן הקשיח לחלוטין
זכור, מחיקת כונן תמחק את כל הנתונים עליו באופן בלתי הפיך! השתמש ב- GRUB או במנהל אתחול אחר כדי לאתחל את המערכת כפולה עם מערכת הפעלה אחרת עד שמערכת ההפעלה תפעל באופן מלא.
שלב 12. התחל בקטן
התחל בדברים קטנים כמו הצגת טקסט והשהה לפני שתמשיך לדברים כמו ניהול זיכרון ועבודה מורכבת. הקפד גם ליצור גירסאות 32 סיביות ו 64 סיביות.
שלב 13. שמור גיבוי של קוד המקור האחרון שעובד
שלב זה שימושי כאמצעי הגנה למקרה שמשהו ישתבש בגרסה הנוכחית של ה- SO או הפיתוח. אם המחשב שלך קורס ולא יאתחל, רצוי שיהיה עותק שני לעבודה כדי שתוכל לתקן את הבעיה.
שלב 14. שקול לבדוק את מערכת ההפעלה החדשה שלך באמצעות מכונה וירטואלית
במקום לאתחל את המחשב שלך בכל פעם שאתה מבצע שינויים או לאחר שליחת קבצים ממחשב הפיתוח שלך למכונת הבדיקה שלך, תוכל להשתמש ביישום מחשב וירטואלי כדי להריץ את מערכת ההפעלה בזמן שמערכת ההפעלה הנוכחית שלך פועלת. יישומי VM הנוכחיים כוללים: VMWare (שיש לו גם מוצר שרת זמין בחינם), חלופות קוד פתוח, Bochs, Microsoft Virtual PC (לא תואם ל- Linux) ו- Oracle VirtualBox.
שלב 15. הפעל את "מועמד השחרור" או גרסת הביטא
שלב זה יאפשר למשתמש להודיע לך על בעיות אפשריות במערכת ההפעלה שלך.
שלב 16. מערכת ההפעלה צריכה להיות גם ידידותית למשתמש
הקפד להוסיף תכונות ידידותיות למשתמש, הפוך אותן לחלק בלתי נפרד מהעיצוב שלך.
טיפים
- בדוק אם קיימים סתימות אפשריות ובאגים אחרים. באגים, סתימות וסוגיות אחרות ישפיעו על פרויקט בניית מערכת ההפעלה שלך.
- הקפד ליישם תכונות אבטחה כעדיפות עליונה אם ברצונך שהמערכת תפעל כראוי.
- השתמש באתרים כמו OSDev ו- OSDever כדי לעזור לך לפתח מערכת הפעלה משלך. אנא שים לב כי לרוב המטרות, קהילת OSDev.org תשמח יותר אם תשתמש בוויקי שלהם, ולא תצטרף לפורום. אם תחליט להצטרף לפורום, יש תנאי מוקדם: עליך לדעת באמת על C או C ++, ועל שפת ההרכבה x86. עליך גם להבין מושגי תכנות כלליים ומורכבים כמו רשימות מקושרות, תורים וכו '. קהילת OSDev, בתקנותיה, קובעת במפורש כי הקהילה שלה לא נוצרה כדי לטפח מתכנתים חדשים.
- אל תצטרף עם הפורום OSDev.org ולאחר מכן שאל את השאלה המתבקשת. תתבקש לקרוא את המדריך בלבד. קרא את ויקיפדיה ואת ההוראות לכל הציוד שאתה רוצה להשתמש בו.
- אם אתה מנסה לפתח מערכת הפעלה, אתה בהחלט נחשב ל"אל "התכנות.
- היית צריך גם לקרוא את מדריך המעבד לארכיטקטורת המעבד שבחרת; בין אם x86 (אינטל), ARM, MIPS, PPC וכו '. קל למצוא מדריכים לארכיטקטורות מעבדים באמצעות חיפוש בגוגל ("מדריך אינטל", "מדריך ARM" וכו ').
- לאחר השלמת כל עבודת הפיתוח, החליטו אם ברצונכם לשחרר את הקוד כקוד פתוח או על פי זכויות יוצרים.
- אל תתחיל פרויקט מערכת הפעלה להתחלת לימוד תכנות. אם אינך יודע מבפנים ומבחוץ על C, C ++, פסקל או שפה מתאימה אחרת, כולל מניפולציה של מצביע, מניפולציה של סיביות ברמה נמוכה, העברת סיביות, שפות הרכבה מוטבעות וכו ', אינך מוכן למערכת הפעלה. התפתחות.
- יצירת מחיצה חדשה לגמרי כדי 'להרחיב' SO עשויה להיות אופציה טובה.
- אם אתה רוצה דרך קלה, שקול הפצות לינוקס כמו Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS Mk LiveCD או SUSE Studio ו- SUSE KIWI. עם זאת, מערכת ההפעלה שאתה יוצר שייכת לחברה שהתחילה את השירות תחילה (למרות שיש לך את הזכות להפיץ אותו באופן חופשי, לשנות אותו ולהפעיל אותו כרצונך במסגרת GPL).
אַזהָרָה
- לא תקבל מערכת הפעלה מלאה תוך שבועיים. התחל ב- SO לאתחול, ולאחר מכן המשך לדברים מגניבים יותר.
- כתיבה רשלנית של מערכת ההפעלה שלך בכונן קשיח עלולה לפגוע בה לחלוטין. הזהר.
- אם אתה עושה משהו שאינו מומלץ, כגון כתיבת בייטים אקראיים ביציאות קלט/פלט אקראיות, תקרוס את מערכת ההפעלה שלך ו (בתיאוריה) תוכל לחרוך את החומרה שלך.
- אל תצפה שמערכת ההפעלה קלה לבנייה. יש הרבה תלות הדדית מסובכת. לדוגמה, כדי ליצור מערכת הפעלה המסוגלת לטפל במספר מעבדים, מנהל הזיכרון שלך חייב להיות בעל מנגנון "נעילה" כדי למנוע מרבים מעבדים לגשת לאותו משאב בו זמנית. ה"מנעול "המשמש לשם כך יחייב מתזמן להבטיח שרק מעבד אחד יגיע למשאבים קריטיים בכל זמן נתון וכל האחרים יאלצו להמתין. למעשה, מתזמן תלוי בנוכחות מנהל הזיכרון. זוהי דוגמה לתלות במבוי סתום. אין דרך סטנדרטית לפתור בעיות מסוג זה; כל מתכנת מערכת הפעלה צפוי להיות מיומן מספיק כדי לדעת את הדרך שלו להתמודד עם זה.
משאבים נוספים
- הנחיות: Linux מ- Scratch
- מטעין אתחול: GRUB
- יישומי מכונה וירטואלית: Bochs, VM Ware, XM Virtual Box.
- מדריך מעבד: ידני אינטל
- אתרי פיתוח SO: OSDev, OSDever