I. Tổng quan về FreeRTOS
5. So sánh hệ FreeRTOS với hệ điều hành thời gian thực uCOS
Ta so sánh hai hệ điều hành này trên các cơ sở sau:
· Thời gian đáp ứng sau khi gọi ngắt, chuyển ngữ cảnh gữa các task.
· Dung lượng bộ nhớ chương trình khi dịch ra file hex nạp vào chip.
· Lượng RAM cung cấp cho bộ lập lịch, khi tạo task mới, tạo hàng đợi mới, tạo semaphore mới.
Trong ba yếu tố nàyđiểm coi trọng nhất là yếu tố đáp ứng thời gian, sau đó là lượng RAM cần cung cấp cho mỗi hoạt động và cuối cùng là bộ nhớ chương trình. Do hai yếu tố về tài nguyên ta có thể chọn chip phù hợp, còn yếu tố về thời gian là yếu tố phụ thuộc vào bản chất của hệ điều hành. Khác với bộ nhớ chương trình, RAM được cung cấp hạn chế và quy định cho từng tác vụ con bộ nhớ chương trình hầu như là tĩnh và được cung cấp không ngặt nghèo như RAM.
a) Dung lượng bộ nhớ chương trình
Dung lượng bộ nhớ chương trình cho mỗi lõi hệ điều hành tuỳ thuộc vào từng trình dịch khác nhau. Với so sánh này ta dựa trên vi điều khiển PIC18F452 và trình dịch MPLAB C18.
Lõi của FreeRTOS chiếm cỡ 10 KBytes bộ nhớ chương trình. Lõi của uCOS chiếm cỡ KBytes bộ nhớ chương trình.
b) Dung lượng RAM cung cấp
Với dung lượng RAM cung cấp ta có bảng sau:
Mục FreeRTOS (byte) uCOS (byte)
Bộ lập lịch 83
Mỗi task mới 20 (2 byte cho tên) + ngăn xếp Mỗi mức ưu tiên 16
Mỗi hàng đợi 45 + vùng lưu trữ hàng đợi Mỗi semaphore 45
Bảng 6: So sánh lượng RAM cung cấp giữa FreeRTOS và uCOS
c) Thời gian đáp ứng
Ta cần so sánh hai kiểu đáp ứng thời gian chính:
Đáp ứng thời gian khi một task đã thực hiện xong chu kỳ của mình và cho task khác chạy. Các công việc chuyển đổi này gồm 3 bước trung gian
· Bộ lập lịch tìm task tiếp theo để thực hiện
· Chuyển đổi ngữ cảnh
Hình 11: Bảng so sánh thời gian đáp ứng 1
Đáp ứng thời gian khi gọi ngắt trong lúc một task đang thực hiện. Công việc này gồm 4 bước trung gian:
· Thêm task bị ngắt vào danh sách task chờ
· VECTOR phục vụ ngắt, gồm cả việc lưu trữ ngữ cảnh của task đang chạy.
· Kết thúc phục vụ ngắt
· Trong kết thúc phục vụ ngắt cần tìm xem có ngắt nào có mức ưu tiên cao hơn không, nếu có task có mức ưu tiên cao hơn thì chuyển đổi ngữ cảnh, ngược lại cần khôi phục ngữ cảnh.