Multi-tasking Basic
Last updated
Last updated
Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University
ก่อนที่เราจะมาทำความรู้จัก Multi-task และ Multi tread เราต้องรู้จัก Multi processing เสียก่อน เริ่มจากความหมายของ multi processing
Multi processing คือการสั่งให้คอมพิวเตอร์ของเราสามารถประมวลผลสิ่งต่างๆได้พร้อมกันในเวลาเดียวกันเช่นเราสามารถเปิด web browser เล่นวีดีโอพร้อมกับเล่นเกมได้ไปพร้อมๆกัน ซึ่งเราสามารถแบ่งให้ทำงานหลายๆอย่างได้พร้อมกันโดยขึ้นอยู่กับจำนวน core และ จำนวน thread ของ CPU ที่สามารถรับได้
ยิ่งจำนวนของ core เยอะเราก็จะสามารถทำได้หลาย process มากยิ่งขึ้น โดยการทำงานหลาย process จะถูกแบ่งออกเป็นย่อยๆสองอย่างคือ
Multi-task
Multi-thread
ซึ่งทั้งสองอย่างจะมีความคล้ายคลึงกัน แต่จะมีสิ่งที่แตกต่างกันจะอธิบายลงในด้านล่างนี้
Multi task คือการที่เราต้องการจะทำงานหลายๆอย่างพร้อมกัน โดยที่งานเหล่านั้นจะเกี่ยวข้องหรือไม่เกี่ยวกันก็ได้ยกตัวอย่างเช่น เราเปิดคอมพิวเตอร์ของเราขึ้นมา ฟังเพลง เล่นเกม และ อัดวิดีโอไปด้วย จะเห็นได้ว่า ณ ตอนนี้ คอมพิวเตอร์ของเราได้ทำการ Run 3 task ขึ้นมาก็คือ
ฟังเพลง
เล่นเกม
อัดวีดีโอ
แต่ละ task ก็จะแบ่ง memory ใน CPU กันและทำการรันไปพร้อมๆกันทำให้เราทำงานได้หลากหลายขึ้นในเวลาเดียวกัน
Multi thread คือการแบ่งตัวโปรแกรมย่อยเป็นส่วนต่างๆเพื่อแยกกันประมวลผลในเวลาเดียวกันโดยใช้ทรัพยากรที่ได้จากการจัดสรรค์มาจาก CPU ให้ทำใน task นั้นๆ เช่นถ้าเราเล่นเกม FPS เกมหนึ่ง เมื่อเราสั่งคำสั่งให้ยิงด้วยการคลิกเข้าไป CPU เราต้องเริ่มทำการประมวลผลดังนี้
ระบบคำนวณระยะยิง
คำนวณว่ายิงโดนเป้าหมายหรือไม่
คำนวณจำนวณ HP ที่ลดลงไป
แสดงผลกราฟฟิคแสง
เล่นเสียงปืนที่ยิงออกมา
จะเห็นได้ว่าการคลิกครั้งเดียวโปรแกรมจะต้องทำการรันฟังค์ชั่นมากมายในเวลาเดียวกัน ถ้าเราเขียนโปรแกรมแบบ single thread ธรรมดาจะทำให้เกิดความไม่สอดคล้องของภาพและเสียงได้ และยังใช้เวลาในการประมวลผลที่มาก กว่า
จากภาพประกอบจะเห็นได้ว่าเมื่อแบ่งการคำนวณเป็นส่วนย่อยๆแล้วจะทำให้เราสามารถประมวลผลได้แบบขนานกัน ซึ่งก็คือหัวใจหลักของ multi thread เอง
Multi task | Multi thread |
---|---|
จำนวน task ที่ทำได้ขึ้นอยู่กับความสามารถของ CPU | จำนวน thread ที่ขยายได้ขึ้นอยู่กับ CPU ที่กำหนดให้และยิ่ง thread เยอะยิ่งกินไฟเพิ่ม |
เมื่อมีหลาย task, CPU จะสลับกันทำในแต่ละ task | เมื่อมีหลาย thread, CPU จะสลับกันทำในแต่ละ thread เช่นกัน |
ในแต่ละ task จะใช้ memory ของใครของมัน | ในแต่ละ thread จะใช้ memory รวมกัน |
Multi task จะใช้หลักการเดียวกับ multi processing (ทำหลายอย่างพร้อมกัน เพื่อให้ได้หลายผลลัพธ์) | Multi thread จะมีหลักการคล้ายกันกับ Multi processing แต่ไม่ใช่ (เพราะแบ่งทำหลายอย่างเพื่อให้ได้ผลลัพธ์เดียว) |
ลำดับการทำ Multi task. CPU จะเป็นคนเรียงลำดับการทำก่อนหลังให้ | ลำดับการทำ Multi thread. CPU ก็จะเป็นคนเรียงลำดับการทำก่อนหลังให้เช่นกัน |
ความเร็วในการประมวลผลช้ากว่า Multi thread | ความเร็วในการประมวลผลเร็วกว่า Multi task |
การปิด task ที่ไม่อยากใช้งานแล้วใช้เวลานานกว่า | การปิด threadที่ไม่อยากใช้งานแล้วใช้เวลาเร็วกว่า |
มีการแบ่งแยกและป้องกันการใช้ memory ระหว่าง task โดยอัตโนมัติ | ต้องแบ่งแยกการใช้และลำดับการใช้ memory เองในโปรแกรม |
เหมาะสำหรับพัฒนาโปรแกรมให้เร็วขึ้น | เหมาะสำหรับพัฒนา OS ให้เร็วขึ้น |
อ้างอิง :
https://www.geeksforgeeks.org/difference-between-multi-tasking-and-multi-threading/