RTOS là gì

RTOS là gì?

Khi chúng ta nghe thấy ai đó nhắc tới hệ điều hành (Operating System - OS) thì chúng ta sẽ nghĩ ngay tới chiếc máy tính chạy Windows XP, Windows 7, Windows 8 hay chạy một distro Linux và Android hoặc iOS cho điện thoại. Chúng ta biết đến hệ điều hành chủ yếu là dành cho máy tính. Tuy nhiên trong thực tế, có rất nhiều thiết bị điện tử có chạy một dạng hệ điều hành rút gọn bên trong nó. Bên cạnh đó cũng có rất nhiều loại hệ điều hành được thiết kế cho vi điều khiển. Trong số chúng có một số thuộc họ Hệ điều hành thời gian thực (Real Time Operating System - RTOS), cụm từ thời gian thực ở đây chỉ ra rằng thời gian phản hồi của hệ thống là rất nhanh.

Bạn có thể hiểu như sau:

Vì vậy, RTOS sử dụng trong những ứng dụng yêu cầu thời gian đáp ứng nhanh, chính xác về thời gian. Vi điều khiển có tài nguyên rất giới hạn. Do đó, hệ điều hành này chỉ tập trung vào một số ít các tính năng. Chúng cố gắng tối ưu tối đa số luồng, bộ lập lịch và các tác vụ (task) trên một hệ thống cỡ nhỏ.

Thông thường, RTOS là một phân đoạn hoặc một phần của chương trình, trong đó nó giải quyết việc điều phối các task, lập lịch và phân mức ưu tiên cho task, nắm bắt các thông điệp gửi đi từ task. RTOS khá phức tạp, nói một cách dễ hiểu hơn là nó thực hiện việc xử lý các trạng thái máy (State Machine). Dưới đây là 1 minh hoạ cho bạn dễ hiểu hơn về thứ gọi là trạng thái máy.

while(1)
{
    switch(state)
    {
        case 1: //Code for Task 1;
            state= 2;
        case 2: //Code for Task 2;
            state= 3;
        case 3: //Code for Task 3;
            state= 4;
        case 4: //Code for Task 4;
            state=1;
    }
}

Bạn có thể thấy trong đoạn mã trên, có sự điều chuyển giữa các mệnh lệnh thực thi một cách liên tục. Nó có thể được phát triển và thiết kế phức tạp hơn nữa. Người lập trình có thể thay đổi và sử dụng các lệnh điều kiện (if-else, switch-case…) để chuyển qua lại giữa các task. Do vậy, các luồng chương trình có thể được xác định rõ ràng.

Nhân (kernel) của hệ điều hành giao cho CPU thực hiện việc xử lý các task theo những khoảng thời gian. Nó cũng liên tục kiểm tra mức ưu tiên của các task, xắp xếp các thông điệp từ task và tiến hành lập lịch. Trong một hệ thống chạy RTOS, cũng có các tài nguyên dùng chung cùng với phần được cấp phát riêng cho mỗi task.

Các chức năng cơ bản của một RTOS:

Scheduler

Mỗi task có thể có 3 trạng thái.

Để lập lịch cho Task, có 3 kỹ thuật được áp dụng:

Kernel tiến hành quản lý task ở nhiều giai đoạn. Chúng bao gồm:

RTOS Services (Dịch vụ thời gian thực)

Kernel là trái tim của mỗi hệ điều hành. Nó thực hiện chức năng quản lý và lập lịch các quá trình sử dụng CPU và điều phối tài nguyên. Mỗi task chỉ được thưc thi bởi CPU trong một khoảng thời gian, trong các khoảng thời gian còn lại thì task được quản lý bởi các dịch vụ quản lý của hệ điều hành.

Các dịch vụ của RTOS bao gồm:

Messaging (Các thông điệp)

Các thông điệp sử dụng để trao đổi thông tin giữa các hệ thống khác nhau hoặc giữa các task. Các dịch vụ quản lý thông điệp bao gồm:

Semaphores: Dùng để đồng bộ hóa quyền truy cập vào các tài nguyên dùng chung.

Event Flags: Dùng để đồng bộ hóa các hoạt động cần có sự phối hợp của nhiều task.

Mailboxes, Pipes, Message queues: Dùng để quản lý các thông điệp gửi đi - đến giữa các task.

Các dạng thời gian thực

Một hệ thống có thể chia làm 2 loại thời gian thực dựa vào mức độ trễ - được gọi là thời hạn lập danh mục (scheduling deadline) :

Có hệ thống bao gồm cả 2 loại này.

Hard-realtime and Soft-realtime

Các loại RTOS

Hiện tại có vô vàn hệ điều hành thời gian thực, bạn có thể Google với từ khóa RTOS để tìm hiểu nhiều hơn với từng loại.

Tham khảo Voer, Circuitstoday