Trắc nghiệm Hệ điều hành Bài 8: Khái niệm tiểu trình(thread) và mô hình đa tiểu trình(multithread) là một trong những đề thi thuộc Chương 2: Quản lý Tiến trình và Đồng bộ hóa trong học phần Hệ điều hành chuyên ngành Công Nghệ Thông Tin cấp độ Đại học. Đây là phần mở đầu quan trọng giúp sinh viên hình thành cái nhìn tổng quan về vai trò, chức năng và tầm quan trọng của hệ điều hành trong một hệ thống máy tính hiện đại.
Trong bài học này, người học cần nắm được các nội dung cốt lõi như: định nghĩa hệ điều hành, chức năng chính của hệ điều hành (quản lý tiến trình, bộ nhớ, thiết bị và hệ thống tệp), phân loại hệ điều hành, cũng như mối quan hệ giữa phần cứng, phần mềm và người dùng thông qua hệ điều hành. Việc hiểu rõ các kiến thức nền tảng này sẽ tạo tiền đề vững chắc cho sinh viên khi tiếp cận các khái niệm chuyên sâu hơn như quản lý tiến trình, xử lý đồng thời, và bảo mật hệ thống.
Hãy cùng Dethitracnghiem.vn tìm hiểu về đề thi này và tham gia làm kiểm tra ngay lập tức!
Trắc nghiệm Hệ điều hành Bài 8: Khái niệm tiểu trình(thread) và mô hình đa tiểu trình(multithread)
Câu 1.Tiểu trình (Thread) là gì?
A. Một chương trình độc lập đang chạy.
B. Một tiến trình con.
C. Một tệp trên đĩa cứng.
D. Một đơn vị thực thi cơ bản trong một tiến trình, chia sẻ không gian địa chỉ và tài nguyên của tiến trình chứa nó.
Câu 2.Sự khác biệt cơ bản giữa Tiến trình (Process) và Tiểu trình (Thread) là gì?
A. Tiến trình nhẹ hơn, Tiểu trình nặng hơn.
B. Tiến trình chia sẻ tài nguyên, Tiểu trình có tài nguyên riêng.
C. Tiến trình có không gian địa chỉ bộ nhớ riêng biệt, Tiểu trình chia sẻ không gian địa chỉ bộ nhớ với các tiểu trình khác cùng tiến trình.
D. Chỉ có Tiến trình mới có thể chạy trên CPU.
Câu 3.Những tài nguyên nào thường được chia sẻ giữa các tiểu trình trong cùng một tiến trình?
A. Con trỏ lệnh (Program Counter).
B. Các thanh ghi CPU.
C. Ngăn xếp (Stack).
D. Mã chương trình, dữ liệu toàn cục, heap.
Câu 4.Những tài nguyên nào thường là riêng biệt cho mỗi tiểu trình?
A. Không gian địa chỉ bộ nhớ.
B. Các biến toàn cục.
C. Các thiết bị I/O được tiến trình mở.
D. Con trỏ lệnh (Program Counter), ngăn xếp (Stack), các thanh ghi CPU.
Câu 5.Mô hình Đa tiểu trình (Multithreading) là gì?
A. Chạy nhiều tiến trình độc lập cùng lúc.
B. Sử dụng nhiều CPU để chạy một chương trình duy nhất.
C. Cho phép một tiến trình có nhiều tiểu trình thực thi đồng thời.
D. Chỉ dành cho các hệ điều hành thời gian thực.
Câu 6.Lợi ích chính của mô hình Đa tiểu trình so với mô hình Đa tiến trình (cho cùng một công việc)?
A. Tính cách ly tốt hơn giữa các đơn vị thực thi.
B. Bảo mật cao hơn.
C. Chi phí tạo và hủy thấp hơn, chuyển đổi ngữ cảnh nhanh hơn, giao tiếp giữa các đơn vị thực thi hiệu quả hơn (qua bộ nhớ chung).
D. Khả năng chịu lỗi cao hơn.
Câu 7.Nhược điểm của mô hình Đa tiểu trình là gì?
A. Tốn nhiều tài nguyên hệ thống hơn Đa tiến trình.
B. Khó tạo và quản lý.
C. Cần cơ chế đồng bộ hóa phức tạp hơn khi các tiểu trình truy cập tài nguyên dùng chung trong không gian địa chỉ chung.
D. Chỉ có thể chạy trên hệ thống đơn CPU.
Câu 8.Trong mô hình User-Level Threads (Tiểu trình mức người dùng), việc quản lý các tiểu trình được thực hiện bởi thành phần nào?
A. Kernel của hệ điều hành.
B. Trình quản lý bộ nhớ.
C. Một thư viện của tiến trình (Thread Library) trong không gian người dùng.
D. Phần cứng CPU.
Câu 9.Ưu điểm của User-Level Threads là gì?
A. Có thể tận dụng tối đa các CPU trong hệ thống đa xử lý.
B. Nếu một tiểu trình bị chặn (blocking), các tiểu trình khác của cùng tiến trình vẫn có thể chạy.
C. Lập lịch bởi kernel rất hiệu quả.
D. Chuyển đổi ngữ cảnh giữa các tiểu trình nhanh chóng vì không cần sự can thiệp của kernel.
Câu 10.Nhược điểm của User-Level Threads là gì?
A. Chi phí tạo và hủy tiểu trình cao.
B. Khó khăn trong việc giao tiếp giữa các tiểu trình.
C. Không thể chia sẻ dữ liệu giữa các tiểu trình.
D. Nếu một tiểu trình gọi lời gọi hệ thống blocking, toàn bộ tiến trình sẽ bị chặn (tất cả các tiểu trình khác cũng bị chặn). Kernel chỉ nhìn thấy tiến trình, không thấy các tiểu trình riêng lẻ.
Câu 11.Trong mô hình Kernel-Level Threads (Tiểu trình mức hạt nhân), việc quản lý các tiểu trình được thực hiện bởi thành phần nào?
A. Thư viện của tiến trình.
B. Ứng dụng người dùng.
C. Kernel của hệ điều hành.
D. Phần cứng thiết bị I/O.
Câu 12.Ưu điểm của Kernel-Level Threads là gì?
A. Chuyển đổi ngữ cảnh nhanh hơn User-Level Threads.
B. Dễ dàng triển khai hơn User-Level Threads.
C. Kernel không cần biết về sự tồn tại của chúng.
D. Nếu một tiểu trình bị chặn, kernel có thể lập lịch cho một tiểu trình khác của cùng hoặc khác tiến trình chạy, tận dụng tốt hệ thống đa xử lý.
Câu 13.Nhược điểm của Kernel-Level Threads là gì?
A. Khó đồng bộ hóa.
B. Không thể chia sẻ tài nguyên.
C. Kích thước ngăn xếp nhỏ hơn.
D. Chi phí tạo và hủy tiểu trình cao hơn, chuyển đổi ngữ cảnh chậm hơn do cần sự can thiệp của kernel (gọi hệ thống).
Câu 14.Mô hình Many-to-One (Nhiều-tới-Một) trong quản lý tiểu trình liên kết như thế nào?
A. Nhiều tiểu trình người dùng được ánh xạ tới nhiều tiểu trình kernel.
B. Một tiểu trình người dùng được ánh xạ tới một tiểu trình kernel.
C. Nhiều tiểu trình người dùng được ánh xạ tới một tiểu trình kernel duy nhất.
D. Kernel không quản lý tiểu trình nào.
Câu 15.Mô hình Many-to-One phù hợp với loại tiểu trình nào?
A. Chỉ Kernel-Level Threads.
B. Cả hai loại.
C. Tiểu trình trong hệ thống phân tán.
D. User-Level Threads.
Câu 16.Mô hình One-to-One (Một-tới-Một) trong quản lý tiểu trình liên kết như thế nào?
A. Nhiều tiểu trình người dùng được ánh xạ tới nhiều tiểu trình kernel.
B. Mỗi tiểu trình người dùng được ánh xạ tới một tiểu trình kernel riêng biệt.
C. Một tiểu trình người dùng được ánh xạ tới một tiểu trình kernel duy nhất.
D. Kernel không quản lý tiểu trình nào.
Câu 17.Ưu điểm của mô hình One-to-One là gì?
A. Chi phí tạo tiểu trình thấp.
B. Cho phép nhiều tiểu trình chạy song song trên hệ thống đa xử lý và không bị chặn toàn bộ tiến trình khi một tiểu trình bị chặn.
C. Không cần sự can thiệp của kernel.
D. Sử dụng ít bộ nhớ hơn.
Câu 18.Nhược điểm của mô hình One-to-One là gì?
A. Khó khăn trong việc đồng bộ hóa.
B. Không thể tận dụng hệ thống đa xử lý.
C. Chuyển đổi ngữ cảnh rất chậm.
D. Chi phí tạo tiểu trình cao hơn do mỗi tiểu trình người dùng cần một tiểu trình kernel tương ứng.
Câu 19.Mô hình Many-to-Many (Nhiều-tới-Nhiều) trong quản lý tiểu trình liên kết như thế nào?
A. Nhiều tiểu trình người dùng được ánh xạ linh hoạt tới một số lượng tiểu trình kernel nhỏ hơn hoặc bằng.
B. Mỗi tiểu trình người dùng được ánh xạ tới một tiểu trình kernel.
C. Một tiểu trình người dùng được ánh xạ tới nhiều tiểu trình kernel.
D. Kernel chỉ quản lý một số ít tiểu trình.
Câu 20.Mô hình Many-to-Many kết hợp những ưu điểm nào?
A. Chỉ ưu điểm của User-Level Threads.
B. Chỉ ưu điểm của Kernel-Level Threads.
C. Khả năng tận dụng đa xử lý nhưng chi phí tạo tiểu trình cao.
D. Linh hoạt: chuyển đổi ngữ cảnh nhanh (giữa các user thread) và có thể chạy song song trên đa xử lý (nhờ kernel thread), tránh bị chặn toàn bộ tiến trình.
Câu 21.Mô hình nào cho phép hệ điều hành “điều chỉnh” số lượng tiểu trình kernel được gán cho một tiến trình dựa trên tải làm việc?
A. One-to-One.
B. Many-to-One.
C. Mô hình Two-Level (kết hợp Many-to-Many với khả năng ánh xạ một số tiểu trình người dùng trực tiếp tới tiểu trình kernel).
D. Chỉ mô hình User-Level.
Câu 22.Trong các ngôn ngữ lập trình hiện đại như Java hoặc C#, khi bạn tạo một đối tượng `Thread`, nó thường được ánh xạ tới loại tiểu trình nào (tùy thuộc vào cài đặt của JVM/CLR và hệ điều hành)?
A. Luôn là User-Level Threads.
B. Luôn là Kernel-Level Threads.
C. Thường là Kernel-Level Threads (hoặc mô hình Two-Level sử dụng Kernel Threads bên dưới) trên các hệ điều hành hiện đại để tận dụng đa xử lý.
D. Luôn chạy như một tiến trình riêng biệt.
Câu 23.Việc sử dụng đa tiểu trình trong các ứng dụng giao diện người dùng (GUI) có lợi ích gì?
A. Giảm dung lượng bộ nhớ.
B. Chỉ cho phép một hành động tại một thời điểm.
C. Giúp giao diện người dùng vẫn phản hồi (responsive) trong khi một tiểu trình khác đang thực hiện các tác vụ tốn thời gian (ví dụ: tải dữ liệu, xử lý phức tạp).
D. Làm cho ứng dụng chạy nhanh hơn trên hệ thống đơn CPU.
Câu 24.Điều gì là cần thiết khi nhiều tiểu trình cùng truy cập và sửa đổi một biến dùng chung?
A. Tạo bản sao riêng cho mỗi tiểu trình.
B. Chỉ cho phép một tiểu trình truy cập tại một thời điểm.
C. Yêu cầu người dùng xác nhận mỗi lần thay đổi.
D. Cơ chế đồng bộ hóa (ví dụ: mutex, semaphore) để tránh Race Condition và đảm bảo tính nhất quán của dữ liệu.
Câu 25.Trạng thái của một tiểu trình (ví dụ: Running, Ready, Waiting) được quản lý bởi thành phần nào?
A. Luôn do thư viện tiểu trình người dùng quản lý.
B. Luôn do kernel quản lý.
C. Tùy thuộc vào mô hình tiểu trình (User-Level Threads do thư viện quản lý, Kernel-Level Threads do kernel quản lý).
D. Do phần cứng quản lý trực tiếp.