Ngắt vs Bẫy
Trong bất kỳ máy tính nào, trong quá trình thực thi chương trình bình thường, có thể có các sự kiện có thể khiến CPU tạm thời dừng lại. Các sự kiện như thế này được gọi là gián đoạn. Ngắt có thể do lỗi phần mềm hoặc phần cứng. Ngắt phần cứng được gọi là (đơn giản) Ngắt, trong khi ngắt phần mềm được gọi là Ngoại lệ hoặc Bẫy. Một ngoại lệ là một ngắt phần mềm được tạo tự động, trong khi Bẫy là một ngắt được gọi bởi phần mềm do lập trình viên khởi xướng. Khi một ngắt (phần mềm hoặc phần cứng) được nâng lên, điều khiển được chuyển đến một chương trình con đặc biệt gọi là ISR (Routine Service Routine) có thể xử lý các điều kiện được đưa ra bởi ngắt.
Ngắt là gì?
Thuật ngữ Ngắt thường được dành riêng cho các ngắt phần cứng. Chúng là các gián đoạn điều khiển chương trình gây ra bởi các sự kiện phần cứng bên ngoài. Ở đây, bên ngoài có nghĩa là bên ngoài CPU. Ngắt phần cứng thường đến từ nhiều nguồn khác nhau như chip hẹn giờ, thiết bị ngoại vi (bàn phím, chuột, v.v.), cổng I / O (nối tiếp, song song, v.v.), ổ đĩa, đồng hồ CMOS, thẻ mở rộng (card âm thanh, video thẻ, v.v.) Điều đó có nghĩa là sự gián đoạn phần cứng hầu như không bao giờ xảy ra do một số sự kiện liên quan đến chương trình thực thi. Ví dụ, một sự kiện như người dùng nhấn phím trên bàn phím hoặc hết giờ hẹn giờ phần cứng bên trong có thể làm tăng loại ngắt này và có thể thông báo cho CPU rằng một thiết bị nào đó cần được chú ý. Trong tình huống như vậy, CPU sẽ dừng mọi hoạt động của nó (tức là tạm dừng chương trình hiện tại), cung cấp dịch vụ theo yêu cầu của thiết bị và sẽ quay lại chương trình bình thường. Khi xảy ra gián đoạn phần cứng và CPU khởi động ISR, các ngắt phần cứng khác sẽ bị tắt (ví dụ: trong các máy 80 × 86). Nếu bạn cần các ngắt phần cứng khác xảy ra trong khi ISR đang chạy, bạn cần thực hiện điều đó một cách rõ ràng bằng cách xóa cờ ngắt (với sti chỉ dẫn). Trong các máy 80 × 86, việc xóa cờ ngắt sẽ chỉ ảnh hưởng đến các ngắt phần cứng.
Bẫy là gì?
Một cái bẫy có thể được xác định là một sự chuyển giao quyền điều khiển, được lập trình viên khởi xướng. Thuật ngữ Bẫy được sử dụng thay thế cho nhau với thuật ngữ Ngoại lệ (là một ngắt phần mềm tự động xảy ra). Nhưng một số người có thể lập luận rằng một cái bẫy chỉ đơn giản là một cuộc gọi chương trình con đặc biệt. Vì vậy, họ rơi vào loại gián đoạn được gọi bằng phần mềm. Ví dụ: trong các máy 80 × 86, lập trình viên có thể sử dụng int hướng dẫn để bắt đầu một cái bẫy. Bởi vì một cái bẫy luôn luôn vô điều kiện, điều khiển sẽ luôn được chuyển đến chương trình con liên quan đến cái bẫy. Hướng dẫn chính xác, gọi thủ tục để xử lý bẫy dễ dàng được xác định vì một lệnh rõ ràng được sử dụng để chỉ định bẫy.
Sự khác biệt giữa Ngắt và Bẫy?
Ngắt là các ngắt phần cứng, trong khi các bẫy là các ngắt được gọi bằng phần mềm. Sự xuất hiện của các ngắt phần cứng thường vô hiệu hóa các ngắt phần cứng khác, nhưng điều này không đúng với các bẫy. Nếu bạn cần không cho phép ngắt phần cứng cho đến khi bẫy được phục vụ, bạn cần xóa cờ ngắt một cách rõ ràng. Và thông thường cờ ngắt trên máy tính ảnh hưởng đến ngắt (phần cứng) trái ngược với bẫy. Điều này có nghĩa là việc xóa cờ này sẽ không ngăn được bẫy. Không giống như bẫy, ngắt nên duy trì trạng thái trước đó của CPU.