Mô tả bài toán QLOCK

Một phần của tài liệu đặc tả và chứng minh tính đúng đắn của thiết kế cho các hệ đa tác tử (Trang 25 - 29)

Ta thấy rằng nhiều tiến trình (agents or processes) tranh quyền sử dụng một tài nguyên, nhưng tại một thời điểm chỉ có duy nhất một tiến trình có thể sử dụng tài nguyên, vì thế mà tất cả các tiến trình phải tuân theo giao thức độc quyền truy xuất (mutual exclusion protocol) trong việc sử dụng tài nguyên.

Trong đó QLOCK là một hệ thống sử dụng giao thức độc quyền truy xuất với một hàng đợi (Queue) dùng chung cho tất cả các tiến trình (processes) thỏa mãn các yêu cầu sau:

-Độc quyền truy xuất: Nếu tiến trình Pi đang sử dụng tài nguyên thì không tiến trình nào được sử dụng , mà phải chờ cho tới khi tiến trình hiện thời kết thúc.

-Tiến trình: Nếu không có tiến trình nào sử dụng tài nguyên và có một số tiến trình muốn dùng thì một tiến trình nào đó phải được dùng.

-Trạng thái ban đầu: Mọi tiến trình không có nhu cầu sử dụng tài nguyên và hàng đợi là rỗng.

19

Hình sau mô tả bài toán Qlock với phương thức độc quyền truy xuất: mỗi bộ xử lý (agent) i bất kỳ thực hiện: đầu tiên mọi tác tử chưa có nhu cầu dùng tài nguyên và được gán nhãn là rm, sau đó khi một tác tử i muốn dùng tài nguyên nó sẽ được đẩy vào hàng đợi ( vào trước ra trước), thì i được gán nhãn là wt, kiểm tra tác tử i có phải ở đỉnh của hàng đợi hay không, nếu đúng thì i được dùng tài nguyên gán nhãn là cs, ngược lại i phải chờ cho đến khi là đỉnh của hàng đợi. Khi i đang dùng tài nguyên, nếu dùng xong hệ thống sẽ tự xóa nó ra khỏi hàng đợi và có nhãn là rm.

Mỗi tiến trình i thực hiện

Sử dụng tài nguyên Đẩy i vào đáy queue

Trạng thái ban đầu

Lấy ra đỉnh queue i là đỉnh queue r m wt cs false True : Atomic action

20

Hình 3.1 Mô tả bài toán Qlock

Trong bài toán QLOCK chúng ta phải sử dụng một hàng đợi để thực hiện phương thức độc quyền truy xuất cho cả hệ thống. Việc tạo ra một hàng đợi với các thuộc tính và phương thức cơ bản của một hàng đợi như chúng ta đã biết, gồm các phương thức put đưa một thành phần vào hàng đợi, phương thức get xóa một thành phần ra khỏi hàng đợi. Hình 3.2 sau mô tả một hàng đợi queue với 3 tiến trình (agent) i, j, k; 2 phương thức top và get; i đang ở đỉnh hàng đợi, j ở đáy hàng đợi.

k k k j k k i k k …… …… i j k put put ge t ge t is i is j : Queue : agents

21

Hình 3.2. View of QLOCK

Tiếp theo hình 3.3 sẽ mô hình hóa bài toán QLOCK trong hệ thống chuyển dịch tổng quan (OTS) bằng biểu đồ ký số (signature diagram), sau đây sẽ mô tả chi tiết hơn các ký số: Sys là kiểu thể hiện không gian trạng thái của hệ thống; Label là kiểu thể hiện nhãn cho mỗi trạng thái, bao gồm: rm, wt, cs; Pid là kiểu thể hiện định danh các tiến trình; Queue là kiểu thể hiện hàng đợi chứa các tiến trình; pc là toán tử trực quan (observer) trả về nhãn của các agent ở trạng thái hiện thời, pc có đầu vào là một trạng thái kiểu Sys và một tiến trình kiểu Pid, đầu ra là kiểu Label; queue: toán tử trực quan (observer) trả về hàng đợi các định danh của tiến trình ở trạng thái hiện thời, queue có đầu vào là một trạng thái kiểu Sys, đầu ra kiểu Queue; init là trạng thái khởi đầu; want là một hành động của việc đưa về trạng thái tiếp theo sau khi thực hiện tiến trình có kiểu Pid với nhãn rm ở trạng thái có kiểu Sys; try là một hành động của việc đưa về trạng thái tiếp theo sau khi thực hiện tiến trình có kiểu Pid với nhãn wt ở trạng thái có kiểu Sys, nếu tiến trình có kiểu Pid có nhãn wt và đang ở đỉnh của hàng đợi thì nhãn của tiến trình đó ở trạng thái tiếp theo là cs; exit là một hành động của việc đưa về trạng thái tiếp theo sau khi thực hiện tiến trình có kiểu Pid vơi nhãn cs ở trạng thái có kiểu Sys.

Label pid want try pc k k k k k k i put get is i

22

Hình 3.3. Mô hình QLOCK với OTS

Một phần của tài liệu đặc tả và chứng minh tính đúng đắn của thiết kế cho các hệ đa tác tử (Trang 25 - 29)