ELF - Executable Linkable Format מאת dexr4de הקדמה במאמר זה נכיר לעומק את מבנה ה- ELF ובפרט עבור מערכות 64 ביט. נעבור על מושגים ומונחים שונים הקשורים

גודל: px
התחל להופיע מהדף:

Download "ELF - Executable Linkable Format מאת dexr4de הקדמה במאמר זה נכיר לעומק את מבנה ה- ELF ובפרט עבור מערכות 64 ביט. נעבור על מושגים ומונחים שונים הקשורים"

תמליל

1 מאת dexr4de הקדמה במאמר זה נכיר לעומק את מבנה ה- ELF ובפרט עבור מערכות 64 ביט. נעבור על מושגים ומונחים שונים הקשורים לטעינת תהליכים.לבסוף, בתור דוגמה מובהקת נתאר את האופן בו נטען הקרנל של לינוקס )שהוא בעצמו קובץ )ELF בזמן העלייה של המחשב., כפי שהשם מרמז הוא פורמט קובץ הרצה סטנדרטי שנבחר ב לפורמט הרשמי של מערכות.Unix like כשאנו אומרים "קובץ הרצה" הכוונה לא רק לקובץ שמכיל פקודות מכונה, מיפוי לכתובות זכרון, הצהרה על _start והניתן באופן מעשי להרצה, אלא גם, כפי שנראה בהמשך, לקבצי אוביקט, shared libraries,core dumps וכו. ELF פורסם לראשונה במערכות System V ומשם תפס תאוצה ופרסום רב. Elf format נציג להלן את הפורמט באופן כללי ובהמשך נתעמק בכל חלק לחוד: offset x0000 0x7F E L F EI_CLASS EI_DATA EI_VERSION EI_OSABI 0x0008 EI_ABIVERSION EI_PAD 0x0 0x0 0x0 0x0 0x0 0x0 0x0010 e_type e_machine e_version 0x0018 0x0020 0x0028 e_entry e_phoff e_shoff 0x0030 e_flags e_ehsize e_phentsize 0x0038 e_phnum e_shentsize e_shnum e_shstrndx 0x0040 p_type p_flags

2 0x0048 0x0050 0x0058 0x0060 0x0068 0x0070 p_offset p_vaddr p_paddr p_filesz p_memsz p_align More Elf64_Phdr s... Sections go here N + 0x00 sh_name sh_type N + 0x08 N + 0x10 N + 0x18 N + 0x20 sh_flags sh_addr sh_offset sh_size N + 0x28 sh_link sh_info N + 0x30 N + 0x38 sh_addralign sh_entsize More Elf64_Shdr s כפי שניתן לראות, תחילת הקובץ מיוצגת על ידי ה- header.elf תפקידו העיקרי הוא לשמש כ"תוכן העניינים" של הקובץ עצמו. עוד ניתן להבחין ב- headers Program שמציינים את הסגמנטים )segments( שיימצאו בזמן הרצת הקובץ, וכן ב- table Section הנמצא בסוף, ומציין את המקטעים השונים בקובץ. לכאורה נראה כי יש דמיון רב בין segment ל- section, אך כפי שנראה בהמשך יש הבדל מהותי בין השניים. בינתיים נסתפק בכך שנגיד כי בזמן הרצה חלק מהsections מתאגדים ל- segment יחיד וחלקם אף נשמטים. כשאנו אומרים סגנמט, אין הכוונה לאותו סגמנט שאנו רגילים לשמוע עליו, כזה שניתן לגשת אליו בעזרת סלקטורים וכו, אלא פשוט למרחב מסוים בזכרון בזמן ריצה. 2

3 וכמובן יש את גוף הקובץ, שבו אפשר לצפות שיהיו מקטעים הקשורים להרצה של הקובץ כמו,data,text.bss במאמר נכיר עוד כמה חדשים. הערה: בהמשך מופיעות דוגמאות חיות שנועדו להמחיש את הנעשה בפועל. הדוגמאות כוללות הרצה של תכנית פשוטה ביותר שקומפלה עם.shared library file.c: נשתמש ב- readelf כדי להדפיס חלקים רלוונטים להסבר: #include <stdio.h> extern int myvar; extern int get_magic(); int main(int argc, char **argv) { printf("myvar = %d\n", myvar); printf("magic function returned %#04x\n", get_magic()); return 0; mylib.c: int myvar = ; int get_magic() { return 0x1337; תהליך הקומפילציה: gcc -o mylib.so mylib.c -shared gcc -o magic file.c./mylib.so 3

4 בואו נצלול חלק זה הוא היותר טכני שבמאמר ויש בו שימוש במבני נתונים. ניתן לראות אותם בפירוט בקוד מקור של הקרנל של לינוקס ב- include/upai/linux/elf.h. כמו כן אתר שאני מאוד ממליץ עליו כי הוא מכיל את כל ה- code source של הקרנל של לינוקס משלל גרסאות והוא מאוד נוח לגלישה: לפני שנתחיל להגדיר את מבני הנתונים, על מנת להקל על קריאת הקוד נביא typedefs רלוונטיים: /* 64-bit ELF base types */ typedef unsigned long long typedef unsigned short typedef signed short typedef unsigned long long typedef signed int typedef unsigned int typedef unsigned long long typedef signed long long Elf64_Addr; Elf64_Half; Elf64_Addr; Elf64_Off; Elf64_Sword; Elf64_Word; Elf64_Xword; Elf64_Addr; Elf Header כפי שמשתמע עד כה, חלק זה אכן אחראי על הצגת המידע הכללי אודות הקובץ הרצה. הוא מוגדר כך: typedef struct elf64_hdr unsigned char e_ident[ei_nident]; /* ELF "magic number" */ Elf64_Half e_type; Elf64_Half e_machine; Elf64_Word e_version; Elf64_Addr e_entry; /* Entry point virtual address */ Elf64_Off e_phoff; /* Program header table file offset */ Elf64_Off e_shoff; /* Section header table file offset */ Elf64_Word e_flags; Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx; Elf64_Ehdr; נתמקד בשדות היותר רלוונטיים )הכוונה היא שאני מניח כי למשל שדות כמו,e_machine אמורים להיות מובנים מאליו ( - e_ident כמו שהשם מרמז זהו החלק העקרי שמזהה את הקובץ. זהו מערך בגודל 16 בתים שכאשר ה 4 - בתים הראשונים הם הידועים בתור ELF magic number שהוא: '''F 0x7F,, E, L הבתים האחרים הם מוגדרים להיות אפסים וחלקם מורים על האם הקובץ הוא למשל big/little endian וכו. 4

5 סוג הקובץ. נשתמש בפקודה: readelf h- magic mylib.so ואכן נראה את ההבדל בין - e_type השניים: - e_entry הכתובת הוירטואלית ממנה מתחיל תהליך טעינת התכנית/מידע Program ה- headers של מתחילת הקובץ בו מתחילים ה- offset - e_phoff.section מתחילת הקובץ שבו מתחיל ה- table offset- ה- e_shoff - e_ehsize גודל ה- header,elf כרגע 64 בתים. - e_phentsize הגודל של Program header יחיד, כרגע 56 בתים. - e_phnum מספר ה- headers Program בקובץ. - e_shentsize גודל של,Section header בסטנדרט 64 בתים. - e_shnum מספר ה- headers Section בקובץ. - e_shstrndx האינקדס למקטע שמכיל את טבלת המחרוזות, String Table של הקובץ. כפי שנראה מפתחי פורמט ELF מצאו דרך יצירתית לשמור את שמות המקטעים בקובץ. מפה נעשה קפיצה ל- Table.Section Header העניין הוא שאחרי שנהיה בקיאים בנושא המקטעים, נוכל להתפנות לתיאור הheaders Program שקשורים לטעינת הזכרון של התהליך. Sections אם נסתכל בפורמט בתחילת המאמר נראה כי ה- sections מהווים את בשר הקובץ ולא סתם כך. אם אתם שואלים, הייתי מגדיר מקטע בהקשר הזה כיחידת מידע בעלת משמעות מיוחדת. נעשה: readelf -S magic 5

6 )נראה את המקטעים הרלוונטים ביותר למאמר(: במבט קל אכן אפשר לזהות מקטעים די מוכרים כמו.text, bss, data אני מניח שאתם מכירים אותם.,Section header בהמשך המאמר ניגע גם באותם כל אלו המסתוריים. כאמור כל כזה מיוצג על ידי typedef struct elf64_shdr { Elf64_Word sh_name; /* Section name, index in string tbl */ Elf64_Word sh_type; /* Type of section */ Elf64_Xword sh_flags; /* Miscellaneous section attributes */ Elf64_Addr sh_addr; /* Section virtual addr at execution */ Elf64_Off sh_offset; /* Section file offset */ Elf64_Xword sh_size; /* Size of section in bytes */ Elf64_Word sh_link; /* Index of another section */ Elf64_Word sh_info; /* Additional section information */ Elf64_Xword sh_addralign; /* Section alignment */ שמופיעים בסוף הקובץ ומוגדרים כך: 6

7 תיאור השדות הרלוונטיים: Elf64_Xword sh_entsize; /* Entry size if section holds table */ Elf64_Shdr; - sh_name לפני שנסביר את משמעות שדה זה, נכיר את ה- Table,String טבלת המחרוזות. בעצם זהו מקטע שלם )בדיוק כמו )text, data בעל מבנה דומה לזה שמופיע למטה:. \0 p r e t n i. \0 t - I B A. e t o n g. e t o n. \0 g a (Table continues ) היא מתחילה בתו 0, ומכילה מחרוזת שזוהי בתורה גם מסתיימת ב- 0. תפקידה בעיקרון לספק מידע רלוונטי שניתן יהיה להדפסה. כפי שניתן לראות בדוגמה, מופיעים שמות המקטעים, ושם טבלת המחרוזות הוא.shstrtab חשוב לציין שיכולות להיות עוד,String Tables שמציינות לא את שמות המקטעים, אלא למשל שמות של Symbols כפי שנראה בהמשך. ובחזרה ל- sh_name, תפקידו הוא לספק אינדקס לתוך אותה טבלת מחרוזות בה מופיע השם של אותו מקטע במקרה זה. לדוגמה ב- Elf64_Shdr השני שמתאר את.interp שעליו נדבר בהמשך )ה- Elf64_Shdr הראשון הוא תמיד,)NULL ערכו הוא 1, ובמקרה של Elf64_Shdr השלישי, ערך ה- sh_name הוא 9. - sh_type סוג המקטע. נציין כמה אופיניים: - NULL o באופן default ה- Elf64_Shdr הראשון הוא תמיד ריק. - PROGBITS o משמועותו היא שהמקטע מכיל מידע שאמור להיות "מעובד" למשל פקודות מכונה. - NOBITS o מסמל כי המקטע לא מכיל מידע בקובץ, אבל הוא מוקצה בזכרון. הדוגמה הכי טובה שאני יכול לחשוב עליה הוא מקטע ה- bss. - STRTAB o אני מניח שזוהי טבלת המחרוזות, לא? - REL/RELA o נראה בהמשך. readelf בעזרת.Build ID מטרתו של מקטע זה היא לספק מידע אודות פרטים שונים כמו - NOTE o -n magic נראה: - SYMTAB נראה עוד רגע! o 7

8 מקטעים נבחרים בתת חלק זה נעסוק במקטעים ספציפיים ובעלי חשיבות רבה. Symbol Table בואו נעשה סיור מוחין קטן לפני שנביא את ההגדרה למושג זה. במצב תאורטי אי שם, יש לי תכנית שעלתה לזכרון, אוקי, מה הלאה? ככל הנראה התכנית תרצה לקרוא לפונקציות, משתנים ומקומות שונים בזכרון. אבל כיצד היא תדע על קיומם? איך התכנית במקרה שלנו תדע שיש כזה משתנה 'myvar' ולא תחשוב שזה משתנה לא מוגדר )כמובן באופן תאורטי (? ובכן, אני מנחש שעליתם על זה כבר, אז כן, התכנית צריכה איזשהי רשימת מכולת שתכיל אזכור לגבי כל אותם פונקציות, משתנים ודברים אחרים, רבים וטובים או בקיצור.Symbols לאותה רשימה קוראים.Symbol Table טבלה זו בעצם תופסת מקטע שלם שמוקדש רק לה, כלומר מקטע שהוא פשוט אוסף של.Elf64_Sym ראוי לציין שיש כמה סוגי טבלאות כאלו. נתאר את.symtab נעשה readelf s- magic ונראה את :.symtab ה- Elf64_Sym מוגדר כך: תיאור השדות: typedef struct elf64_sym { Elf64_Word st_name; /* Symbol name, index in string tbl */ unsigned char st_info; /* Type and binding attributes */ unsigned char st_other; /* No defined meaning, 0 */ Elf64_Half st_shndx; /* Associated section index */ Elf64_Addr st_value; /* Value of the symbol */ Elf64_Xword st_size; /* Associated symbol size */ Elf64_Sym; st_name ה- offset לתוך המקטע של טבלת המחרוזות )שימו לב זוהי אינה אותה טבלה כמו של.)Section Table למקטע זה קוראים בתור ברירת מחדל למעלה, מספרו הוא 29..strtab ואם נסתכל במקטעים המצויינים - st_info נסתכל בהערה המצויינת. מה שאפשר להבין זה ששדה זה כביכול מורה על שני סוגי מידע נפרדים, Type וBinding. נשאלת השאלה איך ערך אחד יכול להורות על שני ערכים שונים? 8

9 התשובה לכך נעוצה בכך שמחלקים את אותו שדה, לשני חלקים נפרדים: 4 ביטים מציינים את הType וה- 4 האחרים מציינים את ה- Bind. אם נסתכל בדוקומנטציה נראה את ה- macros הבאים: #define ELF64_ST_BIND(i) ((i) >> 4) #define ELF64_ST_TYPE(i) ((i) & 0xF) #define ELF64_ST_INFO(b, t) (((b) << 4) + ((t) & 0xF)) ניקח בתור דוגמה את השני: הוא מקבל משתנה i )הכוונה,info יותר נכון,)st_info מבצע את מה שמבצע ומתקבל מספר. אותו מספר מתאים לאחד מאלו: אני מנחש שה- readelf יעשה איזשהו: וכך ידפיס את מה שהוא הדפיס למעלה. /* Symbol types */ #define STT_NOTYPE 0 /* No type specified */ #define STT_OBJECT 1 /* Data object */ #define STT_FUNC 2 /* Function entry point */ #define STT_SECTION 3 /* Symbol is associated with a section */... switch (ELF64_ST_TYPE(symbol_table[i]->st_info)) { case STT_NOTYPE: break; case STT_OBJECT: break;... מן הסתם הוא הדבר תקף ל- ELF64_ST_BIND. קל גם לראות ש- ELF64_ST_INFO ההפוכה על type ו- binding. מבצע את הפעולה בתמונה נראה כמצופה שmyvar הוא OBJECT וget_magic הוא.FUNC - st_other פחות או יותר מתקבל מאותו עקרון כמו השדה הקודם רק פה שmacro הוא: לפי השם של ה- macro ופלט של readelf די ברור מה תפקידו של שדה זה. #define ELF64_ST_VISIBILITY(o) ((o) & 0x3) - Relocations רלוקציות גם פה נתחיל מדוגמה די פשוטה. לפני שהתכנית שלנו, magic עולה לזכרון, בניגוד למשתנים ופונקציות פנימיות שמוגדרים ב- file.c, המשתנים והפונקציות שנמצאים ב- mylib ובספריות חיצוניות אינם נמצאים נמצאים בו. מה שהולך בפועל הוא שהסביבה אמורה איכשהו לקשר בין מה שנמצא ב- mylib ל- magic בזמן טעינה, כדי שבסוף אותם משתנים ופונקציות ימצאו במרחב הזכרון ולכן אמור להיות אזכור שלהם ב-.magic באופן כללי אפשר להגיד רלוקציה היא קישור בין האזכור הסימבולי של דבר כלשהו לבין הגדרתו מחדש. ב- Elf הם מוגדרים כך: 9

10 typedef struct elf64_rel { Elf64_Addr r_offset; /* Location at which to apply the action */ Elf64_Xword r_info; /* index and type of relocation */ Elf64_Rel; typedef struct elf64_rela { Elf64_Addr r_offset; /* Location at which to apply the action */ Elf64_Xword r_info; /* index and type of relocation */ Elf64_Sxword r_addend; /* Constant addend used to compute value */ Elf64_Rela; נעשה :readelf -r magic כצפוי myvar, get_magic ו- printf וכו שאינם מוגדרים ישירות ב- magic, אלא בספריות חיצוניות, ועל כן גם הם משתתפים בתהליך הרלוקציה. תיאור השדות: - r_offset באופן כללי ניתן להסתפק שזה הכתובת בה תתבצע הרלוקציה. בתור דוגמה פשוטה ביותר, אם נעשה ב- gdb בזמן ריצה x/d 0x יודפס ערכו של myvar שהוא כאמור r_info בדומה ל- sh_info, גם שדה זה מורכב משני שדות. האחד מהם הוא type שמורה על סוג הרלוקציה, במקרה של myvar זה,R_X86_64_COPY כלומר בצורה "פשוטה" ערכו של משתנה זה מועתק. השני הוא האינדקס לTable,Symbol שמכילה מידע על אותו,Symbol ובין היתר את ה- offset ל- Table String ומשם אפשר להדפיס את השם של הרלוקציה. ההפרדה נעשית כך: #define ELF64_R_SYM(i) ((i) >> 32) #define ELF64_R_TYPE(i) ((i) & 0xffffffff) בעיקר לשמש כאיזשהו קבוע שמוסיפים ל- offset. ותפקידו נמצא רק בElf_Rela - r_addend כל זאת הייץה סקירה קצרה בנושא רלוקציות, יש מגוון רחב של נושאים ובינהם חישוב רלוקציות וכתובות שכבר קשורים לסוג ארכיטקרטורה. מי שרוצה בהחלט מוזמן לקרוא על זאת ולהעשיר את הידע שלו. 01

11 GOT - Global Offset Table זהו מקטע בהחלט מעניין. בעקרונו של דבר הוא שומר את הכתובות וה- offsets של ה- Symbols שאי אפשר לחשב את מיקומם בזמן הלינקוג'. ה- GOT בהחלט רלוונטי לרוב לכל הקשור לפונקציות וכו בספריות חיצוניות וכפי שנראה ה- PLT משתמש בו לשם קפיצה לתוך מימושן. נבהיר יותר על המושג בחלק הבא, ה- PLT. PLT - Procedure Linkage Table נחשוב על זאת, איך יתבצע הקישור בין פונקציות חיצוניות לתכנית שלנו? תקפוץ מהקריאה ל- printf למימוש שלה בספריה החיצונית? כיצד, למשל התכנית שלנו אז כן, התשובה נעוצה בצורך של קיום של איזשהו תווך מקשר בין הקריאה למימוש. לאותו תווך מן הסתם קוראים.PLT מה שקורה בפועל הוא שכאשר נעשה,printf לא תהיה קפיצה ישירה למימוש של אותה פונקציה בספריה החיצונית, אלא תחילה מעבר ל- כפי שניתן לראות בתרשים, ומשם כפי בעזרת הכתובות בתוך ה- GOT, תהיה קפיצה לתוך הספריה עצמה שנטענת בזמן ריצה. נציג את :.plt כעת אחרי שהכרנו את רוב המקטעים הרלוונטים, אפשר לעבור ולדון לגבי טעינת התהליך לזכרון. 00

12 Program headers ELF משתמש ב- headers program שנקראים על ידי ה- loader של המערכת, וזאת כדי לציין כיצד התכנית אמורה להטען לזכרון הוירטואלי, מהם גבולותיו ואיזה מידע יהיה בו. הם מוגדרים כך: typedef struct elf64_phdr { Elf64_Word p_type; Elf64_Word p_flags; Elf64_Off p_offset; /* Segment file offset */ Elf64_Addr p_vaddr; /* Segment virtual address */ Elf64_Addr p_paddr; /* Segment physical address */ Elf64_Xword p_filesz; /* Segment size in file */ Elf64_Xword p_memsz; /* Segment size in memory */ Elf64_Xword p_align; /* Segment alignment, file & memory */ Elf64_Phdr; נעשה :readelf -l magic תיאור השדות: 02 - p_type סוג הסגמנט בזכרון. כמה אפשרויות ששווה לדון בהן: - PT_NULL מסמן כי הסגמנט לא בשימוש. - PT_LOAD סגמנטים שאמורים להיות ממופים לזכרון לפני שהתכנית אמורה לרוץ..dynamic מציין כי הסגמנט מכיל מידע עבור ה- linker - PT_DYNAMIC - PT_INTERP o o o o o הlib64/ld-linux-x86-64.so.2 מציין כי הסגמנט מכיל את ה- path של ה- interpreter. בצילום נראה כי זהו / ובחזרה לאחורה נבחין גם כי זהו התוכן של מקטע הinterp. שהאינדקס שלו הוא 1. גודל הסגמנט הוא 0x1C וזהו אורך המחרוזת של הpath ועוד תו ה '0\'. מה הוא אותו?interpreter קודם כל נשלול את האפשרות שזה ה- interpreter, מפרש של שפות תכנות שאנחנו רגילים לשמוע עליו. אז בעקרונו של דבר, הכוונה פה היא בעצם לתכנית שיוצרת את ה- image הראשוני של התהליך. בנוסף תפקידו הוא למפות את הזכרון הנדרש לתהליך )למשל באיזו כתובת בדיוק יופיע מקטע ה- text לספריות חיצוניות. - PT_NOTE הסגמנט מכיל מידע נוסף שקשור כפי שראינו מקודם. וכו( וכמו כן לטעון בין היתר כל מה שקשור

13 שמציין את סוגי ההרשאות שיש לסגמנט. ההרשאות יכולות להיות bitmask איזשהו - p_flags קריאה, כתיבה והרצה. p_offset ה- - offset /מיקום מתחילת הקובץ של תחילת המידע על הסגמנט. הוירטואלית הראשונה שאליה ממופה הסגמנט בזמן הרצת מספק לנו את הכתובת - p_vaddr התהליך. - p_filesz גודל הסגמנט בקובץ. - p_memsz מציין את גודל הסגמנט בזכרון בזמן הרצה. - p_align מספק את ה- alignment של הסגמנט בזכרון. בהגדרה פשוטה, ואולי קצת לא מדויקת, אם למשל הalign הוא 8, אז תחילת המידע, משתנים, זכרון וכו יופיעו בכתובות זכרון שהן כפולות של 8. Dynamic Linking קבצי ELF יכולים להיות להטען כ- Linking Dynamic ועל כן אמור גם לזאת להיות אזכור בפורמט. במקטע ששמו.dynamic ניתן למצוא אוסף של Elf64_Dyn שמוגדרים כך: בעזרת readelf -d magic נראה: typedef struct { Elf64_Sxword d_tag; /* entry tag value */ union { Elf64_Xword d_val; Elf64_Addr d_ptr; d_un; Elf64_Dyn; נתאר בקצרה את השדות: - d_tag בפשטות, שדה זה מציין כיצד לפרש את הunion שבא בהמשך. כמה אפשרויות ששוה לדון בהן: וכפי שניתן לראות בתמונה מדובר ב- מסמל לרוב שיש צורך ב- object shared - DT_NEEDED בתור ברירת מחדל יש להתייחס ל- d_val. C. הספרייה הסטנדרתית של שזוהי וב- libc mylib.so - DT_INIT יש להתייחס לd_ptr ובו מצוין הכתובת של פונקצית האתחול. - DT_FINI כמו DT_INIT רק בהקשר של פונקצית הסיום. נתייחס אל כל משתנה ב- union בנפרד: - d_val ערך שאפשר לפרשו בכמה דרכים. - d_ptr כתובת וירטואלית בזכרון. 03

14 Linux Kernel Rise - Real World Scenario אוקי, כעת כשאנו מציודים במספיק ידע ואנרגיות, אפשר להביא דוגמא מחיי היום יום. כפי שציינו מקודם, הקרנל של לינוקס הוא אכן גם קובץ,ELF רק קצת מיוחד. לפני שבאמת נכנס לתוך הפרטים המדויקים, כדאי שנציג את תהליך הboot בקצרה )אמנם ננסה להתמקד בפרטים תכנים, אך לא בפירוט רב למשל עד כדי ציון כתובות פרה-היסטוריות כמו )0x7C00, 0xFFFFFFF0 כדי לספק רקע מתאים. אז מה היה בהתחלה? יש לי מחשב "מכובה" )לידע כללי זה חלקית נכון, למשל יש את השעון החומרתי RTC - Real Time Clock שפועל כל עת, גם כשמחשב מכובה(. בהנחה שמישהו לחץ על כפתור הpower, מועבר איזשהו איתות ל-,CPU דרך יציאה כלשהי. איתות זה גורם ל- CPU לבצע כמה פעולות, כשבסופו של דבר מורץ איזשהו,firmware או בעברית קושחה. אותו firmware מוכר לנו יותר כ- BIOS או.UEFI לצורך פשטות נמקד את התיאור לתהליך של ה- BIOS. לאחר בדיקות, הגדרות, למשל אצל ה- BIOS, בדיקת ה- POST, נבחר איזשהו device שהוא הסקטור הראשון של אותו,MBR - Master Boot וממנו נקרא ה- Record,bootable device )ה- UEFI בניגוד ל- BIOS יכול להשתמש ב- GPT GUID במקום הMBR, אך לא נתאר אותו פה(. עד פה אפשר להגיד שהחלק של עליית המחשב היה די כללי. מפה והלאה נכנסים מונחים שונים הקשורים לעולם הלינוקס. ובחזרה, מבלי להתעמק במבנה ה- MBR, נציין שיש בו איזשהו boot code הנקרא boot.img,טבלת מחיצות, ולבסוף signature שערכו 0xAA55 שמורה ל- BIOS שזהו אכן.bootable device בגלל שאותו תפקידו, שעל פי השפה המקצועית מכונה,Stage 1 440(, bytes( מוגבל מבחינת הגודל שלו boot.img הוא בין היתר הוא לבחור מחיצה מה- table,partition ולהעביר את השליטה למה שמכונה Stage 2 )יש מעבר על,Stage 1.5 אבל הוא פחות רלוונטי פה(. Stage 2 הוא מה שאנו מכירים בתור ה- GRUB, והוא אחראי על מרבית העבודה. ה- GRUB בתורו, בורר מיקום מסויים בהארד דיסק, או ליתר דיוק מה שמכונה תיקיית ה- boot /. מה שקורה בפועל הוא ש- GRUB מתייעץ בקובץ קונפיגורציה )יותר נכון מפרסר אותו(, בשם./boot/grub/grub.cfg 04

15 אותו קובץ קונפיגורציה בעצם מהווה את התפריט של כל מערכות ההפעלה הקיימות על המחשב. נראה את חלקו הרלוונטי לנו: נשים לב לדברים הבאים: - vmlinuz-x.y.z אז בהחלט אנחנו מתקרבים לקרנל שלנו. מי שעוסק בדיבוג ובניית קרנלים, יודע שאחרי תהליך הקומפילציה של הקרנל של לינוקס יווצרו כמה קבצים. אחד מהם הוא ה- vmlinux שהוא קובץ הרצה, ELF המקורי של הקרנל )יש לשים לב שאי אפשר להריץ אותו ישירות. הכוונה הייתה שיש לו פורמט.)ELF זהו הקרנל שאנו רגילים לשמוע עליו בתור האחראי לניהול תהליכים, scheduling זכרון והרשימה רק הולכת וגדלה. השני הוא ה- bzimage שהוא מכיל את הקרנל,,source בתוך ה- code make install רק מכווץ ועוד כמה דברים. באופן כללי, ברגע שעושים vmlinux ה- bzimage יועבר לתיקיית,/boot תחת השם.vmlinuz-x.y.z "באופן מפתיע", ה- vmlinuz הוא בעל פורמט.PE נראה זאת: כאמור ה- number magic פה הוא.MZ אז מה הולך פה? תפקידו של אותו,bzImage הוא לעשות את כל הדברים שנחוצים לשם טעינת הקרנל,.vmlinux מלמד הקרנל המכווץ, אפשר למצוא בו קוד וheaders שאחראים בעיקר להכנת הסביבה )למשל מעבר בין modes שונים(, ולטעינת הקרנל בשביל לעשות לו.decompress שיטת הכיווץ הנפוצה ביותר של הקרנל היא.gzip נבדוק אותה בעצמנו: אם נסתכל בדוקומנטציה של gzip נראה שאכן 1f 8b הם ה- number magic של gzip header וה מציינים את אלגוריתם. הכיווץ שהוא DEFLATE ואת סוג המידע. - initrd.img-x.y.z לא נתעמק בפרטי הפרטים פה, אבל נציין שתפקידו של initrd הוא לאפשר בין היתר טעינה של מערכת קבצים זמנית של הקרנל ומודולים נוספים כדי להקל על תהליך ה- boot. 05

16 לאחר מכן מוצג התפריט הידוע של GRUB ובו המשתמש מתבקש לבחור מערכת הפעלה שברצונו לטעון. בהנחה שהמשתמש שלנו בחר מערכת לינוקס, ה- GRUB, מאתר את ה- vmlinuz-x.y.z של אותה מערכת )הקובץ קונפיגורציה של GRUB כאמור מספק מיקום של כל קרנל. ניתן לראות זאת על ידי מיליות כמו,hdX כאשר X מסמל את מספר המחיצה ו- hd מסמל,hard drive למי שתהה(. לאחר השתלשלות מעניינת של אירועים, שכוללים בין היתר מיפוי של הזכרון לחלקים מתאימים, אנו מוצאים את עצמנו "יחסית" בתוך הקרנל, או מה שנקרא בתוך הקובץ,arch/x86/boot/header.S שזוהי נקודת ההתחלה שלנו. בהמשך אנחנו מגיעים ל- arch/x86/boot/compressed/misc.c ופה מתחילה ההתעסקות האמיתית עם :decompress_kernel בפונקציה,ELF asmlinkage visible void *decompress_kernel(void *rmode, memptr heap, unsigned char *input_data, unsigned long input_len, unsigned char *output, unsigned long output_len, unsigned long run_size) {... if (real_mode->screen_info.orig_video_mode == 7) { vidmem = (char *) 0xb0000; vidport = 0x3b4; else { vidmem = (char *) 0xb8000; vidport = 0x3d4;... debug_putstr("\ndecompressing Linux... "); decompress(input_data, input_len, NULL, NULL, output, NULL, error); parse_elf(output); /* * 32-bit always performs relocations. 64-bit relocations are only * needed if kaslr has chosen a different load address. */ if (!IS_ENABLED(CONFIG_X86_64) output!= output_orig) handle_relocations(output, output_len); debug_putstr("done.\nbooting the kernel.\n"); בואו נעבור על הפונקציה: בתחילתה יש אתחול של המשתנה.vidmem תפקידו הוא לאפשר פלט על המסך memory(.)i/o בשלב זה נצטרך לכתוב הודעות למסך שמיוצג על ידי מערך של בתים. כצפוי יש הודעת דיבאג של."Decompressing Linux" לאחר מכן קריאה ל- decompress ששמה מרמז על תכליתה. פונקציה זו תלויה שיטת כיווץ וכפי שניתן לראות היא ממומשת במקום אחר. 06

17 באותו קובץ misc.c נראה:... #ifdef CONFIG_KERNEL_GZIP #include "../../../../lib/decompress_inflate.c" #endif #ifdef CONFIG_KERNEL_BZIP2 #include "../../../../lib/decompress_bunzip2.c" #endif #ifdef CONFIG_KERNEL_LZMA #include "../../../../lib/decompress_unlzma.c" #endif... static void parse_elf(void *output) { #ifdef CONFIG_X86_64 Elf64_Ehdr ehdr; Elf64_Phdr *phdrs, *phdr; #else Elf32_Ehdr ehdr; Elf32_Phdr *phdrs, *phdr; #endif void *dest; int i; memcpy(&ehdr, output, sizeof(ehdr)); if (ehdr.e_ident[ei_mag0]!= ELFMAG0 // 0x7F ehdr.e_ident[ei_mag1]!= ELFMAG1 // E ehdr.e_ident[ei_mag2]!= ELFMAG2 // L ehdr.e_ident[ei_mag3]!= ELFMAG3) { // F error("kernel is not a valid ELF file"); return; debug_putstr("parsing ELF... "); phdrs = malloc(sizeof(*phdrs) * ehdr.e_phnum); if (!phdrs) error("failed to allocate space for phdrs"); כעת יש קריאה לפונקציה parse_elf שמצויה באותו קובץ ומוגדרת כך: memcpy(phdrs, output + ehdr.e_phoff, sizeof(*phdrs) * ehdr.e_phnum); for (i = 0; i < ehdr.e_phnum; i++) { phdr = &phdrs[i]; switch (phdr->p_type) { case PT_LOAD: #ifdef CONFIG_RELOCATABLE dest = output; dest += (phdr->p_paddr - LOAD_PHYSICAL_ADDR); #else dest = (void *)(phdr->p_paddr); #endif memcpy(dest, output + phdr->p_offset, phdr->p_filesz); break; default: /* Ignore other PT_* */ break; free(phdrs); 07

18 נסביר כל חלק וחלק: בהתחלה יש הצהרה על headers שונים שרלוונטיים למערכת, בין אם זה 32bit או Elf לעשות העתק הדבק מתאים. לאחר מכן יש העתקה פשוטה של ה- יודע ה- preprocessor,64bit header מהקרנל עשינו לו decompress מקודם למשתנה שלנו. ואז יש השוואה של הארבעה בתים ראשונים לnumber magic של פורמט ה- ELF. כצפוי אם לא תהיה התאמה, תודפס הודעת השגיאה:."Kernel is not a valid ELF file" כפי שציינו מקודם, ה- headers,program מציינים את האופן בו נטען התהליך, ואת מרחב הזכרון שלו. גם פה ניתן לראות, יש העתקה של אותם,program headers למערך מוקצה דינמית. לאחר מכן יש לולאה שעוברת על כל header כזה. במידה וסוג של header הוא,PT_LOAD כלומר שהסגמנט אמור להיטען לזכרון הדברים הבאים קורים: כך או כך, יש קבלה של איזשהו base address של הסגמנט. כפי שניתן לראות, אותה כתובת תלויה ב- p_paddr, כלומר הכתובת הפיזית של של הסגמנט. העניין הוא שבשלב זה עדין לא מופעל מנגנון הוירטואליזציה, )השמה של כתובת ה- base של page global table לאוגר,cr3 והתעסקות עם ביטים באוגר cr0 כפי שניתן לראות בקובץ )/arch/x86/kernel/head_64.s ולכן נטען רק לשם את המידע. העתקה בעזרת פונקציה memcpy ל- dest את התוכן של אותו סגמנט שגודלו.p_filesz לבסוף יש הדפסה של הודעת הצלחה ואנחנו ממשיכים במסענו. לאחר סדרה של אתחולים שונים )למשל הזכרון הוירטואולי(, אנחנו מגיעים לפוקנציה start_kernel שמוגדרת ב- init/main.c / שגם היא אחראית להגדרות שונות כמו של זכרון, זמן. זו בתורה קוראת לrest_init שיוצרת את תהליך ה- init, והוא מריץ את הפונקציה kernel_init ובה תהיה נקודת הסיום שלנו: static int ref kernel_init(void *unused) { if (!try_to_run_init_process("/sbin/init")!try_to_run_init_process("/etc/init")!try_to_run_init_process("/bin/init")!try_to_run_init_process("/bin/sh")) return 0; 08

19 סיכום במאמר זה ניסיתי להציג ולתאר לעומק עד כמה שאפשר, שלל נושאים הקשורים ל- ELF. מן הסתם שאף פעם אי אפשר לכסות את כל הידע הקיים, אבל בהחלט כן השתדלתי לעסוק בדברים החשובים ביותר. תחום שלצערי לא נגעתי בו הוא כל הקשור ל- exploitation. כמובן תמיד אפשר לדבר על הדברים היותר מוכרים כמו מגוון ROP,ret2libc,buffer overflows וכו, אולם מה שתפס את תשומת ליבי בכל היכרותי עם תחום זה הוא דבר הנקרא.GOT overwrite בעקרונו של דבר, התוקף מנסה לשנות ולדרוס פה את הערכים ב- GOT בכדי לנצל זאת למטרותיו, ובמקום שהתכנית תריץ את מה שהיא צריכה להריץ, היא מריצה את מה שברצונו של התוקף. כמובן שתיאור זה היה פחות מעל קצה המזלג, ומי שרוצה בהחלט מוזמן לקרוא על זאת ועל עוד התקפות מעניינות. ובתור מילים באמת אחרונות, אני חייב לציין שבאמת נהנתי לכתוב מאמר זה. אם מצאתם משהו לא מובן, לא נכון וכל טעות, קטנה ככל שתהיה או שאתם רוצים ליצור איתי קשר, ניתן לפנות אלי באימייל: 09

PowerPoint Presentation

PowerPoint Presentation מבוא למדעי המחשב תירגול 6: כתובות ומצביעים 1 תוכנייה מצביעים מצביעים ומערכים, אריתמטיקה של מצביעים 2 3 מצביעים תזכורת- כתובות זיכרון הזיכרון כתובת התא #1000 #1004 #1008 ערך השמור בתא תא 10-4 לא מאותחל

קרא עוד

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

פתרון מוצע לבחינת מהט ב_שפת c מועד ב אביב תשעט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9. פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9. הדפסה ראשונה: מתבצעת לולאה שרצה מאפס עד אורך המחרוזת.

קרא עוד

שאלהIgal : מערכים דו מימדיים רקורסיה:

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ג חשון תשע"ח 12/11/17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד קיץ סמ' שנה תשע"ז 3 שעות משך

קרא עוד

שאלהIgal : מערכים דו מימדיים רקורסיה:

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ג מנ' אב תשע"ז 15.08.17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד סמ' ב' שנה תשע"ז 3 שעות

קרא עוד

סדנת תכנות ב C/C++

סדנת תכנות ב   C/C++ פקולטה: מדעי הטבע מחלקה: מדעי המחשב שם הקורס: מבוא למחשבים ושפת C קוד הקורס: 2-7028510 תאריך בחינה: 15.2.2017 משך הבחינה: שעתיים שם המרצה: ד"ר אופיר פלא חומר עזר: פתוח שימוש במחשבון: לא הוראות כלליות:

קרא עוד

Microsoft Word - c_SimA_MoedB2005.doc

Microsoft Word - c_SimA_MoedB2005.doc מרצה: שולי וינטנר. מתרגל: עזרא דאיה. מבוא למדעי המחשב בחינת מועד ב', סמסטר א' תשס"ה,.2.2005 משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות:. ודאו כי בטופס שבידיכם עמודים. יש לכתוב

קרא עוד

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים עליו כרגע )A מצביע עליו(. יש שני סוגי פקודות, פקודת

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 תרגול 1: סביבת העבודה ומבוא ל- Java אלכסיי זגלסקי ויעל אמסטרדמר 1 בירוקרטיה אלכסיי זגלסקי שעת קבלה: שני 13:00-14:00, בתיאום מראש משרד: בניין הנדסת תוכנה, חדר 209 יעל אמסטרדמר שעת קבלה: חמישי 15:00-16:00,

קרא עוד

שאלהIgal : מערכים דו מימדיים רקורסיה:

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ח תשרי תשע"ז 30.10.16 שמות המורים: ציון סיקסיק א' תכנות ב- C מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד סמ' קיץ שנה תשע"ו 3 שעות משך

קרא עוד

Microsoft Word B

Microsoft Word B מרצה: שולי וינטנר. מתרגל: שלמה יונה מבוא למדעי המחשב מועד ב', סמסטר א' תשס"ג, 17/2/03 משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות: 1. ודאו כי בטופס שבידיכם 8 עמודים. יש לכתוב

קרא עוד

Slide 1

Slide 1 מבוא למדעי המחשב תירגול 4: משתנים בוליאניים ופונקציות מבוא למדעי המחשב מ' - תירגול 4 1 משתנים בוליאניים מבוא למדעי המחשב מ' - תירגול 4 2 ערכי אמת מבחינים בין שני ערכי אמת: true ו- false לכל מספר שלם ניתן

קרא עוד

Microsoft Word - Ass1Bgu2019b_java docx

Microsoft Word - Ass1Bgu2019b_java docx ת ר ג י ל 1 ב ק ו ר ס מ ב ו א לתכנות 202.1.9031 JAVA סמסטר ב, ת נ א י ם ו ל ו ל א ו ת תאריך אחרון להגשה בציון מלא : 02.04.19 עד שעה : 23:55, כ ל יום איחור ל א מ א ו ש ר א ו ח ל ק ממנו מודריד 10 נקודות

קרא עוד

מבוא למדעי המחשב

מבוא למדעי המחשב מבוא למדעי המחשב מחרוזות, חתימה של פונקציה ומעטפות תוכן עניינים טיפוסים מורכבים טיפוסים מורכבים ערך שם טיפוס 12 m int undef. x boolean true y boolean arr int[] כאלה שעשויים להכיל יותר מערך פרימיטיבי אחד

קרא עוד

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה הרעיון: דפדוף paging וזכרון וירטואלי.1.2.3 לחלק את מרחב הכתובות לדפים בגודל קבוע )למשל )4KB את הדפים ממפים לזכרון פיסי a. לא רציף b. לא כולם העברה מזכרון לדיסק לפי הצורך מספר הדף: page = addr 4K המיקום

קרא עוד

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשעב בחינת סיום, מועד א', הנחי אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', 6.2.2012 הנחיות: 1. משך הבחינה: 120 דקות. 2. היציאה מהכיתה במהלך

קרא עוד

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש המתרגם משימה: תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם 2 שאלות האם כבר יש

קרא עוד

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד אוניברסיטת בן גוריון בנגב תאריך המבחן: 29.01.19 שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות 202.1.9031 מס' הקורס : מיועד לתלמידי : הנדסת תעשיה וניהול שנה תשע"ט א' סמ' א' מועד 3 שעות משך

קרא עוד

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשעג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג,.6.013 משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם 8 עמודי שאלון )כולל עמוד זה(. עליכם לכתוב את התשובות על

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תכנות מתקדם בשפת Java אוניברסיטת תל אביב 1 תוכנה 1 תרגול 3: עבודה עם מחרוזות )Strings( מתודות )Methods( 1 תכנות מתקדם בשפת Java אוניברסיטת תל אביב 2 מחרוזות )STRINGS( 3 מחרוזות String s = Hello ; מחרוזות

קרא עוד

מבוא למדעי המחשב

מבוא למדעי המחשב מבוא למדעי המחשב המחלקה Object תוכן עניינים Object הורשה והמחלקה ערך שם טיפוס DynamicIntArray da data size incrementsize DynamicArray תזכורת - Object[] data; int size; int incrementsize; DynamicArray זה

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 תרגול 1: סביבת העבודה ומבוא ל- Java 1 מנהלות אתר הקורס: http://courses.cs.tau.ac.il/software1/1516b/ מתרגלים: ברית יונגמן )שעת קבלה: שלישי ב- 8:00 בתיאום מראש( לנה דנקין )שעת קבלה: שלישי ב- 17:00,

קרא עוד

הגשה תוך שבוע בשעת התרגול

הגשה תוך שבוע בשעת התרגול מרצה: שולי וינטנר. מתרגל: שלמה יונה מבוא למדעי המחשב מועד ב', סמסטר א' תשס"ג, 17/2/03 משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות: ודאו כי בטופס שבידיכם 8 עמודים. יש לכתוב את

קרא עוד

Slide 1

Slide 1 1 אובייקטים היום בתרגול: 2.)objects מחלקות )classes( ואובייקטים )מופעים, )fields( שדות המחלקה שיטות הכמסה )methods של מחלקה. ( class מחלקה - עד עכשיו השתמשנו בעיקר בטיפוסים מובנים ופונקציות המבצעות חישובים

קרא עוד

מהוא לתכנות ב- JAVA מעבדה 3

מהוא לתכנות ב- JAVA מעבדה 3 מבוא לתכנות ב- JAVA מעבדה 3 נושאי התרגול לולאות ניפוי שגיאות לולאות - הקדמה כיצד הייתם כותבים תוכנית שתדפיס את המספרים השלמים בין 1 ל- 100 בעזרת הכלים שלמדתם עד עתה? חייבת להיות דרך אחרת מאשר לכתוב 100

קרא עוד

מבוא למדעי המחשב - חובלים

מבוא למדעי המחשב - חובלים החוג למדעי המחשב אוניברסיטת חיפה מבוא למדעי המחשב סמסטר א' תשע"ג בחינת סיום, מועד ב', 20.02.2013 מרצה: ריטה אוסדצ'י מתרגלת: נעמה טוויטו מדריך מעבדה: מחמוד שריף משך המבחן: שעתיים חומר עזר: ספר של Kernighan

קרא עוד

HTML - Hipper Text Makeup Language

HTML - Hipper Text Makeup Language תכנות בסביבת האינטרנט 1 תיבת טקסט טופס הטופס הוא הדרך של בעלי האתר לקבל משוב מהגולשים, מאפשר לגולש להתחבר לאתר כחבר, מאפשר לבצע רכישות באתרי קניות וכד'. כשהגולש ממלא את הטופס, מועבר תוכן הטופס לדף מיוחד

קרא עוד

תכנות מונחה עצמים א' – תש"ע

תכנות מונחה עצמים א' –  תשע 1 תכנות מונחה עצמים והנדסת תוכנה תשע"ו 2 בנאי העתקה בניית העתק של אובייקט קיים. בניית העתק בעת העברת אובייקט לפונקציה. בניית העתק בעת החזרת אובייקט מפונקציה. ניתן להגדיר בנאי העתקה. אם לא מגדירים, אז הקומפיילר

קרא עוד

מבוא למדעי המחשב

מבוא למדעי המחשב מבוא למדעי המחשב תכנות מונחה אובייקטים תוכן עניינים טיפוסי נתונים מורכבים המחלקה String תזכורת לשימוש שעשינו במחלקה String str = new String( Hello ); s.o.p(str.tostring()); s.o.p(str.charat(4)); s.o.p(str.equals(

קרא עוד

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ אוניברסיטת בן גוריון בנגב תאריך המבחן: 12.02.17 שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: 202.1.9031 מס' הקורס : הנדסת תעשיה וניהול מיועד לתלמידי : א' מועד א' סמ' שנה תשע"ד 3 שעות משך

קרא עוד

PowerPoint Presentation

PowerPoint Presentation מבוא למדעי המחשב תירגול 2: מבוא לתיכנות ב- C 1 תוכנייה משתנים קלט/פלט משפטי תנאי מבוא למדעי המחשב מ' - תירגול 3 2 משתנים 3 משתנים- תמונת הזיכרון הזיכרון כתובת התא #1000 10-4 לא מאותחל 67 לכל תא בזיכרון

קרא עוד

ייבוא וייצוא של קבצי אקסל וטקסט

ייבוא וייצוא של קבצי אקסל וטקסט ייבוא וייצוא של קבצי אקסל וטקסט (Importing & Exporting MS Excel Files and Text) ייבוא (Import) הפיכת קובץ טקסט, Excel מבסיס נתונים אחר. או סוגים אחרים, לטבלת,Access או העתקת טבלת Access בתחילת התהליך יש

קרא עוד

תרגול 1

תרגול 1 מבוא למדעי המחשב 2019 תרגול 5 מחרוזות, חתימות ורקורסיה מחרוזות רצף של תווים רקורסיה קריאה של מתודה לעצמה באופן ישיר או עקיף ראינו בהרצאה מחרוזות: תווים, חתימות: העמסה- String,הצהרה, overloading אתחול רקורסיה:

קרא עוד

Microsoft PowerPoint - rec1.ppt

Microsoft PowerPoint - rec1.ppt תכנות מונחה עצמים בשפת ++C תר גול מ ספר 1 אוהד ב ר זילי אוניברסיטת תל א ביב חדש חדיש ומחודש תוספות של + +C לשפ ת C 1 #include Hello World using namespace std; int main() cout

קרא עוד

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשעב בחינת סיום, מועד א', הנחי אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', 6.2.2012 הנחיות: 1. משך הבחינה: 120 דקות. 2. היציאה מהכיתה במהלך

קרא עוד

Slide 1

Slide 1 מבוא למדעי המחשב תירגול 7: פונקציות 1 מה היה שבוע שעבר? לולאות מערכים מערכים דו-ממדיים 2 תוכנייה )call by value( פונקציות העברת פרמטרים ע"י ערך תחום הגדרה של משתנה מחסנית הקריאות 3 פונקציות 4 הגדרה של

קרא עוד

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות 2 הפשטה שאלות כצעד ראשון נפתור בעיה הרבה יותר פשוטה האם כבר

קרא עוד

מבוא לתכנות ב- JAVA תרגול 7

מבוא לתכנות ב- JAVA  תרגול 7 מבוא לתכנות ב- JAVA תרגול 8 תזכורת - מבנה של פונקציה רקורסיבית.2 פונקציה רקורסיבית מורכבת משני חלקים עיקריים 1. תנאי עצירה: מקרה/מקרים פשוטים בהם התוצאה לא מצריכה קריאה רקורסיבית לחישוב צעד רקורסיבי: קריאה

קרא עוד

מבוא למדעי המחשב - חובלים

מבוא למדעי המחשב - חובלים אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב סמסטר ב' תשע"ב בחינת סיום, מועד ב',.02..9.7 מרצה: אורן וימן מתרגלים: נעמה טוויטו ועדו ניסנבוים מדריכי מעבדה: מחמוד שריף ומיקה עמית משך המבחן: שעתיים חומר

קרא עוד

הגשה תוך שבוע בשעת התרגול

הגשה תוך שבוע בשעת התרגול מרצה: שולי וינטנר. מתרגל: עזרא דאיה. מבוא למדעי המחשב בחינת מועד א', סמסטר א' תשס"ה, 6..5 משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות: ודאו כי בטופס שבידיכם 8 עמודים. יש לכתוב

קרא עוד

Comp. Arch. Lecture 1

Comp. Arch. Lecture 1 א ר כי טקטור ת מ ח ש בים ד"ר טל שיקלר סו ב ול אימייל: stal@bgu.ac.il Mother board לוח אם CPU central processing unit מעבד דוגמאות: 80x86 ו תואמיו Intel 80x86 Intel Core 2 Duo 64 bits 80x86 compatible AMD

קרא עוד

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

מספר מחברת: עמוד 1 מתוך 11 תז: תשעא מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה עמוד 1 מתוך 11 תשע"א מועד ב סמסטר א' 14.2.2011 תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי המחשב יש לענות על כל 5 השאלות. בכל השאלות במבחן יש לכתוב פונקציות יעילות

קרא עוד

Slide 1

Slide 1 מבוא למחשב בשפת C : מערכים חד ודו-ממדיים מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב". עודכן ע"י דן רביב נכתב על-ידי טל כהן, נערך ע"י איתן אביאור.

קרא עוד

מבנה מחשבים ספרתיים

מבנה מחשבים ספרתיים זיכרון מטמון מבנה מחשבים ספרתיים 234267 הבעיה מהירות הגישה לזיכרון איטית ביחס לביצועי המעבד )עד פי (, ככל שהזיכרון גדול יותר הגישה אליו איטית יותר. ביצועי המעבד נפגעים משמעותית אם בכל קריאה מהזיכרון יש

קרא עוד

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשעז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', 31.1.2017 מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבוני, דולב שרון הנחיות: 1. משך הבחינה: 120 דקות. 2. היציאה

קרא עוד

PowerPoint Presentation

PowerPoint Presentation 1 תוכנה 1 תרגול 1: מנהלות, סביבת העבודה ומבוא ל- Java 1 2 מנהלות I מתרגלים: יעל אמסטרדמר )שעת קבלה: חמישי ב- 12, בתיאום מראש( דביר נתנאלי )שעת קבלה: רביעי ב- 17, בתיאום מראש( http://courses.cs.tau.ac.il/software1/1415a

קרא עוד

מבוא למדעי המחשב

מבוא למדעי המחשב מבוא למדעי המחשב שימוש במחסנית - מחשבון תוכן עניינים prefix כתיבת ביטויים ב-,infix ו- postfix postfix prefix,infix ביטויים ב- כתיבת ו- infix נוסח כתיבה ב- (operator אנו רגילים לכתוב ביטויים חשבוניים כדוגמת

קרא עוד

שאלה 2. תכנות ב - CShell

שאלה 2. תכנות ב - CShell ביה"ס למדעי המחשב 4.2.2018 האקדמית נתניה מבחן מועד א' יסודות מערכות פתוחות סמסטר חורף, תשע"ח משך המבחן: שלוש וחצי שעות. יש לענות על כל השאלות. מותר השימוש בחומר עזר כלשהו, פרט למחשבים, (מחשבונים מותר).

קרא עוד

Slide 1

Slide 1 מבוא לתכנות ב- JAVA תרגול 5 מה בתרגול מחרוזות מערכים דו ממדיים מחרוזות (Strings) מחרוזת היא רצף של תווים. immutable על מנת ליצור ולטפל במחרוזות נשתמש במחלקה String למחלקה String מתודות שונות שמאפשרות פעולות

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה תרגול 7 :מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה == vs equals Point p = new Point(,2) Point p2 = new Point(,2) p == p2 p.equals(p2) מתי נכון להשתמש בכל אחד מהם? שימו לב, במחלקה שכתבתם בעצמכם

קרא עוד

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בינסקי הנחיות: יש לענות על כל השאלות. יש לענות על כל

קרא עוד

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו 4 דפי נוסחאות. בדקו שכל העמודים ברשותכם. ב. משך המבחן

קרא עוד

PRESENTATION NAME

PRESENTATION  NAME נכתב ע"י כרמי גרושקו. כל הזכויות שמורות 2010 הטכניון, מכון טכנולוגי לישראל הקצאה דינמית )malloc( מערכים דו-מימדיים סיבוכיות: ניתוח כזכור, כדי לאחסן מידע עלינו לבקש זכרון ממערכת ההפעלה. 2 עד עכשיו: הגדרנו

קרא עוד

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. בדקו שכל העמודים ברשותכם. ב. משך המבחן שלוש שעות (180

קרא עוד

מבוא לאסמבלי

מבוא לאסמבלי 1 ברק גונן תוכנית שבנויה מחלקי קוד נפרדים המשולבים זה בזה מאפיינים: נקודת כניסה אחת נקודת יציאה אחת מבצעים פעולה מוגדרת נקראים פרוצדורות ברק גונן 2 קוד קצר יותר לא צריך לחזור על חלקי קוד שאלה למחשבה: האם

קרא עוד

שקופית 1

שקופית 1 Computer Programming Summer 2017 תרגול 5 מערכים חד-מימדיים )תזכורת( לדוגמא: מערך בשם Arr בגודל 8 שאיבריו מטיפוס int 3 7 5 6 8 1 23 16 0 1 2 3 4 5 6 7 ב - arr[0] ב יושב ערך שהוא המספר השלם 3 arr[1] - יושב

קרא עוד

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מספיק עמדות לכולם ולכן מומלץ לעבוד ביחידים). במהלך המעבדה יהיה עליכם לבצע משימות. אם תצטרכו עזרה בשלב

קרא עוד

ex1-bash

ex1-bash ביה"ס למדעי המחשב סמסטר חורף תשע"ח 13.12.2017 יסודות מערכות פתוחות פתרון תרגיל מס' 7 המכללה האקדמית נתניה שימו לב: כל ההערות שבתחילת תרגילים 1-6 תקפות גם לתרגיל זה. הערה 1: החל מתרגיל זה והלאה, בכל פעם

קרא עוד

שעור 6

שעור 6 שעור 6 Open addressing אין רשימות מקושרות. (נניח שהאלמנטים מאוחסנים בטבלה עצמה, לחילופין קיים מצביע בהכנסה המתאימה לאלמנט אם אין שרשור). ב- addressing open הטבלה עלולה להימלא ב- factor α load תמיד. במקום

קרא עוד

PowerPoint Presentation

PowerPoint Presentation == vs equals תוכנה תרגול 7 :מנשקים, פולימורפיזם ועוד Point p = new Point(,) Point p = new Point(,) p == p p.equals(p) מתי נכון להשתמש בכל אחד מהם? שימו לב, במחלקה שכתבתם בעצמכם יש לכתוב מתודת equals על

קרא עוד

תוכנה חופשית מאחורי הקלעים? על סדר היום: קצת על עצמי מה זאת תוכנה חופשית? ההיסטוריה של תוכנה חופשית כיצד תוכנה חופשית משתלבת בשוק התוכנה היתרונות של ת

תוכנה חופשית מאחורי הקלעים? על סדר היום: קצת על עצמי מה זאת תוכנה חופשית? ההיסטוריה של תוכנה חופשית כיצד תוכנה חופשית משתלבת בשוק התוכנה היתרונות של ת תוכנה חופשית מאחורי הקלעים? על סדר היום: קצת על עצמי מה זאת תוכנה חופשית? ההיסטוריה של תוכנה חופשית כיצד תוכנה חופשית משתלבת בשוק התוכנה היתרונות של תוכנה חופשית. דוגמאות מהשטח 1 ליאור קפלן 30/11/05 קצת

קרא עוד

תרגול מס' 1

תרגול מס' 1 תרגול 6 הסתעפויות 1 מבוסס על שקפים מאת יאן ציטרין קפיצות לא מותנות Unconditional Branch br label PC לאחר ה- fetch של פקודת ה- branch PC לאחר הביצוע של פקודת ה- branch pc label br label הקפיצה מתבצעת תמיד,

קרא עוד

מבוא למדעי המחשב

מבוא למדעי המחשב מבוא כללי לתכנות ולמדעי המחשב 1843-0310 מרצה: אמיר רובינשטיין מתרגל: דין שמואל אוניברסיטת תל אביב סמסטר חורף 2017-8 חלק ב - מבוא לקריפטוגרפיה שיעור 5 (offset מונחים בסיסיים צופן קיסר (היסט,.1.2 1 Today

קרא עוד

Slide 1

Slide 1 מבוא למחשב בשפת C צעדים הרצאה 2: ראשונים בשפת C מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב". עודכן ע"י דן רביב נכתב על-ידי טל כהן, נערך ע"י

קרא עוד

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

Microsoft PowerPoint - T-10.ppt [Compatibility Mode] מבוא למחשב בשפת Matlab לולאות בלוקי try-catch :10 תרגול מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור, סאהר אסמיר וטל כהן עבור הקורס "מבוא למדעי המחשב" נכתב על-ידי רמי כהן,אולג רוכלנקו,

קרא עוד

יצוא לחשבשבת תוכן עיניינים הגדרות - חשבונות בנק...2 הגדרות - הגדרות חשבשבת... 3 הגדרות - כרטיסי אשראי... 4 הגדרות - סוגי הכנסה... 5 יצוא לחשבשבת...6 י

יצוא לחשבשבת תוכן עיניינים הגדרות - חשבונות בנק...2 הגדרות - הגדרות חשבשבת... 3 הגדרות - כרטיסי אשראי... 4 הגדרות - סוגי הכנסה... 5 יצוא לחשבשבת...6 י יצוא לחשבשבת תוכן עיניינים הגדרות - חשבונות בנק...2 הגדרות - הגדרות חשבשבת... 3 הגדרות - כרטיסי אשראי... 4 הגדרות - סוגי הכנסה... 5 יצוא לחשבשבת...6 יצוא קופה לחשבשבת חלונות...01 כללי מדריך זה מסביר את

קרא עוד

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

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

קרא עוד

PowerPoint Presentation

PowerPoint Presentation פרוטאוס הדרכה לפיתוח פרויקט מבוסס ארדואינו 1 הוראות הפעלה תוכנת פרוטאוס מכילה כמות גדולה מאוד של כלי עזר להבנת דרך ההפעלה של התוכנה. שני מקורות מידע עיקריים עומדים לרשות המשתמש מחוץ לתוכנה: o באתר האינטרנט

קרא עוד

Slide 1

Slide 1 מבוא לשפת C תירגול 8: פונקציות שבוע שעבר... מערכים מיזוג מערכים ממויינים מערכים דו-ממדיים מבוא לשפת סי - תירגול 8 2 תוכנייה פונקציות ברמת התקשורת הבין-אישית חלוקה לתתי בעיות בדומה למפתח של ספר קריאות גבוהה

קרא עוד

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום תוכן העניינים: פרק 2 3 צמצומים ומימושים של פונקציות בוליאניות 2 צמצומים של פונקציות באמצעות מפת קרנו: 2 שאלות: 2 תשובות סופיות: 4 צמצום באמצעות שיטת 6:QM שאלות: 6 תשובות סופיות: 7 מימושים בעזרת פונקציות

קרא עוד

תרגיל בית מספר 1#

תרגיל בית מספר 1# ב 4 תרגיל בית מספר - 1 להגשה עד 72 באוקטובר בשעה ::725 קיראו בעיון את הנחיות העבודה וההגשה המופיעות באתר הקורס, תחת התיקייה.assignments חריגה מההנחיות תגרור ירידת ציון / פסילת התרגיל. הנחיות והערות ספציפיות

קרא עוד

הטכניון מכון טכנולוגי לישראל הפקולטה למדעי המחשב הוראות הגשה: ההגשה בזוגות. הוסיפו שמות, ת.ז., אי-מייל, תא אליו יש להחזיר את התרגיל ואת תשובותיכם לתרג

הטכניון מכון טכנולוגי לישראל הפקולטה למדעי המחשב הוראות הגשה: ההגשה בזוגות. הוסיפו שמות, ת.ז., אי-מייל, תא אליו יש להחזיר את התרגיל ואת תשובותיכם לתרג הטכניון מכון טכנולוגי לישראל הפקולטה למדעי המחשב הוראות הגשה: ההגשה בזוגות. הוסיפו שמות, ת.ז., אי-מייל, תא אליו יש להחזיר את התרגיל ואת תשובותיכם לתרגיל, הדפיסו והגישו לתא הקורס בקומה. מבנה מחשבים ספרתיים

קרא עוד

מערכות הפעלה

מערכות הפעלה מערכות הפעלה תרגול 2 קריאות מערכת ב- Linux תוכן התרגול קריאה לפונקציות ב- Linux קריאה לשירותי מערכת ב- Linux 2 תזכורת - תכנית Linux ראשונה hello.c #include int main() { char *str= Hello ; printf)

קרא עוד

Slide 1

Slide 1 מבוא לשפת C תירגול 3: טיפוסים והמרות 1 מה היה שבוע שעבר? משתנים קלט/פלט scanf( ו- printf ( Redirection The Input Buffer 2 תוכנייה טיפוסי משתנים קלט/פלט מעוצב המרה בין טיפוסים קבועים 3 חישוב ממוצע בין שני

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 3 תרגול מס' מתודות ותיכון לפי חוזים חוזה בין ספק ללקוח חוזה בין ספק ללקוח מגדיר עבור כל שרות: תנאי ללקוח - "תנאי קדם" precondition - - תנאי לספק "תנאי אחר".postcondition לקוח ספק 2 תנאי קדם )preconditions(

קרא עוד

Microsoft PowerPoint - rec3.ppt

Microsoft PowerPoint - rec3.ppt תכנו ת מונח ה עצ מים משתני מחלקה, עצמים מוכלים ועצמים מוצבעים א וה ד ברז יל י א ונ יברס י ט ת תל אביב משתנ י מח ל קה Static Members משתני מחלקה members) (static משתנים סטטיים מוגדרי ם בתוך מח לקה ואולם

קרא עוד

Intel Paging & Page Table Exploitation on Windows מאת יובל עטיה הקדמה בשנת 1985, המעבד i386 של Intel יצא לעולם, והיה המעבד הראשון של Intel שתמך בפקודו

Intel Paging & Page Table Exploitation on Windows מאת יובל עטיה הקדמה בשנת 1985, המעבד i386 של Intel יצא לעולם, והיה המעבד הראשון של Intel שתמך בפקודו מאת יובל עטיה הקדמה בשנת 1985, המעבד i386 של Intel יצא לעולם, והיה המעבד הראשון של Intel שתמך בפקודות ובמרחב זיכרון של 32 -ביט. כמו כן, הוא גם היה המעבד הראשון של Intel שהכיל יחידה לניהול זיכרון ( - MMU

קרא עוד

Microsoft Word - UsingXMTenvironment.rtf

Microsoft Word - UsingXMTenvironment.rtf שימוש בחבילת ה XMT סביבת XMT נועדה על מנת לאפשר מימוש של תוכניות לפי גישת ה-.XMT ניתן לכתוב תוכניות בשפת C המוכרת לנו, אך בתוספת מספר אופרטורים שבאמצעותם כותב התכניות יוכל להגדיר קטעי קוד שיתבצעו במקביל.

קרא עוד

Slide 1

Slide 1 Introduction to Programming in C תרגול 8 1 1 רקורסיה תזכורת הגדרה: המונח רקורסיה (recursion) מתאר מצב שבו פונקציה קוראת לעצמה באופן ישיר או באופן עקיף. שימוש: נוח להשתמש בפונקציות רקורסיביות על מנת לפתור

קרא עוד

(Microsoft Word - SQL\353\351\345\345\365 \341\361\351\361 \360\372\345\360\351\355 \ doc)

(Microsoft Word - SQL\353\351\345\345\365 \341\361\351\361 \360\372\345\360\351\355 \ doc) 01/07/08 כיווץ בסיס נתונים ב MS SQL 2005 מסמך זה סוקר תהליך כיווץ בסיס נתונים ב-.Microsoft SQL Server 2005 תהליך הכיווץ (Shrink), מכווץ את חלקו הלא פעיל (קובץ ה- Log ) של בסיס הנתונים ואינו נוגע בחלקו

קרא עוד

תורת הקומפילציה

תורת הקומפילציה תורת הקומפילציה תרגיל בית 2 הוראות לתרגיל 2 בשפת MINI-PASCAL הפרוייקט המצורף הינו קוד שלד של מהדר לשפת mini-pascal עליכם לממש בסביבת (Eclipse (Java את הפונקציות המתאימות לפי החומר שנלמד בהרצאה ע"מ שהמהדר

קרא עוד

Tutorial 11

Tutorial 11 מבוא לשפת C תרגול 8: מערכים רב-ממדיים תרגילים בנושא מערכים ורקורסיה מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקנשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב" נכתב ע"י טל כהן, עודכן ע"י

קרא עוד

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס מבוא למחשב שפת C. בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה לקורס. האשף קובע את סביבת הפיתוח כך שתתאים לצורכי הקורס.

קרא עוד

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגוריתמים לפתרון בעית מסלולים קלים מציאת מסלולים קלים ביותר מצומת ביותר ממקור יחיד. כלומר, V לכל צמתי הגרף. בעיה אחרת הקשורה לבעיה זו היא בעית ה-(

קרא עוד

בס"ד תרגיל 3 מועד אחרון ל כללי בתרגיל זה עליכם לכתוב תוכנה שמדמה מאגר נתונים של חנות. את מוצרי החנות תייצגו באמצעות עצים ורשימות מקושרות יהיה עליכם לנ

בסד תרגיל 3 מועד אחרון ל כללי בתרגיל זה עליכם לכתוב תוכנה שמדמה מאגר נתונים של חנות. את מוצרי החנות תייצגו באמצעות עצים ורשימות מקושרות יהיה עליכם לנ בס"ד תרגיל 3 מועד אחרון ל כללי בתרגיל זה עליכם לכתוב תוכנה שמדמה מאגר נתונים של חנות. את מוצרי החנות תייצגו באמצעות עצים ורשימות מקושרות יהיה עליכם לנהל את מאגר הנתונים של החנות, לבצע אליו שינוים ושאילתות

קרא עוד

מערכות הפעלה

מערכות הפעלה תקשורת ב- Linux ו- Unix מנגנון תקשורת ב- Linux סכמת שרת לקוח: client/server מודל השכבות רשת תקשורת: חיבורים המאפשרים תקשורת בין מחשבים פרוטוקולי תקשורת מאפשרים העברת נתונים ברשת פועלים בשכבות שונות, כשלכל

קרא עוד

מדריך למרצים ומתרגלים 1

מדריך למרצים ומתרגלים 1 מדריך למרצים ומתרגלים 1 תוכן עניינים מדריך למרצים ומתרגלים...1 קבלת סיסמה לתחנת מידע למרצה...3 הוספת חומרי למידה...6 הוספת מורשה גישה לאתר הוספת מטלה קורס...9 לאתר הקורס...11 בחירת בודקים למטלה...17 מערכת

קרא עוד

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - lec2.ppt מרחב הש מות (namespace) אוהד ברזילי אוניברסיטת תל אביב מה בתו כנית? לקוח וס פק במערכת תוכנה ממשקים הכרת מרחב השמות מניעת תלות פוטנציאלית בין רכיבים במערכת ע"י עיצוב חלופי של מבנה הממשקים 2 א ונ י ב רס

קרא עוד

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות ניתוח וניהול מאגרי מידע בעלי נתונים שאינם מאורגנים,

קרא עוד

תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו א"ב

תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו אב תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו א"ב, מילה ושפה לטובת מי ששכח חומר זה, או שלא למדו מעולם,

קרא עוד

Microsoft Word - דוגמאות ב

Microsoft Word - דוגמאות ב הפקולטה למדעי המחשב פרופ' חיים גוטסמן, מר רן רובינשטיין עומר סטרולוביץ, כרמי גרושקו, אלכסנדר ליבוב, מיכאל בלטקסה, ראידה נעאמנה, שי מרקנטי, גיא שקד הטכניון - מכון טכנולוגי לישראל 3.10.2011 מבוא לתכנות מערכות

קרא עוד

Microsoft PowerPoint - meli-iso.ppt

Microsoft PowerPoint - meli-iso.ppt דגשים לעבודה עם פרוטוקול ISOILL בהשאלה בין-ספרייתית יוסי ט יסו נה המסלול האק דמי ה מכללה למי נהל יום הדרכה של מאלי בנושא השאלה והשאלה בין-ספרייתית יולי 2010 - אוניברסיטת בן-גוריון בנגב פרוטוקול ISOILL

קרא עוד

Homework Dry 3

Homework Dry 3 Homework Dry 3 Due date: Sunday, 9/06/2013 12:30 noon Teaching assistant in charge: Anastasia Braginsky Important: this semester the Q&A for the exercise will take place at a public forum only. To register

קרא עוד

Slide 1

Slide 1 מבוא לשפת C תירגול 10: מצביעים, מערכים ומחרוזות שבוע שעבר... מצביעים Call by reference 2 תוכנייה קשר מצביע-מערך )אריתמטיקה של מצביעים( העברת מערכים לפונקציה מחרוזות דוגמה 3 קשר מצביע-מערך 4 תזכורת: תמונת

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש המתרגם משימה: תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם 2 שאלות האם כבר יש

קרא עוד

פייתון

פייתון שיעור 12: מילונים ברק גונן 1 או מילון, :hash table או,dictionary זוגות של מפתחות keys וערכים values מילון מוגדר על ידי סוגריים מסולסלים { } לדוגמה: מילון שמכיל ציונים, המפתח הוא מספר ת.ז ערך מפתח הגדרה

קרא עוד

עוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכ

עוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכ עוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכמה אופנים. בואו ניקח מחלקת צעצוע. אנחנו מעונינים להגדיר

קרא עוד

פרויקט "רמזור" של קרן אביטל בס "ד מערך שיעור בנושא: "פונקציה" טליה קיפניס והדסה ערמי, מאולפנת צביה פרטים מקדימים על מערך השיעור: השיעור מהווה מבוא לנו

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

קרא עוד