Linux 6.12 có thể hỗ trợ “PREEMPT_RT” trong thời gian thực

Preempt-RT là một sửa đổi cho phép các tác vụ có mức độ ưu tiên cao hơn làm gián đoạn các tác vụ có mức độ ưu tiên thấp hơn.

El khái niệm về hệ thống thời gian thực Đây không phải là điều đã được nghĩ tới trong Linux những năm gần đây, vì ý tưởng về điều này bắt đầu gần 20 năm trước, chính xác là vào năm 2005 là một phần của dự án “Realtime-Preempt” (“-rt”) với việc phát triển chế độ PREEMPT_RT cho nhân Linux.

Dành cho những người không biết PREEMPT_RT, họ nên biết rằng đó là một bản vá cho nhân Linuxvà chuyển đổi hệ điều hành thành hệ điều hành thời gian thực (thời gian thực). Mục tiêu chính của PREEMPT_RT là giảm độ trễ và đảm bảo khả năng dự đoán khi thực hiện tác vụ, điều này rất quan trọng trong các ứng dụng yêu cầu phản hồi nhanh.

Nói một cách đơn giản hơn, chúng ta có thể nói rằng PREEMPT_RT cho phép gần như tất cả các phần của hạt nhân bị gián đoạn, làm giảm độ trễ. Không giống như hạt nhân tiêu chuẩn, không phải tất cả các phần đều có thể bị gián đoạn, điều này có thể gây ra sự chậm trễ về thời gian phản hồi.

Từ năm 2015, dự án đã được đặt dưới sự giám sát của Linux Foundation và cho đến nay, việc triển khai chế độ PREEMPT_RT đã được cung cấp dưới dạng các bản vá bên ngoài. Dựa trên các bản vá này, các bản phân phối như RHEL, SUSE và Ubuntu đã tạo ra các phiên bản thời gian thực cho sản phẩm của họ, có nhu cầu cao trong các lĩnh vực như hệ thống tài chính, thiết bị xử lý âm thanh và video, hệ thống hàng không, y học, robot, viễn thông và ứng dụng công nghiệp, những lĩnh vực cần đảm bảo thời gian phản hồi có thể dự đoán được cho các sự kiện.

En 2019 quá trình thăng tiến bắt đầu trong số các bản vá được phát triển trong dự án PREEMPT_RT vào nhân Linux chính. Trong phiên bản kernel 5.3, tùy chọn PREEMPT_RT đã được bao gồm trong tệp cấu hình để bật chế độ thời gian thực.

Các bit printk cần thiết cho PREEMPT_RT được đặt trong linux-next. Cái này là trở ngại cuối cùng được biết đến đối với PREEMPT_RT. Hàng đợi RT có cũng là "bảng điều khiển nguyên tử" cho UART 8250 chưa có linux-next. Điều này có nghĩa là hành vi của "bàn điều khiển kế thừa" không in từ bối cảnh nguyên tử trong trường hợp khẩn cấp. Bộ điều khiển UART 8250 là bộ điều khiển duy nhất cung cấp hỗ trợ "bảng điều khiển nguyên tử" ngày nay.

tất cả Công việc này sắp có kết quả., vì quá trình tích hợp hoàn toàn các thay đổi cần thiết đã mất 6.12 năm và sắp hoàn thành, vì dự kiến ​​trong phiên bản XNUMX, kernel có thể được biên dịch ở chế độ PREEMPT_RT mà không cần áp dụng các bản vá bổ sung.

Người ta đề cập rằng trở ngại cuối cùng điều khiến PREEMPT_RT không được kích hoạt là do thiếu hỗ trợ đầu ra nguyên tử không chặn bằng chức năng printk. Chức năng này đã có rồi được thông qua trong nhánh linux-next. Ngoài ra, bảng điều khiển nguyên tử không chặn đang chờ triển khai cho bộ điều khiển 8250 UART, việc thiếu bảng điều khiển này hiện ngăn cản việc xuất các thông báo khẩn cấp tới bảng điều khiển từ mã được thực thi trong ngữ cảnh nguyên tử.

Với các bit printk được hợp nhất, PREEMPT_RT có thể được bật trên X86, ARM64 và Risc-V. Ba kiến ​​trúc sáp nhập này đòi hỏi phải thay đổi qua nhiều năm.
năm, khiến tôi rơi vào tình thế không có những thay đổi thiết yếu nào trong
hàng đợi sẽ ảnh hưởng đến họ. ARM và POWERPC còn lại một số bản vá cần thiết…

Nhà phát triển nhân Linux đã công bố việc tích hợp những thay đổi cần thiết mới nhất trong nhánh linux-next, sẽ được sử dụng để biên dịch phiên bản 6.12. Những thay đổi này sẽ cho phép kernel được biên dịch bằng tùy chọn PREEMPT_RT, tùy chọn này giới thiệu các khả năng thời gian thực.

Khi những thay đổi này được chấp nhận trên nhánh chính, chế độ PREEMPT_RT Nó sẽ có sẵn cho các kiến ​​trúc X86, ARM64 và RISC-V. Hỗ trợ cho kiến ​​trúc ARM và POWERPC sẽ được bổ sung sau vì các bản vá cần thiết vẫn chưa được tích hợp đầy đủ.

Điều đáng nói là những thay đổi được đề xuất vẫn chưa phải là cuối cùng và có thể nếu PREEMPT_RT không đến nhánh 6.12, nó sẽ được tích hợp cho đến năm sau trong phiên bản 6.13.

Cuối cùng, nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra các chi tiết trong liên kết theo dõi.