wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Trắc nghiệm FreeRTOS

Total questions: 25

Worksheet time: 13mins

Name
Class
Date
1.

Câu 1: Trong FreeRTOS, khái niệm "Tác vụ" (Task) được định nghĩa cơ bản là gì?

a)

A. Một chương trình tĩnh được lưu trữ trong bộ nhớ ROM.

b)

B. Một hàm thực hiện một hay nhiều nhiệm vụ chạy liên tục trong vòng lặp vô tận.

c)

C. Một tập hợp các lệnh Assembly được bộ xử lý thực thi tuần tự.

d)

D. Một đơn vị công việc được quản lý bởi Bộ quản lý bộ nhớ MMU.

2.

Câu 2: Khi một tác vụ trong FreeRTOS đang đợi dữ liệu từ một hàng đợi (Queue), nó sẽ chuyển sang trạng thái nào?

a)

A. Trạng thái Sẵn sàng (Ready).

b)

B. Trạng thái Đang thực thi (Running)

c)

C. Trạng thái Bị chặn (Blocked).

d)

D. Trạng thái Trì hoãn (Suspended).

3.

Câu 3: Theo nguyên tắc cơ bản, Hàng đợi (Queue) trong FreeRTOS hoạt động theo cơ chế cấu trúc dữ liệu nào?

a)

A. Last In First Out (LIFO).

b)

B. Last In Last Out (LILO).

c)

C. First In First Out (FIFO)

d)

D. Random Access (Truy cập ngẫu nhiên).

4.

Câu 5: Tác vụ Không tải (Idle Task) trong FreeRTOS luôn được tự động khởi tạo và có mức độ ưu tiên là bao nhiêu?

a)

A. Mức ưu tiên cao nhất (configMAX_PRIORITIES - 1).

b)

B. Mức ưu tiên trung bình.

c)

C. Mức ưu tiên bằng 1

d)

D. Mức ưu tiên thấp nhất (Mức 0).

5.

Câu 6: Trong FreeRTOS, nếu tham số cấu hình configMAX_PRIORITIES được thiết lập bằng N, thì phạm vi mức ưu tiên hợp lệ của tác vụ là gì?

a)

A. Từ 1 đến N

b)

B. Từ 1 đến N−1

c)

C. Từ 0 đến N

d)

D. Từ 0 đến N−1

6.

Câu 7: Khi một tác vụ gọi hàm vTaskDelay(), điều gì xảy ra với tác vụ đó?

a)

A. Tác vụ đó bị xóa khỏi bộ lập lịch.

b)

B. Tác vụ tiếp tục chạy trong một vòng lặp NULL cho đến khi hết thời gian trễ.

c)

C. Tác vụ chuyển vào trạng thái Bị chặn trong một số xác định ngắt tick và không chiếm dụng CPU.

d)

D. Tác vụ chuyển vào trạng thái Trì hoãn và chỉ có thể được khôi phục bởi vTaskResume().

7.

Câu 8: Hai tham số cốt lõi nào là cần thiết khi khởi tạo một hàng đợi bằng hàm xQueueCreate()?

a)

A. Tên hàng đợi và mức ưu tiên tác vụ.

b)

B. Số lượng phần tử tối đa và kích thước của mỗi phần tử tính bằng byte.

c)

C. Kích thước ngăn xếp và số lượng tác vụ truy cập.

d)

D. Con trỏ đến dữ liệu và thời gian khóa.

8.

Câu 10: FreeRTOS sử dụng phương thức nào để lưu trữ dữ liệu trong hàng đợi (Queue)?

a)

A. Truyền tham chiếu (chỉ lưu con trỏ đến dữ liệu).

b)

B. Sao chép dữ liệu (sao chép từng byte dữ liệu vào hàng đợi)

c)

C. Sử dụng bộ nhớ ảo (Virtual Memory)

d)

D. Luôn sử dụng bộ nhớ chia sẻ (Shared Memory).

9.

Câu 11: Trong ngữ cảnh của tác vụ (Task), hàm nào được sử dụng để gửi dữ liệu đến phần đầu (Front) của hàng đợi?

a)

A. xQueueSend()

b)

B. xQueueReceive()

c)

C. xQueueSendToBack()

d)

D. xQueueSendToFront()

10.

Câu 12: Khi một tác vụ bị chuyển từ trạng thái Bị chặn sang trạng thái Sẵn sàng do một sự kiện kích hoạt (ví dụ: nhận được dữ liệu trên hàng đợi), điều kiện nào sẽ khiến tác vụ đó chiếm quyền thực thi ngay lập tức (chuyển sang trạng thái Đang thực thi)?

a)

A. Khi tác vụ đó chờ đợi lâu nhất trong hàng đợi.

b)

B. Khi tác vụ đó có mức ưu tiên cao nhất trong số các tác vụ Sẵn sàng.

c)

C. Khi tác vụ đang chạy gọi hàm taskYIELD()

d)

D. Khi tác vụ đó có cùng mức ưu tiên với tác vụ đang chạy.

11.

Câu 13: Nếu cấu hình bộ lập lịch FreeRTOS sử dụng chế độ Lập lịch ưu tiên trước cố định với lát thời gian (configUSE_TIME_SLICING = 1), và có nhiều tác vụ cùng mức ưu tiên đang ở trạng thái Sẵn sàng, khi nào bộ lập lịch sẽ chọn tác vụ tiếp theo vào trạng thái Đang thực thi (context switch)?

a)

A. Chỉ khi tác vụ đang chạy gọi hàm vTaskDelay()

b)

B. Ở cuối thời điểm của mỗi lát thời gian (tức là mỗi lần ngắt tick).

c)

C. Khi tác vụ có mức ưu tiên cao hơn được tạo ra.

d)

D. Khi tác vụ đang chạy gọi hàm taskENTER_CRITICAL().

12.

Câu 14: Khi sử dụng cờ báo hiệu nhị phân (Binary Semaphore) với mục đích đồng bộ hóa tác vụ với ngắt, tác vụ xử lý trì hoãn sẽ sử dụng hàm nào để chuyển vào trạng thái Bị chặn, đợi sự kiện từ ngắt?

a)

A. xQueueSendToBack()

b)

B. xSemaphoreTake()

c)

C. vTaskDelayUntil()

d)

D. taskENTER_CRITICAL()

13.

Câu 15: Trong FreeRTOS, sau khi một tác vụ được xóa bằng vTaskDelete(), nhiệm vụ dọn dẹp và giải phóng bộ nhớ được cấp phát cho tác vụ bị xóa thuộc trách nhiệm của tác vụ nào?

a)

A. Tác vụ gác cổng (Gatekeeper Task).

b)

B. Tác vụ Nền (Daemon Task)

c)

C. Tác vụ Không tải (Idle Task)

d)

D. Tác vụ chính (main Task)

14.

Câu 17: Hàm nào được sử dụng để chuyển một tác vụ từ bất kỳ trạng thái nào sang trạng thái Trì hoãn (Suspended)?

a)

A. vTaskDelay()

b)

B. vTaskDelete()

c)

C. vTaskSuspend()

d)

D. vTaskResume()

15.

Câu 20: Nếu một tác vụ cố gắng nhận dữ liệu từ một hàng đợi rỗng và đặt tham số xTicksToWait là portMAX_DELAY, điều gì sẽ xảy ra?

a)

A. Tác vụ bị chuyển vào trạng thái Trì hoãn (Suspended).

b)

B. Hàm trả về lỗi errQUEUE_EMPTY ngay lập tức.

c)

C. Tác vụ sẽ chuyển vào trạng thái Bị chặn và chờ đợi dữ liệu trong thời gian không xác định.

d)

D. Tác vụ sẽ bị xóa bởi Idle Task.

16.

Câu 21: Trong chế độ Lập lịch đồng hợp tác (Co-operative Scheduling) của FreeRTOS (configUSE_PREEMPTION = 0), một chuyển đổi ngữ cảnh sẽ chỉ xảy ra khi nào?

a)

A. Khi ngắt tick xảy ra định kỳ

b)

B. Khi có một tác vụ ưu tiên cao hơn chuyển sang trạng thái Sẵn sàng.

c)

C. Khi tác vụ đang chạy chuyển sang trạng thái Bị chặn hoặc gọi hàm taskYIELD()

d)

D. Khi tác vụ đang chạy hết lát thời gian được phân bổ.

17.

Câu 23: Giả sử có hai tác vụ Task A (Ưu tiên P=3) và Task B (Ưu tiên P=3) đều ở trạng thái Sẵn sàng, và bộ lập lịch sử dụng cơ chế ưu tiên trước nhưng KHÔNG sử dụng lát thời gian (configUSE_TIME_SLICING = 0). Nếu Task A đang chạy, Task B sẽ được thực thi khi nào?

a)

A. Ở lần ngắt tick tiếp theo

b)

B. Khi Task A gọi hàm taskYIELD()

c)

C. Khi Task A gọi hàm vTaskDelay() hoặc xQueueReceive() với thời gian chờ khác 0

d)

B và C đều đúng.

18.

Câu 4: Bộ định thời SysTick (System Tick) trong bộ xử lý ARM Cortex-M, khi được sử dụng cùng FreeRTOS, được thiết kế nhằm mục đích chính nào?

a)

A. Điều khiển trực tiếp các ngoại vi GPIO.

b)

B. Cung cấp xung nhịp chuẩn (tick interrupt) cho Hệ điều hành thời gian thực (RTOS)

c)

C. Xử lý các phép tính dấu phẩy động (FPU)

d)

D. Phân bổ vùng nhớ Heap cho các tác vụ mới.

19.

Câu 9: Trong hàm khởi tạo tác vụ xTaskCreate(vTaskFunction, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTaskHandle), tham số usStackDepth (độ dài ngăn xếp) được cung cấp theo đơn vị nào?

a)

A. Byte (byte)

b)

B. Bit (bit)

c)

C. Mili giây (ms)

d)

D. Từ (word) hoặc số lượng mục (items) trong ngăn xếp

20.

Câu 16: Trong hàm xTaskCreate(), tham số đầu ra pxCreatedTaskHandle (Task Handle) kiểu TaskHandle_t * có vai trò gì?

a)

A. Thiết lập mức ưu tiên ban đầu của tác vụ.

b)

B. Lưu trữ con trỏ đến hàm thực thi của tác vụ

c)

C. Cung cấp tham chiếu (Handle) đến TCB của tác vụ, cho phép các tác vụ khác kiểm soát nó (ví dụ: thay đổi ưu tiên, xóa)

d)

D. Xác định kích thước vùng nhớ Heap cho tác vụ.

21.

Câu 18: Khi gọi các hàm gửi/nhận dữ liệu từ hàng đợi như xQueueSend() hoặc xQueueReceive(), tham số xTicksToWait có ý nghĩa gì?

a)

A. Khoảng thời gian (tính bằng tick) mà hàng đợi phải chuyển đổi trạng thái (từ đầy sang rỗng hoặc ngược lại).

b)

B. Khoảng thời gian tối đa (tính bằng tick) mà tác vụ được phép ở trạng thái Bị chặn để chờ đợi hàng đợi sẵn sàng (chỗ trống hoặc dữ liệu)

c)

C. Mức độ ưu tiên tối thiểu của tác vụ gửi/nhận.

d)

D. Khoảng thời gian mà dữ liệu được lưu trữ trong hàng đợi.

22.

Câu 19: Cơ chế Tập Hàng đợi (Queue Set) trong FreeRTOS được sử dụng với mục đích chính nào?

a)

A. Tăng dung lượng bộ nhớ cho một hàng đợi đơn lẻ.

b)

B. Cho phép gửi tin nhắn từ Chương trình phục vụ ngắt (ISR).

c)

C. Cho phép một tác vụ chuyển sang trạng thái Bị chặn để đợi dữ liệu sẵn sàng từ bất kỳ hàng đợi nào trong tập hợp.

d)

D. Cung cấp cơ chế loại trừ lẫn nhau (Mutex) cho nhiều hàng đợi.

23.

Câu 22: Đối với tác vụ chu kỳ Ti​ trong hệ thống thời gian thực, với ei​ là Thời gian thực thi trong trường hợp xấu nhất (WCET), pi​ là Chu kỳ, và Di​ là Thời hạn kết thúc tương đối (Relative Deadline), điều kiện nào phải thỏa mãn để tác vụ được xem là tuân thủ yêu cầu xử lý thời gian thực?

a)

A. ei​>pi

b)

B. ei​=pi​

c)

C. 0<ei​≤Di​≤pi

d)

D. ei​+Di​<pi​.

24.

Câu 24: Điều nào sau đây là thành phần cốt lõi và độc lập mà một Tác vụ (Task) trong FreeRTOS sở hữu, nhưng một Hàm (Function) thông thường khi được gọi thì không có?

a)

A. Mã lệnh thực thi trong bộ nhớ chương trình.

b)

B. Con trỏ lệnh (Program Counter) để theo dõi vị trí thực thi hiện tại.

c)

C. Khối điều khiển tác vụ (TCB) và một ngăn xếp (Stack) riêng biệt để lưu trữ ngữ cảnh.

d)

D. Khả năng sử dụng các thanh ghi CPU.

25.

Câu 25: Trong FreeRTOS, điều gì phải xảy ra khi một Tác vụ (Task) hoàn thành nhiệm vụ và cần chấm dứt thực thi, khác với một Hàm (Function) thông thường?

a)

A. Tác vụ tự động gọi lệnh return để giải phóng CPU

b)

B. Tác vụ tự động chuyển sang trạng thái Bị chặn (Blocked) và đợi bộ lập lịch gán lại công việc.

c)

C. Tác vụ phải được xóa bằng cách gọi hàm vTaskDelete() vì tác vụ không được phép chứa lệnh return

d)

D. Tác vụ tự động chuyển quyền kiểm soát về hàm main() của chương trình.