Điều gì có nghĩa là các ngắt trong bối cảnh của các hệ điều hành?


9

Tôi đã quyết định đọc các khái niệm hệ điều hành của Silberschatz, Galvin Gagne (phiên bản thứ 8) vào mùa hè. Tôi đã đi đến một chủ đề khiến tôi bối rối - bị gián đoạn và vai trò của chúng vì nó liên quan đến các hệ điều hành.

Văn bản nói rằng một hệ điều hành sẽ bắt đầu một quá trình đầu tiên như "init" và sau đó chờ "sự kiện" xảy ra và sự kiện này thường được báo hiệu bởi một ngắt. Văn bản cũng nói rằng ngắt có thể đến từ phần cứng hoặc phần mềm. Làm thế nào để nó hoạt động, chi tiết hơn một chút? Là hệ điều hành được điều khiển bởi các ngắt?

Tôi chỉ tìm kiếm một số hiểu biết hình ảnh lớn.

Câu trả lời:


8

Khi HĐH chạy một quá trình như "init", nó sẽ gửi tín hiệu đến các hệ thống phụ / quản lý thiết bị khác, v.v., như bộ nhớ, thiết bị I / O, v.v. Ngắt chỉ là một cách để nói với bộ xử lý hoặc Hệ điều hành đã sẵn sàng hoặc có đầu vào mới, v.v. Vì vậy, đôi khi trong quá trình khởi động, HĐH đang chờ các hệ thống phụ sẵn sàng và một ngắt từ các hệ thống phụ này sẽ chỉ ra chính xác điều đó. Vì vậy, đó là những gì "sự kiện" liên quan đến.

Liên quan đến ngắt phần cứng hoặc phần mềm, ngắt phần cứng là những phần xuất phát từ phần cứng. Ví dụ. Các thiết bị I / O như bàn phím, v.v ... Một phần cứng bị gián đoạn làm cho bộ xử lý lưu trạng thái của nó và bắt đầu thực thi trình xử lý ngắt. Mặt khác, ngắt phần mềm là các hướng dẫn trong tập lệnh, khiến bộ xử lý thay đổi mức đặc quyền của nó từ người giám sát người dùng, còn được gọi là chuyển đổi ngữ cảnh. Những chi tiết này sẽ được đề cập sau trong sách giáo khoa.


4

Ngắt cho phép hệ điều hành chú ý đến một sự kiện bên ngoài, chẳng hạn như nhấp chuột. Các ngắt phần mềm, được gọi là ngoại lệ, cho phép HĐH xử lý các sự kiện bất thường như lỗi chia cho 0 đến từ việc thực thi mã.

Chuỗi sự kiện thường như thế này:

  1. Phần cứng báo hiệu ngắt cho bộ xử lý
  2. Bộ xử lý thông báo ngắt và tạm dừng phần mềm hiện đang chạy
  3. Bộ xử lý nhảy đến chức năng xử lý ngắt phù hợp trong HĐH
  4. Trình xử lý ngắt chạy tiến trình của nó và trả về từ ngắt
  5. Bộ xử lý tiếp tục nơi nó rời đi trong phần mềm đang chạy trước đó

Ngắt quan trọng nhất đối với hệ điều hành là ngắt ngắt hẹn giờ. Ngắt hẹn giờ tic cho phép HĐH lấy lại quyền kiểm soát định kỳ từ quy trình người dùng hiện đang chạy. Sau đó, HĐH có thể quyết định lên lịch cho một quy trình khác, quay trở lại quy trình tương tự, làm công việc dọn phòng, v.v ... Ngắt ngắt hẹn giờ cung cấp nền tảng cho khái niệm đa nhiệm được ưu tiên.


4

Gián đoạn là một sự kiện "bất thường" xảy ra cần được xử lý ngay lập tức , bất kể điều gì đang xảy ra. Tôi nói "bất thường" trong ngoặc kép, bởi vì chúng không nhất thiết là bất ngờ hay xấu, nhưng "bất thường" theo quan điểm của CPU vì chúng "chỉ xảy ra" trong khi nó bận thực thi mã có thể không liên quan.

CPU có một số cơ chế để nghe các ngắt và một số cách định cấu hình "phải làm gì" khi các loại khác nhau xảy ra. Điều này cho phép hệ điều hành sắp xếp rằng nó sẽ được thông báo khi các thiết bị phần cứng thực hiện mọi việc (bao gồm cả đồng hồ phần cứng quan trọng, chỉ đơn giản là tạo ra các ngắt theo chu kỳ đều đặn). Thông qua cấu hình xử lý ngắt của CPU, mã được chỉ định trong HĐH sẽ giành quyền kiểm soát mỗi khi xảy ra gián đoạn.

Máy tính ở trạng thái rất khó chịu (đối với người lập trình ứng dụng) khi trình xử lý ngắt bắt đầu chạy; Máy đang bận làm việc khác (có thể là bất cứ điều gì ) và bây giờ HĐH đã được thông báo rằng "điều gì đó đã xảy ra". Nó phải thu thập bất kỳ thông tin nào khác cần thiết để thực sự xử lý ngắt từ bất cứ nơi nào trong máy mà nó nên nằm xung quanh và thực hiện bất kỳ xử lý nào được yêu cầu mà không làm phiền rằng "có thể là bất cứ thứ gì" đang chạy trên CPU. Nếu HĐH muốn chuyển đổi quá trình ứng dụng nào hiện đang chạy, nó sẽ phải lưu đủ ngữ cảnh để có thể khôi phục lại sau (một lần nữa, mà không làm phiền bối cảnh đó), sau đó tải một số ngữ cảnh khác, sau đó để CPU tiếp tục bình thường thực hiện trong bối cảnh đó.

Như đã đề cập, các ngắt được sử dụng để nhận thông báo từ các thiết bị phần cứng (cách thay thế duy nhất là kiểm tra định kỳ chúng), theo dõi thời gian và nhận cơ hội được bảo đảm để lấy lại quyền kiểm soát từ quy trình ứng dụng (để chuyển đổi ứng dụng nào đang chạy) , phục hồi từ các quy trình ứng dụng thực hiện các hướng dẫn không hợp lệ và cũng để cho phép các ứng dụng thực hiện các yêu cầu của HĐH. Những cuộc gọi cuối cùng được gọi là cuộc gọi hệ thống. Để ngăn các ứng dụng làm rối máy và nhau, chúng thường chạy với máy ở "chế độ người dùng", điều này ngăn ứng dụng thực hiện bất kỳ việc gì khác ngoài việc đọc và ghi bộ nhớ (ảo) đã được phân bổ cho nó. Điều này có nghĩa là để làm bất cứ điều gìkhác (đọc / ghi tệp, yêu cầu thêm bộ nhớ, truy cập thiết bị, v.v.) ứng dụng phải thực hiện cuộc gọi hệ thống; về cơ bản, nó làm như vậy bằng cách để lại một số thông tin về những gì nó muốn làm ở đâu đó, nó biết rằng HĐH sẽ tìm kiếm nó, sau đó thực hiện một lệnh CPU gây ra sự gián đoạn đúng loại. Hệ điều hành sau đó có thể xem ứng dụng đang cố gắng làm gì và xác định xem có nên thực hiện yêu cầu đó hay không. Điều này đảm bảo rằng HĐH sẽ tham gia vào bất kỳ quá trình nào 'cố gắng làm bất cứ điều gì ảnh hưởng đến bất kỳ điều gì ngoài quy trình là cách duy nhất để các chính sách truy cập có thể được thi hành.

Vì vậy, về cơ bản, có, hệ điều hành được điều khiển bởi các ngắt. Một hệ điều hành "trừu tượng" sẽ đưa máy vào trạng thái "hoạt động bình thường" và đôi khi không kiểm soát được quy trình "bình thường". Trong trường hợp bình thường, HĐH sẽ chỉ lấy lại quyền kiểm soát bằng cách xử lý các ngắt; nhưng vì không có gì thú vị xảy ra mà không có sự gián đoạn, nên về cơ bản, HĐH có quyền kiểm soát mọi thứ.


3

Hệ điều hành được điều khiển bởi các ngắt. Điều này có nghĩa rằng:

Nếu không có quy trình để thực thi, không có thiết bị I / O nào phục vụ và không có người dùng nào phản hồi, một hệ điều hành sẽ ngồi im lặng, chờ đợi điều gì đó xảy ra. Các sự kiện hầu như luôn được báo hiệu bởi sự xuất hiện của ngắt hoặc bẫy, bẫy là một ngắt phần cứng được tạo khi một lệnh không hợp lệ được đưa ra, và sau đó nó trả lại quyền điều khiển cho HĐH.

Một ví dụ về một lệnh không hợp lệ là khi một chương trình đang cố truy cập vào không gian bộ nhớ của chương trình khác mà không có sự cho phép.


ngắt không phải luôn luôn là một cái gì đó xấu hoặc không hợp lệ như bạn đã mô tả

tôi đã mô tả ngắt bẫy, theo như tôi biết nó được tạo ra do một số lỗi hoặc hướng dẫn không hợp lệ. thanx cho thông báo cho tôi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.