RTOS là gì

·       Dễ dàng hơn trong việc chia sẻ tài nguyên của CPU.

So Sánh “Siêu Vòng Lặp” và đa tác vụ:

Nếu các bạn đã từng viết ứng dụng về nhúng thì chắc hẳn đã quá quen thuộc với kiến trúc của “siêu vòng lặp”. Ở đây, chúng không sử dụng hệ điều hành và cấu trúc khá đơn giản. Sau khi khai báo biến, thư viện, … thì trong hàm main() sau khi đã khởi tạo xong thì thì chúng sẽ thực hiện nhiều tác vụ định kỳ trong vòng lặp while(1) (void loop đối với arduino).

Và tất nhiên đây là cách phổ biến để xây dựng một chương trình, vì nó dễ thực hiễn và gỡ lỗi. Bạn thậm chỉ có thể thêm các ngắt để giúp cho chương trình được

“nuột” hơn.

Nhưng vấn đề chỉ thực sự xảy ra khi có quá nhiều nhiệm vụ cần phải hoàn thành trong 1 thời gian nhất định nhưng vẫn phải “xếp hàng” chờ cho nhiệm vụ trước hoàn thành xong. Đây là lúc mà RTOS có thể ra tay trợ giúp. Thay vì thực hiện mọi thứ tuần tự thì về cơ bản bạn có thể thực hiện mọi thứ gần như đồng thời.

 

Khi sử dụng RTOS thì task vụ vấn bị gián đoạn bởi trình phục vụ ngắt. Sau đó nó vẫn sẽ tiếp tục thực thi task vụ bị ngắt trước đó.

Ở trong FreeRtos thì người ta coi “task” là “thread” nhưng bạn cần phải phân biệt chúng 1 cách rạch ròi:

·       Task: tập hợp các lệnh được tải vào bộ nhớ. Có thể hiểu đơn giản đây là 1 số đơn vị công việc hoặc mục tiêu cần phải hoàn thành.

·       Thread: là 1 đơn vị của CPU với bộ đếm chương trình và bộ nhớ ngăn xếp của riêng nó.

Chốt lại: Có nên sử dụng RTOS không? Câu trả lời là có nếu bạn cần chạy nhiều tác vụ để hoàn thành mục tiêu có đòi hỏi coi về thời gian đáp ứng. Nếu không thì tốt nhất vẫn nên sử dụng cấu trúc “siêu vòng lặp”.

Đặc biệt việc sử dụng RTOS cũng vô cùng có ích trong làm việc nhóm khi ta có thể phân chia 1 vấn đề phức tạp thành các task nhỏ, và mỗi thành viên có thể quản lý 1 số task nhất định để dự án được phát triển đồng thời (nhưng có yêu cầu phải thống nhất về việc giao tiếp giữa các task).

 

About admin

Check Also

Một bộ phim đơn giản nhưng rất ý nghĩa

Một bộ phim đơn giản nhưng rất ý nghĩa

Leave a Reply

Your email address will not be published. Required fields are marked *

Translate »