[ESP32] Các thuật ngữ trong lập trình đa nhân với FreeRTOS
Lập trình đa nhân là một chủ đề với khá nhiều khái niệm. Để giúp các bạn mới tìm hiểu dễ nắm các khái niệm, bảng dưới đã sắp xếp các khái niệm từ phổ biến đến các khái niệm chuyên ngành cụ thể, và được phân nhóm để dễ dàng tham khảo.
Thuật ngữ | Giải thích | Phân nhóm |
---|---|---|
Task | Một đơn vị thực thi độc lập trong hệ thống đa nhiệm như FreeRTOS. | Cơ bản |
Core | Nhân xử lý trong CPU, ESP32 có hai nhân. | Cơ bản |
Callback | Hàm được truyền như một đối số cho hàm khác, để được thực thi sau khi một sự kiện nào đó xảy ra. | Cơ bản |
Overhead | Chi phí tính toán hoặc bộ nhớ bổ sung do việc triển khai một tính năng hoặc cơ chế nào đó. | Cơ bản |
Đồng bộ hóa | Quá trình điều phối các hoạt động của các tiến trình/luồng để tránh xung đột và đảm bảo tính nhất quán của dữ liệu. | Lập trình đa luồng |
Tài nguyên chia sẻ | Bất kỳ dữ liệu, biến, hoặc thiết bị nào mà nhiều tiến trình/luồng có thể truy cập đồng thời. | Lập trình đa luồng |
Critical Section | Đoạn mã truy cập vào tài nguyên chia sẻ và cần được bảo vệ khỏi truy cập đồng thời. | Lập trình đa luồng |
Race condition | Tình trạng lỗi xảy ra khi nhiều luồng truy cập và thay đổi dữ liệu chia sẻ đồng thời mà không có cơ chế đồng bộ hóa. | Lập trình đa luồng |
Deadlock | Tình trạng khi hai hoặc nhiều task chờ đợi lẫn nhau giải phóng tài nguyên, dẫn đến việc không task nào có thể tiếp tục. | Lập trình đa luồng |
Block | Trạng thái khi một task tạm dừng thực thi để chờ một sự kiện hoặc tài nguyên nào đó. | Lập trình đa luồng |
Mutex | Viết tắt của Mutual Exclusion, là cơ chế đồng bộ hóa để ngăn chặn truy cập đồng thời vào tài nguyên chia sẻ trong lập trình đa luồng. | Cơ chế đồng bộ hóa |
Semaphore | Cơ chế đồng bộ hóa dùng để kiểm soát truy cập vào tài nguyên chia sẻ hoặc đồng bộ hóa giữa các tiến trình/luồng. | Cơ chế đồng bộ hóa |
Binary Semaphore | Loại semaphore chỉ có hai trạng thái (0 hoặc 1), tương tự như mutex nhưng không có khái niệm sở hữu. | Cơ chế đồng bộ hóa |
Counting Semaphore | Loại semaphore có thể có nhiều giá trị, cho phép quản lý một nhóm tài nguyên giới hạn. | Cơ chế đồng bộ hóa |
Lock (Khóa) | Trạng thái của Mutex khi đang được một luồng sở hữu, ngăn các luồng khác truy cập. | Cơ chế đồng bộ hóa |
Unlock (Mở khóa) | Hành động giải phóng Mutex, cho phép các luồng khác có thể chiếm giữ nó. | Cơ chế đồng bộ hóa |
Signaling | Quá trình một tiến trình/luồng thông báo cho tiến trình/luồng khác về một sự kiện nào đó đã xảy ra. | Cơ chế đồng bộ hóa |
Producer-Consumer Problem | Bài toán đồng bộ hóa cổ điển, trong đó một hoặc nhiều producer tạo ra dữ liệu để một hoặc nhiều consumer sử dụng. | Bài toán đồng bộ hóa |
FreeRTOS | Hệ điều hành thời gian thực miễn phí được sử dụng rộng rãi trong các hệ thống nhúng, bao gồm cả ESP32. | Hệ điều hành thời gian thực |
xSemaphoreTake | Hàm FreeRTOS để "lấy" (chiếm giữ) một Semaphore hoặc Mutex. | FreeRTOS API |
xSemaphoreGive | Hàm FreeRTOS để "trả" (giải phóng) một Semaphore hoặc Mutex. | FreeRTOS API |
portMAX_DELAY | Hằng số trong FreeRTOS chỉ định thời gian chờ tối đa (vô hạn) khi thực hiện một hoạt động. | FreeRTOS API |