Title Image

Blog Logo

Core 10. Giới thiệu về RTOS

🌱 Core 10. Giới thiệu về RTOS

    Khác với các hệ điều hành thông thường chạy trên máy tính như Windows hay hệ điều hành dành cho smartphone là Android hay iOS; RTOS là hệ điều hành rút gọn dành cho thiết bị vi điều khiển, đối với STM32 có hỗ trợ chạy hệ điều hành freeRTOS. Trong bài viết này chúng ta sẽ cùng tìm hiểu về khái niệm RTOS và tại sao cần sử dụng nó?

    👉 Đặt vấn đề

    Với những ứng dụng vi điều khiển thông thường, chúng ta đã quen với việc dùng kỹ thuật polling (tức là chạy liên tục trong vòng while(1). Nếu có một sự kiện quan trọng cần thực thi, ta sẽ dùng Interrupt để thực hiện ngay lập tức. Nhưng với những hệ thống có số lượng sự kiện quá nhiều, có quá nhiều tác vụ cần xử lý, thì chúng ta cần xem xét lại với cách xử lý polling + ngắt.

    Mình lấy một ví dụ đơn giản như sau. Một vi điều khiển cần làm những công việc sau:

  • Blink LED với chu kỳ 1s.
  • Đọc cảm biến khí gas để cảnh báo nguy hiểm khi cần. 
  • Đọc nút bấm để điều chỉnh chu kỳ nháy led.

    ➤ Vậy mình sẽ viết chương trình theo thứ tự như sau:

RTOS

    Nhìn vào cách làm trên thì việc đọc cảm biến và cảnh báo có thể bị lỡ, do việc đọc diễn ra 1 lần / 1s. Có thể dẫn đến nguy hiểm. Ở đây mình mới chỉ sử dụng 3 task. Trong các hệ thống lớn số lượng task sẽ lớn hơn rất nhiều, và lượng task cần đảm bảo hoạt động đúng thời gian cho phép (ảnh hưởng đến an toàn người dùng) là rất nhiều. 

    Lập trình vi điều khiển theo cách polling + interrupt thông thường đang không đáp ứng được những yêu cầu đề ra, dẫn đến cần một cơ chế để giúp nó thực hiện cách task đúng thời gian người dùng quy định. Từ đó, người ta sử dụng RTOS. 

    👉 Vậy RTOS là gì?

    RTOS - viết tắt của Real-time Operating System hay hệ điều hành thời gian thực, 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. Thời gian thực ở đây có thể bị hiểu nhầm là thực thi công việc rất nhanh. Nhưng thật ra ở đây nó mang ý nghĩa là thời gian đáp ứng nhanh, đúng như người dùng mong muốn. 

    Ví dụ người dùng muốn hệ thống thực hiện nếu đo được khí gas bị rò thì sẽ gửi cảnh báo sau không quá 0,5s. Thì việc hệ thống đáp ứng sau 0,1s hay 0,4s đều là real-time cả. Trong khi ngay cả nếu người dùng muốn cảnh báo sau không quá 10s, thì việc hệ thống đáp ứng sau 9s, mặc dù con số này khá lớn (coi như là khá chậm) thì vẫn là đáp ứng thời gian thực real-time 😅😅

    👉 So sánh với hệ điều hành thông thường    

    RTOS khác với các hệ điều hành thông thường trong máy tính như window hay linux. Với hệ điều hành thông thường, khi bạn mở ứng dụng lên thì sẽ có nhiều lúc bạn phải chờ khá lâu, hoặc đôi khi ứng dụng lỗi thì chúng ta chỉ cần đóng process rồi chạy lại. Việc chờ đợi như vậy hầu như không ảnh hưởng gì nhiều lắm, chỉ làm người dùng hơi khó chịu thôi.

    Trong khi đó, RTOS được thiết kế ra cho các nhiệm vụ đặc biệt. Các ứng dụng cần được thực thi với thời gian thật chính xác đặt trước, các lỗi phát sinh cần được cô lập và xử lý nhanh chóng. Mọi sự chậm trễ, lỗi phát sinh không lường trước có thể gây lỗi hệ thống, nặng hơn là gây hậu quả nghiêm trọng. 

    Với bộ tài nguyên khá nhỏ của mình, các hệ nhúng (vi điều khiển) sẽ cố gắng thực hiện một số chức năng chính: tối ưu tối đa số luồng, bộ lập lịch và các tác vụ (task). Với việc chỉ có một core, nên việc chạy song song các task là không thể. RTOS sẽ có tính năng lập lịch, để việc thực thi các task gần như là song song, và các task sẽ không cần phải đợi quá lâu để được thực thi. 

    👉 Phân loại RTOS

    Có thể chia RTOS làm 2 loại dựa vào độ trễ: 

  • Hard Real-time: Hệ thống phải thực hiện task trong khoảng thời gian quy định một cách chính xác, việc không tuân thủ thời gian quy định có thể dẫn đến hậu quả nghiêm trọng.
    Ví dụ: Túi khí trên ô tô cần bật lên trong khoảng thời gian nhỏ hơn 0,1s từ khi cảm biến phát hiện xe xảy ra va chạm nguy hiểm. Thì việc hệ thống không đáp ứng thời gian này có thể gây tai nạn nghiêm trọng cho người trên xe. Do đó, task đọc cảm biến và điều khiển túi khí phải yêu cầu là Hard Real-time.
  • Soft Real-Time: Có thể không cần đáp ứng gắt gao về mặt thời gian như Hard Real-time, việc đôi khi vị trễ thời gian với các task này có thể không gây ra hậu quả nghiêm trọng.
    Chẳng hạn, việc bấm nút thì đèn sáng sau không quá 0,5s. Thì việc bị trễ 1 chút cũng sẽ không ảnh hưởng quá nhiều. 
  • Có thể nhiều cách phân loại sẽ thêm Firm Real-time nằm giữa 2 loại trên.
    Với hai đặc điểm trên, có thể thấy Hard Real-time yêu cầu gắt gao về mặt thời gian hơn, nên giá thành (về mặt phần cứng và phần mềm) để thực hiện nó cũng sẽ đắt đỏ hơn. 

RTOS

>>>= Follow ngay =<<<

Để theo dõi những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

                                        

Đăng nhận xét

2 Nhận xét