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

Anonim

Interrupt vs. Exception

Trong bất kỳ máy tính nào, trong quá trình thực hiện chương trình bình 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ệ. 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.

Interrupt 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 của chương trình do các sự kiện phần cứng bên ngoài gây ra. Ở đâ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 âm thanh, video thẻ, v.v …). Đ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 tình huống như CPU ​​sẽ dừng lại những gì nó đã 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 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ờ ngắt (với chỉ dẫn sti). Trong 80 × 86 máy, xóa cờ gián đoạn sẽ chỉ ảnh hưởng đến ngắt phần cứng.

Ngoại lệ là gì?

Ngoại lệ là một ngắt phần mềm, có thể được xác định là một thủ tục xử lý đặc biệt. Ngoại lệ có thể được xác định là một bẫy xảy ra tự động (một cái bẫy có thể được xác định là một sự chuyển giao của kiểm soát, được khởi xướng bởi các lập trình viên). Nói chung, không có hướng dẫn cụ thể liên quan đến ngoại lệ (bẫy được tạo ra bằng cách sử dụng một chỉ dẫn cụ thể). Vì vậy, một ngoại lệ xảy ra do một tình trạng "ngoại lệ" xảy ra trong quá trình thực hiện chương trình. Ví dụ, phân chia bởi số không, thực hiện một opcode bất hợp pháp hoặc lỗi liên quan đến bộ nhớ có thể gây ra ngoại lệ. Bất cứ khi nào một ngoại lệ được nâng lên, CPU tạm ngừng chương trình mà nó đã được thực hiện và bắt đầu ISR. ISR sẽ chứa những gì để làm với ngoại lệ. Nó có thể sửa vấn đề hoặc nếu nó không thể nó có thể hủy bỏ chương trình một cách duyên dáng bằng cách in một thông báo lỗi phù hợp.Mặc dù một chỉ dẫn cụ thể không gây ra một ngoại lệ, ngoại lệ sẽ luôn luôn được gây ra bởi một chỉ dẫn. Ví dụ, sự phân chia bởi số không lỗi chỉ có thể xảy ra trong quá trình thực hiện lệnh phân chia.

Sự khác nhau giữa Interrupt và Exception là gì?

Ngắt là ngắt phần cứng, trong khi các ngoại lệ là ngắt 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 đối với trường hợp ngoại lệ. 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 ngoại lệ đượ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 ngoại lệ. Điều này có nghĩa là xoá cờ này sẽ không ngăn được trường hợp ngoại lệ.