00:00

Introduction to Multitasking and Threading in Operating Systems

Multitasking allows multiple processes to run concurrently on a computer system, while threading enables parallel execution within a single process. This text delves into concepts such as process scheduling, forking, thread creation, and CPU scheduling. Learn about the intricacies of managing system resources and executing tasks efficiently in operating systems.

costoyas
Download Presentation

Introduction to Multitasking and Threading in Operating Systems

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. םיכילהת ןונמזו לוהינ ךוק ןתיא ןהכ לט + / הלעפה תוכרעמל אובמ ' / 234119 תארשהב םיפקשה ' החותפה הטיסרבינואה + : םיאשונ םיכילהת יתתו םיכילהת ךילהתה בצמ םימתירוגלא ןונמזל (scheduling) 1

  2. םיכילהת יתתו םיכילהת process ךילהת תלעפה : הצר עגרכש תינכת לכ :) ( ךילהת   (command prompt, GUI) הלעפהה תכרעמ לש ךילהת ךותמ שמתשמ ךילהת ךותמ ( הציר ןמזב :) system(cmd) . תא עצבי cmd ב unix דבלב ) לפכתשמ ' דוקב הרוש התואמ לחה , בצמ ותוא םעו .1 .2 ליבקמב ." " ל האירק ל האירק - א fork() ךילהתה ןאכ יתלחתה ( ( ב - '  .) ןורכיזה ןכות םימעפ רפסמ . התוא תצרהמ ןורכיז תניחבמ ליעי רתוי הברה תינכות  . ףתושמ ןורכיז ןיא םיכילהתל  2

  3. םיכילהת יתתו םיכילהת (Thread) : ךילהת תת  ךילהת ךותמ םיכילהת יתת חותפל ןתינ הצירה ןמזב תיירפס תרזעב pthread.h windows.h םואיתל תויצקנופ תורשע ןורכניסו םיכילהת יתת ןיב . ילאוטריו תובותכ בחרמ ותואב ( תובותכה בחרמב םיקלחתמ .) ףתושמ ןורכיזל השיג שי ולש םיכילהתה יתת ךילהתה לש ןורכיזל לבגומ םיכילהתה יתת לכ לש ןורכיזה כ דעל השיג שי ךילהת לכל תויביס 4GB .)  unix : ב ב  windows :   םידבוע ל ןכל הס ןכל " ( ב 32  + ישארה ךילהת    3

  4. unix תרזעב ךילהת לופכש fork ) ( #include <stdio.h> int main() { int i, j=0, res; res = fork(); printf("pid is: %d\n", getpid()); j++; if (res==0) printf("child: %d\n", j); else printf("parent: %d\n",j); } // child gets 0, parent gets child’s pid 4

  5. טלפ pid is: 20453 child: 1 pid is: 20452 parent: 1 5

  6. םיכילהת יתת תריצי (unix) #include <stdio.h> #include <pthread.h> int g; void *threadFunc(void *arg){ char *str; str=(char*) arg; for (int i = 0; i < 6; i++) printf("%s (g = %d)\n",str, g++); return NULL; } identifier /* The thread function. Like main(), but for a thread */ NULL = default attributes for thread Thread Thread function void main(void) { pthread_t pth; pthread_create(&pth,NULL,threadFunc,“I’m a thread..."); for (int i = 0; i < 10 ; ++I;} printf("main() is running...(g = %d)\n", g++); } Argument to function 6

  7. טלפ I'm a thread... (g = 0) I'm a thread... (g = 1) main() is running...(g = 2) I'm a thread... (g = 3) I'm a thread... (g = 4) I'm a thread... (g = 5) main() is running...(g = 6) I'm a thread... (g = 7) main() is running...(g = 8) main() is running...(g = 9) main() is running...(g = 10) main() is running...(g = 11) 7

  8. ןורכנס - םיכילהת יתת תריצי #include <stdio.h> #include <pthread.h> int g = 0; void *threadFunc(void *arg){ char *str; str=(char*) arg; for (int i = 0; i < 6; i++) printf("%s (g = %d)\n",str, g++); return NULL; } /* The thread function. Like main(), but for a thread */ void main(void) { pthread_t pth; pthread_create(&pth,NULL,threadFunc,“I’m a thread..."); pthread_join(pth, NULL); /* wait for our thread to finish before continuing */ // the thread identifier for (int i = 0; i < 10 ; ++I;} printf("main() is running...(g = %d)\n", g++); 8

  9. טלפ I'm a thread... (g = 0) I'm a thread... (g = 1) I'm a thread... (g = 2) I'm a thread... (g = 3) I'm a thread... (g = 4) I'm a thread... (g = 5) main() is running...(g = 6) main() is running...(g = 7) main() is running...(g = 8) main() is running...(g = 9) main() is running...(g = 10) main() is running...(g = 11) 9

  10. Multitasking multitasking ךכ רהמ קיפסמ םיכילהתה ןיב ףלחה תומישמ יוביר ליבקמב תוצר ןלוכ וליאכ האריי הזש – ) (  ... " םיליבקמ " םיכילהת (interleaving) םיכילהת גוּרי ִ ס ידי לע השענ  C ריצ ןמזה D C D ידי לע תאז תורשפאמ ה (CPU scheduling) : " מ  ןמז תאצקה CPU םיכילהתל םירחאה םיכילהתה לש בצמה תא תונשל יאשר וניא ךילהת ףא יזיפו ילאוטריו ןורכיזל הדרפה ידי לע השענ . ךשמהב דמלנ . . – ןגוה מ " עי ןוּנ ְ מִז הנגה :  .   10

  11. Multitasking השוע ה ? " מ םצעב המ loop forever { run the process for a while. stop process and save its state. load state of another process. } exception ) . ) ןיינעל תשדקומש תיביס ןיתממ םא קדבנ Context Switching הלועפל סנכנ הלעפהה תכרעמ לש ךילהת רשקהה תפלחה ךרוצל וליבשב רשקה תפלחה עצבל ךירצ אל ןכלו . ( הדוקפ רוזחמ רשקה תפלחהל לש םויס לכ ןמזה עיגהש גציימש דציכ ?  (  תא רומשל ךירצ קר אוה עצמאב קספומ אל אוה , אצוהש ךילהתה לש עדימה . השוע אוה המ הארנ דימ ...   11

  12. Multitasking , עגרכ ליעפה ךילהתה לש בצמה תא תרמוש ה " מ : רשקה תפלחה  . שדחה ךילהתה לש בצמה תא תרזחשמו רמשיהל ךירצ עדימ הזיא ? , תונשל לולע אבה ךילהתהש המ לכ  : המגודל  Program counter (PC)  CPU registers  File access pointer(s) process control block (PCB) הלעפהה תכרעמב רמשנש . ךשמהב הארנ ... ארקנש םינותנ הנבמב ןסחואמ ךילהתה לע עדימהמ קלח ,   12

  13. Multitasking CPU ה תא בוזעל לוכי ךילהת (getchar() wait ( ידי לע לשמל רופ ַ מֵס (suspend state) , ע לשמל " י sleep ... ללגב רשקה תפלחה טלקל הנתמה הנתמה בצמל הסינכ היעשה בצמל הסינכ :  לשמל (  ) ךשמהב הארנ . –   םירחא םירקמב הרוק המ לבא ? םיכילהת לש המודמ תופיצר םע המ םיכילהת ןיב תונגוה םע המ ?  ?   13

  14. Multitasking CPU םא ה לע רתוול םיכילהת תוצלאמ תוינרדומ הלעפה תוכרעמ . רדסֻמ ןוּנ ְ מִז (preemptive scheduling) תורדסֻמ ויה אל תונולח תואסרג .  ידמ בר ןמז םש םיראשנ םה תושמממ הלאכ תוכרעמ win95 .  ינפל  ? דבוע הז דציכ עובק בצוק הנתשמ בצוק ךילהת  x - (fixed timer) (variable timer) ךילהת םיפילחמ ןמז ' " חי מ לכ –  םיפילחמ ןמז המכ ירחא תעבוק ה  14

  15. Multitasking רוזחש / םוליצ + ץירהל ימ תא הטלחה : הרוקת תאשונ רשקה תפלחה  : אמגוד  לכ הפלחה תעצבתמ 30 רשקה ףילחהל הינש 1/(1 + 30) = ~3% זבזבתמ דוביעה ןמזמ תוינש - ילימ  - ילימ חקול  יזא  15

  16. ? ףלחומ ךילהתה דציכ ןמז תפוקת לכ הקיספ תרצונ הרמוחה תמרב תידועיי הניטור ידי לע תישענ הפלחהה ( ךילהתהמ דרפנ system םע ךילהתה תבותכ המושר םש ןורכיזב שארמ עודי םוקמל תשגינ .  )   רתויב ההובגה תופידעה ךילהתה לש ורות עיגמשכ system םירותב תויופידעה תא ןכדעל יושע ; buffer תוקיספ ליכמה הקיספ םש תמייק םא , בצממ ךילהתה wait בצמל ready :   תדלקמהמ טלק לשמל הל הכחמה ךילהתל התוא ךיישמ אוה , תא ריבעמו .) ( ה תא קרוס   . 16

  17. ךילהת לש בצמ יוניש [XV6: RUNNABLE] Ready Interrupt Admitted (Started) [XV6: RUNNING] Event Dispatched Complete Current New Normal or Abnormal Exit Waiting I/O or other Event Wait [XV6: EMBRYO] Terminated [XV6: SLEEPING] XV6 code: enum procstate { UNUSED, EMBRYO, SLEEPING, RUNNABLE, RUNNING, ZOMBIE }; 17

  18. PCB - Process Control Block ) ( םיכילהתה תלבט ךילהת לכל המושר םע ,' םיכילהת תלבט הקיזחמ הלעפהה תכרעמ ' הנבמה םש : struct proc רשקה , ךותב םיכילהת ךרעמ ptable   רשקה תפלחהל יטנוולר וניאש ףסונ עדימו , בצמ תללוכ  :  struct { struct spinlock lock; struct proc proc[NPROC]; } ptable; 18

  19. ב םיכילהתה תלבט XV6 struct context { uint edi, esi, ebx, ebp, eip; // registers content }; struct proc { // Per-process state (selected fields…) pde_t* pgdir; // Page table enum procstate state; // Process state int pid; // Process ID struct proc *parent; // Parent process struct context *context; // swtch() here to run process void *chan; // If non-zero, sleeping on chan int killed; // If non-zero, have been killed … }; 19

  20. ? עוציבל םיכילהתה וסנכי רדס הזיא יפל XV6 ארקנ ילגעמ רדס לש הטושפ תוינידמ תשמוממ ךשמהב הארנ . ב  Round Robin –  : ךרעמב תוסינכה לע יתרדס רבעמ ידי לע שמוממ  struct { struct spinlock lock; struct proc proc[NPROC]; } ptable; רתוי םימכחותמ םישומימ וישכעמ הארנ  20

  21. הצירל םיניתממה רות םינותנ הנבמ : הצירל םיניתממה רות תויופידע יפל ןיוממה ינווכ תויופידע רות )" : Ready Queue וד רות ארקנ " - ( head tail PCB 12 Prio: 200 PCB 42 Prio 200 PCB 3 Prio 100 PCB 41 Prio 3 PCB 0 <NULL> Prio 0 21

  22. (scheduling) ןונמזה תוינידמ וישכעו : : ןונמזה תוינידמב םייזכרמ םיטנמלא ינש  Quantum ? ) דבעמב ההשי ךילהת לכ ןמז המכ םלוכל דיחא חרכהב אל . " ןולחל ( ךילהת ) ה ' ימדק (   ראשלמ . יפ ךורא ןמז שי 3 ' תונולח ב לשמל "  ? עוציבל סנכייש אבה ךילהתה ימ לע ססובמ כ תיסיסב תופידע  (base priority) ו תנכתמה ידי לע תעבקנ ךילהת לכ לש תיסיסב תופידע / ב םג היולת תופידע םישמתשמ תובורמ תוכרעמב ' גוס ' שמתשמה . םיימניד םייונישו שמתשמה וא רדב "    22

  23. UNIX - ב תויופידע בושיח אמגוד : רתוי הובג ךרע – רתוי הכומנ תופידע תודיחיל ןמזה תא םיקלחמ 1,2,3,… ה הדיחיה תליחתב ךילהת תופידע  NICE  j i : איה -  ( ) 1 CPU i חווטב יבויח ךרע תטילשב שמתשמה    j ( ) P i Base 19 .. 1 j j j 2 1   ) 1  1 ( ) ( ) ( CPU i U i CPU i j j j 2 2 ךילהת לש תינושאר תופידע j ךילהת לש j ןמזב Basej Uj(i) : :  i ם תכורצת עי "  תילאיצננופסקא : ללקושמ ענ עצוממ yi= αxi+ (1 - α תרזעב yi-1 הקלחה " שמממ " ( 23

  24. ? ןונמז תוינידמ םירחוב ךיא : לשמל . םינוירטירק רפסמ ןובשחב איבהל ןתינ דבעמה לש  ילמיסקמ לוצינ הרוּקְ ת רוּעְ זִ מ ילמינימ הבוגת ןמז throughput תוֹרוּמ ְ ת לוּל ְ ק ִ ש םייק ( trade-off   םייביטקארטניא םישמתשמ תבוטל םיכילהתה רפסמ ןותנ ןמז קרפב םימייסמש ) (  קפסה :) (  םהיניב )  online-algorithm ל תיסאלק המגוד  . שארמ םוקמב הציר ןמזב םינותנה תא תלבקמש היצזימיטפוא תייעב  24

  25. ןונמז ימתירוגלא FIFO non-preemptive ןושאר סנכי םיניתממה רותל ןושאר עיגהש ךילהתה דבעמ יכרוצ םיכילהתל תופידע ןתונ םישמתשמ תבורמ תכרעמב – תודובע הברה חלושש ימל תנתינ תופידע ) : FCFS First Come First Serve ' ' – כ םג עודי (    םדקומ ... המודמ תופיצר .)" "( ףותיש תושירד קפסמ אל  25

  26. ןונמז ימתירוגלא SJF Shortest Job First ( preemptive ) : (  non-preemptive ןושאר סנכי תילמינימ הציר ןמז תרתי לעב ךילהתה ךילהת לש הצירה ןמז יובינ שרוד – דציכ ? ) ( רדסומ אל וא ) רדסומ    FCFS SJF תויופידע ןונמז לש םייטרפ םירקמ םצעב םה ו  26

  27. SJF FCFS ו אמגוד : FCFS: P1 Execute time Wait time 0 24 27 Average wait time = (0+24+27)/3 = 17 ms P2 P3 3 3 24 SJF: P2 P3 P1 Now Average wait time = (0 + 3 + 6)/3 = 3 ms 27

  28. SJF אמגוד : ms דע לשמל I/O ב - ) רתונה ףיצרה דוביעה ןמז תא ןייצנ ךילהת לכל P1 (6) P2(8) P3 (7) P4 (3) P4, P1, P3, P2 ( Avg wait time ) היהי םיירשפאה םירדסה לכ לע עצוממב FCFS ~10 ms (  לשמל  היהי הצירה רדס עצוממה הנתמהה ןמז  7ms .   28

  29. םע תויעב SJF תונורתפו טלחומ ןפואב ןגוה תויהל רשפא יא חצנל רותה ףוסל ףחדיהל םילולע םיכורא םיכילהת .  ןמזה לכ םא ,  תורצק תושקב תועיגמ םיירשפא תונורתפ : ףקעיהל לוכי ךילהתש םימעפה רפסמ תא ליבגנ shortest process next, with bypass and freeze .  : תוינידמ ארקנ  לשמל /k) : , רותב קתוו  c’ = / (1 + רעושמ מ אבה ךילהתכ רתויב ךומנה . הנתמהה ןמזל םינתונ ונחנאש תובישחה תדימ לע דיעמה עובק אוה ) " עי ןמז ( ) הנתמה ןמז ה לעב ךילהתה תא םיחקול c’ (   k .  29

  30. Round Robin תוינידמ RR Round Robin :) ( תוינידמ  Quantm ) םיארקנה םיעובק ןמז יחוורמל ןמזה תא םיקלחמ ילגעמ רותב םינגרואמ םירחתמה םיכילהתה לכ רותב םתעפוה רדס יפל דוביעל םיסנכנ םיכילהתה רתויה לכל לבקמ ךילהת לכ Quantum בוביס לכב (     םויס PCB עוציבב PCB הנתמהב ...... PCB הנתמהב הסינכ ןכומ ' בצמ ' 30

  31. Round Robin תוינידמ לש תונוכת רפסמ RR Preemptive RR לדוגב םייולת Quantum רובע יכ בל םישנ Quantum דאמ לודג :  ) ( רדסומ יעוציב  .  RR ל - ) תיביטקפא ( לוקש ,  FCFS ב יכ quantum תעצבתמ המישמה לכ . דחא , -  31

  32. RR / FCFS תואוושה n אוה q . יחכונה ךילהתה ינפל םיכילהת עצוממב עוציב בצמל סנכיהל ךירצ ךילהתש םימעפה רפסמ שיו הטנווקה ןמזש חיננ  m . -  nq : )" הבוגת ןמז ךילהת תלחתה תא ןיטקהל q . רשקהה תפלחה לש הרוקתה "( דע ןמז הנקסמ :  ללגב ידמ רתוי ןיטקהל רשפא יאש היעבה  . 32

  33. הנתמה ןמז ti= mi* q - i . ה ךילהתה לש עוציבה ןמזש חיננ mi(n*q) = n(mi*q) = nti לגעמב םימעפ , הז םעפ לכ nq ןמז אוה  = הנתמהה ןמז רבוע mi  .) (  33

  34. הנתמה ןמז היה ןמזה nT FCFS - ב  ו - T ti i עצוממ ' . אוה םא רמולכ ךילהתל ' ומצע ךילהתל סחייתמ ב תויהל יאדכ RR םא mi< m , ש אוה לדבהה : ךילהתל עצוממהמ רצק . -  , הנקסמ  תטישב עצוממה הנתמהה ןמז ךרוא יווש םה רותב םיכילהתה לכ םא לש הזל הווש תילגעמה הצירה FCFS רשקהה תפלחה לש הרוקתהמ ונמלעתה ןאכש בל ומיש ,  . .  34

  35. םויס ןמז * העגה ןמז nq + q + עוציב ןמז מ ןטק עוציב ךשמ q + הנתמה ןמז = םויס ןמז  םירצק םיכילהת םיכורא םיכילהת : םיכורא םיכילהת ' םיחפוקמ ' הז ןפואב q,2q,4q וכו ' םיניתממ ןמז רתויש לככ , הלדג תופידעה ךכ :) (  nti+miq  ןוקיתל תושיג ןנשי רותל הסינכה רפסמ יפל דבעמ ןמז . . .  , רמולכ . תתל , לשמל  ןמזב ונעגה וליאכ םיבשחמ ונחנא הזה ףקשב 0 . * 35

  36. תויגטרטסא רפסמ ברעמה ץבשמל המגוד : PCB ... PCB FCFS םייופצו , FCFS , םירידנ םירצק םיכילהת יכ הרוקת זבזבל לבח תיסחי םיכילהת יכ , תכרעמ : המר 0 PCB ... PCB תומידקב שמתשמ : המר 1 ההובג המר 2 : PCB ... PCB םע תילגעמ הציר q ןטק ימוקמ דוביע אלל . תידיימ ) ( םיפוסמ תויביטקארטניא שרוד םע תילגעמ הציר q ךורא םירחא םישמתשמ : המר 3 SJF FCFS ) וא ( הווצא ישמתשמ : המר 4 idle process 5 : המר 36

  37. תונולחב ץובישה XP multilevel feedback queue רות הטמלו RR (n=32) preemptive , ומכ השעמל ןכל RR : םתירוגלא n-1 ירות FIFO רות FIFO אוהש רות ותוא ףוסל רזוח אלש CPU רותב םידרוי  הדבועה דבלמ  . מ האיציב  תובקעב קר רותב םילוע FIFO  1 תלועפ I/O 1 CPU 2 FIFO : םיכילהתל תופידע ןתונ םייביטקארטניא ךומנ המכ עבוק  2 n n Base-priority תדרל רשפא  RR 37

  38. םוכיס . הצרש תינכות לכ – םיכילהת  . רחא ךילהת ךותמ הציר ןמזב םג הריציל ןתינ ולשמ ןורכיז בחרמ ךילהת לכל .   םיכילהת יתת  רחא ךילהת תת וא בא ךילהת ךותמ הציר ןמזב רצונ תא םיקלוח ויתחתמש םיכילהתה יתת ןורכזה ה תעיבקל םינוש םימתירוגלא ונדמל ןוּנ ְ מִז לכ לש תונורתיה תא וניארו .  . ' ץע ' ו באה ךילהת   . םהמ דחא online algorithm םיכילהת וא . – שארמ טלקה לכ אלל היצזימיטפוא םיכילהת יתת תמרב השענ ןונמזה (  unix .) ( ) תונולח  38

More Related