ScholarGate
ผู้ช่วย

การจัดการโพรเซสและเธรด

การจัดการโพรเซสและเธรดคือวิธีการที่ระบบปฏิบัติการสร้าง จัดการคิว และยกเลิกหน่วยการประมวลผล — โพรเซสที่มีพื้นที่แอดเดรสของตนเองและเธรดที่ใช้พื้นที่ร่วมกัน — และสลับหน่วยประมวลผลระหว่างหน่วยเหล่านี้

ค้นหาหัวข้อด้วย PaperMindเร็ว ๆ นี้Find papers & topics
Tools & resources
ดาวน์โหลดสไลด์
Learn & explore
วิดีโอเร็ว ๆ นี้

Definition

การจัดการโพรเซสและเธรดประกอบด้วยกลไกของระบบปฏิบัติการที่แสดงโปรแกรมที่กำลังทำงานเป็นโพรเซสและเธรด, รักษาสถานะการทำงานของพวกมัน, สร้างและยุติพวกมัน, และสลับหน่วยประมวลผลระหว่างพวกมันในขณะที่รักษาและกู้คืนบริบทของพวกมัน

Scope

หัวข้อนี้ครอบคลุมนามธรรมของโพรเซสและวงจรชีวิตของมัน, บล็อกควบคุมโพรเซส, การสร้างและการยุติโพรเซส, เธรดและแบบจำลองมัลติเธรด, การสลับบริบท, และการสื่อสารระหว่างโพรเซส ไม่รวมถึงนโยบายที่ว่างานพร้อมทำงานใดจะรันต่อไป (การจัดตารางเวลา CPU) และการประสานงานของข้อมูลที่ใช้ร่วมกัน (การทำงานพร้อมกัน, ซึ่งกล่าวถึงภายใต้ระบบปฏิบัติการโดยทั่วไป) โดยเน้นที่โครงสร้างที่แสดงและจัดการการประมวลผล

Core questions

  • ระบบปฏิบัติการต้องเก็บสถานะอะไรบ้างสำหรับแต่ละโพรเซสและเธรด?
  • โพรเซสถูกสร้างขึ้นอย่างไร และเธรดแตกต่างจากโพรเซสอย่างไร?
  • เกิดอะไรขึ้นระหว่างการสลับบริบท และมีค่าใช้จ่ายเท่าไร?
  • โพรเซสสื่อสารและประสานงานกันอย่างไรในพื้นที่แอดเดรสที่แตกต่างกัน?

Key concepts

  • โพรเซสและบล็อกควบคุมโพรเซส
  • สถานะและวงจรชีวิตของโพรเซส
  • เธรดและมัลติเธรด
  • เธรดระดับผู้ใช้เทียบกับเธรดระดับเคอร์เนล
  • การสลับบริบท
  • fork และ exec
  • การสื่อสารระหว่างโพรเซส
  • การแยกโพรเซส

Key theories

นามธรรมของโพรเซส
ระบบปฏิบัติการแสดงโปรแกรมที่กำลังทำงานแต่ละโปรแกรมเป็นโพรเซสที่มีพื้นที่แอดเดรสของตนเองและบริบทการประมวลผลที่เก็บไว้ในบล็อกควบคุมโพรเซส ซึ่งช่วยให้สามารถแยก, จัดตารางเวลา, และควบคุมการใช้หน่วยประมวลผลร่วมกันได้

Mechanisms

แต่ละโพรเซสจะถูกอธิบายโดยบล็อกควบคุมโพรเซสที่เก็บรีจิสเตอร์, การแมปหน่วยความจำ, ไฟล์ที่เปิดอยู่, และสถานะการจัดตารางเวลา ระบบจะสร้างโพรเซส (เช่น ผ่าน fork และ exec), เปลี่ยนสถานะของพวกมัน (ใหม่, พร้อม, กำลังทำงาน, กำลังรอ, ยุติแล้ว), และสลับระหว่างพวกมันโดยการบันทึกบริบทหนึ่งและกู้คืนอีกบริบทหนึ่ง เธรดจะใช้พื้นที่แอดเดรสของโพรเซสร่วมกัน ทำให้การสลับถูกลงแต่ต้องมีการซิงโครไนซ์; การสื่อสารระหว่างโพรเซสใช้ไปป์, ข้อความ, หรือหน่วยความจำที่ใช้ร่วมกัน

Clinical relevance

การจัดการโพรเซสและเธรดเป็นพื้นฐานของการทำงานแบบมัลติทาสกิ้งในทุกระบบที่ทันสมัย การแยกโพรเซสเป็นรากฐานสำคัญของความปลอดภัยและความเสถียร, เธรดช่วยให้แอปพลิเคชันตอบสนองและทำงานแบบขนานได้, และต้นทุนของการสลับบริบทและการสื่อสารระหว่างโพรเซสมีผลต่อการออกแบบเซิร์ฟเวอร์, รันไทม์, และซอฟต์แวร์ที่ทำงานพร้อมกัน

History

แนวคิดของโพรเซสพัฒนาขึ้นพร้อมกับระบบมัลติโปรแกรมมิ่งและไทม์แชร์ริ่งในทศวรรษ 1960, และ UNIX ได้สร้างแบบจำลอง fork/exec และนามธรรมของโพรเซสที่ใช้กันอย่างแพร่หลายในปัจจุบัน เธรดถูกเพิ่มเข้ามาเพื่อใช้ประโยชน์จากมัลติโปรเซสเซอร์และปรับปรุงการตอบสนอง, โดยมีมาตรฐานเช่น POSIX threads ที่กำหนดรูปแบบเธรดที่ผู้ใช้มองเห็น

Debates

เธรดระดับผู้ใช้เทียบกับเธรดระดับเคอร์เนล
เธรดระดับผู้ใช้จัดการได้ง่ายแต่ไม่สามารถจัดตารางเวลาข้ามคอร์ได้อย่างอิสระและจะบล็อกทั้งโพรเซสเมื่อมีการเรียกบล็อกกิ้ง ในขณะที่เธรดระดับเคอร์เนลจะรวมเข้ากับตัวจัดตารางเวลาโดยมีค่าใช้จ่ายสูงกว่า; แบบจำลองไฮบริดพยายามรวมข้อดีเข้าด้วยกัน

Key figures

  • Ken Thompson
  • Dennis Ritchie
  • Per Brinch Hansen
  • Abraham Silberschatz
  • Andrew S. Tanenbaum

Related topics

Seminal works

  • silberschatz2018
  • tanenbaum2014os

Frequently asked questions

ระบบปฏิบัติการเก็บข้อมูลอะไรบ้างสำหรับแต่ละโพรเซส?
ระบบจะเก็บบล็อกควบคุมโพรเซสที่บันทึกรีจิสเตอร์และตัวนับโปรแกรมที่บันทึกไว้ของโพรเซส, การแมปหน่วยความจำ, สถานะและลำดับความสำคัญของการจัดตารางเวลา, ไฟล์ที่เปิดอยู่, และข้อมูลการบัญชีและข้อมูลระบุตัวตน — ทุกสิ่งที่จำเป็นในการระงับโพรเซสและกลับมาทำงานต่อจากจุดที่หยุดไปได้อย่างแม่นยำ
ทำไมการสลับระหว่างเธรดจึงถูกกว่าการสลับระหว่างโพรเซส?
เธรดภายในโพรเซสเดียวกันใช้พื้นที่แอดเดรสและทรัพยากรเดียวกัน ดังนั้นการสลับระหว่างเธรดจึงไม่จำเป็นต้องเปลี่ยนการแมปหน่วยความจำ การสลับระหว่างโพรเซสยังต้องเปลี่ยนพื้นที่แอดเดรสและอาจล้างแคชการแปล ทำให้มีค่าใช้จ่ายสูงกว่า

Methods for this concept

Related concepts