ריבוי תהליכים MultiThrading

Similar documents
טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

A R E Y O U R E A L L Y A W A K E?

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

Patents Basics. Yehuda Binder. (For copies contact:

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

THINKING ABOUT REST THE ORIGIN OF SHABBOS

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

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

Name Page 1 of 6. דף ט: This week s bechina starts at the two dots in the middle of

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

המבנה הגאומטרי של מידה

Genetic Tests for Partners of CF patients

ASP.Net MVC + Entity Framework Code First.

SEEDS OF GREATNESS MINING THROUGH THE STORY OF MOSHE S CHILDHOOD

Practical Session No. 13 Amortized Analysis, Union/Find

Advisor Copy. Welcome the NCSYers to your session. Feel free to try a quick icebreaker to learn their names.

Expressions (ex 8) Wild World (ex 7) Cars (ex 9)

Relationships: Everything Else is Commentary

ANNEXURE "E1-1" FORM OF IRREVOCABLE STANDBY LETTER OF CREDIT PERFORMANCE OF CONTRACT (WHERE PRICES ARE NOT LINKED TO AN ESCALATION FORMULA)

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

אנגלית (MODULE E) בהצלחה!

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

אנליזה של multiprogramming system. Signals 1.1. מבוא נשאר נשאר SIGKILL SIGSYS. call write on a pipe with no reader SIGPIPE נשאר

Summing up. Big Question: What next for me on my Israel Journey?

Theories of Justice

אנגלית שאלון ז' ג רסה א' הוראות לנבחן בהצלחה! )4( ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנות ולנבחנים כאחד. (MODULE G)

A JEW WALKS INTO A BAR: JEWISH IDENTITY IN NOT SUCH JEWISH PLACES

BEING A VISIONARY JOLT LEADERSHIP PROGRAM 2014

מבוא למחשב בשפת פייתון

עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:


שאלון ו' הוראות לנבחן

Depth-First Search DFS

שאלון ד' הוראות לנבחן

פולימורפיזם. blog.csit.org.il מדעי המחשב

א נ ג ל י ת בהצלחה! ב. משרד החינוך בגרות לנבחנים אקסטרניים )מילון הראפס אנגלי-אנגלי-ערבי( השימוש במילון אחר טעון אישור הפיקוח על הוראת האנגלית.

שבות תחום מצוות עשה שזמן גרמא סמיכה תקיעה, שברים, תרועה. The אי ור of performing any מלאכה on Rosh HaShanah שופר in preparation of the

JUDAISM AND INDIVIDUALITY

מספר השאלון: Thinking Skills נספח: כישורי חשיבה )לפרק ראשון ושני( א נ ג ל י ת (MODULE F) ספרות )מילון הראפס אנגלי-אנגלי-ערבי(

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

רש"י: {ח }ויכר יוסף וגו'. לפי שהניחם חתומי זקן )ב"מ לט: כתובות כז:

ראש השנה דף. 1. A) Our משנה says,... שנראה בעליל בין שלא נראה בעליל.בין Based on this,פסוק what does the word עליל mean?

Chofshi.

***Place an X if Closed גמרא (if no indication, we ll assume Open חזרה (גמרא of the :דף times

Parashat Balak. Sharon Rimon

בוחן בתכנות בשפת C בצלחה

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון א' Corresponds with Module A (Without Access to Information from Spoken Texts) גרסה א'

The Art of Rebuke. Source #1: Story of Kamtzah and Bar Kamtzah Talmud Gittin 55b-56a

שאלון ו' הוראות לנבחן

State Pattern מימוש מכונת מצבים (FSM) מבוא בעיה תמיכה ועדכונים עדכון מס' 48 מאי 2002

Name Page 1 of 5. דף ז. This week s bechina begins with the fifth wide line at the top of

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון ב' Corresponds with Module B גרסה ב' הוראות לנבחן

1 5 5:1 Holy_bible_

מספר ת"ז: יש לסמן את התשובה הטובה ביותר בתשובון. לא יינתן ניקוד על סימון תשובה בטופס הבחינה או במחברת הבחינה.

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 134 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 37

Interrogatives. Interrogative pronouns and adverbs are words that are used to introduce questions. They are not inflected for gender or number.

Global Day of Jewish Learning

תרגול 8. Hash Tables

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

ALEPH-TAU Hebrew School Lesson 204 (Nouns & Verbs-Masculine)

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

הבסיס כתיבת התכנית הראשונה שימוש במשתנים. הטיפוס הבסיסי object. הטיפוס הבסיסי string משפטי בקרה. שימוש ב- Enumerations. שימוש ב- Namespaces

Thank you for your interest in the Prizmah Jewish Day School Conference!

CML כנס שנתי של מודעות ל- CML 4-6 לאוקטובר 2018, מלון רמדה, חדרה

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

Before exploring some of the relevant Torah sources, two things to consider:

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

Revisionist History: 4 Rabbi Isaac Elchanan Theological Seminary The Benjamin and Rose Berger CJF Torah To-Go Series Av 5774

Bereshit / Exodus 18:1-20:23, Isaiah 6:1-7:6, 9:5-6, Matthew 6:1-8:1. Parashat Yitro

eriktology The Writings Book of Ecclesiastes [1]

Global Day of Jewish Learning

defile my holy name and I shall be sanctified among the children of Israel. I am Hashem who sanctifies you.

מבוא לרשתות - תרגול מס' 11 Transparent Bridges

Global Day of Jewish Learning

Information The marks for questions are shown in brackets. The maximum mark for this paper is 40. You must not use a dictionary.

Free Will I: The Nature, Importance and Dynamics of Free Will.

אנגלית שאלון ז' (MODULE G) ג רסה א' הוראות לנבחן )מילון אנגלי-ערבי / ערבי-אנגלי )

אוסף תרגילים למעבדה ביוניקס - 4

In the previous two classes, we discovered the spiritual dimension of our Self, the soul that

2 יחידות לימוד הוראות לנבחן רשו ם "טיוטה" בראש כל עמוד טיוטה. רישום טיוטות כלשהן על דפים שמחוץ למחברת הבחינה עלול לגרום לפסילת הבחינה!

HEBREW THROUGH MOVEMENT

M A K I N G N E G A T I V E S P O S I T I V E

FAIL CONFR URE ONTING

(MODULE E) ב ה צ ל ח ה!

HEBREW THROUGH MOVEMENT

The Benefits of Being Stiff-Necked. Rabbi Noah Gradofsky

Yosef's Secret Message

Parashat Shemot: Why Moshe?

בהצלחה! (MODULE C) Hoffman, Y. (2014). The Universal English-Hebrew, Hebrew-English Dictionary

HEROES & VILLAINS: T H E F A B R I C A N D M A K I N G O F A T R U E S U P E R H E R O

DNS פרק 4 ג' ברק גונן מבוסס על ספר הלימוד "רשתות מחשבים" עומר רוזנבוים 1

WISDOM FROM ALL MY TEACHERS: CHALLENGES AND INITIATIVES IN CONTEMPORARY TORAH EDUCATION URIM Publications, 2003 Copyright ATID.

המחלקה למדעי המחשב, אוניברסיטת בן גוריון מבני נתונים, סמסטר אביב 2102 עבודת בית מספר - 2 מעשית

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

The conjunctive vav (ו ) is prefixed to a Hebrew word, phrase, or clause for the following reasons:

12:34 PM. Josh. Can t believe there were so many people at that party soooooo much fun!

Forgive us, pardon us, grant us atonement Parashat Shelach Lecha June 9, 2018 Rabbi Carl M. Perkins Temple Aliyah, Needham

Transcription:

ריבוי תהליכים MultiThrading דוגמת הרצה מהו תהליך? הדגמת הפיצול דוגמאות לתהליכים gc,main, applet, מוזיקה וסרטים. 2 שיטות לניהול תהליכים תלוי במעה"פ סדר עדיפויות solaris )אפשרות להרעבה( חלון זמן Windows אין כל כך משמעות לעדיפויות התהליכים. מודל הקומות נסיון של java לניהול עדיפויות. מחזור החיים של תהליך שגי ה

המחלקה Thread קבועי המחלקה 10 = Thread.MAX_PRIORITY Thread.NORM_PRIORITY = 5 Thread.MIN_PRIORITY = 1 מטודות המחלקה Thread() Thread(String threadname) run() IllegalThreadStateException start() InterruptedException סטטית sleep(long milliseconds)????? - interrupt)( interrupted)( סטטית -?????????? - isinterrupted)( dead ועד הגיעו למצב הופעל מרגע ש- start true מחזיר isalive() curremtthread() סטטית מחזירה reference לתהליך שכרגע רץ. join() ממתין לסיום thread אחר לפני המשך ביצועו של ה- thread הנוכחי. yeald() מאפשר ל- thread אחר לרוץ. )נכנס ה- thread בעדיפות הגבוהה ביותר(. wait() נכנס למתן המתנה על גבי אובייקט מסויים. notify() מעיר תהליך בהמתנה. notifyall() מעיר את כל התהליכים הממתינים. setpriority(int priority) getpriority() setname(string threadname) getname() tostring() שם ה- thread, עדיפות והקבוצה אליה שייך. דוגמא. public class HelloThread extends Thread { כתיבת Thread 1. ע"י ירושה מהמחלקה.Thread public void run() { System.out.println("Hello from a thread!"); public class TestThread { public static void main(string[] args){ HelloThread ht1 = new HelloThread(); HelloThread ht2 = new HelloThread(); ht1.start(); ht2.start(); ע"י מימוש הממשק.Runnable דוגמא. public class HelloRunnable implements Runnable {.2 public void run() { System.out.println("Hello from a thread!"); public class TestRunnable { public static void main(string[] args){ Thread t1 = new Thread(new HelloRunnable()); Thread t2 = new Thread(new HelloRunnable()); t1.start(); t2.start();

Synchronized סנכרון תהליכים מחסנית בייצוג מערך. הוספת איבר למחסנית: 1. הוספת איבר, 2: עדכון האינדקס. הבעיה: התהליך שמוסיף איבר למחסנחית מ בד את ה- cpu ל חר הוספת האיבר ולפני עדכון האינדקס. תהליך שני בא להוציא איבר מהמחסנית... Synchronized בא לפתור בעיה זו. לכל אובייקט יש מנעול. כאשר תהליך כלשהו נכנס לאיזור synchronized הוא לוקח את המנעול לידיו ואף תהליך אחר לא יכול להיכנס לאיזור זה עד שהתהליך שחרר את המנעול. בעיות בסנכרון תהליכחם לא ניתן להבטיח שתהליכים יתבצעו בסדר הרצוי. לא ניתן להבטיח שקטע קריטי לא יקטע באמצע ביצועו. מטודה מסונכרנת מבטיח מניעה הדדית בביצוע המטודה שני תהליכים לא יכולים לבצא את אותה מטודה בו זמנית תהליכים אחרים יושהו עד סיום הביצוע בסיום הביצוע ע"י תהליך מסויים תהליך אחר יורשה לבצע את המטודה. תהליך המבצע מטודה מסונכרנת "נועל" את ה ובייקט אליו שייכת המטודה. שום תהליך אחר לא יוכל לבצע בזמן זה מטודה מסונכרנת אחרת של אובייקט זה..monitor אובייקט מסוג זה ניקרא..monitor רק תהליך אחד רשאי לבצע מטודה מסונכרנת של אובייקט.monitor הגדרה זו מאפשרת לאותו תהליך לבצע יותר ממטודה אחת של אובייקט מטודה אחת קוראת למטודה אחרת o התנהגות זו מאפשרת למנוע מצב "קיפ ון" deadlock של תהליך בודד. o דוגמ בעמוד 161 נעילת מטודות לא מאפשר לגשת לאף מטודה אחרת של האובייקט כשתהליך מסוים נמצא כבר במטודה מסוימת של אותו אובייקט. public class SynchronizedCounter { private int c = 0; public synchronized void increment() { c++; public synchronized void decrement() { c--; public synchronized int value() { return c;

מ) נעילה ע"י מנעול נעילה ע"י מנעול מאפשרת להגדיר קטעי קוד נעולים ולא נעילה של מטודות שלמות. public class MsLunch { private long c1 = 0; private long c2 = 0; private Object lock1 = new Object(); private Object lock2 = new Object(); public void inc1() { synchronized(lock1) { c1++; public void inc2() { synchronized(lock2) { c2++; ו- notify Wait קבוצת הנכנסים קבוצת המחכים קבוצת הנכנסים תהליך המבקש לבצע מטודה מסונכרנת של מוניטור כשהוא "נעול". ברגע שהמוניטור מתפנה תהליך כלשהוא אקראי נבחר וממשיך את הביצוע מהמקום שהופסק. קבוצת המחכים במהלך ביצוע של מטודה מסונכרנת התהליך מזהה שהוא חייב להמתין שפעולה אחרת תסתיים. במיקרה זה הוא משהה את עצמו ע"י קריאה למטודה wait() )Object- Wait התהליך מושהה ומשוייך לקבוצת המחכים השייכת למוניטור בו הוא מתבצע. התהליך עובר למצב Ready והמוניטור מתפנה "לטפל" בתהליכים אחרים )הנכנסים( Notify/NotifyAll התהליך שקרא למטודה wait ממתין עד אשר תהליך אחר המבצע מטודה מסונכרנת באותו מוניטור יקרא למטודה notify או.notifyAll קריאה ל- notify תהליך אחד מקבוצת המחכים נבחר באופן אקראי ומועבר לקבוצת הנכנסים. )במידה וקבוצת המחכים ריקה לא יקרה כלום(. קריאה ל- notifyall התהליך שקרא ל- notify ממשיך להתבצע כרגיל עד שמשחרר את המוניטור. כשהמוניטור מתפנה תהליך כלשהו מקבוצת הנכנסים נבחר אקראית ומתבצע. כל התהליכים בקבוצת המחכים מועברים לקבוצת הנכנסים. )במידה והקבוצה ריקה לא יקרה כלום( התהליך שקרא ל- notifyall ממשיך להתבצע עד שמשחרר את המוניטור. כשהמוניטור משוחרר אחת מקבוצת הנכנסים נבחר אקראית להמשך ביצוע. הערות ניתן לקרוא למטודות הנ"ל מתוך מטודות מסונכרנות בלבד מטודות אלה מוגדרות במחלקה Object ולא במחקה Thread אם תהליך מקבוצת המחכים מקבל פסיקה "זורק".)checked( InterruptedException ניתן לקרוא ל-( mili wait(long הדבר גורם להשהיית התהליך עד לסיום הזמן או קריאה ל- notyfy. המוקדם מביניהם. התהליך עובר מקבוצת המחכים לקבוצת הנכנסים.

דוגמ לסנכרון ב מצעות wait/notify // A correct implementation of a producer and consumer. public class Q { int n; boolean valueset = false; public synchronized int get() { if(!valueset) try { wait(); catch(interruptedexception e) { System.out.println("InterruptedException caught"); System.out.println("Got: " + n); valueset = false; notify(); return n; public synchronized void put(int n) { if(valueset) try { wait(); catch(interruptedexception e) { System.out.println("InterruptedException caught"); this.n = n; valueset = true; System.out.println("Put: " + n); notify();

public class Producer implements Runnable { private Q q; public Producer(Q q) { this.q = q; new Thread(this, "Producer").start(); public void run() { int i = 0; while(true) { q.put(i++); public class Consumer implements Runnable { private Q q; public Consumer(Q q) { this.q = q; new Thread(this, "Consumer").start(); public void run() { while(true) { q.get(); public class PCFixed { public static void main(string args[]) { private Q q = new Q(); new Producer(q); new Consumer(q); System.out.println("Press Control-C to stop.");

דוגמא מעמוד 154 דוגמא מעמוד 163 במיקרה זה הוגדרה מחלקה Controller המשמשת כמתווך בין תהליך main לתהליכים האחרים. הבנאי מקבל פרמטר המייצן את כמות התהליכים להם יש להמתין. המטודה finished מקדמת מוהנ המייצג את מספר התהליכים שהסתיימו. כאשר התהליך האחרון מסיים הוא מעיר )notify( את התהליך שביצע wait על המוניטור. המטודה waitforthreads נקראת ע"י תהליך main לצורך המתנה לתהליכים האחרים. תהליך main מכניס את עצמו ל- wait כל עוד כל התהליכים האחרים לא סיימו. כאשר הוא מתעורר )notify( בודק שוב את התנאי וחוזר לביצוע ה- main. השתמשנו ב- notify כי ידוע שרק תהליך אחד ממתין. במקרים אחרים רצוי לקרוא ל- notifyall כי לא ניתן לבחור את התהליך אותו רוצים לעיר לכן רצוי להעיר את כולם ולהרדים חזרה את מי שלא אמור להתעורר. הבדיקה ב- waitforthreads נעשית בלולאה ולא ב- if. הלולאה גורמת לתהליך שהתעורר לבדוק את התנאי שוב לפני שהוא ממשיך. הלולאה מתאימה בעיקר למצבים שהרבה תהליכים הממתינים לאותו מוניטור. כשהתהליכים מתעוררים עליהם לוודא שבאמת הם היו אמורים להתעורר ושהתנאי תקף. הערות

תהליכים מסוג Daemon בד"כ מספקים שרותים לתהליכיים אחרים. המטודה run שלהם בדרך כלל בלולאה אין-סופית. תכנית מרובת תהליכים מסתיימת כשכל התהליכים שאינם daemon מסתיימים. תהליכים מסוג daemon הינם בעלי עדיפות נמוכה ביותר. מגדיר תהליך כ- Deamon. setdaemon(true).deamon לבדוק אם תהליך הוא isdaemon()