แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่างสัญญาณและ Mutex

การประสานกระบวนการมีบทบาทสำคัญในการรักษาความสอดคล้องของข้อมูลที่ใช้ร่วมกัน ทั้งโซลูชันซอฟต์แวร์และฮาร์ดแวร์นำเสนอเพื่อจัดการปัญหาส่วนสำคัญ แต่การแก้ปัญหาฮาร์ดแวร์สำหรับปัญหาในส่วนที่สำคัญนั้นทำได้ยาก ในบทความของวันนี้เราจะหารือเกี่ยวกับโซลูชันสองซอฟต์แวร์ที่ใช้เพื่อจัดการกับปัญหาส่วนที่สำคัญเช่น Semaphore และ Mutex

ความแตกต่างพื้นฐานระหว่างเซมาฟอร์และ mutex คือเซมาฟอร์เป็นกลไกการส่งสัญญาณเช่นกระบวนการทำงานการรอ () และสัญญาณ () เพื่อระบุว่าพวกเขากำลังได้รับหรือปล่อยทรัพยากรในขณะที่ Mutex เป็นกลไกการล็อคกระบวนการ วัตถุ mutex หากต้องการได้รับทรัพยากร มีความแตกต่างเพิ่มเติมระหว่างเซมาฟอร์และ mutex ให้เราคุยด้วยความช่วยเหลือของกราฟเปรียบเทียบที่แสดงด้านล่าง

แผนภูมิเปรียบเทียบ

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

ความหมายของสัญญาณ

สัญญาณเป็นเครื่องมือประสานกระบวนการ สัญญาณโดยทั่วไปคือ ตัวแปรจำนวนเต็ม S ที่เริ่มต้นกับจำนวนของทรัพยากรที่มีอยู่ในระบบและค่าของสัญญาณสามารถ แก้ไขได้ โดยสองฟังก์ชั่น รอ () และ สัญญาณ () นอกเหนือจากการเริ่มต้น

การดำเนินการรอ () และสัญญาณ () จะปรับเปลี่ยนค่าของสัญญาณที่ แยกไม่ ได้ หมายความว่าเมื่อกระบวนการแก้ไขค่าเซมาฟอร์ไม่มีกระบวนการอื่นใดที่สามารถปรับเปลี่ยนค่าเซมาฟอร์ได้ในเวลาเดียวกัน สัญญาณมีความโดดเด่นด้วยระบบปฏิบัติการในสองประเภท การนับเซมาฟอร์ และเซมา ฟอร์แบบไบนารี

ใน การนับเซ มาฟอร์ค่า เซ มาฟอร์ S จะเริ่มต้นตาม จำนวนของทรัพยากรที่ มีอยู่ในระบบ เมื่อใดก็ตามที่กระบวนการต้องการเข้าถึงทรัพยากรมันจะทำการดำเนินการ wait () บนเซมาฟอร์และ ลด ค่าเซมาฟอร์ลงทีละหนึ่ง เมื่อเผยแพร่ทรัพยากรจะทำการดำเนินการ signal () บนสัญญาณและ เพิ่ม ค่าของสัญญาณโดยหนึ่ง เมื่อเซมาฟอร์นับเป็น 0 หมายถึงทรัพยากรทั้งหมดถูกครอบครองโดยกระบวนการ หากกระบวนการจำเป็นต้องใช้ทรัพยากรเมื่อจำนวนสัญญาณเป็น 0 จะดำเนินการรอ () และ ถูกบล็อก จนกว่าค่าเซมาฟอร์จะมากกว่า 0

ในเซมา ฟอร์ไบนารี ค่าของเซมาฟอร์ช่วงระหว่าง 0 ถึง 1 มันคล้ายกับล็อค mutex แต่ mutex เป็นกลไกการล็อคในขณะที่สัญญาณเป็นกลไกการส่งสัญญาณ ในเซมาฟอร์ไบนารีถ้ากระบวนการต้องการเข้าถึงทรัพยากรมันจะทำการดำเนินการ wait () บนเซมาฟอร์และลดค่าเซมาฟอร์จาก 1 เป็น 0 เมื่อปล่อยทรัพยากรมันจะทำการดำเนินการ สัญญาณ () บนเซมาฟอร์และเพิ่มขึ้น ค่าเป็น 1 หากค่าเซมาฟอร์เป็น 0 และกระบวนการต้องการเข้าถึงทรัพยากรมันจะทำการดำเนินการ wait () และบล็อกตัวเองจนกระทั่งกระบวนการปัจจุบันที่ใช้ทรัพยากรปล่อยทรัพยากร

ความหมายของ Mutex

อ็อบเจกต์ Mutual Exclusion นั้นเรียกว่า Mutex จากการแยกคำซึ่งกันและกันเราสามารถเข้าใจได้ว่ากระบวนการเดียวเท่านั้นในแต่ละครั้งสามารถเข้าถึงทรัพยากรที่กำหนด วัตถุ mutex อนุญาตให้เธรดโปรแกรมจำนวนมากใช้ทรัพยากรเดียวกัน แต่ทีละรายการไม่พร้อมกัน

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

ในขณะเดียวกันกระบวนการได้รับการล็อกบนวัตถุ mutex ไม่มีเธรด / กระบวนการอื่นสามารถเข้าถึงทรัพยากรนั้น หากอ็อบเจ็กต์ mutex ถูกล็อกอยู่แล้วกระบวนการที่ต้องการรับการล็อกบนอ็อบเจ็กต์ mutex ต้องรอและเข้าคิวโดยระบบจนกว่าอ็อบเจ็กต์ mutex จะถูกปลดล็อก

ความแตกต่างที่สำคัญระหว่างสัญญาณและ Mutex

  1. สัญญาณเป็นกลไกการ ส่งสัญญาณ เป็นการดำเนินการรอ () และสัญญาณ () ดำเนินการกับตัวแปรสัญญาณบ่งชี้ว่ากระบวนการได้รับทรัพยากรหรือปล่อยทรัพยากร ในอีกทางหนึ่ง mutex เป็นกลไกการ ล็อค เพื่อรับทรัพยากรกระบวนการต้องล็อควัตถุ mutex และในขณะที่ปล่อยกระบวนการทรัพยากรจะต้องปลดล็อควัตถุ mutex
  2. สัญญาณโดยทั่วไปจะเป็นตัวแปร จำนวนเต็ม ในขณะที่ mutex เป็น วัตถุ
  3. สัญญาณช่วยให้หัวข้อโปรแกรมหลายรายการในการเข้าถึง อินสแตนซ์ที่ จำกัด ของทรัพยากร ในทางกลับกัน Mutex อนุญาตให้เธรดโปรแกรมหลายรายการเข้าถึง ทรัพยากรที่ใช้ร่วมกันเดียว แต่ทีละรายการ
  4. ค่าตัวแปรสัญญาณสามารถปรับเปลี่ยนได้โดยกระบวนการ ใด ๆ ที่ได้มาหรือเผยแพร่ทรัพยากรโดยการดำเนินการรอ () และการดำเนินงานสัญญาณ () ในทางกลับกันการล็อกที่ได้รับบนวัตถุ mutex สามารถปล่อยได้โดยกระบวนการที่ได้รับการล็อคบนวัตถุ mutex เท่านั้น
  5. สัญญาณมีสองประเภท นับสัญญาณและสัญญาณสัญญาณไบนารี ซึ่งค่อนข้างคล้ายกับ mutex
  6. ค่าตัวแปรสัญญาณมีการแก้ไขโดยการดำเนินการ รอ () และ สัญญาณ () นอกเหนือจากการเริ่มต้น อย่างไรก็ตามวัตถุปิดเสียงถูกล็อคหรือปลดล็อคโดยกระบวนการที่ได้รับหรือปล่อยทรัพยากร
  7. หากกระบวนการทั้งหมดได้มาซึ่งทรัพยากรและไม่มีทรัพยากรใดว่างกระบวนการที่ต้องการรับทรัพยากรจะดำเนินการ wait () การดำเนินการกับตัวแปรสัญญาณและ บล็อก ตัวเองจนกว่าจำนวนสัญญาณจะมากกว่า 0 แต่ถ้าวัตถุ mutex อยู่แล้ว ถูกล็อกจากนั้นกระบวนการที่ต้องการรับทรัพยากร จะรอ และ รอ คิว จากระบบจนกระทั่งทรัพยากรถูกปล่อยออกมาและวัตถุ mutex จะถูกปลดล็อก

สรุป:

สัญญาณเป็นตัวเลือกที่ดีกว่าในกรณีที่มีทรัพยากรหลายอินสแตนซ์พร้อมใช้งาน ในกรณีของ mutex ทรัพยากรที่ใช้ร่วมกันเป็นตัวเลือกที่ดีกว่า

Top