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

‫תרגול ומעבדות במערכות הפעלה‬
‫מרצה הקורס‪ :‬ד"ר כרמי מרימוביץ'‬
‫מתרגל‪ :‬צבי מלמד‬
‫מכללה אקדמית תל‪-‬אביב יפו‬
‫חורף תשע"ה‬
‫שבוע ‪ - #01‬מעבדת מבוא‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫‪1‬‬
‫צור קשר‪...‬‬
‫‪2‬‬
‫‪‬‬
‫צבי מלמד‬
‫‪‬‬
‫דוא"ל‪[email protected] :‬‬
‫‪‬‬
‫‪‬‬
‫שעת קבלה‪:‬‬
‫ימי שלישי ‪ ,2:30-3:30‬חדר מתרגלים (‪ – )231‬נא לתאם מראש‬
‫אתר הקורס‪http://tzvimelamed.com/lab/ :‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫נושאים למפגש של היום‬
‫‪3‬‬
‫‪‬‬
‫מבוא למעבדות‬
‫‪‬‬
‫מחשב מארח‪ ,‬אמולציה‬
‫‪‬‬
‫סביבת העבודה ‪CYGWIN, LINUX-VMWARE -‬‬
‫‪‬‬
‫‪‬‬
‫התקנה של ‪ CYGWIN-LINUX- BOCHS‬במחשבים‬
‫האישיים‬
‫מבוא לעבודה ב‪command line -‬‬
‫משימת כיתה‪:‬‬
‫‪‬‬
‫הפעלת הסביבה במעבדה‬
‫‪‬‬
‫עבודה ב ‪ - command line‬בסיס‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫‪4‬‬
‫מתוך הרצאת מבוא באוניברסיטת‬
‫קולומביה ‪NY‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מבוא למעבדה במערכות הפעלה‬
‫‪5‬‬
‫‪‬‬
‫קורס חשוב‪...‬‬
‫‪ ‬מיליון סיבות‪ ...‬אציין רק‪:‬‬
‫‪ ‬מערכת הפעלה – בלב כל התקן ממוחשב‬
‫‪ ‬כיצד לתכנת מערכת גדולה‪ ,‬כשאנו לא מכירים את רוב התכנה‬
‫‪ ‬מה שקשה (שקף הבא) – זה גם מה שחשוב (בחיים‪,‬‬
‫בתעשייה)‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מבוא למעבדה במערכות הפעלה‬
‫‪6‬‬
‫‪‬‬
‫קשה בגלל‪...‬‬
‫‪ ‬קונצפטים חדשים לא מוכרים ולא אינטואיטיביים – מקביליות‪,‬‬
‫זיכרון מדומה‪ ,‬אופני )‪ (mode‬עבודה שונים (משתמש‪ ,‬גרעין)‪,‬‬
‫פסיקות‬
‫‪ ‬קוד לא מוכר ב ‪ ,C‬מבנים שאינם נפוצים באפליקציות גבוהות‬
‫‪ ‬עבודה עם ‪ assembly‬או ‪inline-assembly‬‬
‫‪ ‬סביבת עבודה לא‪-‬חלונאית (רובנו לא הורגלנו בה)‬
‫‪ ‬אין דיבאגר (בוודאי לא דיבאגר מפנק כמו ‪)dev-studio‬‬
‫‪ ‬לכרמי יש דרישות גבוהות (אכן כך‪ ...‬וטוב שכך‪)....‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫אז מה צריך לעשות?‬
‫‪7‬‬
‫‪‬‬
‫להתעורר ולחרוש רק בשבוע שלפני הבחן או שלפני הבחינה הסופית‬
‫‪‬‬
‫להעתיק תרגילים מהחברים‬
‫‪‬‬
‫המעבדות מבוססות אחת על השנייה – נא להתעלם מזה‬
‫‪‬‬
‫להחליט שהמעבדות זה בזבוז זמן‬
‫‪‬‬
‫לא לקרוא את הספר ‪ ,XV6‬חזור ושנן במשך הסמסטר‬
‫‪‬‬
‫לנסות להבין את הקוד עד הסוף כבר בקריאה ראשונה‪ ...‬להתעלם‬
‫מאבסטרקציה‪ ,‬להתעלם מהפרטים "החשובים"‪ ,‬לצלול לכל שאר הפרטים‬
‫‪‬‬
‫להרים ידיים בקלות‬
‫‪‬‬
‫לחכות שכרמי יצא לשנת שבתון בתקווה שהדרישות תוקלנה‬
‫‪‬‬
‫להתפלל‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מה באמת צריך לעשות?‬
‫‪8‬‬
‫‪‬‬
‫להיות חנון‪.‬‬
‫‪ ‬היי‪-‬טק זה המקום שבו החנונים מנצחים‬
‫‪‬‬
‫להשאיר את הקוליות‪ ...‬למפגשים מסוג אחר‬
‫‪‬‬
‫איך להיות חנון?‬
‫‪ ‬קחו דוגמא ממני (צבי מלמד)‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫לימוד עצמי‬
‫‪9‬‬
‫‪‬‬
‫"אבל "את זה" אני לא יודע – נגמרו התירוצים‪...‬‬
‫‪" ‬שיפור משמעותי במנוע החיפוש של גוגל" –‬
‫‪http://www.feeder.co.il/article-everything-you-need-to‬‬‫‪know-on-google-hummingbird-1000881632‬‬
‫‪‬‬
‫במה שונה המעבדה הזאת?‬
‫‪( system programming ‬תכנות מערכת) –‬
‫לפני ‪XV6 programming‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫השלמת מעבדות‪...‬‬
‫‪10‬‬
‫‪‬‬
‫חלק מהמעבדות הן דיי ארוכות‪..‬‬
‫‪‬‬
‫מה שלא מספיקים בכיתה – להשלים בבית‪...‬‬
‫‪‬‬
‫בניית ידע‪ ,‬גם ספציפי ל – ‪ ,XV6‬וגם לסביבת העבודה (פקודות‪,‬‬
‫קיצורים‪ ,‬שיטות עבודה) – המעבדות בהמשך‪ ,‬בנויות על הידע‬
‫וההתנסות במעבדות הקודמות‪.‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫דרישות המעבדה – "תרגילים ו‪"Quiz -‬‬
‫‪11‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫מעבדות ‪ +‬תרגילים‪ 30% :‬מהציון הסופי‬
‫הגשת תרגילים – חובה‪ ...‬וגם חיונית (מה שסיפרו לי תלמידים‪)...‬‬
‫‪ 4‬תרגילים "רגילים" – בדיקה מלאה – ‪ 5( 20%‬נק' לכל תרגיל)‬
‫‪ ‬חובה להגיש את כולם‪ .‬לקבל ציון ‪ 60%‬לפחות בשלושה‪ ,‬ציון ‪40%‬‬
‫לפחות באחד מהם‬
‫תרגילים "לבדיקה מדגמית" ‪10% –Lab Quiz +‬‬
‫נוכחות חובה‬
‫‪ ‬לפחות ‪ 11‬מעבדות‪ ,‬מתוך ‪ 14‬וגם ‪ 8‬מתוך ‪ 10‬הראשונות!‬
‫‪ ‬מדי פעם (כ ‪ 3-6‬פעמים בלי נדר) – ‪ Quiz‬של ‪ 5‬דקות על חומר‬
‫שתורגל‪/‬נלמד בשיעור‬
‫‪ ‬הנוהל המפורט והקובע נמצא באתר‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫סביבת העבודה‬
‫מושגים‪:‬‬
‫‪Host, Cygwin, Bash, VMWARE,‬‬
‫‪Emulator, Bochs, Qemu‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫‪12‬‬
‫מה זה ‪ Emulator‬ולמה זה טוב?‬
‫‪13‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫אני מרצה קשיש‪ ...‬יש משחקי ‪ DOS‬שאני נורא אוהב‪..‬‬
‫‪ ‬דע עקא – הוא לא רץ על הלאפטופ שלי ‪windows-8 64bit‬‬
‫אני היי‪-‬טקיסט צעיר‪ ...‬ויש לי משחקי ‪ WINDOWS‬נורא קוליים‪...‬‬
‫שאני רוצה לשחק בהם בעבודה (רק בהפסקת צהריים)‬
‫‪ ‬דע עקא – בעבודה יש לנו רק מחשבי ‪LINUX‬‬
‫אני בחור צעיר‪ ...‬יש לי משחק מדליק של ‪Sony PlayStation 3‬‬
‫‪ ‬דע עקא ‪ -‬יש לי ‪( Nintendo‬או ‪)XBOX‬‬
‫אני צריך לתכנת ולהריץ תחת לינוקס – אבל המחשב שלי הוא‬
‫‪...windows‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מה זה ‪ Emulator‬ולמה זה טוב?‬
‫‪14‬‬
‫‪‬‬
‫‪‬‬
‫יש לנו מערכת הפעלה‪XV6 ..‬‬
‫‪ ‬דיי טובה‪( ...‬אפילו‪ :‬טובה‬
‫מאוד)‪...‬‬
‫‪ ‬פשוטה דייה ללמוד בסמסטר‬
‫‪ ‬מורכבת דייה ללמוד עקרונות‬
‫מרכזיים ומעבר‬
‫מה עוד דרוש?‬
‫‪ ‬קומפיילר לקמפל את מערכת‬
‫ההפעלה‬
‫‪" ‬מחשב ערום" שיטען אותה‬
‫ויריץ אותה עליה‬
‫‪ ‬אפליקציות שירוצו על המחשב‬
‫הזה‬
‫‪‬‬
‫‪‬‬
‫בעיות‬
‫‪ ‬אין לי מחשב ערום‪...‬‬
‫‪ ‬מה אני עושה כאשר יש לי‬
‫באג במערכת ההפעלה‪..‬‬
‫‪ ‬או באג בטעינה של מערכת‬
‫ההפעלה‪...‬‬
‫‪ ‬או כל מיני בעיות אחרות‬
‫מה דרוש‪:‬‬
‫‪ ‬תכנה שתדמה לי מחשב‬
‫ערום כזה‬
‫‪ ‬תוכנה שמדמה מכשיר או‬
‫מחשב כלשהו‪ ..‬נקראת‬
‫‪emulator‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מה זה ‪?Bochs‬‬
‫‪15‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫אמולטור למעבד‪-‬מחשב אינטל – ‪IA-32 architecture‬‬
‫‪emulator‬‬
‫יכול לרוץ על ‪ WINDOWS‬או על ‪( LINUX‬או מערכות אחרות)‬
‫המחשב שהתכנה‪/‬האמולטור‪ bochs/‬רצה עליו – כשמו כן הוא‬
‫‪( HOST‬מארח)‬
‫מדמה מחשב‪-‬ערום‬
‫‪ ‬צריך לטעון עליו מערכת הפעלה‬
‫‪ ‬צריך לספק לו דיסק (מבחינת ה‪ HOST -‬יהיה לנו קובץ שמדמה‬
‫את הדיסק ‪dummy disk = file‬‬
‫‪ ‬ואז לעבוד איתו באמצעות‪ ...‬מסך‪ ,‬מקלדת‪ ,‬עכבר‪ ...‬וכו'‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מה זה ‪?Cross-Compilation‬‬
‫‪16‬‬
‫‪‬‬
‫איזה קומפיילר דרוש לי בכדי לקמפל תכנית שתרוץ על ‪?LINUX‬‬
‫‪‬‬
‫ואיך אני מקמפל אפליקציה שתרוץ על סמסונג גלאקסי?‬
‫‪‬‬
‫או אפליקציה שתרוץ על ‪ 20‬סוגים שונים של טלפונים?‬
‫‪‬‬
‫‪‬‬
‫פתרון א‪ :‬מקמפלים לשפת ביניים – התכנית רצה על ‪( JVM‬או‬
‫‪ CLR‬עבור ‪).NET‬‬
‫פתרון ב'‪ :‬קרוס קומפיילר‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫הדגמה‬
‫‪17‬‬
‫‪‬‬
‫הרצת ‪ CYGWIN‬במעבדה‬
‫‪‬‬
‫הרצת ‪ VMWARE‬במעבדה‪ ,‬להפעיל ‪ubuntu‬‬
‫‪‬‬
‫קומפילציה של ‪XV6‬‬
‫‪‬‬
‫הרצת ‪BOCHS‬‬
‫‪‬‬
‫טעינה של ‪.xv6‬‬
‫‪ ‬ה‪prompt -‬‬
‫‪ ‬הרצת תכנית משתמש‪ ,‬כגון ‪ls, echo, shell‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מקמפלים מערכת הפעלה‬
‫‪18‬‬
‫‪‬‬
‫תוצרים דרושים‪:‬‬
‫‪ ‬קבצי ‪" – )...IDE( DISK‬לשימוש כללי" – ‪fs.img‬‬
‫‪ ‬קובץ ‪ )...IDE( DISK‬שמכיל את מערכת ההפעלה ‪xv6.img‬‬
‫‪( ‬למה ההפרדה הזאת? האם היא הכרחית?)‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫מקמפלים מערכת הפעלה‬
‫‪19‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫תוצרים דרושים‪:‬‬
‫‪ ‬קבצי ‪" – )...IDE( DISK‬לשימוש כללי" – ‪fs.img‬‬
‫‪ ‬קובץ ‪ )...IDE( DISK‬שמכיל את מערכת ההפעלה ‪xv6.img‬‬
‫‪( ‬למה ההפרדה הזאת? האם היא הכרחית?)‬
‫איך מקמפלים (בונים) מערכת הפעלה? (או כל תוכנה גדולה‪?)...‬‬
‫‪ ‬אפשרות א'‪ :‬מריצים עשרות (או מאות) פקודות‬
‫‪ ‬אפשרות ב'‪ :‬מריצים פקודה אחת (או שתיים)‪.‬‬
‫‪ ‬איך?‬
‫שימו לב‪ ...‬בניית ‪ ...xv6‬זה יותר מאשר לבצע קומפילציה‪ ...‬ולבצע‬
‫לינק‪ ...‬למשל‪ ..‬צריך ליצור את קבצי ה‪ img-‬הנ"ל‬
‫בד"כ משתמשים במונח ‪ – BUILD‬בניית התכנה‪ ..‬או ‪MAKE‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫התקנות‬
‫‪20‬‬
‫‪‬‬
‫מה שנרצה להתקין‪cygwin, Bochs, VMWARE, LINUX :‬‬
‫‪‬‬
‫מה זה כל דבר?‬
‫‪‬‬
‫מסמך התקנה‪ ...‬בלינק הבא‪...‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫חלונות מול טרמינל ‪GUI vers. UI‬‬
‫‪21‬‬
‫‪‬‬
‫‪‬‬
‫מערכת ההפעלה עלתה‪ ....‬לא בהכרח בסדר הזה קרו דברים כגון‪:‬‬
‫‪ ‬הקצאת זיכרון‬
‫‪ ‬גישה לדיסק‬
‫‪ ‬גישה למקלדת‪ ,‬למסך‪ ,‬לעכבר‬
‫‪ ‬ועוד כהנה וכהנה‪...‬‬
‫ומה עכשיו?‬
‫‪console, command window, cmd, shell, bash, ‬‬
‫‪cygwin‬‬
‫‪ ‬סביבת ‪windows, mac, x-windows, - GUI‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫אינם חלק‬
‫ממערכת ההפעלה‪,‬‬
‫אלא מספקים‬
‫ממשק אליה‬
‫מבוא לעבודה בסביבת טרמינל‬
‫שמות נרדפים‪:‬‬
‫‪terminal, console, xterm, command window,‬‬
‫‪shell‬‬
‫המיקוד‪ :‬עבודה עם ‪BASH‬‬
‫התחלה בשבוע ‪ ,#1‬המשך בשבוע הבא (‪)#2‬‬
‫ראה קובץ נפרד שמוקדש לנושא זה‪:‬‬
‫‪Lab-02A-Bash-Intro.html‬‬
‫מעבדה במערכות הפעלה‬
‫© צבי מלמד‬
‫‪22‬‬