Sự khác biệt giữa hệ điều hành (OS) cho máy tính cá nhân và hệ thống nhúng (embedded system)

Differences between OSs for Personal Computers and Embedded Systems

 

Hệ thống được điều khiển theo sự kiện (Event-Driven)

Nhấn nút, nhận data, phát hiện sự thay đổi bằng cảm biến,... các trigger khích hoạt quá trình xử lý được gọi là sự kiện (Event).
Trong hệ thống điều khiển, Sự kiện có thể xảy ra bất kì hoặc theo chu kì, một hệ thống mà các xử lý được kích hoạt khi có sự kiện xảy ra được gọi là hệ thống event-driven.

 

Phát hiện sự kiện và kích hoạt xử lý tương ứng.

Sự xuất hiện của 1 sự kiện (event) trong hệ thống điều khiển được biểu hiện về mặt vật lý như sự thay đổi tín hiệu, ví dụ như tạo ra một xung điện thế chẳn hạn.
Có 1 vài cách để vi điều khiển phát hiện ra sự thay đổi tín hiệu:

  • Cách 1 là sử dụng ngắt (interrupt) của vi điều khiển, với cách này, 1 hàm xử lý ngắt sẽ được kích hoạt khi ngắt xảy ra.
  • Cách 2 là viết chương trình để giám sát sự thay đổi của tín hiệu, và gọi hàm xử lý tương ứng khi sự kiện được phát hiện. hoạt động như trên được gọi là polling.
 

Giới hạn thời gian cho mỗi quá trình xử lý sự kiện.

Hầu hết các hệ thống điều khiển, các quá trình xử lý bị giới hạn thời gian. Với mỗi sự kiện yêu cầu một chuỗi (sequence) hoạt động nhập và xuất dữ liệu trong một khoảng thời gian giới hạn.
Toàn bộ hệ thống hoạt động thông qua sự kết hợp của các sequence. Một hệ thống mà có thể đáp ứng được khoản thời gian giới hạn được gọi là hệ thống thời gian thực (real-time system).
Hệ thống Real-time không có nghĩa là hệ thống tốc độ cao, mà là quá trình xử lý phải được hoàn thành trong một khoản thời gian cụ thể.
Độ dài của chu kì xử lý phụ thuộc vào từng mục đích điều khiển, ví dụ vài trăm milliseconds cho tương tác điều khiển con người: nhấn nút, touch màn hình,... 1% giây, cho độ chính xác của đồng hồ. vài milliseconds cho điều khiển phần cứng (relay, output,...)
Quá trình xử lý (processing) nên được chuyển đổi thích hợp tùy thuộc vào từng sự kiện (Event).

 

Hard Real-Time Processing and Soft Real-Time Processing

Có 2 loại giới hạn thời gian (time limit). Một loại ảnh hưởng đến chức năng của hệ thống khi thời gian bị vi phạm, thường là điều khiển phẩn cứng bị giới hạn thời gian trong phát hiện tín hiệu input hoặc output.
và một loại không ảnh hưởng đến hệ thống nếu quá trình xử lý bị delay nhẹ, thường là các bảng điều khiển (man-machine interface) nhưng key và phản hồi của màn hình.
Quá trình xử lý phải tuân thủ nghiêm ngặt giới hạn thời gian được gọi là Hard Real-Time Processing, và các loại xử lý khác được gọi là Soft Real-Time Processing. 
Hệ thống nhúng thông thường có cả Hard Real-Time Processing và Soft Real-Time Processing.

 

Hệ thống điều khiển đa nhiệm

Nhiều hệ thống nhúng trên vi điều khiển cần thực hiện nhiều xử lý sự kiện cùng một lúc, và các sequence đôi khi phải được hoàn thành một cách song song.
Tuy nhiên CPU không thể thực hiện nhiều tập lệnh cùng lúc, Vậy làm thế nào để CPU có thể thực hiện nhiều xử lý cùng lúc ?


Sử dụng thời gian chờ xử lý (Using the processing wait time)

Trong một sequence, có rất nhiều trạng thái đợi, ví dụ đợi input, đợi output hoàn thành, đợi thời gian (TimeOut), hoặc đợi 1 quá trình nào đó được hoàn thành. CPU không làm gì trong thời gian đợi.
Việc phân bổ CPU để xử lý các sự kiện khác trong trạng thái chờ cho phép parallel execution, Đơn vị CPU phân công được gọi là một task và việc thực hiện song song nhiều tiến trình (processing) được gọi là đa nhiệm (Multitasking).
Việc thực thi song song như vậy làm giảm thời gian chờ và tăng thời gian làm việc của CPU.


Chuyển đổi các xử lý một cách định kỳ (Switching processing periodically)

Phương pháp này buộc chuyển đổi nhiệm vụ theo định kỳ ngay cả khi không có trạng thái chờ nào được tạo, và thực hiện song song nhiều tác vụ một cách không liên tục.

 

Xử lý ưu tiên là cần thiết cho các Hard Real-Time Processing

Trong các xử lý Hard Real-Time, thời gian không chính xác có ảnh hưởng nghiêm trọng đến hệ thống (FATAL), với các process quan trọng, các process khác phải đợi đến khi process hiện tại vào trạng thái chờ hoặc cho đến khi thời gian lặp. 
Xử lý ưu tiên là cần thiết để phân bổ thứ tự ưu tiên cho các waiting process. Xử lý ưu tiên này được gọi là priority-based switching
Ngoài ra, process hiện tại có thể tạm dừng để chuyển sang process khác khi cần thiết. Xử lý ưu tiên này được gọi là preemptive switching.

 

Preemptive, priority-based, multitasking real-time OS

Bạn có thể tìm thấy các cụm từ trên trong các tài liệu của các hệ điều hành real-time OS.

Dịch từ bài viết: https://www.tron.org/seminar/on-the-web-seminar/chap-1/

 

Các chủ đề nâng cao về lập trình vi điều khiển (Embedded MCU) các bạn tham khảo tại: Blog - AK Embedded Software

 

Mọi thông tin góp ý về bài viết các bạn gửi về: