Phương pháp nhanh nhất để trao đổi thông tin giữa các tiến trình:
A.
Đường ống
B.
Vùng nhớ chia sẻ
C.
Trao đổi thông điệp
D.
Socket
Đáp án
Đáp án đúng: B
Phương pháp nhanh nhất để trao đổi thông tin giữa các tiến trình là sử dụng vùng nhớ chia sẻ (shared memory). Các phương pháp khác như đường ống (pipe), trao đổi thông điệp (message passing) và socket đều liên quan đến việc sao chép dữ liệu giữa các tiến trình thông qua kernel, làm tăng overhead. Vùng nhớ chia sẻ cho phép các tiến trình truy cập trực tiếp vào cùng một vùng nhớ, loại bỏ nhu cầu sao chép dữ liệu và do đó nhanh hơn.
Phương pháp nhanh nhất để trao đổi thông tin giữa các tiến trình là sử dụng vùng nhớ chia sẻ (shared memory). Các phương pháp khác như đường ống (pipe), trao đổi thông điệp (message passing) và socket đều liên quan đến việc sao chép dữ liệu giữa các tiến trình thông qua kernel, làm tăng overhead. Vùng nhớ chia sẻ cho phép các tiến trình truy cập trực tiếp vào cùng một vùng nhớ, loại bỏ nhu cầu sao chép dữ liệu và do đó nhanh hơn.
Điều kiện "Không có hai tiến trình cùng ở trong miền găng cùng lúc" (mutual exclusion) là một trong bốn điều kiện cần để tránh tình trạng tranh chấp tài nguyên (race condition) trong đồng bộ hóa tiến trình.
* Sử dụng biến cờ hiệu: Giải pháp này có thể vi phạm điều kiện mutual exclusion nếu cả hai tiến trình cùng kiểm tra cờ hiệu và thấy rằng tài nguyên đang sẵn sàng (ví dụ, cả hai cùng thấy cờ hiệu là false), dẫn đến việc cả hai cùng truy cập vào miền găng. Do đó, đáp án A vi phạm điều kiện này. * Sử dụng luân phiên (Alternation): Giải pháp này đảm bảo mutual exclusion, nhưng có thể dẫn đến tình trạng chờ đợi không cần thiết (busy waiting) và chỉ cho phép một tiến trình vào miền găng mỗi lượt. * Giải pháp Peterson: Giải pháp này là một thuật toán cổ điển để giải quyết bài toán mutual exclusion giữa hai tiến trình. Nó đảm bảo mutual exclusion, không có deadlock và không có starvation.
Vì vậy, đáp án A là đáp án đúng nhất vì nó vi phạm điều kiện mutual exclusion.
Trong đồ thị cấp phát tài nguyên, mỗi tiến trình (process) được biểu diễn bằng một hình tròn. Các tài nguyên được biểu diễn bằng hình vuông, và các yêu cầu/cấp phát tài nguyên được biểu diễn bằng các cạnh có hướng.
Thuật toán chọn vùng trống đầu tự do lớn nhất để nạp tiến trình là Worst-fit.
* First-fit: Chọn vùng trống đầu tiên đủ lớn để chứa tiến trình. * Best-fit: Chọn vùng trống nhỏ nhất đủ để chứa tiến trình. Mục tiêu là giảm thiểu không gian bị lãng phí. * Worst-fit: Chọn vùng trống lớn nhất để chứa tiến trình. Mục tiêu là làm cho các vùng trống còn lại có kích thước tương đối đồng đều, hy vọng có thể sử dụng được cho các tiến trình khác sau này.
Địa chỉ ảo được chia thành hai phần: số trang (p) và độ dời (d). Bảng trang (page table) là một mảng, mỗi phần tử của mảng này chứa thông tin về vị trí của trang trong bộ nhớ vật lý. Khi MMU (Memory Management Unit) cần chuyển đổi một địa chỉ ảo thành địa chỉ vật lý, nó sử dụng số trang (p) như một chỉ số để truy cập vào bảng trang. Phần tử thứ p trong bảng trang sẽ chứa số hiệu khung trang (frame number) trong bộ nhớ vật lý, nơi trang p đang được lưu trữ. Sau đó, MMU kết hợp số hiệu khung trang này với độ dời (d) để tạo ra địa chỉ vật lý cuối cùng.
Các lựa chọn khác không đúng vì: - A: "Phần tử thứ d trong bảng trang lưu số hiệu khung trang trong bộ nhớ vật lí đang chứa trang p" là sai. Số trang (p) mới là chỉ số để truy cập bảng trang. - C: "Phần tử thứ p+d trong bảng trang lưu số hiệu khung trang trong bộ nhớ vật lí đang chứa" sai vì không có phần tử p+d nào trong bảng trang. Bảng trang được index bằng số trang p. - D: "Phần tử thứ p trong bảng trang lưu số hiệu khung trang trong bộ nhớ vật lí đang chứa trang p" chính xác, nhưng đáp án B đã mô tả đầy đủ hơn và chính xác hơn về vai trò của p và d.