Please enable JavaScript.
Coggle requires JavaScript to display documents.
บทที่ 4 การจัดการเธรด - Coggle Diagram
บทที่ 4 การจัดการเธรด
บทที่ 4 การจัดการเธรด
-
-
-
-
-
ตัวอย่างการใช้เธรด
โปรแกรมเว็บบราวเซอร์ที่มีเธรดหนึ่งในการแสดงรูปภาพหรือเขียนข้อความในขณะที่อีกเธรดหนึ่งกำลังดึงข้อมูลจากเน็ตเวิร์ค
ในโปรแกรมเวิร์คโพรเซสที่มีหลายเธรด โดยที่เธรดหนึ่งกำลังแสดงภาพกราฟฟิก เธรดที่สองกำลังรอรับคำสั่งจากคีย์บอร์ดจากผู้ใช้ ในขณะที่เธรดที่สามกำลังตรวจสอบคำสะกดและไวยกรณ์ในลักษณะทำงานอยู๋เบื้องหลัง
รูปแบบของเธรด
รูปแบบ One-to-One
เป็นรูปแบบที่แต่ละเธรดสำหรับผู้ใช้ จะจับคู่กับเธรดสำหรับระบบปฏิบัติการในลักษณะ 1 ต่อ 1 ทำให้ทำวงานพร้อมกันดีกว่าแบบ Many-to-Many โดยยอมให้เธรดอื่นรันได้เมื่อเธรดถูกบล็อก System call นอกจากนี้โมเดลยังยอมให้หลายๆเธรดทำงานแบบขนานกันได้ในมิลติโพรเซส
ข้อที่ต้องคำนึง
การสร้างเธรดสำหรับผู้ใช้จำเป็นต้องสร้างเธรดสำหรับระบบปฏิบัติการสัมพันธ์กัน เนื่องจากการสร้างเธรดสำหรับระบบปฏิบัติการเป็นส่วนสำคัญในการเพิ่มประสิทธิภาพของแอปพลิเคชั่น
รูปแบบ Many-to-Many
เป็นรูปแบบที่อาจจะมีจำนวนเธรดสำหรับผู้ใช้มากกว่าหรือเท่ากับจำนวนเธรดสำหรับเธรดระบบปฏิบัติการก็เป็นได้ จำนวนเธรดอาจจะเป็นตัวกำหนดแอปพลิเคชั่นเฉพาะเครื่องหรือเครื่องเฉพาะ ยอมให้ผู้พัฒนาสร้างเธรดสำหรับผู้ใช้ได้ตามที่เขาต้องการ แต่ไม่สามารถทำงานได้พร้อมกัน เนื่องจาก Kernel จะจัดเวลาให้ครั้งละเธรดเท่านั้น
ผู้พัฒนาสามารถสร้างเธรดสำหรับผู้ใช้เท่าที่จำเป็น และสัมพันธ์กับเธรดสำหรับระบบปฏิบัติการที่สามารถรับแบบมัลติโพรเซส นอกจากนั้นเมื่อเธรดเกิดการบล็อก System call แล้ว Kernel จะจัดเวลาเพื่อนำไปเธรดอื่นขึ้นมารันก่อนได้
รูปแบบ Many-to-One
เป็นรูปแบบที่ใช้เธรดสำหรับระบบปฏิบัติการ 1 หน่วย กับเธรดสำหรับผู้ใช้ 1 หน่วย การจัดการของเธรดจะอยู่ในพื้นที่ของผู้ใช้ซึ้งมีประสิทธิภาพ แต่ถ้าเธรดบล็อก System call โพรเซสทั้งหมดจะถูกบล็อกไปด้วยเนื่องจากมีเพียงเธรดเดียวเท่านั้นที่เข้าถึง Kernel ในเวลาหนึ่งๆเธรดหลายๆเธรดไม่สามารถรันขนานกันในระบบมัลติโฑรเซสได้
เธรด
หน่วยการทำงานย่อยที่อยู่ในโพรเซสที่มีการแบ่งปันทรัพยากรต่างๆในโพรเซสนั้นๆ โพรเซสที่มีเพียง 1 เธรดจะถูกเรียกว่า Single thread หรือเรียกอีกอย่างว่า Heavy Weight Process จะบบในระบบปฏิบัติการรุ่นเก่า แต่ถ้ามีหลายเธรดจะเรียกว่า Light Weight Process(LWP) หรือ Multithread จะพบในระบบปฏิบัติการรุ่นใหม่
เป็นหน่วยพื้นฐานของการจัดสรรการใช้ประโยชน์ของซีพียู ภายในโพรเซสจะประกอบไปด้วย เธรดจะมีการแชร์โค้ด ข้อมูล และทรัพยากร เช่น ไฟล์ เป็นต้น
-
-
คลังข้อมูลการจัดการเธรด
-
Thread Library
-
Java
เป็นรูปแบบแรกของการประมวลผลโปรแกรมในโปรแกรมจาวา และภาษาจาวาเป็นข้อกำหนดลักษณะของกลุ่มสมาชิกขนาดใหญ่ในการสร้างและจัดการเกี่ยวกับเธรด
วิธีในการสร้างเธรดในจาวา
-
สามารถควบคุมได้หลายผู้ใช้ซึ่งเป็นวิธีการกำหนดขอบเขตของคลาสที่เป็นตัวทำงานอยู่ ซึ่งตัวที่ทำงานนั้นเราจะใช้เป็นตัวที่เราคิดตาม เมื่อคลาสทำงานคลาสจะเป็นตัวกำหนดเมธอด run() โค้ดที่ใช้ในเมธอด run() เป็นอะไรที่ทำการแบ่งเมธอด
Pthreads
เป็นตัวพื้นฐานของ POSIX เรียกได้ว่าเป็น API สำหรับสร้างเธรดและสิ่งที่เกิดขึ้นในเวลาเดียวกัน เป็นตัวบ่งบอกถึงพฤติกรรมของเธรดโดยไม่ใช้เครื่องมือ การออกแบบระบบปฏิบัติการมันจะใช้เครื่องมือในงานที่ต้องการ
เธรดสองเส้นสามารถใช้ข้อมูลร่วมกันได้ทั้งหมด ทุกโปรแกรมของ Pthreads นั้นจะถูกรวบรวมไว้ในส่วนของเฮดเดอร์ไฟล์ ส่วนของ Pthreads จะรองรับเกี่ยวกับการจำแนกของการสร้างเธรด แต่ละเธรดงานสามารถที่จะกำหนดขนาดของ Attribute และตารางการใช้ข้อมูล