ความแตกต่างระหว่างสัญญาณและจอภาพในระบบปฏิบัติการ
เนื้อหา
สัญญาณและการตรวจสอบทั้งสองอนุญาตให้กระบวนการเข้าถึงทรัพยากรที่ใช้ร่วมกันในการยกเว้นซึ่งกันและกัน ทั้งสองเป็นเครื่องมือการประสานกระบวนการ แต่แตกต่างกันมาก ที่ไหน สัญญาณ เป็นตัวแปรจำนวนเต็มซึ่งสามารถดำเนินการโดยการรอ () และสัญญาณ () การดำเนินการนอกเหนือจากการเริ่มต้น ในทางกลับกัน หน้าจอ type เป็นชนิดข้อมูลนามธรรมซึ่งโครงสร้างอนุญาตให้หนึ่งกระบวนการเปิดใช้งานในครั้งเดียว ในบทความนี้เราจะพูดถึงความแตกต่างระหว่างสัญญาณและจอภาพด้วยความช่วยเหลือของกราฟเปรียบเทียบที่แสดงด้านล่าง
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | สัญญาณ | หน้าจอ |
---|---|---|
ขั้นพื้นฐาน | Semaphores เป็นตัวแปรจำนวนเต็ม S | จอภาพเป็นชนิดข้อมูลนามธรรม |
การกระทำ | ค่าของสัญญาณที่บ่งบอกถึงจำนวนของทรัพยากรที่ใช้ร่วมกันที่มีอยู่ในระบบ | ชนิดการตรวจสอบประกอบด้วยตัวแปรที่แชร์และชุดของโพรซีเดอร์ที่ทำงานกับตัวแปรที่แชร์ |
ทางเข้า | เมื่อกระบวนการใด ๆ เข้าถึงทรัพยากรที่ใช้ร่วมกันก็จะทำการดำเนินการ wait () บน S และเมื่อมันเผยแพร่ทรัพยากรที่ใช้ร่วมกันก็จะทำการดำเนินการ signal () บน S | เมื่อกระบวนการใดต้องการเข้าถึงตัวแปรที่แชร์ในจอภาพมันจำเป็นต้องเข้าถึงมันผ่านขั้นตอน |
ตัวแปรเงื่อนไข | สัญญาณไม่ได้มีตัวแปรเงื่อนไข | จอภาพมีตัวแปรเงื่อนไข |
ความหมายของสัญญาณ
เป็นเครื่องมือประสานกระบวนการ สัญญาณ เป็น ตัวแปรจำนวนเต็ม S ตัวแปรจำนวนเต็ม S นี้ถูกเตรียมใช้งานกับ จำนวนทรัพยากร อยู่ในระบบ ค่าของเซมาฟอร์ S สามารถแก้ไขได้ด้วยสองฟังก์ชั่นเท่านั้น รอ() และ สัญญาณ() นอกเหนือจากการเริ่มต้น
การดำเนินการรอ () และสัญญาณ () จะปรับเปลี่ยนค่าของสัญญาณที่แยกไม่ออก ซึ่งหมายความว่าเมื่อกระบวนการปรับเปลี่ยนค่าของสัญญาณไม่มีกระบวนการอื่นสามารถปรับเปลี่ยนค่าสัญญาณได้พร้อมกัน นอกจากนี้ระบบปฏิบัติการยังแยกเซมาฟอร์ออกเป็นสองประเภทคือการนับเซมาฟอร์และเซมาฟอร์ไบนารี
ใน นับเซมาฟอร์ค่าเซมาฟอร์ S นั้นถูกเตรียมใช้งานกับจำนวนของทรัพยากรที่มีอยู่ในระบบ เมื่อใดก็ตามที่กระบวนการต้องการเข้าถึงทรัพยากรที่ใช้ร่วมกันก็จะดำเนินการ รอ() การดำเนินการเกี่ยวกับสัญญาณซึ่ง decrements มูลค่าของสัญญาณโดยหนึ่ง เมื่อเผยแพร่ทรัพยากรที่ใช้ร่วมกันก็จะดำเนินการ สัญญาณ() การดำเนินการเกี่ยวกับสัญญาณซึ่ง เพิ่มขึ้น มูลค่าของสัญญาณโดยหนึ่ง เมื่อจำนวนสัญญาณไปที่ 0มันหมายถึง ทรัพยากรทั้งหมดถูกครอบครอง โดยกระบวนการ หากกระบวนการจำเป็นต้องใช้ทรัพยากรเมื่อจำนวนสัญญาณเป็น 0 จะดำเนินการรอ () และรับ อุดตัน จนกว่ากระบวนการที่ใช้รีซอร์สที่แบ่งใช้จะรีลีสและค่าเซมาฟอร์จะมากกว่า 0
ใน สัญญาณสัญญาณไบนารีค่าของเซมาฟอร์อยู่ในช่วงระหว่าง 0 ถึง 1 ซึ่งคล้ายคลึงกับ mutex lock แต่ mutex เป็นกลไกการล็อคในขณะที่เซมาฟอร์เป็นกลไกการส่งสัญญาณ ในเซมาฟอร์ไบนารีถ้ากระบวนการต้องการเข้าถึงทรัพยากรมันจะทำการดำเนินการ wait () ในเซมาฟอร์และ decrements ค่าเซมาฟอร์จาก 1 ถึง 0 เมื่อกระบวนการเผยแพร่ทรัพยากรจะดำเนินการ สัญญาณ() การดำเนินการกับสัญญาณและเพิ่มมูลค่าเป็น 1 หากมูลค่าของสัญญาณเป็น 0 และกระบวนการที่ต้องการเข้าถึงทรัพยากรจะดำเนินการรอ () การดำเนินการรอ () และบล็อกตัวเองจนถึงกระบวนการปัจจุบันที่ใช้ทรัพยากรปล่อยทรัพยากร
ความหมายของการตรวจสอบ
เพื่อเอาชนะข้อผิดพลาดเกี่ยวกับเวลาที่เกิดขึ้นขณะใช้สัญญาณสำหรับการซิงโครไนซ์กระบวนการนักวิจัยได้แนะนำโครงสร้างการซิงโครไนซ์ระดับสูงเช่น ประเภทจอภาพ. ประเภทจอภาพคือ ชนิดข้อมูลนามธรรม ที่ใช้สำหรับกระบวนการซิงโครไนซ์
การเป็นประเภทการตรวจสอบชนิดข้อมูลนามธรรมประกอบด้วย ตัวแปรข้อมูลที่แชร์ ที่จะใช้ร่วมกันโดยกระบวนการทั้งหมดและบางโปรแกรมที่กำหนดไว้ การดำเนินงาน ที่อนุญาตให้กระบวนการดำเนินการในการกันซึ่งกันและกันภายในจอภาพ กระบวนการสามารถ ไม่ได้เข้าถึงโดยตรง ตัวแปรข้อมูลที่แชร์ในจอภาพ กระบวนการมีการเข้าถึง ผ่านขั้นตอน กำหนดไว้ในมอนิเตอร์ซึ่งอนุญาตให้กระบวนการเดียวเข้าถึงตัวแปรที่แชร์กันในจอภาพในแต่ละครั้ง
ไวยากรณ์ของจอภาพมีดังนี้:
มอนิเตอร์ monitor_name {// การประกาศตัวแปรที่แชร์โพรซีเดอร์ P1 (....) {} โพรซีเดอร์ P2 (...) {} โพรซีเดอร์ Pn (...) {} รหัสเริ่มต้น (...) {}}
จอภาพเป็นโครงสร้างเช่นกระบวนการเดียวเท่านั้นที่ใช้งานได้ในแต่ละครั้งภายในจอภาพ หากกระบวนการอื่นพยายามเข้าถึงตัวแปรที่แชร์ในจอภาพมันจะถูกบล็อกและอยู่ในคิวเพื่อรับการเข้าถึงข้อมูลที่ใช้ร่วมกันเมื่อก่อนหน้านี้การเข้าถึงกระบวนการปล่อยออกมา
ตัวแปรตามเงื่อนไข ถูกนำมาใช้สำหรับกลไกการซิงโครไนซ์เพิ่มเติม ตัวแปรเงื่อนไข อนุญาตให้กระบวนการรอภายในจอมอนิเตอร์ และอนุญาตให้กระบวนการรอดำเนินการต่อโดยทันทีเมื่อกระบวนการอื่นเผยแพร่ทรัพยากร
ตัวแปรตามเงื่อนไข สามารถเรียกใช้เพียงสองการดำเนินการ รอ() และ สัญญาณ() ซึ่งถ้าเป็นกระบวนการ P เรียกใช้การรอ () การทำงานจะหยุดลงในมอนิเตอร์จนกว่าจะมีกระบวนการอื่น Q เรียกใช้สัญญาณ () การดำเนินการเช่นการดำเนินการสัญญาณ () ที่เรียกใช้โดยกระบวนการดำเนินการต่อกระบวนการที่ถูกระงับ
- ความแตกต่างพื้นฐานระหว่างสัญญาณและจอภาพคือ สัญญาณ เป็น ตัวแปรจำนวนเต็ม S ซึ่งระบุจำนวนทรัพยากรที่มีอยู่ในระบบในขณะที่ หน้าจอ คือ ประเภทข้อมูลนามธรรม ซึ่งอนุญาตให้กระบวนการเดียวดำเนินการในส่วนวิกฤติได้ตลอดเวลา
- มูลค่าของสัญญาณสามารถแก้ไขได้โดย รอ() และ สัญญาณ() การดำเนินการเท่านั้น ในทางกลับกันมอนิเตอร์มีตัวแปรที่แชร์และโพรซีเดอร์เฉพาะซึ่งตัวแปรที่แชร์นั้นสามารถเข้าถึงได้โดยกระบวนการ
- ในเซมาฟอร์เมื่อกระบวนการต้องการเข้าถึงทรัพยากรที่ใช้ร่วมกันกระบวนการจะดำเนินการ รอ() การดำเนินการและปิดกั้นทรัพยากรและเมื่อปล่อยทรัพยากรที่ดำเนินการ สัญญาณ() การดำเนินงาน ในจอภาพเมื่อกระบวนการต้องการเข้าถึงทรัพยากรที่ใช้ร่วมกันจะต้องเข้าถึงกระบวนการเหล่านั้นผ่านขั้นตอนในการตรวจสอบ
- ประเภทจอภาพมี ตัวแปรเงื่อนไข สัญญาณใดไม่มี
สรุป:
จอภาพใช้งานง่ายกว่าเซมาฟอร์และมีโอกาสผิดพลาดเล็กน้อยในการตรวจสอบเมื่อเปรียบเทียบกับเซมาฟอร์