Sử dụng cùng một chương trình

Một phần của tài liệu Các hệ vi xử lý tiên tiến (Trang 89 - 90)

Có thể dễ dàng phân công công việc cho các tác vụ song song chạy cùng một chương trình nếu chúng ta biết trước các mã định danh (các số nhận dạng) được chỉ định bởi hệ thống. Ví dụ, nếu chúng ta biết các mã định danh của n - 1 workerđang chạy cùng một chương trình lần lượt là 1, 2,.., n -1, thì chúng ta có thể phân công công việc cho các tác vụ này như sau:

switch (my_id){ case 1:

/ * Work assigned to the worker whose id number is 1* / break;

case 2:

/ * Work assigned to the worker whose id number is 2 */ break;

... ... case n -1:

/* Work assigned to the worker whose id number is n – 1*/ break;

default:;}/ * end switch */

Tuy nhiên, một tác vụ trong PVM được gán một số nguyên bất kỳ làm mã định danh của nó. Các tác vụ không nhất thiết phải được nhận dạng bởi các số nguyên 1, 2, 3 v.v., như được thể hiện trong ví dụ nêu trên. Trong phần tiếp theo, chúng ta sẽ chỉ ra cách để khắc phục vấn đề này.

Sử dụng các nhóm tác vụ: Trong phương pháp này, tất cả các tác vụ tham gia vào

một nhóm và các số trường hợp (số phiên bản) được sử dụng như là bộ nhận dạng tác vụ mới. Supervisor là phần tử đầu tiên tham gia vào nhóm và nhận số 0 làm số trường hợp (số phiên bản) của nó. Các workersẽ được nhận được các số trường hợp (số phiên bản) trong phạm vi từ 1 đến n-1.

Dùng mảng Task ID: (mảng nhận dạng tác vụ) trong phương pháp này, Supervisor

gửi một mảng chứa các TID của tất cả các tác vụ cho tất cả các worker. TID của Supervisor được lưu vào các phần tử 0 của mảng, và các TID của các workerđược lưu vào các phần tử từ 1 đến n - 1. Mỗi workertìm kiếm TID cho mình trong mảng nhận được từ Supervisor và có thể sử dụng chỉ số để nhận dạng workertương ứng như được chỉ ra trên hình 8.9.

Một phần của tài liệu Các hệ vi xử lý tiên tiến (Trang 89 - 90)