Cuộc gọi hệ thống vs ngắt
Một bộ xử lý điển hình thực hiện từng hướng dẫn một. Nhưng có thể đôi khi bộ xử lý phải dừng tạm thời và giữ lệnh hiện tại và thực thi một số chương trình hoặc đoạn mã khác (nằm ở một nơi khác). Sau khi làm điều này, bộ xử lý trở lại thực thi bình thường và tiếp tục từ nơi nó rời đi. Một cuộc gọi hệ thống và một ngắt là những dịp như vậy. Cuộc gọi hệ thống là cuộc gọi đến chương trình con được tích hợp trong hệ thống. Ngắt là 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.
Cuộc gọi hệ thống là gì?
Các cuộc gọi hệ thống cung cấp các chương trình chạy trên máy tính một giao diện để nói chuyện với hệ điều hành. Khi một chương trình cần yêu cầu một dịch vụ (mà nó không có quyền) từ kernel của hệ điều hành, nó sử dụng một cuộc gọi hệ thống. Các quy trình cấp người dùng không có quyền tương tự như các quy trình tương tác trực tiếp với hệ điều hành. Ví dụ, để liên lạc với và thiết bị I / O bên ngoài hoặc để tương tác với bất kỳ quy trình nào khác, một chương trình phải sử dụng các cuộc gọi hệ thống.
Ngắt là gì?
Trong quá trình thực thi bình thường của một chương trình máy tính, 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. 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.
Như đã đề cập ở trên, 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.
Sự khác biệt giữa cuộc gọi hệ thống và ngắt?
Cuộc gọi hệ thống là cuộc gọi đến chương trình con được tích hợp trong hệ thống, trong khi Ngắt là một sự kiện, khiến bộ xử lý tạm thời giữ thực thi hiện tại. Tuy nhiên, một điểm khác biệt chính là các cuộc gọi hệ thống là đồng bộ, trong khi các ngắt thì không. Điều đó có nghĩa là các cuộc gọi hệ thống xảy ra tại một thời điểm cố định (thường được xác định bởi người lập trình), nhưng các ngắt có thể xảy ra bất cứ lúc nào do một sự kiện bất ngờ như người dùng nhấn phím trên bàn phím. Do đó, khi có một cuộc gọi hệ thống xảy ra, bộ xử lý chỉ phải nhớ nơi quay lại, nhưng trong trường hợp bị gián đoạn, bộ xử lý phải nhớ cả nơi để trở về và trạng thái của hệ thống. Không giống như một cuộc gọi hệ thống, một ngắt thường không liên quan gì đến chương trình hiện tại.