ntaquan
Gà con
Phần 1: Các khái niệm cơ bản
1. Hệ điều hành (OS)
OS là một phần mềm dùng để điều hành và quản lý tài nguyên và điều phối các hoạt động của hệ thống máy tính, nó có các chức năng sau:
2. Hệ thống thời gian thực
A: non-realtime, B: soft-realtime, C: hard-realtimeHard-realtime: thường là những hệ thống liên quan đến sự an toàn của người dùng, những hệ thống này yêu cầu phải đáp ứng trước deadline. Trễ deadline sẽ dẫn đến thất bại (failure).
Soft-realtime: trễ deadline vẫn có thể chấp nhận được, nhưng chất lượng sẽ giảm, thường được đánh giá bằng QoS.
3. Hệ điều hành thời gian thực (RTOS)
Sử dụng trong các hệ thống cần thời gian đáp ứng nhanh và chính xác.
Sử dụng trong các hệ thống lớn, cần quản lý tài nguyên.
Ưu điểm:
4. Kernel: là một lớp trừu tượng giúp quản lý hoạt động giữa hệ điều hành và phần cứng, là thành phần cốt lõi trong hệ điều hành. Các dịch vụ của kernel bao gồm:
5. Task: chương trình sử dụng RTOS được chia thành những đơn vị nhỏ gọi là task, mỗi task là một hàm. Mỗi task sẽ bao gồm một vòng lặp vô tận và không có câu lệnh trả về.
Kernel sẽ chịu trách nhiệm quản lý các task bằng cách dừng và phục hồi hoạt động của task.
Một chương trình có thể bao gồm nhiều task, vi điều khiển thường chỉ có 1 core nên trong một thời điểm chỉ có đúng 1 task được chạy. Vậy task sẽ có 2 trạng thái Runing và Not running. Trong đó trạng thái Not running còn bao gồm các trạng thái nhỏ hơn:
6. Cấu trúc chương trình nhúng
Simple loop: Chương trình càng lớn, tính realtime càng bị ảnh hưởng.
Loop and ISRs: Chương trình càng lớn, càng khó quản lý (thứ tự ưu tiên các ngắt, chương trình ngắt lớn)
RTOS: Chia chương trình thành các task, chạy tách biệt với nhau. Các ISR thường đóng vai trò quản lý tài nguyên, notify tasks và trigger actions.
7. Multitasking Vs Concurrency
Bằng cách chuyển qua lại giữa các task, nó cho ta cảm giác như các task được chạy một cách đồng thời mặc dù tại một thời điểm chỉ 1 task chạy.
Ngày nay thì đa số là sử dụng vi xử lý đa nhân nên sẽ là real parallelism chứ không còn là concurrency so với vi xử lý đơn nhân nữa.
8. Scheduler: Là một phần của kernel, xác định task nào được phép chạy.
Một số luật cho scheduling:
Cooperative scheduling: Giống với lập trình thông thường, mỗi task chỉ có thể thực thi khi task trước đó thực hiện xong, task có thể dùng hết tất cả tài nguyên của CPU. Nhược điểm là một task có thể làm ‘đứng’ hệ thống (vd max time out, delay).
Round-robin scheduling: Mỗi task được thực hiện trong thời gian định trước (time slice) và không có ưu tiên.
Preemptive scheduling: Các task có mức ưu tiên thấp luôn nhường các task có mức ưu tiên cao hơn thực thi trước.
Tài liệu tham khảo
1. Hệ điều hành (OS)
OS là một phần mềm dùng để điều hành và quản lý tài nguyên và điều phối các hoạt động của hệ thống máy tính, nó có các chức năng sau:
- Allocation of memory
- Power management
- Which process uses the CPU
- When I/O takes place
- Safety and Security Features
2. Hệ thống thời gian thực
A: non-realtime, B: soft-realtime, C: hard-realtime
Soft-realtime: trễ deadline vẫn có thể chấp nhận được, nhưng chất lượng sẽ giảm, thường được đánh giá bằng QoS.
3. Hệ điều hành thời gian thực (RTOS)
Sử dụng trong các hệ thống cần thời gian đáp ứng nhanh và chính xác.
Sử dụng trong các hệ thống lớn, cần quản lý tài nguyên.
Ưu điểm:
- Maintainability/Extensibility
- Code reuse/Easier testing
- Team development
- Improved efficiency
- Power Management
4. Kernel: là một lớp trừu tượng giúp quản lý hoạt động giữa hệ điều hành và phần cứng, là thành phần cốt lõi trong hệ điều hành. Các dịch vụ của kernel bao gồm:
5. Task: chương trình sử dụng RTOS được chia thành những đơn vị nhỏ gọi là task, mỗi task là một hàm. Mỗi task sẽ bao gồm một vòng lặp vô tận và không có câu lệnh trả về.
Kernel sẽ chịu trách nhiệm quản lý các task bằng cách dừng và phục hồi hoạt động của task.
Một chương trình có thể bao gồm nhiều task, vi điều khiển thường chỉ có 1 core nên trong một thời điểm chỉ có đúng 1 task được chạy. Vậy task sẽ có 2 trạng thái Runing và Not running. Trong đó trạng thái Not running còn bao gồm các trạng thái nhỏ hơn:
- RUNNING: executing on the CPU
- READY: ready to be executed
- WAITING / BLOCKED: waiting for an event
- INACTIVE / SUSPENDED: not active
6. Cấu trúc chương trình nhúng
Simple loop: Chương trình càng lớn, tính realtime càng bị ảnh hưởng.
Loop and ISRs: Chương trình càng lớn, càng khó quản lý (thứ tự ưu tiên các ngắt, chương trình ngắt lớn)
RTOS: Chia chương trình thành các task, chạy tách biệt với nhau. Các ISR thường đóng vai trò quản lý tài nguyên, notify tasks và trigger actions.
7. Multitasking Vs Concurrency
Bằng cách chuyển qua lại giữa các task, nó cho ta cảm giác như các task được chạy một cách đồng thời mặc dù tại một thời điểm chỉ 1 task chạy.
8. Scheduler: Là một phần của kernel, xác định task nào được phép chạy.
Một số luật cho scheduling:
Cooperative scheduling: Giống với lập trình thông thường, mỗi task chỉ có thể thực thi khi task trước đó thực hiện xong, task có thể dùng hết tất cả tài nguyên của CPU. Nhược điểm là một task có thể làm ‘đứng’ hệ thống (vd max time out, delay).
Tài liệu tham khảo
- Bài giảng "Thiết kế hệ thống nhúng", bộ môn Điện Tử
- Bài giảng "Lập trình hệ thống nhúng", bộ môn Điện Tử
- Bài giảng "Mạng cảm biến không dây và ứng dụng", bộ môn Viễn Thông
- "Mastering the FreeRTOS Real Time Kernel - A Hands-On Tutorial Guide"
- "Mastering STM32", Carmine Noviello
Last edited: