Hệ điều hành thời gian thực hay với tên gọi quen thuộc mà chúng ta thường hay thấy là RTOS thường được dùng trong những ứng dụng mà tài nguyên hạn chế nhưng có yêu cầu ngặt nghèo về thời gian đáp ứng tức thời, tính sẵn sàng và khả năng tự kiểm soát chính xác.
Để hiểu đơn giản về ứng dụng của RTOS ta có thể hình dung trên máy tính của chúng ta thì có hệ điều hành Windows, Ubuntu, MAC OS,.. thì ở trên ô tô, thiết bị y tế, thiết bị đo lường và điều khiển trong công nghiệp cũng sẽ có một hệ điều hành tương tự là RTOS, nhưng khác ở chỗ là nếu trên Windows chẳng hạn có bị treo máy hay lỗi lầm gì thì ta đều có thể chờ đợi hoặc khởi động lại, nhưng bạn thử nghĩ xem nếu ở ô tô của chúng ta khi di chuyển mà hệ thống tự dưng treo khoảng 5-10 giây thôi thì chắc hết thời gian đó chúng ta đã đi tới miền cực nhọc rồi, cũng tương tự với các hệ thống đo điện tim, các hệ thống trong nhà máy, nếu có sự cố trong tích tắc thì hậu quả để lại là khôn lường.
Vậy RTOS hơn hệ điều hành thông thường ở chỗ nào ? Đó là khả năng tách biệt hoàn toàn với lớp ứng dụng, nếu trong quá trình hoạt động có một chương trình bị sự cố, hoặc hoạt động không chính xác thì RTOS có thể nhanh chóng cô lập chương trình này, kích hoạt các chế độ phục hồi và bảo vệ các chương trình khác, hay chính bản thân hệ điều hành để tránh khỏi hậu quả của các lệnh sai.
Thế là chúng ta đã có thể hình dùng được sơ sơ về RTOS rồi, vậy hiện nay có những loại hệ điều hành thời gian thực nào ?
Open Source
ChibiOS/RT
ChibiOS/RT được thiết kế cho các dòng vi điều khiển từ 8 tới 32 bit, kích thước của kernel khá nhỏ (từ 1.2kb là nhỏ nhất và lớn nhất là 5.5kB) nên nó có thể chạy được dòng vi điều khiển 8bit cũng là 1 điều dễ hiểu.
Tính năng
- Preemptive multithreading
- 128 priority levels
- Round-robin scheduling cho nhiều thread với cùng mức ưu tiên
- Timers mềm
- Đếm semaphores
- Mutexes hỗ trợ thuật toán priority inheritance
- Condition variables
- Synchronous và asynchronous Messages
- Event flags và handlers
- Queues
- Synchronous và asynchronous I/O với timeout
- Thread-safe memory heap and memory pool allocators.
- Hỗ trợ ADC, CAN, GPT (general-purpose timer), EXT, I2C, ICU, MAC, MMC/SD, PAL, PWM, RTC, SDC, Serial, SPI, USB.
- Hỗ trợ LwIP và uIP TCP/IP stacks.
- Hỗ trợ thư viện FatFS.
FreeOSEK
Đây là một hệ điều hành thời gian thực có thể mở rộng dựa trên OSEK-VDX, một tiêu chuẩn được sử dụng hơn một thập kỷ qua trong ngành công nghiệp ô tô. Hệ điều hành này khá phù hợp đối với các hệ thống nhúng đòi hỏi yêu cầu về thời gian thực nhưng có tài nguyên hạn chế, thường thì chỉ cần 2 – 10kB bộ nhớ cho kernel FreeOSEK
FreeRTOS
FreeRTOS được thiết kế phù hợp cho nhiều hệ nhúng nhỏ gọn vì nó chỉ triển khai rất ít các chức năng như: cơ chế quản lý bộ nhớ và tác vụ cơ bản, các hàm API quan trọng cho cơ chế đồng bộ. Nó không cung cấp sẵn các giao tiếp mạng, drivers, hay hệ thống quản lý tệp (file system) như những hệ điều hành khác. Tuy vậy, FreeRTOS có nhiều ưu điểm, hỗ trợ nhiều kiến trúc vi điều khiển khác nhau, kích thước nhỏ gọn, phát triển với nhiều trình biên dịch C khác nhau (GCC, OpenWatcom, Keil, IAR, Eclipse, …), cho phép không giới hạn các tác vụ chạy đồng thời, không hạn chế quyền ưu tiên thực thi, khả năng khai thác phần cứng. Ngoài ra, nó cũng cho phép triển khai các cơ chế điều độ giữa các tiến trình như: queues, counting semaphore, mutexes.
RT-Thread
Đây là hệ điều hành của anh bạn hàng xóm Trung Quốc, tương tự như các hệ điều hành khác, có thêm FinSH shell giúp truy cập các hàm hệ thống cũng như các biến toàn cục thông qua command line, có quản lý File hệ thống, stack protocol TCP/IP và RT-Thread/GUI.
Real-time Linux
Liệu linux có thể realtime không ? Câu trả lời là có, với hệ điều hành Real-time Linux thì việc đưa Linux vào ứng dụng trong công nghiệp tự động là hoàn toàn khả thi.
uClinux
uCllinux là hệ điều hành được sử dụng nhân Linnux được thiết kế cho các hệ thống nhúng sử dụng bộ vi điều khiển không có đơn vị quản lý bộ nhớ. Cách thức hoạt động của nó cũng giống như hệ điều hành linux chạy trên PC, cách thức phát triển các ứng dụng giống như phát triển trên môi trường hệ điều hành Linux. Do đặc tính mở nên chúng ta có thể tùy biến lại phù hợp với hệ thống của mình.
Mbed-rtos
mbed OS được thiết kế dành riêng cho các “thing” trong Internet of Things (IoT). Nó bao gồm tất cả các đặc tính mà bạn cần để thiết kế một sản phẩm dựa trên vi điều khiển ARM Cortex-M.
mbed OS giúp đẩy nhanh quá trình tạo ra sản phẩm bằng cách cung cấp hệ điều hành gồm các nền tảng bảo mật mạnh mẽ, các tiêu chuẩn về truyền thông, cùng với việc quản lý các dịch vụ cloud, các quá trình điều khiển cảm biến và các thiết bị I/O. Ngoài ra nó còn được xây dựng theo kiểu modul, có thể cấu hình được các stack, bỏ được các thành phần không cần thiết để giảm thiểu bộ nhớ.
Contiki
Contiki là hệ điều hành được sử dụng cho các ứng dụng trong các mạng cảm biến không dây. Nó được dùng trong các ứng dụng dự án như giám sát giao thông, theo dõi môi trường, mực nước biển và các ứng dụng trong công nghiệp
Tính năng
- Được chia thành nhiều modul hoạt động độc lập.
- Cơ chế hoạt động điều khiển giảm năng lượng tiêu hao và hạn chế dung lượng bộ nhớ cần sử dụng
- Sử dụng được IP thông qua Internet Protocol Suite (TCP/IP) networking, bao gồm IPv6
- Quản lý năng lượng hiệu quả
- Giao thức tương tác giữa các node trong mạng được thực hiện dễ dàng
- Multitasking kernel
- Protothreads
- Windowing system và GUI
- Có thể hiển thị và điều khiển thông qua Virtual Network Computing
- Có web browser nhỏ nhất thế giới
- Web server cho cá nhân
- Client telnet đơn giản
- Screensaver
RIOT
RIOT phát triển dựa trên cấu trúc microkernel. Ngược với một số hệ điều hành khác như Contiki, RIOT cho phép lập trình ứng dụng với C/C++ và có thể chạy trên vi điều khiển 8-bit (như AVR Atmega), 16-bit (như TI MSP430) và 32-bit (ARM Cortex) processors.
RIOT còn cung cấp rất nhiều network stacks, bao gồm IPv6, 6LoWPAN, hoặc Content centric networking và các tiêu chuẩn như thức như RPL, User Datagram Protocol (UDP), CoAP.
Tính phí
QNX
QNX là một hệ điều hành tí hon được BlackBerry mua lại. Nhưng một điều không phải ai cũng biết là trước khi nó về tay đại gia BB thì đã được ứng dụng trên 200 mẫu xe cao cấp như Audi, Porsche và Jaguar. Nó dựa trên kiến trúc Micro Kernel (vi nhân). Điều này khác biệt với Unix, MacOS và Windows vốn dĩ được xây dựng trên những nhân lớn và nguyên khối.
- QNX cấp riêng vùng nhớ ảo cho mỗi tiến trình (process)
- Mọi thứ trong QNX trừ kernel (nhân) đều là process.
- Tương thích hoàn toàn qui chuẩn API POSIX
- Thiết kế phù hợp cho bộ xử lí đa nhân
VxWorks
Đây là hệ điều hành được đại gia Intel mua lại, được giới thiệu là rất an toàn cho các sản phẩm Internet of Things, được sử dụng bởi NASA và các hãng lớn như ABB, Airbus, Alcatel, Boeing, Mitsubishi, Siemens,…
INTEGRITY
Hệ điều hành đảm bảo được độ an toàn, bảo mật và tin cậy cao của GreenHill Software
- FFS, FAT, NFS, and journaling file systems
- IPv4/IPv6 host và routing networking stacks
- FIPS 140-2 certified Suite B enabled embedded encryption library
- Advanced Layer 3 routing protocols
- web services: HTTPS, SOAP, AJAX, JSON, XML
- Wi-Fi: WPA2, Bluetooth, 3G
- USB host stack, device stack và class drivers
- 2d, 3D, và OpenGL graphics
ThreadX
MicroC/OS2
Hệ điều hành được ứng dụng trong Internet of Things, Công nghiệp, các thiết bị y tế và Không gian.
embOS
Hệ điều hành được ứng dụng trong các thiết bị công nghiệp, thiết bị đo lường và kiểm thử, thiết bị y tế, thiết bị viễn thông và điện tử tiêu dùng.
SafeRTOS
Hệ điều hành chuyên dùng trong công nghiệp, đáp ứng đươc các tiêu chuẩn như IEC 61508, IEC 62304 , FDA 510K
Kết
Tạm thời mình chỉ nói sơ qua về RTOS thế để mọi người nắm được một chút về khái niệm cùng với việc đưa ra một số hệ điều hành thời gian thực miễn phí và tốn phí có trên thị trường để mọi người có cái nhìn tổng quan nhất cũng như có thể lựa chọn một cái phù hợp cho nhu cầu của bản thân và công việc, còn về các thành phần cấu tạo nguyên lý hoạt động,… của RTOS và các vấn đề chuyên sâu chắc xin hẹn mọi người ở một bài khác.