[ESP32] Các thuật ngữ trong lập trình đa nhân với FreeRTOS

Arduino 25 Th07 2024

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

Tags

Tony Phạm

Là một người thích vọc vạch và tò mò với tất cả các lĩnh vực từ khoa học tự nhiên, lập trình, thiết kế đến ... triết học. Luôn mong muốn chia sẻ những điều thú vị mà bản thân khám phá được.