ความแตกต่างระหว่าง Interrupt และ Exception

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 การล้างค่าสถานะขัดจังหวังจะส่งผลต่อการขัดจังหวะฮาร์ดแวร์เท่านั้น

ข้อยกเว้นคืออะไร?

ข้อยกเว้นคือซอฟต์แวร์ขัดจังหวะซึ่งสามารถระบุได้ว่าเป็นขั้นตอนการจัดการพิเศษ ข้อยกเว้นสามารถระบุได้ว่าเป็นกับดักที่เกิดขึ้นโดยอัตโนมัติ (กับดักสามารถระบุได้ว่าเป็นการถ่ายโอนการควบคุมซึ่งเริ่มจากโปรแกรมเมอร์) โดยทั่วไปไม่มีคำแนะนำเฉพาะที่เกี่ยวข้องกับข้อยกเว้น (กับดักจะถูกสร้างโดยใช้คำสั่งเฉพาะ) ดังนั้นข้อยกเว้นเกิดขึ้นเนื่องจากสภาวะ "พิเศษ" ที่เกิดขึ้นระหว่างการเรียกใช้โปรแกรม ตัวอย่างเช่นการหารด้วยศูนย์การดำเนินการของรหัสที่ผิดกฎหมายหรือความผิดพลาดเกี่ยวกับหน่วยความจำอาจก่อให้เกิดข้อยกเว้น เมื่อมีข้อยกเว้นเกิดขึ้น CPU จะระงับชั่วคราวโปรแกรมที่กำลังรันและเริ่ม ISR ISR จะมีสิ่งที่ต้องทำด้วยข้อยกเว้น อาจแก้ไขปัญหาได้หรือหากไม่สามารถทำได้ก็อาจยกเลิกโปรแกรมได้อย่างสง่างามด้วยการพิมพ์ข้อความแสดงข้อผิดพลาดที่เหมาะสมแม้ว่าคำสั่งเฉพาะไม่ก่อให้เกิดข้อยกเว้นข้อยกเว้นจะเกิดจากคำแนะนำเสมอ ตัวอย่างเช่นการแบ่งโดยศูนย์ข้อผิดพลาดสามารถเกิดขึ้นได้ในระหว่างการดำเนินการของคำสั่งแบ่งเท่านั้น

ความแตกต่างระหว่าง Interrupt และ Exception คืออะไร?

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