อีกจุดสำคัญที่ทำให้กระบวนการและเธรดแตกต่างคือกระบวนการแยกกันขณะที่เธรดใช้หน่วยความจำหรือทรัพยากรร่วมกัน
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | กระบวนการ | ด้าย |
---|---|---|
ขั้นพื้นฐาน | โปรแกรมกำลังทำงาน | กระบวนการที่มีน้ำหนักเบาหรือเป็นส่วนหนึ่งของมัน |
แบ่งปันหน่วยความจำ | แยกอย่างสมบูรณ์และไม่แชร์หน่วยความจำ | แบ่งปันหน่วยความจำซึ่งกันและกัน |
การใช้ทรัพยากร | มากกว่า | น้อยกว่า |
อย่างมีประสิทธิภาพ | มีประสิทธิภาพน้อยกว่าเมื่อเปรียบเทียบกับกระบวนการในบริบทของการสื่อสาร | ช่วยเพิ่มประสิทธิภาพในบริบทของการสื่อสาร |
เวลาที่ใช้ในการสร้าง | มากกว่า | น้อยกว่า |
เวลาเปลี่ยนบริบท | ใช้เวลามากขึ้น | ใช้เวลาน้อยลง |
การสิ้นสุดที่ไม่แน่นอน | ส่งผลให้สูญเสียกระบวนการ | สามารถเรียกคืนเธรด |
เวลาที่จำเป็นสำหรับการยกเลิก | มากกว่า | น้อยกว่า |
ความหมายของกระบวนการ
กระบวนการคือการดำเนินการของโปรแกรมและดำเนินการการกระทำที่เกี่ยวข้องที่ระบุไว้ในโปรแกรมหรือเป็นหน่วยดำเนินการที่โปรแกรมทำงาน ระบบปฏิบัติการสร้างกำหนดเวลาและยุติกระบวนการสำหรับการใช้งาน CPU กระบวนการอื่นที่สร้างโดยกระบวนการหลักเรียกว่ากระบวนการย่อย
การดำเนินการกระบวนการจะถูกควบคุมด้วยความช่วยเหลือของ PCB (การควบคุมกระบวนการบล็อก) ถือได้ว่าเป็นสมองของกระบวนการซึ่งมีข้อมูลที่สำคัญทั้งหมดที่เกี่ยวข้องกับกระบวนการเช่น id กระบวนการลำดับความสำคัญของรัฐ PWS และเนื้อหาลงทะเบียน CPU .
PCB ยังเป็นโครงสร้างข้อมูลที่ใช้เคอร์เนลซึ่งใช้ฟังก์ชั่นสามชนิดคือการตั้งเวลาการส่งและการบันทึกบริบท
- การกำหนดตารางเวลา - เป็นวิธีการเลือกลำดับของกระบวนการในคำง่าย ๆ เลือกกระบวนการที่ต้องดำเนินการก่อนในซีพียู
- Dispatching - มันตั้งค่าสภาพแวดล้อมสำหรับกระบวนการที่จะดำเนินการ
- การบันทึกบริบท - ฟังก์ชั่นนี้บันทึกข้อมูลเกี่ยวกับกระบวนการเมื่อถูกเรียกคืนหรือถูกบล็อก
มีบางสถานะที่รวมอยู่ในวงจรชีวิตของกระบวนการเช่นพร้อมใช้งานถูกบล็อกและยกเลิก สถานะกระบวนการใช้สำหรับติดตามกิจกรรมกระบวนการในทันที
จากมุมมองของโปรแกรมเมอร์กระบวนการเป็นสื่อกลางเพื่อให้เกิดการทำงานพร้อมกันของโปรแกรม กระบวนการหลักของโปรแกรมที่เกิดขึ้นพร้อมกันจะสร้างกระบวนการลูก กระบวนการหลักและกระบวนการเด็กจำเป็นต้องมีปฏิสัมพันธ์กับแต่ละคนเพื่อให้บรรลุเป้าหมายร่วมกัน
การดำเนินการแบบสอดแทรกของกระบวนการช่วยเพิ่มความเร็วในการคำนวณเมื่อการดำเนินการ i / o ในกระบวนการหนึ่งทับซ้อนกับกิจกรรมการคำนวณในกระบวนการอื่น
คุณสมบัติของกระบวนการ:
- การสร้างแต่ละกระบวนการรวมถึงการเรียกระบบสำหรับแต่ละกระบวนการแยกจากกัน
- กระบวนการเป็นเอนทิตีที่ดำเนินการแยกและไม่เปิดเผยข้อมูลและข้อมูล
- กระบวนการใช้กลไก IPC (การสื่อสารระหว่างกระบวนการ) สำหรับการสื่อสารซึ่งเพิ่มจำนวนการเรียกระบบอย่างมีนัยสำคัญ
- การจัดการกระบวนการใช้การเรียกระบบมากขึ้น
- แต่ละกระบวนการมีหน่วยความจำสแต็คและฮีปคำสั่งข้อมูลและแผนผังหน่วยความจำของตัวเอง
ความหมายของเธรด
เธรดคือการทำงานของโปรแกรมที่ใช้ทรัพยากรกระบวนการเพื่อให้งานสำเร็จ เธรดทั้งหมดภายในโปรแกรมเดียวนั้นมีอยู่อย่างมีเหตุผลภายในกระบวนการ เคอร์เนลจัดสรรสแต็กและบล็อกการควบคุมเธรด (TCB) ให้กับแต่ละเธรด ระบบปฏิบัติการจะบันทึกเฉพาะตัวชี้สแต็กและสถานะของ CPU ในเวลาที่สลับระหว่างเธรดของกระบวนการเดียวกัน
หัวข้อจะดำเนินการในสามวิธีที่แตกต่างกัน เหล่านี้คือเธรดระดับเคอร์เนล, เธรดระดับผู้ใช้, เธรดไฮบริด เธรดสามารถมีสถานะการทำงานสามสถานะพร้อมและบล็อก มันรวมถึงสถานะการคำนวณเท่านั้นไม่ใช่การจัดสรรทรัพยากรและสถานะการสื่อสารซึ่งช่วยลดค่าใช้จ่ายในการสลับ มันช่วยเพิ่มการทำงานพร้อมกัน (ขนาน) ดังนั้นความเร็วยังเพิ่มขึ้น
มัลติเธรดยังมาพร้อมกับ demerits หลายเธรดไม่ได้สร้างความซับซ้อน แต่การโต้ตอบระหว่างพวกเขาทำ
เธรดต้องมีคุณสมบัติลำดับความสำคัญเมื่อมีหลายเธรดที่แอ็คทีฟ เวลาที่ได้รับสำหรับการดำเนินการที่เกี่ยวข้องกับเธรดที่แอ็คทีฟอื่น ๆ ในกระบวนการเดียวกันถูกระบุโดยระดับความสำคัญของเธรด
คุณสมบัติของเธรด:
- การเรียกใช้ระบบเดียวเท่านั้นสามารถสร้างเธรดได้มากกว่าหนึ่งเธรด (กระบวนการแบบ Lightweight)
- หัวข้อแบ่งปันข้อมูลและข้อมูล
- เธรดใช้คำสั่งแบ่งปันพื้นที่โกลบอลและฮีป แต่มีสแต็กและรีจิสเตอร์ของตนเอง
- การจัดการเธรดใช้การเรียกใช้ระบบน้อยหรือน้อยลงเนื่องจากการสื่อสารระหว่างเธรดสามารถทำได้โดยใช้หน่วยความจำแบบแบ่งใช้
- คุณสมบัติการแยกของกระบวนการเพิ่มค่าใช้จ่ายในแง่ของการใช้ทรัพยากร
ความแตกต่างที่สำคัญระหว่างกระบวนการและเธรด
- เธรดทั้งหมดของโปรแกรมนั้นมีอยู่อย่างมีเหตุผลภายในกระบวนการ
- กระบวนการมีน้ำหนักมาก แต่เธรดนั้นมีน้ำหนักเบา
- โปรแกรมเป็นหน่วยการดำเนินการแบบแยกส่วนในขณะที่เธรดไม่ได้ถูกแยกและใช้หน่วยความจำร่วมกัน
- เธรดไม่สามารถมีอยู่จริง; มันถูกแนบมากับกระบวนการ ในทางตรงกันข้ามกระบวนการสามารถมีอยู่เป็นรายบุคคล
- ในเวลาที่หมดอายุของเธรดสแต็กที่เชื่อมโยงสามารถถูกกู้คืนได้เนื่องจากทุกเธรดมีสแต็กของตัวเอง ในทางตรงกันข้ามถ้ากระบวนการตายไปเธรดทั้งหมดจะตายรวมถึงกระบวนการด้วย
ข้อสรุป
กระบวนการที่ใช้เพื่อให้บรรลุการดำเนินการของโปรแกรมในลักษณะที่เกิดขึ้นพร้อมกันและตามลำดับ ในขณะที่เธรดเป็นหน่วยดำเนินการโปรแกรมซึ่งใช้สภาพแวดล้อมของกระบวนการเมื่อเธรดจำนวนมากใช้สภาพแวดล้อมของกระบวนการเดียวกันที่พวกเขาต้องการแบ่งปันรหัสข้อมูลและทรัพยากร ระบบปฏิบัติการใช้ข้อเท็จจริงนี้เพื่อลดค่าใช้จ่ายและปรับปรุงการคำนวณ