wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Ôn Tập Lập Trình Phân Tán

Total questions: 59

Worksheet time: 36mins

Name
Class
Date
1.

Các quy trình trong một hệ thống phân tán với nhiều máy tính ở các vị trí khác nhau giao tiếp với nhau như thế nào?

a)

Không sử dụng mô hình bộ nhớ chia sẻ hoặc truyền tin qua mạng giao tiếp

b)

Sử dụng mô hình bộ nhớ chia sẻ

c)

Sử dụng mô hình truyền tin qua mạng giao tiếp

2.

Những phát biểu nào sau đây đúng khi khái quát về hệ thống phân tán

a)

A. Các tiến trình trong một hệ thống phân tán giao tiếp với nhau bằng cách gửi và nhận thông điệp qua mạng truyền thông

b)

A. Luôn tồn tại tài nguyên toàn cục giữa các tiến trình hoạt động trên các máy tính trong hệ thống phân tán

c)

A. Các tiến trình trong một hệ thống phân tán luôn biết được trạng thái toàn cục của hệ thống tại bất kỳ thời điểm nào

d)

A. Không tồn tại tài nguyên toàn cục giữa các tiến trình hoạt động trên các máy tính trong một hệ thống phân tán

3.

Các luồng (Thread)trong một hệ thống đồng thời dựa trên khóa, chạy trên một máy tính với nhiều bộ xử lý, giao tiếp với nhau như thế nào?

a)

Sử dụng mô hình bộ nhớ chia sẻ

b)

Không sử dụng mô hình bộ nhớ chia sẻ hoặc truyền tin qua mạng giao tiếp

c)

Sử dụng mô hình truyền tin qua mạng giao tiếp

4.

Các sự khác biệt giữa chương trình đồng thời và chương trình tuần tự là gì?

a)

Trong các chương trình đồng thời, nhiều phép tính có thể được thực hiện cùng một lúc, trong khi trong các chương trình tuần tự, chỉ có một phép tính có thể được thực hiện tại một thời điểm

b)

Không có sự khác biệt nào giữa hai loại chương trình này

c)

Các chương trình tuần tự chỉ cho phép một luồng thực thi, trong khi các chương trình đồng thời cho phép nhiều luồng thực thi

d)

Khi chạy một chương trình đồng thời, nhiều kịch bản khác nhau có thể xảy ra, dẫn đến các kết quả khác nhau

5.

Cho một chương trình đồng thời gồm 2 luồng P và Q. Luồng P thực hiện 2 câu lệnh p1 và p2. Luồng Q thực hiện 2 câu lệnh q1 và q2. Những kịch bản ( thứ tự câu lệnh ) nào sau đây KHÔNG THỂ xảy ra khi chương trình thực thi

a)

p1 -> q1 -> p2 -> q2

b)

p1 -> q1 -> p2 -> q2

c)

p1 ->p2 -> q1 -> q2

d)

p1-> q2 -> p2 ->q1

e)

q1 -> p2 -> q2 -> p1

6.

Race condition giữa các luồng trong một chương trình đồng thời dẫn đến hậu quả gì?

a)

A. Tính chính xác của chương trình phụ thuộc vào thời gian thực thi tương đối của các sự kiện

b)

Các giá trị của các biến chia sẻ luôn nhất quán và chính xác khi các luồng cập nhật những biến đó

c)

A. Dữ liệu biến chia sẻ có thể bị mất mát khi các luồng cùng thực hiện việc thay đổi dữ liệu đó

7.

Chương trình Java có bao nhiêu luồng sau khi thực thi?

a)

3

b)

4

c)

2

d)

1

8.

Trong trường hợp nào phương thức Join được sử dụng trong các ngôn ngữ đa luồng?

a)

Khi hai luồng T1, T2 có thể thực thi đồng thời

b)

Khi hai luồng T1, T2 làm việc cùng nhau trên một vấn đề chung

c)

Khi luồng T1 dừng lại và chờ luồng T2 hoàn thành trước khi T1 có thể tiếp tục

9.

Các kết quả nào có thể được tạo ra khi chạy chương trình Java sau đây?

a)

A. T-m T-1 T-2

b)

A. T-2 T-1 T-m

c)

A. T-m T-2 T-1

d)

A. T-1 T-m T-2

e)

A. T-2 T-m T-1

10.

Sau khi cả hai luồng t và u hoàn thành thực hiện các lệnh của chúng, biến chia sẻ counter có thể nhận giá trị nào?

a)

3

b)

1

c)

2

d)

0

11.

Xét thuật toán trong Hình dưới để giải quyết bài toán loại trừ lẫn nhau trong hệ thống đồng thời có 2 luồng cùng hoạt động. Những kịch bản thực thi nào của 4 câu lệnh được đánh dấu màu đỏ, trong 2 phương thức requestCS() sẽ khiến chương trình rơi vào trạng thái khoá chếtdlock?

a)

3 4 2 1

b)

1 2 3 4

c)

1 3 2 4

d)

3 1 2 4

e)

3 1 4 2

12.

Điều gì có thể xảy ra do tình trạng đua của các luồng trong các chương trình đồng thời khi cập nhật dữ liệu/biến chia sẻ?

a)

Gây ra chương trình bị treo

b)

Gây mất mát, hỏng hóc hoặc không nhất quán dữ liệu

c)

Tăng thời gian tính toán của chương trình

13.

Câu 12: Những phát biểu nào sau đây đúng về các phương thức trong interface Lock, dùng để giải quyết bài toán loại trừ lẫn nhau trong một chương trình đồng thời ?

a)

A. Phương thức requestCS() có mục đích kiểm tra điều kiện đi vào khu vực quan trọng của luồng gọi đã được thoả mãn hay chưa

b)

A. Phương thức requestCS() được gọi SAU khi một luồng muốn đi vào khu vực quan trọng

c)

A. Phương thức releaseCS() có mục đích khôi phục / thay đổi trạng thái của hệ thống để cho phép các luồng khác đi vào khu vực quan trọng

d)

A. Phương thức releaseCS() được gọi TRƯỚC khi một luồng đi ra khỏi khu vực quan trọng

14.

Các phát biểu nào là đúng về các phương thức trong giao diện Lock được sử dụng để giải quyết vấn đề loại trừ lẫn nhau trong một chương trình đồng thời?

a)

Phương thức requestCS() được thiết kế để kiểm tra xem điều kiện vào phần vùng quan trọng của luồng gọi đã được thỏa mãn hay chưa.

b)

Phương thức requestCS() được gọi SAU KHI một luồng muốn vào phần vùng quan trọng.

c)

Phương thức releaseCS() được thiết kế để khôi phục/thay đổi trạng thái của hệ thống để cho phép các luồng khác vào phần vùng quan trọng.

d)

Phương thức releaseCS() được gọi TRƯỚC KHI một luồng thoát khỏi phần vùng quan trọng.

15.

 Xét thuật toán trong hình dưới đây để giải quyết bài toán loại trừ lẫn nhau trong một chương trình đồng thời có 2 luồng thực thi

Những kịch bản thực thi nào dưới đây của 4 câu lệnh ( được đánh dấu màu đỏ ), trong 2 phương thức requestCS() , sẽ khiến cho thuật toán nay vi phạm điều kiện loại trừ lẫn nhau, tức cho phép 2 luồng T0 và T1 đều có thể đi vào khu vực quan trọng

a)

1 3 2 4

b)

3 4 1 2

c)

3 1 4 2

d)

3 1 2 4

e)

1 3 4 2

16.

Trong bài toán loại trừ lẫn nhau, đoạn mã quan trọng (CS) của một luồng là gì?

a)

Đoạn mã thực hiện một phép toán quan trọng của luồng

b)

Đoạn mã của luồng được chia sẻ với một luồng khác

c)

A. Phân đoạn mã của luồng cần được thực thi một cách nguyên tử (hay được thực thi một cách trọn vẹn, không bị can thiệp bởi luồng khác)

17.

Xem xét thuật toán trong hình ảnh để giải quyết vấn đề loại trừ lẫn nhau trong một hệ thống đồng thời với 2 luồng hoạt động cùng nhau. Những kịch bản nào là đúng về thứ tự vào phần quan trọng của 2 luồng T0, T1 nếu hệ thống sử dụng thuật toán này?

a)

T1, T0, T1, T0, T1, T0

b)

T0, T1, T1, T0, T0, T1

c)

T1, T1, T1, T0, T0, T0

d)

T0, T1, T0, T1, T0,T1

18.

Các thành phần nào được đề xuất trong cấu trúc đồng bộ hóa semaphore bởi E. Dijkstra?

a)

Hàng đợi chứa các luồng đang thực thi

b)

Phép toán P() được thực hiện một cách nguyên tử: được sử dụng để thêm luồng gọi vào hàng đợi nếu Semaphore không sẵn sàng

c)

Biến giá trị (kiểu boolean hoặc int) để xác định trạng thái của Semaphore

d)

Phép toán V() được thực hiện một cách nguyên tử: được sử dụng để đánh thức bất kỳ luồng nào trong hàng đợi

e)

Hàng đợi các luồng bị chặn/loại trừ khỏi việc thực thi

19.

 Nhược điểm chung của thuật toán Peterson và Bakery khi được sử dụng để giải quyết bài toán loại trừ lẫn nhau trong các chương trình đồng thời là gì ?

A. Sử dụng biến chia sẻ, dẫn đến mất mát dữ liệu

a)

A. Sử dụng biến chia sẻ, dẫn đến mất mát dữ liệu

b)

A. Không có nhược điểm

c)

A. Các luồng phải liêu tục kiểm tra xem điều kiện đi vào khu vực quan trọng đã được thoả mãn hay chưa, thông qua vòng lặp. Điều này dẫn đến lãng phí chu trình CPU

20.

Các thuộc tính nào của thuật toán Peterson cho vấn đề loại trừ lẫn nhau trong các hệ thống đồng thời được thỏa mãn?

a)

Tiến trình: Nếu một hoặc nhiều luồng đang cố gắng vào CS và không có luồng nào đang ở trong CS, ít nhất một trong các luồng sẽ thành công trong việc vào CS

b)

Loại trừ lẫn nhau: Hai luồng không thể ở trong phần quan trọng cùng một lúc

c)

Không bị đói: Nếu một luồng đang cố gắng vào CS, luồng đó phải cuối cùng thành công trong việc vào CS

d)

Có thể hoạt động với bất kỳ số lượng luồng nào lớn hơn 1

21.

Ưu điểm của việc sử dụng cấu trúc đồng bộ như Semaphore, Monitor cho bài toán loại trừ lẫn nhau trong các chương trình đồng thời, so với các thuật toán Peterson, Bakery là gì ?

a)

Giải quyết vấn đề chờ đợi bận, không lãng phí chu kỳ CPU

b)

Chạy chương trình nhanh hơn

c)

Không có lợi thế nào

22.

Trong mã giả của thuật toán Bakery của Lamport cho sự loại trừ lẫn nhau trong các chương trình đồng thời, những câu nào là đúng?

a)

A. Điều kiện để một luồng i đi vào khu vực quan trọng là : 1, không có luồng j # i nào thực hiện bước lấy số và 2, (number[j], j)  > (number[i], i)

b)

Điều kiện để một luồng i cạnh tranh cho phần vùng quan trọng là: 1, không có luồng j # i đang thực hiện bước lấy số và 2, tồn tại k # i sao cho (số[j}, j) < (số[i], i)

c)

Thuật toán chỉ có thể được triển khai trong các chương trình đồng thời với 2 luồng

d)

Thuật toán có thể được triển khai trong các chương trình đồng thời với hơn 1 luồng

23.

Những khác biệt giữa Semaphore Đếm và Semaphore Nhị phân là gì?

a)

Không có thao tác V() trong Semaphore Đếm

b)

Biến giá trị trong Semaphore Đếm có kiểu int, không phải boolean như trong Semaphore Nhị phân

c)

Không có thao tác P() trong Semaphore Đếm

d)

Không có hàng đợi các luồng bị chặn trong Semaphore Đếm

e)

Semaphore Đếm cho phép nhiều luồng trong phần mã quan trọng cùng một lúc, trong khi Semaphore Nhị phân chỉ cho phép 1 luồng trong CS (loại trừ lẫn nhau)

24.

Trong thuật toán của Peterson cho sự loại trừ lẫn nhau, khi nào thì luồng i có thể vào phần vùng quan trọng?

a)

Khi luồng (1 - i) muốn vào phần vùng quan trọng và hiện tại là lượt của luồng (1 - i)

b)

Khi luồng (1 - i) không muốn vào phần vùng quan trọng hoặc hiện tại không phải là lượt của luồng (1 - i)

c)

Chỉ cần đó là lượt của luồng i để vào

d)

Chỉ cần luồng i muốn vào phần vùng quan trọng thì được phép

25.

Trong bài toán sản xuất và tiêu thụ, mục đích của lệnh isEmpty.V() được thực thi bởi luồng Producer là gì?

a)

Đánh thức luồng Consumer để tiếp tục thực hiện công việc nếu nó bị chặn trong hàng đợi Semaphore isEmpty

b)

Đánh thức luồng Producer để tiếp tục thực hiện công việc nếu nó bị chặn trong hàng đợi Semaphore isFull

c)

Khóa luồng Producer

d)

Khóa luồng Consumer

26.

Trong bài toán sản xuất và tiêu thụ, với hai luồng Producer và Consumer hoạt động đồng thời, các điều kiện đồng bộ hóa nào phải được đảm bảo?

a)

Điều kiện đồng bộ hóa khi bộ đệm rỗng, luồng Consumer phải dừng lại

b)

Điều kiện đồng bộ hóa cho phép 2 luồng Producer và Consumer đọc và ghi dữ liệu đồng thời

c)

Điều kiện loại trừ lẫn nhau giữa luồng Producer ghi dữ liệu vào bộ đệm và luồng Consumer đọc dữ liệu từ bộ đệm

d)

Điều kiện đồng bộ hóa khi bộ đệm đầy, luồng Producer phải dừng lại

27.

Trong bài toán đọc và ghi, với n > 1 luồng đọc và m > 1 luồng ghi hoạt động đồng thời, các điều kiện đồng bộ hóa nào phải được đảm bảo?

a)

Ràng buộc Đọc-Ghi: Một luồng đọc và một luồng ghi không thể truy cập cơ sở dữ liệu chia sẻ đồng thời

b)

Ràng buộc Đọc-Đọc: Nhiều luồng đọc có thể truy cập cơ sở dữ liệu chia sẻ đồng thời

c)

Ràng buộc Ghi-Ghi: Hai luồng ghi không thể truy cập cơ sở dữ liệu chia sẻ đồng thời

d)

Ràng buộc Đọc-Đọc: Hai luồng đọc không thể truy cập cơ sở dữ liệu chia sẻ đồng thời

28.

Mục đích của semaphore mutex nhị phân là gì?

a)

Đảm bảo rằng các quá trình ghi và đọc dữ liệu được thực hiện một cách nguyên tử (tức là, loại trừ lẫn nhau)

b)

Khóa luồng Consumer

c)

Khóa luồng Producer

d)

Cho phép các luồng ghi và đọc dữ liệu thực hiện đồng thời

29.

Mục đích của lệnh isFull.V() được thực hiện bởi luồng Consumer là gì?

a)

Khóa luồng Consumer

b)

Khóa luồng Producer

c)

Đánh thức luồng Consumer để tiếp tục công việc của nó nếu nó bị chặn trong hàng đợi semaphore isEmpty

d)

Đánh thức luồng Producer để tiếp tục công việc của nó nếu nó bị chặn trong hàng đợi semaphore isFull

30.

Mục đích của phương thức notify() được gọi bởi luồng Producer là gì?

a)

Đánh thức cả hai luồng Producer và Consumer

b)

Đánh thức luồng Consumer

c)

Đánh thức luồng Producer

d)

Không có mục đích

31.

Xét cài đặt một giải pháp cho bài toán Reader – Writter, sử dụng cấu trúc đồng bộ Semaphore như hình bên dưới.

Mục đích dòng lệnh if (numberReaders == 1) wlock.P() được gọi ở luồng đọc là gì ?

a)

A. Đánh thức luồng đọc bất kì đang bị khoá dậy thực hiện tiếp công việc của nó

b)

A. Nếu đây là luồng đọc đầu tiên muốn đi vào khu vực quan trọng thì sẽ chuyển Semaphore nhị phân wlock sang trạng thái không sẵn sàng để chặn các luồng đọc phía sau đi vào khu vực quan trọng

c)

A. Đánh thức luồng ghi bất kì đang bị khoá dậy thực hiện tiếp công việc của nó

d)

A. Nếu đây là luồng đọc đầu tiên muốn đi vào khu vực quan trọng thì sẽ chuyển semaphore nhị phân wlock sang trạng thái không sẵn sàng để chặn các luồng ghi phía sau đi vào khu vực quan trọng

32.

Xét cài đặt của một giải pháp cho bài toán Người đọc - Người ghi, sử dụng cấu trúc đồng bộ hoá Semaphore, như hình dưới.

Mục đích của dòng lệnh if (numberReaders == 0) wlock.V() được gọi bởi một luồng đọc là

a)

A. Nếu đây là luồng đọc cuối cùng đã thực hiện xong việc đọc CSDL chia sẻ thì luồng đọc này sẽ đánh thức một luồng ghi bất kì đang bị khoá dậy để thực hiện tiếp công việc

b)

A. Khoá một luồng đọc đang muốn vào khu vực quan trọng

c)

A. Khoá một luồng ghi đang muốn vào khu vực quan trọng

d)

A. Nếu đây là luồng đọc cuối cùng đã thực hiện xong việc đọc CSDL chia sẻ thì luồng đọc sẽ đánh thức một luồng đọc bất kì đang bị khoá dạy để thực hiện tiếp công việc

33.

Những phát biểu nào ĐÚNG về việc sử dụng Socket trên giao thức TCP (hoặc Stream Socket) để xây dựng các ứng dụng phân tán?

a)

Các gói tin được truyền theo thứ tự và phải có xác nhận trả lại.

b)

Các quá trình gửi và nhận có thể KHÔNG cần hoạt động vào thời điểm truyền tin.

c)

Các quá trình gửi và nhận phải hoạt động vào thời điểm truyền tin.

d)

Quá trình gửi PHẢI biết địa chỉ IP và cổng của quá trình nhận.

34.

 Những phát biểu nào sau đây đúng khi khái quát về hệ thống phân tán

a)

A. Lập trình Socket CHỈ có thể dựa trên giao thức UDP (Universal Datagram Protocol)

b)

A. Socket gồm có 2 thành phần: Địa chỉ IP và Cổng

c)

A. Socket là một điểm cuối của liên kết truyền thông hai chiều giữa hai tiến trình đang hoạt động trên mạng truyền thông

d)

A. Socket cung cấp một giao diện ở mức thấp cho việc xây dựng các ứng dụng phân tán

35.

4: Những phát biểu nào sau đây là ĐÚNG về việc sử dụng Socket trên giao thức UDP, hay Data Socket, để xây dựng các ứng dụng phân tán ? *

a)

A. Tiến trình nhận, khi chờ nhận dữ liệu từ tiến trình gửi, sẽ bị chặn lại (block) để chờ nhận đủ dữ liệu thì mới được thực thi tiếp

b)

A. Hai tiến trình gửi và nhận có thể KHÔNG cần hoạt động tại thời điểm truyền thông điệp

c)

A. Tiến trình gửi KHÔNG cần phải biết địa chỉ IP và cổng của tiến trình nhận

d)

A. Tiến trình gửi không cần phải đảm bảo thông điệp đến phía tiến trình nhận đầy đủ và đúng thứ tự (i.e., thông điệp gửi đi sau có thể đến trước)

36.

: Những phát biểu nào sau đây là ĐÚNG về việc sử dụng Socket trên giao thức TCP

(hay Stream Socket) để xây dựng các ứng dụng phân tán ? *

a)

A. Các gói tin được truyền đi tuần tự và phải có xác nhận trả về

b)

A. Hai tiến trình gửi và nhận có thể KHÔNG cần hoạt động tại thời điểm truyền thông điệp

c)

A. Hai tiến trình gửi và nhận bắt buộc phải hoạt động tại thời điểm truyền thông điệp

d)

A. Tiến trình gửi PHẢI biết địa chỉ IP và cổng của tiến trình nhận

37.

Các phát biểu nào là ĐÚNG về hai giao thức truyền tải tin nhắn: UDP và TCP?

a)

TCP là một giao thức kết nối đáng tin cậy, có nghĩa là các gói tin không bị mất trong quá trình truyền tải.

b)

TCP KHÔNG đảm bảo thứ tự nhận gói tin như chúng đã được gửi.

c)

Các gói tin được gửi qua giao thức UDP có thể bị mất trong quá trình truyền tải.

d)

Các gói tin được gửi qua giao thức UDP KHÔNG được đảm bảo sẽ được nhận theo thứ tự mà chúng đã được gửi.

38.

Những phát biểu nào sau đây đúng về kỹ thuật RMI ( Remote Method Invocations ) được sử dụng để xây dựng ứng dụng phân tán

a)

A. Hai thành phần đại diện stub và skeleton KHÔNG bắt buộc phải được tạo ra khi thực hiện một lời gọi từ xa

b)

A. Mỗi lời gọi từ xa luôn được thực hiện thông qua 2 thành phần đại diện: stub phía client và skeleton phía server

c)

Kỹ thuật này đòi hỏi phải có 3 kiểu tiến trình: Tiến trình máy khách, Tiến trình máy chủ, RMI Registry

d)

A. Tiến trình gửi không cần biết đến vị trí thực sự của đối tượng từ xa

39.

Nhược điểm của việc sử dụng các kỹ thuật Socket hoặc RMI/RPC để xây dựng các ứng dụng phân tán là gì?

a)

Các kỹ thuật này luôn làm chậm quá trình truyền tải tin nhắn giữa các quá trình gửi và nhận.

b)

Cả hai kỹ thuật đều yêu cầu quá trình gửi phải biết thông tin (địa chỉ IP, cổng) của quá trình nhận để truyền tải.

c)

A. Để thực hiện được quá trình truyền thông, tiến trình gửi và tiến trình nhận bắt buộc phải thực thi tại cùng một thời điểm

d)

A. Thông thường, tiến trình gửi yêu cầu sẽ bị chặn thực thi cho đến khi nhận được kết quả trả về

40.

Các loại hình giao tiếp tin nhắn nào mà MPI hỗ trợ?

a)

Giao tiếp Điểm đến Điểm

b)

A. Truyền thông điệp đa điểm ( Collective communication )

41.

Trong kiến trúc tổng quát của một chương trình MPI, các lệnh thông điệp nằm ở đâu?

a)

Trong khu vực mã tuần tự.

b)

Trong khu vực mã song song, được đánh dấu bởi các lệnh khởi tạo và kết thúc của môi trường MPI.

c)

Trong bất kỳ khu vực nào.

42.

Các phát biểu nào là ĐÚNG về mô hình xảy ra-trước, được ký hiệu bởi →, do Leslie Lamport đề xuất để giải quyết vấn đề đồng bộ hóa đồng hồ trong các hệ thống phân tán?

a)

Trong mô hình đã-xảy-ra-trước, nếu e là sự kiện gửi của một thông điệp và f là sự kiện nhận của cùng thông điệp đó, thì e → f

b)

A. Trong mô hình đã-xảy-ra-trước, nếu e và f là hai sự kiện xảy ra trên cùng một tiến trình và e xảy ra trước f, thì e → f

c)

A. Trong mô hình đã-xảy-ra-trước, các tiến trình luôn biết được thứ tự tổng thể trên tập các sự kiện đã xảy ra trong hệ phân tán

d)

A. Trong mô hình đã-xảy-ra-trước, nếu tồn tại một sự kiện g sao cho e → g, g → f, thì e → f

e)

A. Trong mô hình đã-xảy-ra-trước, các tiến trình chỉ có thể biết được một thứ tự bộ phận trên tập các sự kiện đã xảy ra trong hệ phân tán

43.

Giả sử: P_i là một tiến trình trong hệ thống phân tán; e_i, f_i, g_i biểu thị các sự kiện đã xảy ra trên các tiến trình.

Ký hiệu e → f biểu thị sự kiện e đã xảy ra trước sự kiện f trong mô hình đã-xảy-ra-trước.

Ký hiệu e || f biểu thị sự kiện e xảy ra "đồng thời" với sự kiện f, tức là chúng ta không có đủ

thông tin để kết luận sự kiện nào đã xảy ra trước

Cho sơ đồ tiến trình - thời gian dưới đây, những mối liên hệ giữa các sự kiện nào là chính xác

a)

A. f2 à g2

b)

A. e4 à f4

c)

A. f2 à g4

d)

A. e3 à g4

e)

A. e1 à f4

44.

Những phát biểu nào là ĐÚNG về mô hình truyền thông điệp Xuất bản - Đăng ký

(Publish/Subscribe hay Pub/Sub), được hỗ trợ bởi các nền tảng MOM, như hình minh hoạ dưới

đây ? *

a)

A. Trong mô hình này, một chủ đề (topic), khi đã có trên Messaging Server, sẽ được gửi đến tất cả tiến trình đăng ký chủ đề này

b)

A. Trong mô hình này, một thông điệp chỉ được gửi đến duy nhất một tiến trình nhận

c)

A. Mô hình này cho phép phía gửi và phía nhận có thể không cần hoạt động cùng một thời điểm mà quá trình truyền thông điệp vẫn diễn ra được

d)

A. Trong mô hình này, đôi khi không cần đến thành phần Messaging Server

45.

Những phát biểu nào sau đây là ĐÚNG về MOM (Message-Oriented Middleware) ?

a)

A. Các hệ thống dựa trên MOM cho phép việc truyền thông diễn ra thông qua trao đ hông điệp, i.e., phía gửi và phía nhận có thể không cần hoạt động tại thời điểm truyền thông

b)

A. Để thực hiện được quá trình truyền thông điệp, hai tiến trình gửi và nhận bắt buộc phải thực thi tại cùng một thời điểm

c)

A. Luôn có một thành phần trung gian, thường được gọi là Messaging Server / Broker, để điều phối quá trình gửi và nhận các thông điệp

d)

A. Phía gửi và phía nhận bắt buộc phải biết đến sự tồn tại của nhau (ví dụ: thông tin về địa chỉ IP, cổng, ...) thì quá trình truyền thông điệp mới diễn ra được

46.

Những phát biểu nào là ĐÚNG về mô hình truyền thông điệp Điểm-tới-Điểm
(Point-to-Point), được hỗ trợ bởi các nền tảng MOM, như hình minh hoạ dưới đây?

a)

A. Mô hình này cho phép các tiến trình phía gửi và phía nhận có thể không cần hoạt động cùng một thời điểm mà quá trình truyền thông điệp vẫn diễn ra được

b)

A. Trong mô hình này, cùng một thông điệp có thể được gửi đến nhiều tiến trình nhận

c)

Trong mô hình này, đôi khi không cần đến thành phần Messaging Server

d)

A. Messaging Server sử dụng queue làm nơi lưu trữ. Queue giữ lại các thông điệp cho đến khi tiến trình đích nhận được thông điệp hoặc đến thời gian timout được thiết lập.

e)

A. Trong mô hình này, một thông điệp chỉ được gửi đến duy nhất một tiến trình nhận

47.

Những phát biểu nào sau đây là đúng về thuật toán đồng hồ logic, dùng để lưu vết mối

quan hệ thứ tự giữa các sự kiện đã xảy ra trong một hệ thống phân tán?

Ký hiệu e → f biểu thị sự kiện e xảy ra trước sự kiện f trong mô hình đã-xảy-ra-trước.

a)

A. Kí hiệu C(e), C(f) là hai số nguyên dương được gán cho hai sự kiện e,f đã xảy ra,
nếu C(e) < C(f) thì chúng ta có thể kết luận rằng e -> f

b)

A. Giả sử E là tập các sự kiện đã xảy ra, đồng hồ logic được định nghĩa là một ánh xạ C từ tập E sang tập các số nguyên dương N, sao cho: ∀��,��∈��: �� →��⇒��(��)<��(��)

c)

A. Trong thuật toán này, mỗi sự kiện, hoặc trạng thái, của một tiến trình được gán với một số nguyên dương để biểu thị dấu thời gian của sự kiện, hoặc trạng thái đó

48.

Những phát biểu nào sau đây là đúng về thuật toán đồng hồ vector cho bài toán đồng bộ đồng hồ trong hệ thống phân tán ? với n là số lượng tiến trình trong hệ thống phân tán ?

a)

A. Một đồng hồ vector v là một ánh xạ từ tập trạng thái S đến N^n (vector của các số tự nhiên) với rằng buộc sau: ∀s,t ∈S:s→t ⇒ s.v < t.v à Sai vì phải là dấu 2 chiều

b)

A. Thuật toán đồng hồ vector khắc phục được nhược điểm của thuật toán đồng hồ logic với việc cung cấp thông tin hoàn chỉnh (hai chiều) về mối quan hệ đã-xảy-ra-trước

c)

A. Một đồng hồ vector v là một ánh xạ từ tập trạng thái S đến N^n (vector của các số tự nhiên) với rằng buộc sau: ∀s,t ∈S:s→t ⇔ s.v < t.v

49.

Cho đoạn mã giả sau, cài đặt giải pháp, sử dụng cấu trúc đồng bộ hoá Monitor, cho bài toán

Người đọc - Người ghi, trong đó có n > 2 luồng đọc và m > 2 luồng ghi, cùng tương tác với

cơ sở dữ liệu chia sẻ.

Nếu các khối lệnh cho việc << GHI DỮ LIỆU VÀO DB>> và << ĐỌC DỮ LIỆU TỪ DB>>

được chuyển vào bên trong Monitor (trong khối synchronized) thì điều gì sẽ xảy ra?

a)

Thuật toán vẫn hoạt động đúng, thoả mãn 3 yêu cầu đồng bộ của bài toán Người đọc - Người gh

b)

Việc này cho phép nhiều luồng đọc được thực hiện việc đọc dữ liệu từ cơ sở dữ liệu chia sẻ tại một thời điểm

bất ky

c)

Việc này sẽ chỉ cho phép nhiều nhất một luồng đọc được thực hiện việc đọc dữ liệu từ cơ sở dữ liệu chia sẻ tại

một thời điểm bất kỳ -> không thoả mãn được yêu cầu cho phép nhiều luồng đọc cùng đọc cơ sở dữ liệu chia

sẻ

50.

Những phát biểu nào sau đây là đúng về cấu trúc

đồng bộ hoá Monitor

a)

Monitor KHÔNG hỗ trợ khái niệm biến điều kiện

b)

Mỗi biến điều kiện X, được hỗ trợ bởi monitor, định nghĩa các thao tác như: wait, notify/signal,notifyAll/broadcast

c)

Monitor hướng đối tượng: mỗi đối tượng, trong các ngôn ngữ lập trình hướng đối tượng, mặc định đi kèm với một monitor

d)

Trong một thời điểm, chỉ có nhiều nhất một luồng chiếm giữ monitor (hay "ở bên trong monitor")

e)

Tại một thời điểm, có thể có nhiều hơn 1 luồng chiếm giữ monitor (hay "ở bên trong monitor"

51.

Sự khác nhau giữa hai kiểu monitor (kiểu Hoare và kiểu Mesa), như hình minh hoạ dưới đây, là

g

a)

Với monitor kiểu Mesa (signal-and-continue monitors), khi một luồng đang trong monitor và gọi notify() để đánh thức luồng khác, luồng gọi này sẽ bị tạm dừng và mất quyền chiếm giữ monitor ngay lập tức

b)

Với monitor kiểu Hoarse, các luồng khi được đánh thức dậy sẽ được chuyển sang hàng đợi s; trong khi với

monitor kiểu Mesa, các luồng sau khi được đánh thức dậy sẽ được chuyển về hàng đợi e

c)

Với monitor kiểu Hoare (signal-and-urgent-wait monitors), khi một luồng đang trong monitor và gọi notify() đểđánh thức luồng khác, luồng gọi này sẽ KHÔNG bị mất quyền chiếm giữ monitor ngay, mà nó vẫn tiếp tục công việc của nó cho đến khi hoàn thành và ra khỏi monitor thì luồng được đánh thức lúc này mới có thể chiếm giữ monitor

d)

Không cần thiết phải có hàng đợi s (cho các luồng được đánh thức) trong monitor kiểu Mes

52.

Những phát biểu nào sau đây là đúng về thuật toán đồng hồ phụ-thuộc-trực-tiếp cho bài

toán đồng bộ đồng hồ trong hệ thống phân tán ? với n là số lượng tiến trình trong hệ thống

phân tá

a)

Thuật toán đồng hồ phụ-thuộc-trực-tiếp là một biến thể của thuật toán đồng hồ vector, trong đó mỗi tiến trình gửi vẫn gắn thêm cả vector để gửi cùng với thông điệp

b)

Một đồng hồ phụ thuộc trực tiếp thoả mãn rằng buộc sau: ∀𝑠,𝑡:𝑠.𝑝≠𝑡.𝑝: 𝑠→_𝑑 𝑡 ⇔ 𝑠.𝑣[𝑠.𝑝] ≤ 𝑡.𝑣[𝑠.𝑝

c)

ột đồng hồ phụ thuộc trực tiếp thoả mãn rằng buộc sau: ∀s,t ∈S: s→t ⇔ s.v < t.v

d)

Thuật toán đồng hồ phụ-thuộc-trực-tiếp là một phiên bản yếu hơn của thuật toán đồng hồ vector, trong đó mỗi tiến trình gửi chỉ gắn thêm 1 số nguyên (là phần tử có chỉ số tương ứng với định danh của tiến trình gửi) để gửi cùng với thông điệp

53.

Những phát biểu nào sau đây là đúng về thuật toán đồng hồ ma trận cho bài toán đồng bộ

đồng hồ trong hệ thống phân tán

a)

rong thuật toán này, khi được giá trị đồng hồ W gửi cùng với thông điệp từ một tiến trình khác, tiến trình nhận sẽ tiến hành cập nhật đồng hồ M của nó theo 3 bước: 1) cập nhật các hàng khác với định danh của tiến

trình nhận; 2) cập nhật hàng tương ứng với định danh của tiến trình nhận; 3) cập nhật phần tử có hàng và cột tương ứng với định danh của tiến trình nhậ

b)

Trong thuật toán này, khi gửi thông điệp sang tiến trình khác, một tiến trình sẽ đính kèm với thông điệp một vector, là hàng tương ứng với định danh của tiến trình gửi trong ma trận

c)

Đồng hồ ma trận giúp biểu thị mức độ hiểu biết cao hơn so với đồng hồ vector. Giá trị M[i,j] của tiến trình P_k thể hiện độ hiểu biết của tiến trình P_k về "mức độ hiểu biết của tiến trình P_i về tiến trình P_j".

54.

Những phát biểu nào sau đây là ĐÚNG về Thuật toán của Ricart & Agrawala (RA) cho bài toán truy cập tài nguyên chia sẻ trong hệ phân tán ?

a)

Trong thuật toán này, một tiến trình không phải lúc nào cũng gửi ngược lại một thông điệp okay khi nhận được một yêu cầu đi vào khu vực quan trọng của tiến trình khác

b)

Thuật toán sử dụng 2(N-1) thông điệp cho mỗi lần truy cập khu vực quan trọng, với N là số lượng tiến trình, bao gồm: N-1 thông điệp request, N-1 thông điệp okay*

c)

Thuật toán này KHÔNG thỏa mãn thuộc tính sự sống (liveness), tức là: mỗi yêu cầu đi vào khu vực quan trọng cuối cùng phải được cấp quyền để đi vào khu vực quan trọng

d)

Một tiến trình Pi P_i Pi​ nhận thấy nó có thể đi vào CS nếu Pi P_i Pi​ đã nhận được N−1 N-1 N−1 thông điệp okay từ N−1 N-1 N−1 tiến trình khác đồng ý cho yêu cầu đi vào CS của nó, trong đó N N N là số lượng tiến trình trong hệ thống phân tán

55.

Xét bài toán truy cập tài nguyên chia sẻ, hay bài toán loại trừ lẫn nhau, trong hệ phân tán. Đâu là một số lớp thuật toán, cách tiếp cận, có thể được sử dụng để giải quyết bài toán này ? Với giả thiết không có lỗi trong hệ thống phân tán, các bộ xử lý và liên kết giao tiếp là tin cậy!

a)

Lớp thuật toán sử dụng dấu thời gian, gần với mỗi yêu cầu tài nguyên, để giải quyết xung đột trong việc truy cập tài nguyên chia sẻ

b)

. Lớp thuật toán sử dụng các cấu trúc đồng bộ hóa (như Semaphore, Monitor) để giải quyết xung đột trong việc truy cập tài nguyên chia sẻ

c)

Lớp thuật toán sử dụng tài nguyên phụ, token, để giải quyết xung đột trong việc truy cập tài nguyên chia sẻ. Các thuật toán này phải đảm bảo tại một thời điểm bất kỳ chỉ có một tài nguyên phụ tồn tại trong hệ thống phân tán và chỉ có một tiến trình nắm giữ tài nguyên phụ này

56.

Những phát biểu nào sau đây là ĐÚNG về bài toán truy cập tài nguyên chia sẻ, ha bài toán loại trừ lẫn nhau, trong hệ phân tán ?

a)

Có thể sử dụng Monitor cho bài toán truy cập tài nguyên chia sẻ trong một hệ thống phân tán

b)

Có thể sử dụng các tài nguyên chia sẻ và dùng các vòng lặp (ví dụ: while) để kiểm tra một tiến trình truy cập, điều kiện để vào CS (Critical Section) của tiến trình đó chưa được thỏa mãn

c)

Có thể sử dụng Semaphore cho bài toán truy cập tài nguyên chia sẻ trong một hệ thống phân tán

d)

Do không có tài nguyên toàn cục trong hệ phân tán, nên không thể sử dụng các cấu trúc đồng bộ hóa như Semaphore hoặc Monitor cho bài toán này

57.

Đâu là một số so sánh ĐÚNG giữa thuật toán của Lamport và thuật toán của Ricart-Agrawala (RA) cho bài toán truy cập tài nguyên chia sẻ trong hệ phân tán? *

a)

Thuật toán của RA không thoả mãn thuộc tính công bằng, giống như thuật toán của Lamport.

b)

Thuật toán của RA chỉ sử dụng 2*(N-1) thông điệp cho một lần 1 tiến trình truy cập tài nguyên chia sẻ, thay vì 3*(N-1) thông điệp như trong thuật toán của Lamport. Với N là số lượng tiến trình trong hệ thống phân tân.

c)

Trong thuật toán của BA một tiến trình, khi nhận được thông điệp yêu cầu truy cập tài nguyên chia sẻ, không phải lúc nào cũng gửi thông điệp về cho tiến trình yêu cầu. Với thuật toán của Lamport, tiến trình nhận được yêu cầu sẽ luôn gửi thông điệp xác nhận về cho tiến trình gửi yêu cầu.

d)

Trong thuật toán của RA, điều kiện một tiến trình được truy cập tài nguyên chia sẻ giống với thuật toán của Lamport. Tức là: tiến trình gửi yêu cầu đã nhận được N-1 thông điệp xác nhận từ tất cả các tiến trình khác và yêu cầu của tiến trình này có dấu thời gian là nhỏ nhất trong số các yêu cầu

58.

Những phát biểu nào sau đây là ĐÚNG về Thuật toán của Lamport cho bài toán truy cập tài nguyên chia sẻ trong hệ thống phân tán ? Với giả thiết không có lỗi trong hệ thống phân tán, các bộ xử lý và liên kết giao tiếp là tin cậy !

a)

Một tiến trình Pi nhận thấy nó có thể đi vào CS nếu: vjzi:(q[i],i)<(q[j].j)^(q[i].i) <(v[j].j), trong đô q[i], qj): dấu thời gian của yêu cầu đi vào CS của hai tiến trình P_i, P_j và v[j] là dấu thời gian của thông điệp ack từ tiến trình Pj được ghi nhận ở tiến trình Pi

b)

Một tiến trình Pi nhận thấy nó có thể đi vào CS nếu: vjzi:(q[i],i)<(v[j].j)^(q[i].i) <(q[j].j), trong đô q[i], qj): dấu thời gian của yêu cầu đi vào CS của hai tiến trình P_i, P_j và v[j] là dấu thời gian của thông điệp ack từ tiến trình Pj được ghi nhận ở tiến trình Pi

c)

Thuật toán sử dụng 3*(N-1) thông điệp cho mỗi lần truy cập khu vực quan trọng, với N là số lượng tiến trình, bao gồm: N-1 thông điệp request, N-1 thông điệp ack, N-1 thông điệp release

d)

Thuật toán này thoả mãn thuộc tính An toàn, tức là đảm bảo hai tiến trình không được phép truy cập tài nguyên chia sẻ cùng lúc

Thuật toán đảm bảo rằng các tiến trình đi vào khu vực quan trọng theo thứ tự dấu thời gian của yêu cầu, tức là thoả mãn thuộc tính Công bằng.

e)

Thuật toán KHÔNG thỏa mãn thuộc tính Tiến triển, tức là mỗi yêu cầu đi vào khu vực quan trọng cuối cùng phải được cấp quyền để đi vào khu vực quan trọng Chọn ccacs đáp án đúng

59.

Xét các bước sau trong Thuật toán của Lamport cho bài toán truy cập tài nguyên chia sẻ trong hệ thống phân tán.

(A) Khi một tiến trình P_k nhận được thông điệp request từ tiến trình P_j: P_k lưu yêu cầu này & dấu thời gian của nó trong hàng đợi. Sau đó, P_k gửi ngược lại thông điệp ack (xác nhận), có gắn dấu thời gian, cho P_i

(B) Khi tiến trình P_i muốn đi vào CS: P_i gửi thông điệp request có gần dấu thời gian tới tất cả tiến trình khác. Đồng thời, P_i thêm yêu cầu này, cùng với dấu thời gian, vào trong hàng đợi của Pi

(C) Để giải phóng CS, tiến trình P_i gửi thông điệp release tới tất cả tiến trình khác. Khi một tiến trình P_k nhận được thông điệp release từ P_i, P_k xoá yêu cầu tương ứng của P_i khỏi hàng đợi của P_k

(D) Một tiến trình P_i tự nhận thấy có thể đi vào CS khi và chỉ khi thoả mãn 2 điều kiện sau: 1) P_i đã có yêu cầu trong hàng đợi của P_ỉ với dấu thời gian t nhỏ hơn tất cả các yêu cầu khác đang trong hàng đợi của P_i; 2) P_i đã nhận được thông điệp xác nhận từ tất cả tiến trình khác với dấu thời gian lớn hơn t

a)

A, C, B, D

b)

B, A, C, D

c)

A, B, D, C

d)

B, A, D, C

e)

A, B, C, D