ความแตกต่างระหว่าง Interrupt กับ Trap

Anonim

ขัดจังหวะกับดัก

ในคอมพิวเตอร์เครื่องใดก็ได้ในระหว่างการดำเนินการตามปกติของโปรแกรมอาจเกิดเหตุการณ์ที่อาจทำให้ CPU หยุดทำงานชั่วคราว เหตุการณ์เช่นนี้เรียกว่า interrupts การขัดจังหวะอาจเกิดจากความผิดพลาดของซอฟต์แวร์หรือฮาร์ดแวร์ ขัดจังหวรฮาร์ดแวร์เรียกว่า (เพียง) ขัดจังหวะในขณะที่การขัดจังหวะซอฟต์แวร์เรียกว่าข้อยกเว้นหรือกับดัก ข้อยกเว้นคือการขัดจังหวะซอฟต์แวร์ที่สร้างขึ้นโดยอัตโนมัติในขณะที่กับดักคือการขัดจังหวะโดยซอฟต์แวร์ที่เรียกโดยโปรแกรมเมอร์ ตัวควบคุมจะถูกโอนไปยัง subroutine พิเศษเรียกว่า ISR (Interrupt Service Routine) ซึ่งสามารถจัดการกับเงื่อนไขที่เกิดจาก interrupt ได้

Interrupt คืออะไร?

คำว่า Interrupt มักถูกสงวนไว้สำหรับการขัดจังหวะฮาร์ดแวร์ เป็นการขัดจังหวะการควบคุมโปรแกรมที่เกิดจากเหตุการณ์ฮาร์ดแวร์ภายนอก ที่นี่ภายนอกหมายความว่าภายนอกกับ CPU ฮาร์ดแวร์ขัดจังหวะมักมาจากแหล่งต่างๆเช่นชิปจับเวลาอุปกรณ์ต่อพ่วง (คีย์บอร์ดเมาส์ ฯลฯ) พอร์ต I / O (serial, parallel, ฯลฯ), ดิสก์ไดรฟ์, นาฬิกา CMOS, การ์ดขยาย (เสียง การ์ด, การ์ดแสดงผล ฯลฯ) นั่นหมายความว่าฮาร์ดแวร์ขัดจังหวะเกือบจะไม่เกิดขึ้นเนื่องจากเหตุการณ์บางอย่างที่เกี่ยวข้องกับโปรแกรมการรัน ตัวอย่างเช่นเหตุการณ์เช่นการกดคีย์บนแป้นพิมพ์โดยผู้ใช้หรือตัวจับเวลาฮาร์ดแวร์ภายในที่หมดเวลาสามารถเพิ่มการขัดจังหวะแบบนี้ได้และสามารถแจ้ง CPU ว่าอุปกรณ์บางอย่างต้องการความสนใจบางอย่าง ในสถานการณ์เช่นว่า CPU จะหยุดทำอะไรก็ตาม (เช่นหยุดทำงานชั่วคราวในปัจจุบัน) ให้บริการตามที่อุปกรณ์ต้องการและจะกลับสู่โปรแกรมปกติ เมื่อมีการขัดจังหวะฮาร์ดแวร์และซีพียูเริ่ม ISR จะมีการปิดใช้งานการขัดจังหวะฮาร์ดแวร์อื่น ๆ (เช่นใน 80 × 86 เครื่อง) ถ้าคุณต้องการการขัดจังหวะฮาร์ดแวร์อื่น ๆ ที่เกิดขึ้นในขณะที่ ISR กำลังทำงานคุณต้องทำอย่างชัดเจนโดยการล้างค่าสถานะ interrupt (ด้วยคำแนะนำ sti) ในเครื่อง 80 × 86 การล้างค่าสถานะขัดจังหวังจะส่งผลต่อการขัดจังหวะฮาร์ดแวร์เท่านั้น

กับดักคืออะไร?

กับดัก (Trap) สามารถระบุได้ว่าเป็นการถ่ายโอนการควบคุมซึ่งเริ่มจากโปรแกรมเมอร์ คำว่า Trap ใช้สลับกันได้กับคำว่า Exception (ซึ่งเป็นซอฟต์แวร์ที่เกิดขึ้นโดยอัตโนมัติ) แต่บางคนอาจโต้แย้งว่ากับดักเป็นเพียงการเรียก subroutine พิเศษ ดังนั้นพวกเขาจึงตกอยู่ในประเภทของอินเทอร์เฟซที่เรียกใช้ซอฟต์แวร์ ตัวอย่างเช่นในเครื่อง 80 × 86 โปรแกรมเมอร์สามารถใช้คำสั่ง int เพื่อเริ่มต้นกับดัก เนื่องจากกับดักจะไม่มีเงื่อนไขเสมอการควบคุมจะถูกโอนย้ายไปยัง subroutine ที่เกี่ยวข้องกับกับกับดักเสมอ คำสั่งที่แน่นอนซึ่งเรียกใช้งานประจำสำหรับการจัดการกับกับดักจะถูกระบุได้อย่างง่ายดายเนื่องจากมีการใช้คำสั่งที่ชัดเจนเพื่อระบุกับกับดัก

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

การขัดจังหวะเป็นการขัดจังหวะฮาร์ดแวร์ขณะที่กับดักคือการขัดจังหวะโดยเรียกใช้ซอฟต์แวร์ การขัดจังหวะโดยฮาร์ดแวร์มักขัดจังหวะการขัดจังหวะฮาร์ดแวร์อื่น ๆ แต่ไม่เป็นความจริงสำหรับกับดัก หากต้องการขัดจังหวะฮาร์ดแวร์จนกว่าจะมีการดักจับคุณจะต้องล้างค่าสถานะขัดจังหวะอย่างชัดเจน และโดยปกติค่าสถานะขัดจังหวะบนคอมพิวเตอร์จะส่งผลต่อการขัดจังหวะฮาร์ดแวร์ (hardware) เมื่อเทียบกับกับดัก ซึ่งหมายความว่าการล้างค่าสถานะนี้จะไม่ขัดขวางกับดัก แตกต่างจากกับดัก, interrupts ควรรักษาสถานะก่อนหน้าของ CPU