- Realtime Linux đã chính thức trở thành một phần của kernel, nên giờ đây có thể sử dụng "Linux thời gian thực" mà không cần RTOS riêng biệt
- Nếu muốn dùng "Linux thời gian thực" cho thiết bị âm thanh, laser hàn công nghiệp hoặc tàu thăm dò sao Hỏa thì lựa chọn đó đã tồn tại từ lâu (giả sử không dùng các giải pháp thay thế như QNX)
- Các trường đại học đã bắt đầu tự xây dựng kernel thời gian thực của riêng mình từ cuối những năm 1990
- Bộ bản vá PREEMPT_RT đã tồn tại ít nhất từ năm 2005
- Một số khía cạnh của tác vụ thời gian thực như NO_HZ đã được đưa vào kernel mainline từ lâu, nhờ đó có thể dùng trong trung tâm dữ liệu, điện toán đám mây hoặc bất kỳ hệ thống nào có nhiều CPU
PREEMPT_RT được hợp nhất vào mainline
- PREEMPT_RT nhiều khả năng sẽ được hợp nhất vào mainline trong kernel 6.12
- Sự chấp thuận cuối cùng được đưa ra khi Linus Torvalds tham dự Open Source Summit Europe
- Torvalds là người viết mã gốc cho
printk, một công cụ gỡ lỗi có thể xác định chính xác thời điểm tiến trình gặp sự cố nhưng lại tạo ra độ trễ đi ngược với điện toán thời gian thực
- Blog Phoronix đã theo dõi tiến trình đưa PREEMPT_RT vào kernel, cùng với các thay đổi ở
printk để hỗ trợ thread/atomic console, yếu tố quan trọng cho việc mainline hóa thời gian thực
Ảnh hưởng đến Linux desktop? Hầu như không có
- Ngoài các nhu cầu như sản xuất hoặc tái tạo âm thanh cao cấp (mà ngay cả điều đó cũng còn gây tranh cãi), kernel thời gian thực sẽ không làm cửa sổ hay chương trình chạy nhanh hơn
- Tuy nhiên, khả năng bảo đảm thực thi và độ trễ trong trường hợp xấu nhất mà Linux thời gian thực mang lại rất hữu ích cho các hệ thống giám sát phanh ô tô, điều khiển máy CNC và quản lý các hệ thống đa CPU phức tạp
- Việc đưa PREEMPT-RT vào kernel mainline sẽ giúp bảo trì hệ thống thời gian thực dễ dàng hơn, không còn phải quản lý các bản vá ngoài cây mã nguồn
Ảnh hưởng đến các nhà cung cấp giải pháp RTOS chuyên dụng
- Ubuntu đã bắt đầu cung cấp phiên bản phân phối thời gian thực từ năm 2023, nhưng yêu cầu đăng ký Ubuntu Pro
- Ubuntu cung cấp bản phát hành thời gian thực kèm theo các chỉnh sửa, bản vá, tích hợp mô-đun và kiểm thử cho robotics, tự động hóa, embedded Linux và các nhu cầu thời gian thực khác
- Từ nay, cục diện có thể sẽ thay đổi đối với các nhà cung cấp giải pháp RTOS chuyên biệt cho các hệ thống mission-critical
Góc nhìn của Linus Torvalds
- Tại Kernel Summit 2006, Torvalds từng nói: "Điều khiển laser bằng Linux là một ý tưởng điên rồ, nhưng tất cả mọi người trong căn phòng này đều điên theo cách riêng của mình"
- Ông cũng nói: "Nếu bạn muốn dùng Linux để điều khiển laser hàn công nghiệp thì không có vấn đề gì khi dùng PREEMPT_RT"
- Khoảng 18 năm sau, Torvalds, nhóm kernel và Steven Rostedt — người bảo trì lâu năm đồng thời là người thúc đẩy mảng thời gian thực — đã khiến kiểu công việc đó trở nên dễ dàng hơn
Ý kiến của GN⁺
- Việc hợp nhất Linux thời gian thực vào mainline được kỳ vọng sẽ mở rộng hơn nữa phạm vi ứng dụng của Linux và giúp nó được sử dụng trong nhiều lĩnh vực khác nhau
- Đặc biệt, Linux có vẻ sẽ được dùng rộng rãi hơn trong các môi trường công nghiệp, hệ thống nhúng và robotics, nơi tính thời gian thực là yếu tố quan trọng
- Tuy vậy, khi triển khai Linux thời gian thực vẫn cần cân nhắc khả năng tương thích phần cứng, độ ổn định hệ thống và độ khó phát triển
- Các RTOS truyền thống như QNX, VxWorks và INTEGRITY vẫn duy trì sức cạnh tranh trong lĩnh vực này, nên việc lựa chọn phù hợp với từng tình huống vẫn là điều cần thiết
- Khi Linux thời gian thực được đưa vào mainline, hệ sinh thái phát triển được kỳ vọng sẽ sôi động hơn và phạm vi hỗ trợ cho nhiều loại phần cứng, phần mềm cũng sẽ được mở rộng
4 bình luận
Có lẽ bài nên có thêm phần giải thích, dù chỉ ngắn gọn, về hệ điều hành thời gian thực là gì, PREEMPT_RT là gì và nó liên quan thế nào đến hệ điều hành thời gian thực, nhưng tiếc là gần như không có chi tiết nào được nêu ra cả :(
Sự khác biệt chính giữa Linux và Real-Time Operating System (RTOS) nằm ở tính thời gian thực và hành vi quyết định. Sự khác biệt này ảnh hưởng lớn đến ràng buộc thời gian phản hồi và độ chính xác mà hệ thống phải đáp ứng, đồng thời giúp hiểu hệ điều hành nào phù hợp trong từng tình huống.
Linux: Là một hệ điều hành thường dựa trên nhân Linux đã được chỉnh sửa, được sử dụng trên nhiều loại phần cứng nhúng khác nhau. Thân thiện với người dùng và cung cấp nhiều tính năng như mạng, hệ thống tệp, trình điều khiển, v.v., nên phù hợp với các ứng dụng phức tạp.
RTOS (Real-Time Operating System): Là hệ điều hành bảo đảm khả năng phản hồi, trong đó các tác vụ phải được xử lý trong một khoảng thời gian xác định. RTOS chủ yếu được dùng trong các lĩnh vực mà phản hồi thời gian thực là quan trọng, như tự động hóa công nghiệp, thiết bị y tế và hệ thống điều khiển ô tô.
Đặc điểm của Linux
Thời gian phản hồi không mang tính quyết định: Nhân Linux chủ yếu được thiết kế tập trung vào thông lượng và hiệu quả, nên không thể dự đoán chính xác khi nào một tác vụ sẽ được thực thi. Điều này là do bộ lập lịch quản lý các tác vụ với nhiều mức ưu tiên khác nhau, đồng thời bị ảnh hưởng bởi các quy trình phức tạp như tác vụ I/O, quản lý bộ nhớ, v.v.
Hạn chế về preemption (chiếm quyền): Nhân Linux thông thường có cung cấp một số tính năng thời gian thực, nhưng không phải mọi tác vụ trong nhân đều có thể bị ngắt ngay lập tức. Đặc biệt, có những trường hợp nhân không phản hồi với interrupt trong thời gian dài, hoặc các tác vụ khác có thể bị trì hoãn do đang xử lý công việc quan trọng.
Độ biến thiên của latency (độ trễ): Trong môi trường đa nhiệm và với nhiều tác vụ hệ thống khác nhau, độ trễ có thể biến động không đều. Điều này có thể bị ảnh hưởng bởi nhiều yếu tố như xử lý network stack, disk I/O, v.v.
Bản vá thời gian thực (PREEMPT-RT): Để cải thiện khả năng phản hồi thời gian thực, có thể áp dụng bản vá PREEMPT-RT nhằm tăng tính thời gian thực của nhân. Tuy nhiên, nó vẫn không đảm bảo phản hồi có thể dự đoán hoàn toàn như RTOS.
Đặc điểm của RTOS
Thời gian phản hồi mang tính quyết định: RTOS được thiết kế để bảo đảm hoàn thành tác vụ trong một khoảng thời gian xác định. Vì bắt buộc phải thực hiện công việc trong thời gian đã cho, nên phản hồi rất nhất quán và có thể dự đoán được.
Xử lý interrupt tốc độ cao: RTOS xử lý interrupt nhanh và ưu tiên, trong đa số trường hợp sẽ ưu tiên interrupt để có thể xử lý nhanh các tác vụ quan trọng. Điều này đáp ứng các ràng buộc hard real-time.
Nhân nhỏ gọn, tối giản: RTOS chỉ bao gồm các chức năng tối thiểu cần thiết nên rất nhẹ, và việc lập lịch tác vụ rất hiệu quả. Vì vậy tải hệ thống thấp và có thể thực thi công việc theo thời điểm được thiết kế một cách chính xác.
Lập lịch dựa trên mức ưu tiên: Mức ưu tiên của tác vụ được thiết lập rõ ràng, và các công việc có độ ưu tiên cao có thể được xử lý ngay lập tức. Điều này bảo đảm khả năng sử dụng trong các môi trường mission-critical.
Low Latency: RTOS xử lý các tác vụ thời gian thực với độ trễ rất thấp. Phù hợp khi cần phản hồi nhanh ở cấp độ phần cứng.
Đặc tính || Linux RTOS
============================================================
Thời gian phản hồi || Không quyết định, có biến động Quyết định, bảo đảm thời gian phản hồi ổn định
Xử lý ưu tiên || Có mức ưu tiên nhưng không bảo đảm thời gian thực Mức ưu tiên rõ ràng,
|| công việc ưu tiên cao được xử lý trước
Kích thước nhân || Lớn và nhiều tính năng Nhỏ gọn, tối giản
Độ trễ || Bị ảnh hưởng bởi network, disk I/O, v.v. Rất thấp, gần như ổn định
có thể gây trễ
Độ phức tạp hệ thống || Phù hợp chạy ứng dụng phức tạp Phù hợp thực hiện tác vụ thời gian thực đơn giản
Lĩnh vực ứng dụng || Multimedia, network, v.v. Điều khiển công nghiệp, robot, thiết bị y tế, v.v.
|| giao diện người dùng phức tạp
Kết luận
Embedded Linux phù hợp với các hệ thống nhúng cần xử lý mạng, ứng dụng multimedia và giao diện người dùng phức tạp. Khi áp dụng bản vá thời gian thực, hiệu năng thời gian thực có thể được cải thiện ở một mức độ nhất định, nhưng vẫn không mang tính quyết định như RTOS.
RTOS là yếu tố thiết yếu cho các ứng dụng mission-critical mà thời gian là yếu tố quan trọng. Khi cần thời gian phản hồi ổn định, đặc biệt trong các môi trường có ràng buộc thời gian thực như điều khiển phần cứng, robot công nghiệp, hàng không vũ trụ và thiết bị y tế, RTOS sẽ được sử dụng.
Lúc nào cũng đau đầu vì QNX và VxWorks, nhưng giờ thì có vẻ ai cũng sẽ có thể tiếp cận dễ dàng hơn đôi chút.
Ý kiến trên Hacker News
Đây là một thành quả lớn sau nhiều năm nỗ lực
Để thấy hiệu quả của kernel thời gian thực, nên build và chạy tiện ích
cyclictestcyclictestlà công cụ quan trọng khi làm công việc thời gian thực trên LinuxKhông có bộ bản vá RT thì có thể chạy một hoặc hai nhạc cụ với độ trễ 3ms
Chia sẻ trải nghiệm từng cố dùng Linux cho công việc thời gian thực vào giữa những năm 2000
Hỏi liệu có tài liệu tốt nào giải thích cách lập trình thời gian thực được thực hiện như thế nào không
Đặt câu hỏi về nhận xét rằng Torvalds đã viết mã gốc của
printkprintkĐây sẽ là trợ giúp rất lớn cho cộng đồng CNC
Nghĩ điều này rất tuyệt
Thắc mắc về nhược điểm của việc dùng kernel thời gian thực đối với người dùng desktop