Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- עבודת גמר במדעי המחשב – עבודת בחירה - הצעה
- כתובת בית הספר: הכפר הירוק, רמת השרון, מיקוד: 4780000
- שם מלא: דניאל ניל אליעד
- תעודת זהות: 318851276
- בית ספר: תיכון הכפר הירוק
- טלפון של בית הספר: 03-6455621 או 03-6455651
- פקס של בית הספר: 03-6455671
- שם המנחה: יהודה אור
- תעודת זהות: 023098007
- תואר אקדמי: מהנדס. מוסמך הטכניון בהנדסה, הסבה אקדמאית למחשבים מטעם המדינה מאז שנת 2000. תעודות הסמכה מטעם Microsoft.
- מקום העבודה: מכון וויצמן, מכללת ג'והן ברייס, הכפר הירוק, תיכון עירוני ד', ת"א.
- תחום העבודה (מקצוע): מדעי המחשב
- טלפון: 050-7344457
- אי-מייל: [email protected]
- מספר יחידות לימוד: 5 יחידות
- נושא העבודה:
- בניית מערכת הפעלה של 32 ביט בשפת אסמבלי ו - C.
- מטרת העבודה:
- מחקר והבנה נרחבת במערכות הפעלה
- מחקר על מעבדי אינטל x86
- מחקר על מערכת הBIOS ותהליך הboot
- מחקר והבנה נרחבת בניהול הזיכרון במחשב - ובשפות תכנות באופן כללי.
- לימוד שפת C
- לימוד שפת אסמבלי
- למידה על עבודה עם קומפיילרים ולינקרים באופן ידני (ללא סביבת עבודה מוגדרת המפשטת את התהליך)
- מימוש המחקר לכדי יצירת מערכת הפעלה 32 bit
- הבעיה לחקירה/בדיקה:
- כיצד לגרום לBIOS להריץ קוד משלי
- מה הופך device לbootable device
- אילו מגבלות יכולות להיות על הקוד הראשוני שלי
- גודל
- מצב המעבד בשלב זה בתהליך הboot
- איך הקוד הראשוני שלי יטען את המשך התוכנה
- איך לבנות boot loader
- איך להחליף את מצב המעבד מreal mode לprotected mode
- איך לטעון את שאר מערכת ההפעלה מהboot loader
- איך לבנות kernel
- איך לתקשר עם הdevice drivers
- איך לנהל מערכת קבצים
- איך ליצור פונקציונליות של multi-tasking
- איך ליצור GUI - ממשק גרפי עם המשתמש
- הצגת הבסיס התיאורטי(ספרות) ודרך הכנת העבודה:
- למידת שפת אסמבלי 16 ביט מספר האסמבלי של גבהים, הנכתב על ידי ברק גונן: http://cyber.org.il/assembly/gvahim_assembly_book.pdf
- למידת C מהאתר: http://c.learncodethehardway.org/book/
- למידה מהאתר כוללת בנוסף מעבר על לינקרים וקומפיילרים של C
- ללמוד כיצד להשתמש בקומפיילרים ולינקרים ועל תהליך הקומפילצייה וקישור של שפות תכנות באופן כללי ושל C בפרט מהאתר: http://www.lurklurk.org/linkers/linkers.html
- למידה על כתיבת הkernel והboot loader ובנוסף על הפורמט של שמירת מדיה בתוך מחיצות, מהספר:https://www.gitbook.com/book/samypesse/how-to-create-an-operating-system/details
- למידה על כתיבת הkernel לעומק - כולל יצירת מערכת הפעלה עם פונקציוליות כגון - multi tasking וfile systems, מהספר: https://littleosbook.github.io/book.pdf
- למידה על כתיבת boot loader מסדרת הכתבות באתר http://www.tldp.org/LDP/LG/issue77/krishnakumar.html
- למידה על כתיבת boot loader מהאתר http://www.independent-software.com/writing-your-own-toy-operating-system-first-and-second-stage-bootloaders-together/
- למידה על מערכות הפעלה - רקע תיאורטיftp://ftp.cs.uky.edu/cs/manuscripts/vade.mecum.2.pdf
- עיקרי ההיבט המחקרי של העבודה:
- שימוש בידע שרכשתי על ארכיטקטורת מעבדי אינטל x86 על מנת להעביר את מצב המעבד מreal mode לprotected mode
- הדבר גורם להחלפה מקוד האסמבלי הנכתב ב16 ביט לקוד הנכתב ב32 ביט
- שימוש בידע שרכשתי על תהליכי הboot של המחשב על מנת לטעון את מערכת ההפעלה שכתבתי
- כתיבת multi stage bootloader שיחליף את מצב המעבד מ - real mode ל -protected mode, ובנוסף לפעולות נוספות, יטען את הkernel הכתוב ב - C לתוך ה - RAM, ויבצע אותו.
- שימוש נכון של מערכת הBIOS ובinterrupts שהיא מעמידה ברשותי
- שימוש בידע שרכשתי על sectors הנמצאים על הדיסק( לדוגמה - Boot sector הוא הsector הראשון והוא 512 הבתים הראשונים על הדיסק) על מנת לכתוב את מערכת ההפעלה שלי למקומות הנכונים על הדיסק
- שימוש בידע שרכשתי על קומפיילרים ולינקרים כדי לקמפל את מערכת ההפעלה שלי
- קומפיילר gcc לשם קימפול קוד הc, nasm assembler לשם הרכבת קוד האסמבלי ו – GNU linker ( ld) לשם קישור הקבצים המקומפלים לשם קובץ בינארי אחד.
- אשתמש במהלך כתיבת הפרוייקט בתוכנות qemu וvirtualbox כדי להריץ ולבדוק את הקוד שלי בשלבים
- רשימה ארעית של פרקי העבודה:
- מבוא
- מבוא לC ולאסמבלי - רקע תיאורטי, היסטוריה, קונספטים עיקריים ושימוש במערכות הפעלה
- מבוא למערכות הפעלה
- מהו תהליך הboot
- מהו הBIOS
- תפקידיו של הboot loader
- תפקידיו של הkernel
- תיאוריה ומחקר
- עקרונות הBIOS
- פעולה ראשונית כאשר המחשב נדלק - בדיקת POST - power-on-self-test
- מהו bootable device
- הסברה על הsectors הנמצאים על הדיסק - ביניהם הmaster boot record, MBR
- מהן הinterrupts העומדות לרשותנו בזכות הBIOS
- עקרונות הboot loader
- תפקיד הboot loader, טעינת מערכת ההפעלה עצמה לאחר השלמת בדיקת POST, שינוי מצב המעבד מreal mode לprotected mode
- השוואה מפורטת בין single stage boot loader לבין multi stage bootloader - לבסוף הסברים מפורטים לבחירתי בmulti stage boot loader
- עקרונות הkernel
- תפקיד הkernel, קישור בין הCPU, זיכרון, והdevices (דרך device drivers)
- עיקרון מערכת ניהול קבצים
- עיקרון הmulti tasking
- חלק מעשי
- הצגת מבנה התוכנה והזרימה בה
- הצגת קוד בסיסי המדגים את הפוטנציאל של התוכנה בפשטות
- הצגת הרעיון מאחורי הקוד הבסיסי ואת הפונקציונליות שבו
- הצגת הקוד עם הסברים על מימושים
- הצגת הboot loader
- מעבר על הBIOS interrupts המשומשות
- מעבר על השלבים השונים של הboot loader, חשיבותם ותפקידם
- הצגת הkernel
- מעבר על מנגנוני Input Output עם הdevice drivers
- מעבר על מערכת ניהול הקבצים
- מעבר על multi tasking
- מעבר על הממשק הגרפי של המשתמש עם מערכת ההפעלה - GUI
- הצגת שימושים במערכת ההפעלה
- סיכום - מסקנות, סקירה של התוצר והאם הוא ענה על הקריטריונים שבו הוצב
- ביבליוגרפיה
- הוראות הפעלה
- נספחים
- קוד מערכת ההפעלה
- קישור להורדת מערכת ההפעלה
- דיסק שעליו מערכת ההפעלה
- לוח זמנים להכנת העבודה:
- ינואר
- הגשת הצעת עבודה
- ינואר - פברואר
- למידת C, אסמבלי
- פברואר - מרץ
- קריאת חומר תיאורטי ומעשי רלוונטי
- אפריל
- כתיבת פרוייקט בסדר גודל קטן יותר כproof of concept
- מאי- נובמבר
- כתיבת הפרוייקט הסופי תוך כדי מתן תשובה לכל הבעיות שהצבתי
- נובמבר - דצמבר
- ליטושים אחרונים
- כתיבת עבודת החקר
Advertisement
Add Comment
Please, Sign In to add comment