Lập lịch trình

Một phần của tài liệu Nghiên cứu và đánh giá hệ thống điều khiển thời gian thực RTOS (Trang 29 - 30)

RTAI có trình lập lịch không bị giới hạn bởi khả năng của trình lập lịch của Linux chuẩn. Nó cho phép có thể lựa chọn giữa hai trình lập lịch khác nhau, đƣợc thực hiện trong module rtai_sched.ko và rtai_lxrt.ko. Có hai cách chỉ khác nhau ở kiểu của đối tƣợng chúng có thể lập lịch trình trong không gian nhân. Trong không gian ngƣời dùng trình lập lịch các ứng dụng là nhƣ nhau.

Với rtai_sched.ko, Các luồng nhân RTAI chuyên dụng có thể đƣợc lập lịch trình tốt nhƣ bất kỳ đối tƣợng có thể lập lịch trình nào nhƣ tiến trình Linux, luồng Linux và các luồng hạt nhân Linux.

Mục đích của trình lập lịch thời gian thực Linux (LinuX RealTime- LXRT) trong rtai_lxrt.ko là đƣa ra API đối xứng (API giống nhau) của các nhiệm vụ RTAI thời gian thực và các tiến trình Linux. Ứng dụng không gian ngƣời dùng dựa trên API này có thể đơn giản chuyển sang ngữ cảnh thời gian thực cứng bởi lời gọi “rt_make_hard_realtime()”. Về cơ bản, việc sử dụng của LXRT luôn luôn tạo ra luồng hạt nhân có thể đƣợc lập lịch trình bởi trình lập lịch thời gian thực của RTAI. Rõ ràng, đây là điểm tiện lợi lớn khi phát triển các ứng dụng thời gian thực mới. Công cụ gỡ rối không gian ngƣời dùng là sẵn có và trong khi phát triển tiến trình các mã chƣơng trình chạy trong môi trƣờng an toàn. Sau khi đạt tới ổn định các ứng dụng cuối cùng có thể chuyển tới thực hiện nhiệm vụ thời gian thực RTAI rễ ràng bởi sự đối xứng của API LXRT.

Tuy nhiên, khi tạo ra lời gọi hệ thống Linux, ứng dụng không gian ngƣời dùng là di chuyển ngƣợc tới Linux và nằm dƣới trình lập lịch Linux chuẩn. Khi dịch vụ yêu cầu đã đáp ứng đủ, nhiệm vụ lại đƣợc điều khiển trở lại bởi trình lập lịch RTAI. Thay vì, việc API của RTAI có thể đƣợc sử dụng mà không chuyển tới Linux. Vì vậy, sử dụng lời gọi hệ thống POSIX chuẩn sẽ đƣợc tránh bởi vì nhiệm vụ sẽ mất ngữ cảnh thời gian thực.

28

Một phần của tài liệu Nghiên cứu và đánh giá hệ thống điều khiển thời gian thực RTOS (Trang 29 - 30)