ความแตกต่างระหว่างการขัดจังหวะและกับดัก

ความแตกต่างระหว่างการขัดจังหวะและกับดัก
ความแตกต่างระหว่างการขัดจังหวะและกับดัก

วีดีโอ: ความแตกต่างระหว่างการขัดจังหวะและกับดัก

วีดีโอ: ความแตกต่างระหว่างการขัดจังหวะและกับดัก
วีดีโอ: เจาะลึก คณะวิทย์สาขาชีววิทยา เรียนอะไรบ้าง จบมาทำงานอะไร 2024, กรกฎาคม
Anonim

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

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

การขัดจังหวะคืออะไร

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

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

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

Interrupt กับ Trap ต่างกันอย่างไร

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