Thread ฉบับพรุ่งนี้จะสอบ…

แน่นอนว่าใน CPU ไม่มีด้ายอยู่ข้างในแต่ Thread( เธรด ) ปกติ process ถ้าเราอยากจะให้ทำงานหลายอย่างพร้อมกันเราจำเป็นต้อง fork process เพื่อแบ่งมันออกมาทำงานแยกกัน แต่การ fork มันกินทรัพยากรมากเพราะว่าเราแบ่ง process ออกมาพร้อมกับ memory ต่างๆ จาก parent process จึงทำให้เกิดแนวคิดการสร้างเธรดขึ้น


Thread มายังไง

แต่ก่อนนั้น CPU มี 1 core ทำงานได้ไม่เร็วนักประมาณ 1 GHz ถ้าจะให้เร็วขึ้นก็เพิ่ม clock speed เข้าไปเป็น 2 GHz 3 GHz ก็ว่ากันไป ผลที่ตามมาคือร้อนครับ โลกร้อน CPU ก็ร้อนไหม้ตามกันไปป็นตัว

จึงเกิดแนวคิดที่ว่าถ้าเพิ่ม Core CPU (Multi-Core) มันจะทำงานเร็วขึ้น แต่แนวคิดก็เป็นได้แค่แนวคิดการเพิ่ม Core ถ้าโปรแกรมไม่ได้เขียนมาให้ทำงานได้หลายคอร์ก็จบสุดท้าย process ก็จะทำงานที่คอร์สองคอร์แรกอยู่ดีทั้งนี้ขึ้นอยู่กับสถาปัตยกรรมของ CPU เกิดเรื่องแบบนี้ขึ้นจึงเกิดแนวคิดการแบ่ง process เป็น process ย่อยขึ้นโดยเรียกว่าเธรด ความสามารถของ OS ในการสนับสนุนการประมวลผลแบบหลายเธรดในหนึ่งโพรเซสเรียกว่ามัลติเธรดดิง process ไหนใช้เธรดเพียงเธรดเดียวจะเรียกว่า Heavy weight process โดยมันจะทำคำสั่งเรียงเป็นลำดับต่อกันไป แต่ถ้าใช้หลายเธรดจะเรียกว่า Light weight process โดยจะสามารถประมวลผลคำสั่งหลายชุดได้ในเวลาเดียวกัน

ส่วนประกอบของเธรด

  • Thread ID : หมายเลขเธรดที่อยู่ในโปรเซส
  • Counter : ตัวนับเพื่อเช็คว่าคำสั่งไหนจะทำต่อ
  • Register (รีจีสเตอร์): Memory เก็บตัวแปรที่ทำงานอยู่ในโปรเซส
  • Stack (สแทค): เก็บประวัติการทำงาน

โดยส่วนอื่นของโปรแกรมเช่น Code program ข้อมูลและทรัพยากรอื่นนั้น จะใช้งานร่วมกับเธรดอื่นในโพรเซส

ภาพจากเอกสารประกอบการเรียนวิชา 240–304 OS CoE PSU

จากภาพข้างบนรูป(ก) Process เธรดเดียวจะมีรีจีสเตอร์และสแทค 1 ชุด แต่ถ้าเป็นรูป(ข) Process แบบ 2 เธรดจะมีรีจีสเตอร์และสแทค 2 ชุด แต่ใช้ส่วนของ Code program ข้อมูลและทรัพยากรร่วมกันถ้าหากระบบรองรับการ process แบบ 2 คอร์ ก็จะใช้เธรดเนี้ยเป็นตัวประมวลผล 2 คำสั่งพร้อมกัน ส่วนรูป(ค) แสดงให้เห็นถึง 2 process จะเห็นว่า Code program ข้อมูล ทรัพยกร แยกกันหมดถ้าจะให้ 2 process นี้คุยกันต้องคุยผ่าน interprocess communication


ข้อดีของเธรด

จะเห็นได้ว่าเธรดมีการใช้งานข้อมูลร่วมกับเธรดอื่นๆ ใน process เดียวกัน ทำให้การสร้างเธรดทำงานรวดเร็วและประหยัดการ fork process ใหม่เป็นไหนๆ ข้อดีของการสร้างเธรดหลักๆ คือ

  • Responsiveness มีหลายเธรดจะช่วยกันตอบสนองต่อคำสั่งที่ได้รับมาเช่นถ้ามีเธรดว่างอยู่แล้วมีคำสั่งมาเธรดที่ว่างก็ยังตอบสนองต่อคำสั่งที่จะเข้ามาได้
  • Resource sharing ทุกเธรดภายใน process เดียวกันจะใช้ทรัพยากรต่างๆ ร่วมกัน
  • Economy การสร้าง process ใหม่จะทำให้เสียเวลาและทรัพยากรมากกว่าการสร้างเธรดใหม่
  • การใช้งานสถาปัตยกรรมของระบบมัลติโพรเซสเซอร์ : ใช้สถาปัตยกรรมในปัจจุบันได้อย่างคุ้มค่า

การทำงานของเธรด ภาพจากเอกสารประกอบการเรียนวิชา 240–304 OS

เธรดแบ่งการทำงานเป็น 2 แบบ

  • Sequential : การทำงานแบบตามลำดับ
  • Concurrent : การทำงานแบบพร้อมกัน
ภาพจากเอกสารประกอบการเรียนวิชา 240–304 OS CoE PSU

Like what you read? Give Net a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.