Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

作業系統基本觀念複習

13.934 visualizaciones

Publicado el

基本作業系統觀念

Publicado en: Tecnología
  • Sé el primero en comentar

作業系統基本觀念複習

  1. 1. 作業系統基本觀念複習 Process & Thread Yiling Lai 2011/8/24 1
  2. 2. •恐龍書 Operating System Concepts Silberschatz, Galvin, Gagne 2
  3. 3. 什麼是Process? •A program in execution. 執行中的程式 3
  4. 4. 什麼是Process? •A program in execution. 執行中的程式 3
  5. 5. 什麼是Process? •A program in execution. 執行中的程式 3
  6. 6. 什麼是Process? •A program in execution. 執行中的程式 3 Text Section Data Section Heap Stack Program counter
  7. 7. 什麼是Process? •A program in execution. 執行中的程式 3 Text Section Data Section Heap Stack Program counter Registers
  8. 8. Process的一生 (STD) New 4 Job Queue
  9. 9. Process的一生 (STD) New Ready Load到memory裡, 準備搶CPU控制權 4 Ready Queue Job Queue
  10. 10. Process的一生 (STD) New Ready Load到memory裡, 準備搶CPU控制權 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  11. 11. Process的一生 (STD) New Ready Running Load到memory裡, 準備搶CPU控制權 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  12. 12. Process的一生 (STD) New Ready Running Wait (Block) Wait for I/O complete or resources available Load到memory裡, 準備搶CPU控制權 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  13. 13. Process的一生 (STD) New Ready Running Wait (Block) Wait for I/O complete or resources available Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  14. 14. Process的一生 (STD) New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  15. 15. Process的一生 (STD) New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  16. 16. Process的一生 (STD) New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available Load到memory裡, 準備搶CPU控制權 CPU被搶走了 我等著你回來~~ (好無聊啊!!) 搶到CPU了 4 Ready Queue PCB Process ID Process State PC CPU Registers …. Job Queue
  17. 17. 多找幾個行程來填 補我的空虛與寂寞!! (Concurrent Processing) 5
  18. 18. 多找幾個行程來填 補我的空虛與寂寞!! (Concurrent Processing) 你這個詐騙集 團!! 我才是真的 平行化好嘛! 5
  19. 19. Parallel Processing 多找幾個行程來填 補我的空虛與寂寞!! (Concurrent Processing) 你這個詐騙集 團!! 我才是真的 平行化好嘛! P0 P1 P2 5
  20. 20. Parallel Processing Concurrnt Processing P0 P1 P2 多找幾個行程來填 補我的空虛與寂寞!! (Concurrent Processing) 你這個詐騙集 團!! 我才是真的 平行化好嘛! P0 P1 P2 5
  21. 21. Parallel Processing Concurrnt Processing P0 P1 P2 大家輪流使用CPU,但是怎麼輪?? 多找幾個行程來填 補我的空虛與寂寞!! (Concurrent Processing) 你這個詐騙集 團!! 我才是真的 平行化好嘛! P0 P1 P2 5
  22. 22. 6
  23. 23. 6
  24. 24. 6
  25. 25. 我就知道沒有 我果然不行, 交給我吧!! 6
  26. 26. 7
  27. 27. 1.CPU的使用率(Utilization)要最大 2.工作產能(Throughput)要高 3.Process等待的時間要短 4.完成時間(Turnaround time)要短 5.資源利用率也要大 6.要公平 7.… 7
  28. 28. 1.CPU的使用率(Utilization)要最大 2.工作產能(Throughput)要高 3.Process等待的時間要短 4.完成時間(Turnaround time)要短 5.資源利用率也要大 6.要公平 7.… •FIFO: First come first out •SJF: Shortest Job First •SRJF: Shortest Remaining Time Job First •Priority Scheduling •RR: Round Robin •….. 7
  29. 29. 1.CPU的使用率(Utilization)要最大 2.工作產能(Throughput)要高 3.Process等待的時間要短 4.完成時間(Turnaround time)要短 5.資源利用率也要大 6.要公平 7.… •FIFO: First come first out •SJF: Shortest Job First •SRJF: Shortest Remaining Time Job First •Priority Scheduling •RR: Round Robin •….. 7 Scheduling Algorithm
  30. 30. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  31. 31. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 P0 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  32. 32. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 P1 P0 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  33. 33. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  34. 34. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  35. 35. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  36. 36. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+ 14+19)/3 = 11 P2 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  37. 37. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  38. 38. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P0 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  39. 39. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+2+7)/3 = 3 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P0 2 5 14 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  40. 40. FIFO: 誰先來誰先做 SJF: 你要3個小時?我只要3分鐘,先給我用一下吧~ (SJF: shortest time job first) Process CPU Time P0 14 P1 5 P2 2 平均等待時間 = (0+2+7)/3 = 3 平均等待時間 = (0+ 14+19)/3 = 11 P2 P1 P0 2 5 14 P2 P1 P0 2 5 14 1.CPU的使用率要最大 2.工作產能要高 3.Process等待的時間要短 4.完成時間要短 5.資源利用率也要大 6.要公平 FIFO: SJF: 8
  41. 41. Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  42. 42. P2 P1 Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  43. 43. P2 P1 P3 Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  44. 44. P3 P2 P1 P2 P1 P3 Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  45. 45. P3 P2 P1 P2 P1 P3 P4 Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  46. 46. P3 P2 P1 P2 P1 P3 P4 PN …. Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  47. 47. P3 P2 P1 P2 P1 P3 P4 PN …. P4 P2 P1 …. PN Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 9
  48. 48. P3 P2 P1 P2 P1 P3 P4 PN …. P4 P2 P1 …. PN Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 喂…那 我咧… P0 9
  49. 49. P3 P2 P1 P2 P1 P3 P4 PN …. P4 P2 P1 …. PN Process CPU Time P0 14 P1 5 P2 2 P2 P1 P0 喂…那 我咧… P0 Starvation 飢餓:Process因為長 期無法取得完工所需的全部資 源,以致形成indefinite blocking 之現象。 解法:Aging Tech等… 9
  50. 50. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P0 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  51. 51. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P0 P1 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  52. 52. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P0 P1 P0 P1 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  53. 53. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  54. 54. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 P0 P1 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  55. 55. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 P0 P1 P3 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  56. 56. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 P0 P1 P3 P0 P1 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  57. 57. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 P0 P1 P3 P0 P1 P2 P0 P3 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  58. 58. SRJF: Shortest Remaining Time Job First •可插隊的。 Process Arrival Time CPU Time P0 0 6 P1 1 4 P2 2 7 P3 3 3 P2 P0 P1 P0 P1 P0 P1 P3 P0 P1 P2 P0 P3 P0 P1 P3 P0 P2 T0 T1 T2 T3 10 T1 T2 T3 T5 T20
  59. 59. New Ready Running Terminate Wait (Block) Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 Registers 11 PCB Process ID ReProcess State PC CPU gisters ….
  60. 60. New Ready Running Terminate Wait (Block) Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 Registers 11 PCB Process ID ReProcess State PC CPU gisters ….
  61. 61. New Ready Running Terminate Wait (Block) Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 Registers 11 PCB Process ID ReProcess State PC CPU gisters ….
  62. 62. New Ready Running Terminate Wait (Block) Load到memory裡, 準備搶CPU控制權 CPU被搶走了 搶到CPU了 Registers Context Switching:若CPU將執行中的Process切換 給其他Process使用時,必須保存目前執行中 Process的狀態,並載入欲執行Process的狀態資訊。 11 PCB Process ID ReProcess State PC CPU gisters ….
  63. 63. 問題是搬家是需要成本的… P0 P1 P2 12
  64. 64. 問題是搬家是需要成本的… P0 P1 P2 太多Process並行效 能反而不如預期… 12
  65. 65. 問題是搬家是需要成本的… P0 P1 P2 太多Process並行效 能反而不如預期… 解法1:提供多套Registers Registers 12
  66. 66. 問題是搬家是需要成本的… P0 P1 P2 太多Process並行效 能反而不如預期… 解法1:提供多套Registers Registers 12
  67. 67. 問題是搬家是需要成本的… P0 P1 P2 太多Process並行效 能反而不如預期… 解法1:提供多套Registers Registers 解法2:改用Thread~ Thread: Light weight process. 是 CPU分配資源的最小單位,而同 一個Process內的threads共享 code section, data section, 跟一 些OS資源 12
  68. 68. 問題是搬家是需要成本的… P0 P1 P2 太多Process並行效 能反而不如預期… 解法1:提供多套Registers Registers 解法2:改用Thread~ Thread: Light weight process. 是 CPU分配資源的最小單位,而同 一個Process內的threads共享 code section, data section, 跟一 些OS資源 12
  69. 69. 建立Thread也是有成本的 → 用空間換取時間~~ 13
  70. 70. 建立Thread也是有成本的 → 用空間換取時間~~ Thread Pool: 在Process建立之初,預先 建立多條threads置於thread pool中,當 需要使用時,就從thread pool中取出使 用,用完再還給thread pool。 13
  71. 71. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮
  72. 72. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能
  73. 73. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 排程問 題
  74. 74. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 排程問 題
  75. 75. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 排程問 題 Context Switching
  76. 76. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads 排程問 題 Context Switching
  77. 77. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads 排程問 題 Context Switching 建立 Thread的 成本
  78. 78. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程問 題 Context Switching 建立 Thread的 成本 …
  79. 79. 到目前為止… 14 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程問 題 Context Switching 建立 Thread的 成本 ?? …
  80. 80. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時…
  81. 81. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時… Process提出 Request
  82. 82. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時… Process提出 Request 資源是 否足夠
  83. 83. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時… Process提出 Request 資源是 否足夠 Yes Process使 用資源 使用完畢, 釋放
  84. 84. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時… Process提出 Request 資源是 否足夠 Yes Process使 用資源 使用完畢, 釋放 No Process等 待…
  85. 85. Multi-Processing / Multi-Threading (1) 15 •系統的資源通常是有限的 –CPU週期、記憶體空間、檔案、I/O Device… 當Process需要資源時… Process提出 Request 資源是 否足夠 Yes Process使 用資源 使用完畢, 釋放 No Process等 待…
  86. 86. 16 New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  87. 87. 16 Thread 1 R1 used New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  88. 88. 16 Thread 1 R1 used Thread 2 R2 used New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  89. 89. 16 Thread 1 R1 used Thread 2 R2 used Wait New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  90. 90. 16 Thread 1 R1 used Thread 2 R2 used Wait Wait New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  91. 91. Deadlock: 系統中存在一組 Processes,彼此形成 circular waiting的情況,使 得Processes皆無法繼續往 下執行,導致CPU利用度 及產能急速下降。 16 Thread 1 R1 used Thread 2 R2 used Wait Wait New Ready Running Terminate Wait (Block) Wait for I/O complete or resources available
  92. 92. Deadlock 處理策略 17 T1 R1 used T2 R2 used Wait Wait
  93. 93. Deadlock 處理策略 17 •Deadlock形成的必要條件: •資源的Mutual Exclusion •Hold & Wait •No Preemptive •Circular waiting T1 R1 used T2 R2 used Wait Wait
  94. 94. Deadlock 處理策略 •處理策略: –Deadlock Prevention –Deadlock Avoidance –Deadlock Detection & Recovery 17 •Deadlock形成的必要條件: •資源的Mutual Exclusion •Hold & Wait •No Preemptive •Circular waiting T1 R1 used T2 R2 used Wait Wait
  95. 95. Deadlock 處理策略 •處理策略: –Deadlock Prevention –Deadlock Avoidance –Deadlock Detection & Recovery 17 •Deadlock形成的必要條件: •資源的Mutual Exclusion •Hold & Wait •No Preemptive •Circular waiting T1 R1 used T2 R2 used Wait Wait 預防勝於治療
  96. 96. Deadlock 處理策略 •處理策略: –Deadlock Prevention –Deadlock Avoidance –Deadlock Detection & Recovery 17 •Deadlock形成的必要條件: •資源的Mutual Exclusion •Hold & Wait •No Preemptive •Circular waiting T1 R1 used T2 R2 used Wait Wait 預防勝於治療 見到棺材才掉淚
  97. 97. Multi-Processing / Multi-Threading (2) •Communication –Shared Memory –Message Passing 18 Thread 1 data Thread 2 Memory / … Process 1 Process 2 Send Msg Process 1 Process 2
  98. 98. Producer & Consumer 19
  99. 99. Producer & Consumer 19 Bounded buffer Producer/Consumer Problem: (1) 當Buffer滿時,則Producer必須等待。 (2) 當Buffer空時,則Consumer必須等待。
  100. 100. Producer & Consumer 19 Bounded buffer Producer/Consumer Problem: (1) 當Buffer滿時,則Producer必須等待。 (2) 當Buffer空時,則Consumer必須等待。 → 採用一個共用變數count來記錄buffer裡item 的個數
  101. 101. Producer: 生產一個item; while(count==size) do no-op; buffer[in] = item; in = (in+1) % size; count = count+1; 20 Consumer: while(count==0) do no-op; item = buffer[out]; out = (out+1) mod size; count = count-1;
  102. 102. Producer: 生產一個item; while(count==size) do no-op; buffer[in] = item; in = (in+1) % size; count = count+1; 20 Consumer: while(count==0) do no-op; item = buffer[out]; out = (out+1) mod size; count = count-1; 1.Producer跟 Consumer 是concurrent的 2.共享count變數
  103. 103. Producer: 生產一個item; while(count==size) do no-op; buffer[in] = item; in = (in+1) % size; count = count+1; 20 Consumer: while(count==0) do no-op; item = buffer[out]; out = (out+1) mod size; count = count-1; Registers 1.Producer跟 Consumer 是concurrent的 2.共享count變數
  104. 104. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 Register1 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Not Atomic!!
  105. 105. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Not Atomic!!
  106. 106. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Not Atomic!!
  107. 107. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Not Atomic!!
  108. 108. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 5 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Not Atomic!!
  109. 109. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 5 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) 4 Not Atomic!!
  110. 110. 21 Registers Producer (Thread1) count = count+1; Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(3) Consumer (Thread2) count = count-1; Register2 = count …(4) Register2 = Register2 – 1 …(5) count = Register2 …(6) count 4 Register2 4 Register1 5 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) 4 Not Atomic!!
  111. 111. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) Not Atomic!!
  112. 112. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 Not Atomic!!
  113. 113. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 5 Not Atomic!!
  114. 114. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 5 4 Not Atomic!!
  115. 115. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 5 4 3 Not Atomic!!
  116. 116. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 5 4 3 Not Atomic!!
  117. 117. 21 Registers Producer (Thread1) count = count+1; Consumer (Thread2) count = count-1; count 4 Register2 4 Register1 5 5 1.Producer跟 Consumer 是concurrent的 2.共享count變數 3.CPU可被搶奪的 (e.g. SRJF) Register1 = count …(1) Register1 = Register1 + 1 …(2) count = Register1 …(5) Register2 = count …(3) Register2 = Register2 – 1 …(4) count = Register2 …(6) 4 5 4 3 3 Not Atomic!!
  118. 118. Race Condition •在Share Memory溝通方式下, 共享變數的值會因為 Processes執行的順序不同而 有所不同。 22 Producer count = count+1; Consumer: count = count-1;
  119. 119. Race Condition •在Share Memory溝通方式下, 共享變數的值會因為 Processes執行的順序不同而 有所不同。 22 Producer count = count+1; Consumer: count = count-1; 保證同一時間只有一個 Process在存取共享變數
  120. 120. Critical Section 23 Repeat … C.S. … Until false Entry section Exit section
  121. 121. Critical Section 23 •Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 Repeat … C.S. … Until false Entry section Exit section
  122. 122. Critical Section 23 •Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 •Progress –不想進入C.S.的Process不能阻礙其 他process進入 –在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. Repeat … C.S. … Until false Entry section Exit section
  123. 123. Critical Section 23 •Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 •Progress –不想進入C.S.的Process不能阻礙其 他process進入 –在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. •Bounded Waiting: Process從提出 申請要進入C.S.到其獲准進入C.S. 的這段時間是有限的 Repeat … C.S. … Until false Entry section Exit section
  124. 124. Critical Section 23 •Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 •Progress –不想進入C.S.的Process不能阻礙其 他process進入 –在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. •Bounded Waiting: Process從提出 申請要進入C.S.到其獲准進入C.S. 的這段時間是有限的 No Deadlock Repeat … C.S. … Until false Entry section Exit section
  125. 125. Critical Section 23 •Mutual Exclusion: 在任何時間點 最多允許一個process在其C.S.內 活動 •Progress –不想進入C.S.的Process不能阻礙其 他process進入 –在有限的時間內必須從想進入C.S. 的processes中決定出一個Process進 入C.S. •Bounded Waiting: Process從提出 申請要進入C.S.到其獲准進入C.S. 的這段時間是有限的 No Deadlock No Starvation Repeat … C.S. … Until false Entry section Exit section
  126. 126. C.S. Design – design entry/exit section •Software Solution •Hardware Solution •Semaphore •Monitor •Critical Region •… 24 Repeat … C.S. … Until false Entry section Exit section
  127. 127. Multi-Processing / Multi-Threading (3) •同步問題 25 P1 P2 … … A B … … 如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做?
  128. 128. Multi-Processing / Multi-Threading (3) •同步問題 25 P1 P2 … … A B … … 如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做? Wait(s){ while(s<=0) do no-op; s = s – 1; } Signal(s){ s++; }
  129. 129. Multi-Processing / Multi-Threading (3) •同步問題 25 P1 P2 … … A B … … 如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做? Wait(s){ while(s<=0) do no-op; s = s – 1; } Signal(s){ s++; } P1 P2 … … A B … … Signal(s) wait(s)
  130. 130. Multi-Processing / Multi-Threading (3) •同步問題 25 P1 P2 … … A B … … 如果我們希望A敘述 一定要在B敘述之前 執行,怎麼做? Wait(s){ while(s<=0) do no-op; s = s – 1; } Signal(s){ s++; } P1 P2 … … A B … … Signal(s) wait(s)
  131. 131. Synchronization •著名的同步問題 –Dining philosophers problem –Producer-consumer problem –Readers-writers problem –Sleeping barber problem •解法: –Semaphore –Monitor –Critical Region 26
  132. 132. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本
  133. 133. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通
  134. 134. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 Deadlock
  135. 135. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery
  136. 136. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 共 享 記 憶 體 訊 息 傳 遞 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery …
  137. 137. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 共 享 記 憶 體 訊 息 傳 遞 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery … Race Condition
  138. 138. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 共 享 記 憶 體 訊 息 傳 遞 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery … Race Condition 同步問 題
  139. 139. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 共 享 記 憶 體 訊 息 傳 遞 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery … Race Condition Critical Section 同步問 題
  140. 140. 27 單 一 行 程 若 進 入IO,CPU效 能 則 無 法 發 揮 多 行 程 並 行 , 提 升 了CPU效 能 OS運 用 排 程 演 算 法 協 助 排 程 改 用 輕 量 級 行 程 threads Thread Pool 排程 問題 Context Switching 建立 Thread 的成本 溝通 共 享 記 憶 體 訊 息 傳 遞 Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection & Recovery … Race Condition Critical Section Software Sol. Hardware Sol. Semaphore Monitor Critical Region … 同步問 題
  141. 141. 補充 28
  142. 142. 補充 28

×