Sự khác biệt giữa Interrupt và Trap

Anonim

Interrupt vs. Trap

Trong bất kỳ máy tính nào, trong quá trình thực hiện chương trình thông thường, có thể có các sự kiện có thể khiến CPU tạm dừng. Các sự kiện như thế này được gọi là ngắt. Ngắt có thể do lỗi phần mềm hoặc phần cứng gây ra. Ngắt phần cứng được gọi là (đơn giản) Ngắt, trong khi phần mềm gián đoạn được gọi là ngoại lệ hoặc bẫy. An Exception là một phần mềm tự động tạo ra ngắt, trong khi một Trap là một phần mềm gián đoạn gây ra khởi xướng bởi các lập trình viên. 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 sang một chương trình con đặc biệt gọi là ISR (Interrupt Service Routine) có thể xử lý các điều kiện được nâng lên bởi ngắt.

Ngắt là gì?

Thuật ngữ Ngắt thường được dành riêng cho ngắt phần cứng . Chúng là sự gián đoạn kiểm soát chương trình gây ra bởi sự kiện phần cứng bên ngoài. Ở đây, bên ngoài có nghĩa là bên ngoài với CPU . Ngắt phần cứng thường đến từ nhiều nguồn khác nhau như bộ đếm thời gian, thiết bị ngoại vi (bàn phím, chuột, vv), cổng I / O (nối tiếp, song song, vv), ổ đĩa, đồng hồ CMOS, thẻ mở rộng card, card màn hình, vv). Điều đó có nghĩa là ngắt phần cứng gần 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 hiện. Ví dụ, một sự kiện như nhấn phím trên bàn phím bởi người sử dụng, hoặc bộ đếm thời gian bên trong phần cứng bên ngoài có thể làm tăng ngắt này và có thể thông báo cho CPU rằng một thiết bị nhất định cần một số sự chú ý. Trong một tình huống như CPU ​​sẽ dừng lại bất cứ điều gì nó đang làm (ví dụ 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ẽ trở lại chương trình bình thường. Khi xảy ra sự gián đoạn phần cứng và CPU bắt đầu ISR, các ngắt phần cứng khác bị vô hiệu (ví dụ: trong 80x86 máy). 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 làm điều đó một cách rõ ràng bằng cách xoá cờ gián đoạn (với sti hướng dẫn). Trong 80 × 86 máy, xóa cờ gián đoạn sẽ chỉ ảnh hưởng đến ngắt phần cứng.

Cái bẫy là gì?

Một cái bẫy có thể được xác định là sự chuyển giao quyền kiểm soát, được khởi xướng bởi người lập trình. Thuật ngữ Trap được sử dụng hoán đổi cho thuật ngữ ngoại lệ (ngoại trừ phần mềm gián đoạn). Nhưng một số người cho rằng 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 ngắt kết nối phần mềm. Ví dụ, trong 80 × 86 máy, một lập trình viên có thể sử dụng lệnh int để bắt đầu một cái bẫy. Bởi vì một cái bẫy luôn luôn là vô điều kiện, sự kiểm soát sẽ luôn được chuyển sang chương trình con gắn liền với cái bẫy. Việc chỉ dẫn chính xác, gọi thủ tục để xử lý cái bẫy được dễ dàng xác định bởi vì một chỉ dẫn rõ ràng được sử dụng để chỉ định một cái bẫy.

Sự khác biệt giữa Interrupt và Trap là gì?

Ngắt là ngắt phần cứng, trong khi bẫy là gián đoạn gọi là phần mềm. Sự xuất hiện của 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 cho bẫy. Nếu bạn cần phải không cho phép gián đoạn phần cứng cho đến khi một cái bẫy được phục vụ, bạn cần phải rõ ràng rõ ràng cờ gián đoạn. Và thường là cờ gián đoạn trên máy tính ảnh hưởng đến ngắt (phần cứng) như trái ngược với bẫy. Điều này có nghĩa là xóa cờ này sẽ không ngăn chận bẫy. Không giống như các bẫy, ngắt nên giữ trạng thái trước của CPU.