Gần đây trong một cuộc phỏng vấn tôi đã được hỏi về thuật toán Lập lịch được sử dụng bởi Hệ điều hành Linux. Thuật toán được sử dụng là gì tại sao?
Ngoài ra, thuật toán nào được sử dụng trong các hệ điều hành thời gian thực và tại sao?
Gần đây trong một cuộc phỏng vấn tôi đã được hỏi về thuật toán Lập lịch được sử dụng bởi Hệ điều hành Linux. Thuật toán được sử dụng là gì tại sao?
Ngoài ra, thuật toán nào được sử dụng trong các hệ điều hành thời gian thực và tại sao?
Câu trả lời:
Bộ lập lịch tác vụ Linux hiện tại được gọi là Bộ lập lịch hoàn toàn công bằng (CFS). Bạn nên xem http://people.redhat.com/mingo/cfs-scheduler/sched-design-CFS.txt để biết thêm chi tiết. Thiết kế khá phức tạp và theo quan điểm của tôi không phù hợp với RTOS.
Một kỹ thuật phổ biến trong các hệ thống thời gian thực là lập lịch biểu đơn điệu tỷ lệ, bởi vì nó có các đảm bảo chắc chắn nếu các giả định nhất định được giữ (ví dụ: các ưu tiên của nhiệm vụ tĩnh và thời gian và tốc độ thực hiện cố định). Có rất nhiều thuật toán khác và đã có rất nhiều nghiên cứu. Vì vậy, về cơ bản tất cả là về các thuộc tính bạn cần và những gì bạn biết về nhiệm vụ của mình và những gì đã được sửa.
Tôi không chắc lắm, cho dù bạn đang thực hiện lập lịch trình I / O của Kernel. Trong trường hợp bạn không: Bỏ qua câu trả lời này.
Wikipedia tuyên bố rằng CFG (Hàng đợi hoàn toàn công bằng) được mặc định kể từ Kernel 2.6.18.
Trên openSUSE của tôi (chạy Kernel 2.6.37), tôi có thể chuyển đổi giữa CFG, NOOP và Hạn chót .
Thuật toán được sử dụng bởi bộ lập lịch Linux là một sơ đồ phức tạp với sự kết hợp giữa ưu tiên ưu tiên và cắt thời gian thiên vị. Nó gán lượng tử thời gian dài hơn cho các nhiệm vụ ưu tiên cao hơn và lượng tử thời gian ngắn hơn cho các nhiệm vụ ưu tiên thấp hơn.
Nó xác định mỗi quy trình là quy trình thời gian thực hoặc quy trình thông thường (khác). Các tác vụ trong thời gian thực được gán mức độ ưu tiên tĩnh trong phạm vi [0,99], trong đó số thấp hơn biểu thị mức độ ưu tiên cao hơn.
Tất cả các tác vụ khác đều có mức độ ưu tiên động trong phạm vi [100,139], dựa trên tính tương tác của một tác vụ dựa trên các giá trị đẹp của chúng cộng hoặc trừ đi giá trị 5. Các tác vụ tương tác nhiều hơn thường có thời gian ngủ lâu hơn và do đó có nhiều khả năng có các điều chỉnh gần hơn với −5, vì trình lập lịch biểu ưu tiên các tác vụ tương tác. (Độ tương tác của một tác vụ được xác định bởi thời gian nó đã ngủ trong khi chờ I / O.) Độ tương tác của một tác vụ xác định xem giá trị 5 sẽ được thêm vào hay trừ đi khỏi giá trị đẹp. Kết quả của những điều chỉnh như vậy sẽ là những ưu tiên cao hơn cho những nhiệm vụ này. Ngược lại, các tác vụ có thời gian ngủ ngắn hơn thường bị ràng buộc CPU nhiều hơn và do đó sẽ giảm mức độ ưu tiên của chúng.
Nhân duy trì một danh sách tất cả các tác vụ có thể chạy trong cấu trúc dữ liệu runqueue. Một runqueue chứa hai mảng ưu tiên: hoạt động và hết hạn. Mảng hoạt động chứa tất cả các tác vụ với thời gian còn lại trong các lát thời gian của chúng và mảng hết hạn chứa tất cả các tác vụ đã hết hạn. Mỗi mảng ưu tiên này chứa một danh sách các nhiệm vụ được lập chỉ mục theo mức độ ưu tiên. Bộ lập lịch chọn tác vụ có mức ưu tiên cao nhất từ mảng hoạt động để thực thi trên CPU. Khi tất cả các tác vụ đã hết các lát thời gian của chúng (nghĩa là mảng hoạt động trống), hai mảng ưu tiên được trao đổi: mảng hết hạn trở thành mảng hoạt động và ngược lại.
Ưu tiên động của một nhiệm vụ được tính toán lại khi nhiệm vụ đã hết lượng tử thời gian của nó và sẽ được chuyển đến mảng hết hạn. Do đó, khi hai mảng được trao đổi, tất cả các tác vụ trong mảng hoạt động mới đã được gán mức độ ưu tiên mới và các lát thời gian tương ứng. (Lưu ý: Đây là đoạn trích từ cuốn sách về Khái niệm hệ điều hành (ấn bản thứ 9) của Abraham Silberschatz, và cộng sự. Để biết chi tiết, vui lòng tham khảo mục 5.6.3 của cuốn sách này)
>
) cho những phần câu trả lời của bạn mà bạn đã lấy từ một nguồn bên ngoài, đặc biệt là khi trích dẫn từ một cuốn sách.
Đây là một câu trả lời cho câu hỏi khác của bạn. Hệ thống thời gian thực (RTS) có hai loại, cứng và mềm. Thuật toán lập lịch CPU cho RTS cứng là thuật toán ưu tiên dựa trên ưu tiên và đối với RTS mềm là ưu tiên không ưu tiên.