24
Thread 1 บบบบบ 5 เเเเ Thread

Ch5 Thread

Embed Size (px)

Citation preview

Page 1: Ch5 Thread

Thread 1

บทท�� 5เทรด

Thread

Page 2: Ch5 Thread

Thread 2

หั�วข้อบรรยาย ความหัมายข้องเทรด ความเหัม�อนกั�นระหัว�างโปรเซสและเทรด ความแตกัต�างระหัว�างโปรเซสและเทรด เหัต�ใดจึ งใช้เทรด ระบบปฏิ#บ�ต#กัารและเทรด Kernel-Level Threads User-Level Threads Multithreading Models

Page 3: Ch5 Thread

Thread 3

ความหัมายข้องเทรด เทรด จึะเป%นส�วนประกัอบส�วนหัน &งข้องโปรเซสท'&กั(าล�ง

ท(ากัารประมวลผลอย*� โปรเซสและเทรดม'ความหัมายท'&แตกัต�างกั�น โปรเซสใช้ใน

กัารจึ�ดกัล��มทร�พยากัรต�างๆเข้าดวยกั�น ส�วนเทรดน�-นเป%นเพ'ยงส#&งหัน &งท'&ถู*กัจึ�ดตารางใหัท(ากัารประมวลผลโดยซ'พ'ย*

เทรดเป%นล(าด�บกัารประมวลผลค(าส�&งท'&ม'อย*�ภายในโปรเซส เน�&องจึากัเทรดน�-นม'ค�ณสมบ�ต#บางส�วนข้องโปรเซสอย*�

ดวย จึ งอาจึเร'ยกัไดว�าป%น lightweight process ในโปรเซสหัน &งอาจึประกัอบดวยเทรดจึ(านวนมากัท'&กั(าล�ง

ประมวลผลอย*�

Page 4: Ch5 Thread

Thread 4

ล�กัษณะข้อง Single และ Multithreaded Processes

Page 5: Ch5 Thread

Thread 5

ความหัมายข้องเทรด (ต�อ) เทรดหัร�อ lightweight process หัมายถู ง หัน�วยพ�-น

ฐานข้องกัารท(างานซ'พ'ย* ประกัอบดวย ร'จึสเตอร4 Program counter ร'จึ#สเตอร4อ�&นๆ (Register set) สแตกั

Page 6: Ch5 Thread

Thread 6

ความเหัม�อนกั�นระหัว�างโปรเซสและเทรด โปรเซสและเทรดต�างๆใช้งานซ'พ'ย*ร�วมกั�น โดยม'เทรด

เพ'ยงหัน &งเด'ยวท'&กั(าล�งประมวลผลอย*� โดยเทรดอ�&นๆตองหัย�ดรอ

เทรดต�างๆท'&อย*�ภายในโปรเซสเด'ยวกั�น จึะประมวลผลแบบเร'ยงตามล(าด�บเหัม�อนกั�บโปรเซสต�างๆ

เทรดหัน &งสามารถูสรางเทรดใหัม�ข้ -นมาได เม�&อเทรดหัน &งอย*�ในสถูานะ blocked กั5สามารถูน(าเทรด

อ�&นข้ -นมาประมวลผลแทนได

Page 7: Ch5 Thread

Thread 7

ความแตกัต�างระหัว�างโปรเซสและเทรด เทรดท'&อย*�ในกัล��มเด'ยวกั�น จึะไม�เป%นอ#สระจึากัเทรดอ�&นๆ เทรดท�-งหัมดสามารถูเข้าถู งหัน�วยความจึ(าท�กัส�วนข้อง

task เทรดถู*กัออกัแบบมาใหัสน�บสน�นกัารท(างานซ &งกั�นและกั�น

แต�โปรเซสอาจึสน�บสน�นหัร�อไม�สน�บสน�นกัารท(างานข้องโปรเซสอ�&น

Page 8: Ch5 Thread

Thread 8

เหัต�ใดจึ งใช้เทรด ม'เหัต�ผลหัลายประกัารท'&สน�บสน�นกัารใช้เทรด ด�งน'-

โปรเซสท'&ประกัอบดวยหัลายๆเทรดม'ค�ณสมบ�ต#ท'&เหัมาะสมกั�บกัารท(าหันาท'&เป%นเซ#ร4ฟเวอร4 เช้�น เว5บเซ#ร4ฟเวอร4

เน�&องจึากัเทรดสามารถูใช้งานข้อม*ลร�วมกั�นได จึ งไม�จึ(าเป%นท'&จึะตองใช้ความสามารถูข้องระบบปฏิ#บ�ต#กัารในเร�&องกัารส�&อสารระหัว�างโปรเซส ซ &งกั#นทร�พยากัรมากัและท(างานไดช้า

เทรดม'ค�ณสมบ�ต#พ�-นฐานท'&เหัมาะสมกั�บกัารประมวลผลบนเคร�&องคอมพ#วเตอร4ท'&ม'ซ'พ'ย*หัลายต�ว

Page 9: Ch5 Thread

Thread 9

ระบบปฏิ#บ�ต#กัารและเทรด ระบบปฏิ#บ�ต#กัารท'&สน�บสน�นกัารท(างานแบบเทรด แบ�ง

ออกัเป%น 2 แนวทาง ค�อ Kernel-level thread User-level thread

Page 10: Ch5 Thread

Thread 10

แสดงกัารท(างานข้องระบบปฏิ#บ�ต#กัารท'&สน�บสน�น User thread

Page 11: Ch5 Thread

Thread 11

Kernel-Level Threads หัมายถู ง ระบบปฏิ#บ�ต#กัารท'&สน�บสน�นกัารท(างานข้องเทรด

โดยตรง โปรแกัรมผ*ใช้จึ งสามารถูเร'ยกัใช้เทรดไดง�าย ผ�าน

system call และในท�กัคร�-งท'&ม'กัารสรางเทรดใหัม�ข้ -นมา ระบบปฏิ#บ�ต#กัารกั5จึะสรางเทรดข้องตนเองข้ -นมาสน�บสน�

นกัารท(างานข้องเทรดใหัม�น�-นและข้อม*ลเกั'&ยวกั�บเทรดน�-นท�-งหัมดจึะถู*กัจึ�ดเกั5บไวในตาราง thread table

Page 12: Ch5 Thread

Thread 12

User-Level Threads หัมายถู งระบบคอมพ#วเตอร4ท'&ระบบปฏิ#บ�ต#กัารไม�สน�บสน�น

กัารท(างานข้องเทรดโดยตรง โดยท'&โปรแกัรมข้องผ*ใช้จึะตองเป%นฝ่8ายบร#หัารจึ�ดกัารกัารท(างานข้องเทรดดวยตนเองผ�านทางกัารใช้บร#กัารจึากัฟ9งกั4ช้�นต�างๆในโปรแกัรมอรรถูประโยช้น4แทนท'&จึะเป%นกัารใช้ system call ท'&เกั#ดข้ -นใน kernel-level thread

ท(าใหัไม�เกั#ดอ#นเทอร4ร�พท4เพ�&อเร'ยกัเคอร4แนลข้ -นมาท(างาน

Page 13: Ch5 Thread

Thread 13

แสดงกัารท(างานข้องระบบปฏิ#บ�ต#กัารท'&ไม�สน�บสน�น User thread

Page 14: Ch5 Thread

Thread 14

Multithreading Models Many-to-One

One-to-One

Many-to-Many

Page 15: Ch5 Thread

Thread 15

แบบ Many-to-One Kernel กั�บหัลาย User thread กัารจึ�ดกัาร

threadอย*�ในพ�-นท'&ข้องผ*ใช้ซ &งม'ประส#ทธิ#ภาพ แต�ถูา thread บล5อกั system call จึะท(าใหัโปรเซสถู*กับลอกัไปดวย

Page 16: Ch5 Thread

Thread 16

Many-to-One Model

Page 17: Ch5 Thread

Thread 17

แบบ One-to-One 1 Kernel กั�บ 1 User thread ท(างานไดพรอมกั�นด'

กัว�าแบบแรกั โดยยอมใหั thread อ�&นร�นไดเม�&อ thread บล5อกั system call ตองค(าน งกัารสราง kernel และ user thread ตองส�มพ�นธิ4กั�น กัารสราง kernel thread เป%นประส#ทธิ#ภาพข้องโปรแกัรม

ต�วอย�าง - Windows 95/98/NT/2000- OS/2

Page 18: Ch5 Thread

Thread 18

One-to-one Model

Page 19: Ch5 Thread

Thread 19

แบบ Many-to-Many Model 1. User thread มากักัว�าหัร�อเท�ากั�บ Kernel

thread ได 2. kernel thread กั(าหันดแอปพล#เคช้�น Many-to-One

ยอมใหัผ*พ�ฒนา สราง user thread ไดตามตองกัาร แต�ไม�สามารถูร�นไดพรอมกั�น เน�&องจึากั Kernel จึ�ดเวลาใหัคร�-งละ thread

3. User thread มากัว�าหัร�อเท�ากั�บ Kernel thread กั5ได 4. One-to-One ยอมใหัร�นพรอมกั�นได ผ*พ�ฒนาระว�งอย�า

สราง thread มากัเกั#นไป 5. ลดข้อจึ(ากั�ดข้องโมเดลท�-งสอง

Page 20: Ch5 Thread

Thread 20

แบบ Many-to-Many Model (ต�อ) 6. ผ*พ�ฒนาสราง thread ไดเท�าท'&จึ(าเป%น และส�มพ�นธิ4

กั�บ Kernel 7. สามารถูร�นแบบข้นานในระบบม�ลต#โปรเซสเซอร4 8. เม�&อ thread เกั#ดกัารบล5อกั system call แลว

kernel จึะจึ�ดเวลาเพ�&อน(า thread อ�&นข้ -นมาร�นแทน

Page 21: Ch5 Thread

Thread 21

Many-to-Many Model

Page 22: Ch5 Thread

Thread 22

แบบ Many-to-Many Model (ต�อ) ระบบปฏิ#บ�ต#กัารบางต�วพยายามท'&จึะเช้�&อมต�อช้�องว�างระหัว�าง

ช้น#ดกัารท(างานข้องเทรดในร*ปแบบ Many-to-one กั�บ One – to – one เข้าดวยกั�นโดยน(า User-level threads กั�บ Kernel-level threads มาพ�ฒนารวมกั�น เกั#ดเป%นช้น#ดกัารท(างานข้องเทรดท'&เร'ยกัว�า Many-to –many ข้ -น

หัล�กักัารท(างานค�อจึะ Mapping ต�ว User-level threads หัลายๆต�วเข้ากั�บช้�ดข้อง Kernel-level threads ซ &งในบางคร�-งกั5จึะเร'ยกัเทคน#คน'-ว�า m-to-n thread mapping เน�&องจึากั เทรดข้อง User-level threads และ Kernel-level threads ไม�จึ(าเป%นตองม'จึ(านวนท'&เท�ากั�น

Page 23: Ch5 Thread

Thread 23

แบบ Many-to-Many Model (ต�อ) กัารท(างานข้องเทรดแบบ One-to – One จึะตองใหัระบบปฏิ#บ�ต#

กัารจึ�ดสรรโครงสรางข้อม*ลใหักั�บ Kernel-level threads แต�ละต�ว จึ งท(าใหัปร#มาณข้องหัน�วยความจึ(าท'&ส*ญเส'ยไปกั�บกัารจึ�ดสรรโครงสรางข้อม*ลใหักั�บ Kernel-level threads ท� -งหัมดกัลายเป%นเร�&องส(าค�ญพอๆกั�บเร�&องจึ(านวนข้องเทรดท'&เพ#&มข้ -นในระบบ

ซ &งเร�&องเหัล�าน'-จึะกั�อใหัเกั#ด Overhead ข้ -นกั�บระบบ ด�งน�-นเพ�&อลดป9ญหัาด�งกัล�าวท'&เกั#ดข้ -น กัารท(างานข้องเทรดแบบ Many-to-Many จึ งพ�ฒนาเทคน#คท'&เร'ยกัว�า Thread pooling ข้ -น จึะช้�วยใหัโปรเซสต�างๆสามารถูระบ�จึ(านวนข้อง Kernel-level threads ท'&ตองกัารได ตย.เช้�นร*ปท'& 5 โปรเซส P1 ระบ�กัารใช้งาน Kernel-level threads 3 ต�ว โดย เทรด T1 และ T2 จึะใช้ Kernel-level threads ต�วเด'ยวกั�น ส�วนเทรด T3 กั�บเทรด T4 ใช้ Kernel-level threads แต�ละอ�นแยกักั�นไป

Page 24: Ch5 Thread

Thread 24

แบบ Many-to-Many Model (ต�อ) ข้อจึ(ากั�ดข้องกัารท(างานข้องเทรดแบบ Many-to

Many ค�อ กัารออกัแบบระบบปฏิ#บ�ต#กัารใหัสน�บสน�นช้น#ดกัารท(างานข้องเทรดในล�กัษณะน'-ค�อนข้างย��งยากัซ�บซอน

อ'กัท�-งในป9จึจึ�บ�นกั5ย�ง ไม�ม'กัารกั(าหันดมาตรฐานส(าหัร�บช้น#ดกัารท(างานข้องเทรดในล�กัษณะน'-ข้ -นดวย