Ch5 Thread
-
Upload
phichya-laemluang -
Category
Documents
-
view
150 -
download
2
Transcript of Ch5 Thread
Thread 1
บทท�� 5เทรด
Thread
Thread 2
หั�วข้อบรรยาย ความหัมายข้องเทรด ความเหัม�อนกั�นระหัว�างโปรเซสและเทรด ความแตกัต�างระหัว�างโปรเซสและเทรด เหัต�ใดจึ งใช้เทรด ระบบปฏิ#บ�ต#กัารและเทรด Kernel-Level Threads User-Level Threads Multithreading Models
Thread 3
ความหัมายข้องเทรด เทรด จึะเป%นส�วนประกัอบส�วนหัน &งข้องโปรเซสท'&กั(าล�ง
ท(ากัารประมวลผลอย*� โปรเซสและเทรดม'ความหัมายท'&แตกัต�างกั�น โปรเซสใช้ใน
กัารจึ�ดกัล��มทร�พยากัรต�างๆเข้าดวยกั�น ส�วนเทรดน�-นเป%นเพ'ยงส#&งหัน &งท'&ถู*กัจึ�ดตารางใหัท(ากัารประมวลผลโดยซ'พ'ย*
เทรดเป%นล(าด�บกัารประมวลผลค(าส�&งท'&ม'อย*�ภายในโปรเซส เน�&องจึากัเทรดน�-นม'ค�ณสมบ�ต#บางส�วนข้องโปรเซสอย*�
ดวย จึ งอาจึเร'ยกัไดว�าป%น lightweight process ในโปรเซสหัน &งอาจึประกัอบดวยเทรดจึ(านวนมากัท'&กั(าล�ง
ประมวลผลอย*�
Thread 4
ล�กัษณะข้อง Single และ Multithreaded Processes
Thread 5
ความหัมายข้องเทรด (ต�อ) เทรดหัร�อ lightweight process หัมายถู ง หัน�วยพ�-น
ฐานข้องกัารท(างานซ'พ'ย* ประกัอบดวย ร'จึสเตอร4 Program counter ร'จึ#สเตอร4อ�&นๆ (Register set) สแตกั
Thread 6
ความเหัม�อนกั�นระหัว�างโปรเซสและเทรด โปรเซสและเทรดต�างๆใช้งานซ'พ'ย*ร�วมกั�น โดยม'เทรด
เพ'ยงหัน &งเด'ยวท'&กั(าล�งประมวลผลอย*� โดยเทรดอ�&นๆตองหัย�ดรอ
เทรดต�างๆท'&อย*�ภายในโปรเซสเด'ยวกั�น จึะประมวลผลแบบเร'ยงตามล(าด�บเหัม�อนกั�บโปรเซสต�างๆ
เทรดหัน &งสามารถูสรางเทรดใหัม�ข้ -นมาได เม�&อเทรดหัน &งอย*�ในสถูานะ blocked กั5สามารถูน(าเทรด
อ�&นข้ -นมาประมวลผลแทนได
Thread 7
ความแตกัต�างระหัว�างโปรเซสและเทรด เทรดท'&อย*�ในกัล��มเด'ยวกั�น จึะไม�เป%นอ#สระจึากัเทรดอ�&นๆ เทรดท�-งหัมดสามารถูเข้าถู งหัน�วยความจึ(าท�กัส�วนข้อง
task เทรดถู*กัออกัแบบมาใหัสน�บสน�นกัารท(างานซ &งกั�นและกั�น
แต�โปรเซสอาจึสน�บสน�นหัร�อไม�สน�บสน�นกัารท(างานข้องโปรเซสอ�&น
Thread 8
เหัต�ใดจึ งใช้เทรด ม'เหัต�ผลหัลายประกัารท'&สน�บสน�นกัารใช้เทรด ด�งน'-
โปรเซสท'&ประกัอบดวยหัลายๆเทรดม'ค�ณสมบ�ต#ท'&เหัมาะสมกั�บกัารท(าหันาท'&เป%นเซ#ร4ฟเวอร4 เช้�น เว5บเซ#ร4ฟเวอร4
เน�&องจึากัเทรดสามารถูใช้งานข้อม*ลร�วมกั�นได จึ งไม�จึ(าเป%นท'&จึะตองใช้ความสามารถูข้องระบบปฏิ#บ�ต#กัารในเร�&องกัารส�&อสารระหัว�างโปรเซส ซ &งกั#นทร�พยากัรมากัและท(างานไดช้า
เทรดม'ค�ณสมบ�ต#พ�-นฐานท'&เหัมาะสมกั�บกัารประมวลผลบนเคร�&องคอมพ#วเตอร4ท'&ม'ซ'พ'ย*หัลายต�ว
Thread 9
ระบบปฏิ#บ�ต#กัารและเทรด ระบบปฏิ#บ�ต#กัารท'&สน�บสน�นกัารท(างานแบบเทรด แบ�ง
ออกัเป%น 2 แนวทาง ค�อ Kernel-level thread User-level thread
Thread 10
แสดงกัารท(างานข้องระบบปฏิ#บ�ต#กัารท'&สน�บสน�น User thread
Thread 11
Kernel-Level Threads หัมายถู ง ระบบปฏิ#บ�ต#กัารท'&สน�บสน�นกัารท(างานข้องเทรด
โดยตรง โปรแกัรมผ*ใช้จึ งสามารถูเร'ยกัใช้เทรดไดง�าย ผ�าน
system call และในท�กัคร�-งท'&ม'กัารสรางเทรดใหัม�ข้ -นมา ระบบปฏิ#บ�ต#กัารกั5จึะสรางเทรดข้องตนเองข้ -นมาสน�บสน�
นกัารท(างานข้องเทรดใหัม�น�-นและข้อม*ลเกั'&ยวกั�บเทรดน�-นท�-งหัมดจึะถู*กัจึ�ดเกั5บไวในตาราง thread table
Thread 12
User-Level Threads หัมายถู งระบบคอมพ#วเตอร4ท'&ระบบปฏิ#บ�ต#กัารไม�สน�บสน�น
กัารท(างานข้องเทรดโดยตรง โดยท'&โปรแกัรมข้องผ*ใช้จึะตองเป%นฝ่8ายบร#หัารจึ�ดกัารกัารท(างานข้องเทรดดวยตนเองผ�านทางกัารใช้บร#กัารจึากัฟ9งกั4ช้�นต�างๆในโปรแกัรมอรรถูประโยช้น4แทนท'&จึะเป%นกัารใช้ system call ท'&เกั#ดข้ -นใน kernel-level thread
ท(าใหัไม�เกั#ดอ#นเทอร4ร�พท4เพ�&อเร'ยกัเคอร4แนลข้ -นมาท(างาน
Thread 13
แสดงกัารท(างานข้องระบบปฏิ#บ�ต#กัารท'&ไม�สน�บสน�น User thread
Thread 14
Multithreading Models Many-to-One
One-to-One
Many-to-Many
Thread 15
แบบ Many-to-One Kernel กั�บหัลาย User thread กัารจึ�ดกัาร
threadอย*�ในพ�-นท'&ข้องผ*ใช้ซ &งม'ประส#ทธิ#ภาพ แต�ถูา thread บล5อกั system call จึะท(าใหัโปรเซสถู*กับลอกัไปดวย
Thread 16
Many-to-One Model
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
Thread 18
One-to-one Model
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. ลดข้อจึ(ากั�ดข้องโมเดลท�-งสอง
Thread 20
แบบ Many-to-Many Model (ต�อ) 6. ผ*พ�ฒนาสราง thread ไดเท�าท'&จึ(าเป%น และส�มพ�นธิ4
กั�บ Kernel 7. สามารถูร�นแบบข้นานในระบบม�ลต#โปรเซสเซอร4 8. เม�&อ thread เกั#ดกัารบล5อกั system call แลว
kernel จึะจึ�ดเวลาเพ�&อน(า thread อ�&นข้ -นมาร�นแทน
Thread 21
Many-to-Many Model
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 ไม�จึ(าเป%นตองม'จึ(านวนท'&เท�ากั�น
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 แต�ละอ�นแยกักั�นไป
Thread 24
แบบ Many-to-Many Model (ต�อ) ข้อจึ(ากั�ดข้องกัารท(างานข้องเทรดแบบ Many-to
Many ค�อ กัารออกัแบบระบบปฏิ#บ�ต#กัารใหัสน�บสน�นช้น#ดกัารท(างานข้องเทรดในล�กัษณะน'-ค�อนข้างย��งยากัซ�บซอน
อ'กัท�-งในป9จึจึ�บ�นกั5ย�ง ไม�ม'กัารกั(าหันดมาตรฐานส(าหัร�บช้น#ดกัารท(างานข้องเทรดในล�กัษณะน'-ข้ -นดวย