רשימת הקורסים: תואר ראשון ושני

נקה
  • תכנות מערכת ומבוא לתכנות מקבילי

    מדעי המחשב | שנה ב’ | חובה
    קוד הקורס: 10203052
    דרישות קדם: מבוא למדעי המחשב, תכנות מודולארי, מבנה המחשב (או לחילופין 'מערכות חומרה תכנה ותכנות בשפת סף')
    סמסטר א' , שנה ב’
    נקודות זכות: 5

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

    הקורס כולל שני חלקים: מרכיב תכנותי הכולל היכרות נרחבת עם קריאות המערכת (system calls) של Unix, ועם כלים לתקשורת בין תהליכים ותהליכונים (IPC), ומרכיב תיאורטי הדן ביסודות מערכת ההפעלה, ובמושגי התהליך והתהליכון (thread).

    נושאים שילמדו: מבוא למערכות הפעלה. נושאים בארכיטקטורה הרלוונטיים למ.ה. (בפרט פסיקות). מרכיבים של מ.ה. תהליכים (כולל יצור תהליכים ב-Unix: fork(), exec()). תקשורת בין תהליכים ב- Unix (signal, pipes, named pipes, message queues, sockets, shared memory) פתילים (threads, כולל ספריית pthreads). תזמון המעבד (בפרט ב- Linux). סינכרון בין תהליכים (בפרט סמפור בתיאוריה, ב- Unix, וב- pthreads). טיפול בחסימות הדדיות. פרדיגמת התכנות המקבילי: אפשרויות ואתגרים.