ความแตกต่างระหว่าง Semaphore และ Monitor

Anonim

สัญญาณ Semaphore vs Monitor

สัญญาณคือโครงสร้างข้อมูลที่ใช้เพื่อให้แน่ใจว่าหลายโพรเซสจะไม่สามารถเข้าถึงได้ทั่วไป ทรัพยากรหรือส่วนที่สำคัญในเวลาเดียวกันในสภาพแวดล้อมการเขียนโปรแกรมแบบขนาน semaphores ใช้เพื่อหลีกเลี่ยงการล็อคที่ตายแล้วและสภาพการแข่งขัน Monitor เป็นตัวสร้างภาษาเขียนโปรแกรมที่ใช้ในการหลีกเลี่ยงกระบวนการหลาย ๆ ที่เข้าถึงทรัพยากรทั่วไปในเวลาเดียวกันดังนั้นจึงรับประกันการยกเว้นกัน จอภาพใช้ตัวแปรตามเงื่อนไขเพื่อให้บรรลุภารกิจนี้

Semaphore คืออะไร?

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

จอภาพคืออะไร?

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

ความแตกต่างระหว่าง Semaphore กับ Monitor คืออะไร?

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