מבוא (מלווה למעבדה #1)

‫תרגול ומעבדות במערכות הפעלה‬
‫מרצה הקורס‪ :‬ד"ר כרמי מרימוביץ'‬
‫מתרגל‪ :‬צבי מלמד‬
‫מכללה אקדמית תל‪-‬אביב יפו‬
‫אביב תשע"ה‬
‫שבוע ‪ - #01‬מעבדת מבוא‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫‪1‬‬
‫צור קשר‪...‬‬
‫‪2‬‬
‫‪‬‬
‫צבי מלמד‬
‫‪‬‬
‫דוא"ל‪tzvi.melamed@gmail.com :‬‬
‫‪‬‬
‫‪‬‬
‫שעת קבלה‪:‬‬
‫ימי שלישי ‪ ,11:00-12:00‬חדר מתרגלים (‪ – )231‬נא לתאם‬
‫מראש‬
‫אתר הקורס‪http://tzvimelamed.com/lab/ :‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫נוהל סמארטפונים‬
‫‪3‬‬
‫‪‬‬
‫בפני עוור לא תתן מכשול‬
‫"‪ ...‬מתייחס גם למצבים נוספים של הכשלה ושל ניצול נקודות‬
‫התורפה של הזולת"‬
‫‪‬‬
‫איסור מוחלט להשתמש בסמארטפון בזמן השיעור‬
‫‪‬‬
‫הסמארטפונים חייבים להיות מושתקים ומוצנעים בתיק‬
‫‪‬‬
‫אין להחזיק אותם ביד או להניח על השולחן‬
‫‪‬‬
‫אסור להשתמש בסמארטפון מתחת לשולחן‬
‫ארגון המחשב ושפת סף © צבי מלמד‬
‫נושאים למפגש של היום‬
‫‪4‬‬
‫‪‬‬
‫מבוא למעבדות‬
‫‪‬‬
‫מחשב מארח‪ ,‬אמולציה‬
‫‪‬‬
‫סביבת העבודה ‪CYGWIN, LINUX-VMWARE -‬‬
‫‪‬‬
‫התקנה של ‪ CYGWIN-LINUX- BOCHS‬במחשבים‬
‫האישיים‬
‫משימת כיתה‪:‬‬
‫‪‬‬
‫הפעלת הסביבה במעבדה‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫‪5‬‬
‫מתוך הרצאת מבוא באוניברסיטת‬
‫קולומביה ‪NY‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מבוא למעבדה במערכות הפעלה‬
‫‪6‬‬
‫‪‬‬
‫קורס חשוב‪...‬‬
‫‪ ‬מיליון סיבות‪ ...‬אציין רק‪:‬‬
‫‪ ‬מערכת הפעלה – בלב כל התקן ממוחשב‬
‫‪ ‬כיצד לתכנת מערכת גדולה‪ ,‬כשאנו לא מכירים את רוב התכנה‬
‫‪ ‬מה שקשה (שקף הבא) – זה גם מה שחשוב (בחיים‪,‬‬
‫בתעשייה)‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מבוא למעבדה במערכות הפעלה‬
‫‪7‬‬
‫‪‬‬
‫קשה בגלל‪...‬‬
‫‪ ‬קונצפטים חדשים לא מוכרים ולא אינטואיטיביים – מקביליות‪,‬‬
‫זיכרון מדומה‪ ,‬אופני )‪ (mode‬עבודה שונים (משתמש‪ ,‬גרעין)‪,‬‬
‫פסיקות‬
‫‪ ‬קוד לא מוכר ב ‪ ,C‬מבנים שאינם נפוצים באפליקציות גבוהות‬
‫‪ ‬עבודה עם ‪ assembly‬או ‪inline-assembly‬‬
‫‪ ‬סביבת עבודה לא‪-‬חלונאית (רובנו לא הורגלנו בה)‬
‫‪ ‬אין דיבאגר (בוודאי לא דיבאגר מפנק כמו ‪)dev-studio‬‬
‫‪ ‬לכרמי יש דרישות גבוהות (אכן כך‪ ...‬וטוב שכך‪)....‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫אז מה צריך לעשות?‬
‫‪8‬‬
‫‪‬‬
‫להתעורר ולחרוש רק בשבוע שלפני הבחן או שלפני הבחינה הסופית‬
‫‪‬‬
‫להעתיק תרגילים מהחברים‬
‫‪‬‬
‫המעבדות מבוססות אחת על השנייה – נא להתעלם מזה‬
‫‪‬‬
‫להחליט שהמעבדות זה בזבוז זמן‬
‫‪‬‬
‫לא לקרוא את הספר ‪ ,XV6‬חזור ושנן במשך הסמסטר‬
‫‪‬‬
‫לנסות להבין את הקוד עד הסוף כבר בקריאה ראשונה‪ ...‬להתעלם‬
‫מאבסטרקציה‪ ,‬להתעלם מהפרטים "החשובים"‪ ,‬לצלול לכל שאר הפרטים‬
‫‪‬‬
‫להרים ידיים בקלות‬
‫‪‬‬
‫לחכות שכרמי יצא לשנת שבתון בתקווה שהדרישות תוקלנה‬
‫‪‬‬
‫להתפלל‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מה באמת צריך לעשות?‬
‫‪9‬‬
‫‪‬‬
‫להיות חנון‪.‬‬
‫‪ ‬היי‪-‬טק זה המקום שבו החנונים מנצחים‬
‫‪‬‬
‫להשאיר את הקוליות‪ ...‬למפגשים מסוג אחר‬
‫‪‬‬
‫איך להיות חנון?‬
‫‪ ‬קחו דוגמא ממני (צבי מלמד)‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מה באמת צריך לעשות? (‪)2‬‬
‫‪10‬‬
‫‪‬‬
‫‪‬‬
‫לכתוב קוד‪.‬‬
‫‪ ‬לא מספיק להבין מה הקוד עושה‬
‫לצייר את מבני הנתונים (‪ )struct + arrays‬והקשרים ביניהם‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫לימוד עצמי‬
‫‪11‬‬
‫‪‬‬
‫"אבל "את זה" אני לא יודע – נגמרו התירוצים‪...‬‬
‫‪" ‬שיפור משמעותי במנוע החיפוש של גוגל" –‬
‫‪http://www.feeder.co.il/article-everything-you-need-to‬‬‫‪know-on-google-hummingbird-1000881632‬‬
‫‪‬‬
‫במה שונה המעבדה הזאת?‬
‫‪( system programming ‬תכנות מערכת) –‬
‫לפני ‪XV6 programming‬‬
‫‪‬‬
‫לקרוא בגוגל לפני שפונים אלי בשאלה‪ ,‬במייל‬
‫‪‬‬
‫לקרוא טקסט ב‪ -‬קונטקסט‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫השלמת מעבדות‪...‬‬
‫‪12‬‬
‫‪‬‬
‫חלק מהמעבדות הן דיי ארוכות‪..‬‬
‫‪‬‬
‫מה שלא מספיקים בכיתה – להשלים בבית‪...‬‬
‫‪‬‬
‫‪‬‬
‫בניית ידע‪ ,‬גם ספציפי ל – ‪ ,XV6‬וגם לסביבת העבודה (פקודות‪,‬‬
‫קיצורים‪ ,‬שיטות עבודה) – המעבדות בהמשך‪ ,‬בנויות על הידע‬
‫וההתנסות במעבדות הקודמות‪.‬‬
‫חלק מההסברים במעבדה ניתנים בע"פ – לסכם במחברת‪.‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫דרישות המעבדה –תרגילים‪ ,‬ונוכחות‬
‫‪13‬‬
‫‪ ‬מעבדות ‪ +‬תרגילים‪ 30% :‬מהציון הסופי‬
‫‪ ‬הגשת תרגילים – חובה‪ ...‬וגם חיונית (מה שסיפרו לי‬
‫תלמידים‪)...‬‬
‫‪‬‬
‫‪ 3-4 - 20%‬תרגילים "רגילים" – בדיקה מלאה (בודק חיצוני)‬
‫‪ ‬חובה להגיש את כולם‪ .‬לקבל ציון ‪ 60%‬לפחות בשלושה‬
‫‪‬‬
‫‪ - 10%‬נוכחות במעבדות ‪ +‬תרגילים לבדיקה מדגמית‬
‫‪‬‬
‫‪‬‬
‫נוכחות חובה ‪ -‬לפחות ‪ 11‬מעבדות‪ ,‬מתוך ‪ 13‬הראשונות (מעבדה ‪14‬‬
‫חזרה ‪ +‬הכנה לבחינה)‬
‫תרגילים לבדיקה מדגמית (ייתכן שיכללו הגשה בנייר של קטעי קוד או‬
‫ציור של מבני נתונים‪) ...‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫סביבת העבודה‬
‫מושגים‪:‬‬
‫‪Host, Cygwin, Bash, VMWARE,‬‬
‫‪Emulator, Bochs, Qemu‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫‪14‬‬
‫מה זה ‪ Emulator‬ולמה זה טוב?‬
‫‪15‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫אני מרצה קשיש‪ ...‬יש משחקי ‪ DOS‬שאני נורא אוהב‪..‬‬
‫‪ ‬דע עקא – הוא לא רץ על הלאפטופ שלי ‪windows-8 64bit‬‬
‫אני היי‪-‬טקיסט צעיר‪ ...‬ויש לי משחקי ‪ WINDOWS‬נורא קוליים‪...‬‬
‫שאני רוצה לשחק בהם בעבודה (רק בהפסקת צהריים)‬
‫‪ ‬דע עקא – בעבודה יש לנו רק מחשבי ‪LINUX‬‬
‫אני בחור צעיר‪ ...‬יש לי משחק מדליק של ‪Sony PlayStation 3‬‬
‫‪ ‬דע עקא ‪ -‬יש לי ‪( Nintendo‬או ‪)XBOX‬‬
‫אני צריך לתכנת ולהריץ תחת לינוקס – אבל המחשב שלי הוא‬
‫‪...windows‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מה זה ‪ Emulator‬ולמה זה טוב?‬
‫‪16‬‬
‫‪‬‬
‫‪‬‬
‫יש לנו מערכת הפעלה‪XV6 ..‬‬
‫‪ ‬דיי טובה‪( ...‬אפילו‪ :‬טובה‬
‫מאוד)‪...‬‬
‫‪ ‬פשוטה דייה ללמוד בסמסטר‬
‫‪ ‬מורכבת דייה ללמוד עקרונות‬
‫מרכזיים ומעבר‬
‫מה עוד דרוש?‬
‫‪ ‬קומפיילר לקמפל את מערכת‬
‫ההפעלה‬
‫‪" ‬מחשב ערום" שיטען אותה‬
‫ויריץ אותה עליה‬
‫‪ ‬אפליקציות שירוצו על המחשב‬
‫הזה‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מה זה ‪ Emulator‬ולמה זה טוב?‬
‫‪17‬‬
‫‪‬‬
‫‪‬‬
‫יש לנו מערכת הפעלה‪XV6 ..‬‬
‫‪ ‬דיי טובה‪( ...‬אפילו‪ :‬טובה‬
‫מאוד)‪...‬‬
‫‪ ‬פשוטה דייה ללמוד בסמסטר‬
‫‪ ‬מורכבת דייה ללמוד עקרונות‬
‫מרכזיים ומעבר‬
‫מה עוד דרוש?‬
‫‪ ‬קומפיילר לקמפל את מערכת‬
‫ההפעלה‬
‫‪" ‬מחשב ערום" שיטען אותה‬
‫ויריץ אותה עליה‬
‫‪ ‬אפליקציות שירוצו על המחשב‬
‫הזה‬
‫‪‬‬
‫‪‬‬
‫בעיות‬
‫‪ ‬אין לי מחשב ערום‪...‬‬
‫‪ ‬מה אני עושה כאשר יש לי‬
‫באג במערכת ההפעלה‪..‬‬
‫‪ ‬או באג בטעינה של מערכת‬
‫ההפעלה‪...‬‬
‫‪ ‬או כל מיני בעיות אחרות‬
‫מה הפתרון למה שחסר‪:‬‬
‫‪ ‬תכנה שתדמה לי מחשב‬
‫ערום כזה‬
‫‪ ‬תוכנה שמדמה מכשיר או‬
‫מחשב כלשהו‪ ..‬נקראת‬
‫‪emulator‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מה זה ‪?Bochs‬‬
‫‪18‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫אמולטור למעבד‪-‬מחשב אינטל – ‪IA-32 architecture‬‬
‫‪emulator‬‬
‫יכול לרוץ על ‪ WINDOWS‬או על ‪( LINUX‬או מערכות אחרות)‬
‫המחשב שהתכנה‪/‬האמולטור‪ bochs/‬רצה עליו – כשמו כן הוא‬
‫‪( HOST‬מארח)‬
‫מדמה מחשב‪-‬ערום‬
‫‪ ‬צריך לטעון עליו מערכת הפעלה‬
‫‪ ‬צריך לספק לו דיסק (מבחינת ה‪ HOST -‬יהיה לנו קובץ שמדמה‬
‫את הדיסק ‪dummy disk = file‬‬
‫‪ ‬ואז לעבוד איתו באמצעות‪ ...‬מסך‪ ,‬מקלדת‪ ,‬עכבר‪ ...‬וכו'‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מה זה ‪?Cross-Compilation‬‬
‫‪19‬‬
‫‪‬‬
‫איזה קומפיילר דרוש לי בכדי לקמפל תכנית שתרוץ על ‪?LINUX‬‬
‫‪‬‬
‫ואיך אני מקמפל אפליקציה שתרוץ על סמסונג גלאקסי?‬
‫‪‬‬
‫או אפליקציה שתרוץ על ‪ 20‬סוגים שונים של טלפונים?‬
‫‪‬‬
‫‪‬‬
‫פתרון א‪ :‬מקמפלים לשפת ביניים – התכנית רצה על ‪( JVM‬או‬
‫‪ CLR‬עבור ‪).NET‬‬
‫פתרון ב'‪ :‬קרוס קומפיילר‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫הדגמה‬
‫‪20‬‬
‫‪‬‬
‫הרצת ‪ CYGWIN‬במעבדה‬
‫‪‬‬
‫הרצת ‪ VMWARE‬במעבדה‪ ,‬להפעיל ‪ubuntu‬‬
‫‪‬‬
‫קומפילציה של ‪XV6‬‬
‫‪‬‬
‫הרצת ‪BOCHS‬‬
‫‪‬‬
‫טעינה של ‪.xv6‬‬
‫‪ ‬ה‪prompt -‬‬
‫‪ ‬הרצת תכנית משתמש‪ ,‬כגון ‪ls, echo, shell‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫התקנות‬
‫‪21‬‬
‫‪‬‬
‫מה שנרצה להתקין‪cygwin, Bochs, VMWARE, LINUX :‬‬
‫‪‬‬
‫מה זה כל דבר?‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬