2.5. Máy hữu hạn trạng thái (Finite State Proces s FSP)
2.5.1. Cú pháp đặc tả trong FSP
Action prefix ((x – > P))[5]: Nếu x là một hành động và P là một tiến
trình thì một action frefix (x – > P) mơ tả một tiến trình trong đó các hành
lenlop giangbai
0 1 2
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
động x hoạt động đúng theo mơ tả của tiến trình P. Tiến trình P phải viết hoa chữ cái đầu, hành động x viết bằng chữ cái thƣờng.
Lựa chọn (Choice)[5]: Nếu x, y là các hành động thì (x – > Q | y – > P)
mơ tả một tiến trình trong đó các hành động đầu tiên tham gia là x hoặc y,các hành động tiếp theo hoạt động theo mô tả của Q nếu hành động đầu tiên xảy ra là x, các hành động tiếp theo hoạt động theo mô tả của P nếu hành động đầu tiên xảy ra là y.
Lập chỉ mục cho các tiến trình và hành động (indexed process and actions): Khi mơ hình các tiến trình và hành động có những trƣờng hợp những tiến trình và hành động đó có rất nhiều giá trị. Ta có thể gán nhãn cho các quy trình và hành động đó và lập chỉ mục cho chúng [5].
Ví dụ: FSP mơ tả hành động vào, ra của 3 chiếc ô tô khi qua 3 cổng của một trạm soát vé:
Gate = (in[1] – > out[1] – > Gate
| in[2] – > out[2] Gate| in[3] – > out[3] – > Gate).
Trong đó Gate là một tiến trình, in, out là các hành động vào ra của các ô tô, [1], [2], [3] là chỉ mục của các hành động in và out tƣơng ứng với 3 chiếc ô tơ vào, ra khi qua cổng sốt vé.
Tham số tiến trình (Process parameters) [5]: khi tiến trình và hành động có
nhiều giá trị thì thay vì đánh chỉ mục, chúng ta có thể tạo tham số để mơ tả tiến trình bằng FSP đƣợc gọn hơn.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Trong ví dụ trên ta có:
const N = 3
Gate = ( in[i:1..N] – > out[i] – > Gate).
Trong đó i:1..N có nghĩa i có giá trị lần lƣợt từ 1 đến N.
Hành động đƣợc đảm bảo (Guarded Action) [5]: thƣờng rất hữu dụng để
định nghĩa các hành động cụ thể nhƣng muốn xảy ra phải thỏa mãn một điều kiện nào đó. Ví dụ mơ tả đám đơng vào thang máy, thang máy cho phép chở 10 ngƣời, nếu số ngƣời quá quy định thì phải ra bớt, ngƣợc lại có thể thêm ngƣời vào vì cịn nhiều ngƣời đang chờ đƣợc vào:
Count(N=10) = Count[1],
Count[i:1..N] = (when(i<N) enter – > Count[i+1] | when(i>N) out – > Count[i-1]).
Hành động đƣợc đảm bảo bởi “when” đảm bảo cho thang máy hoạt động đúng công suất. Khi số ngƣời quá quy định thì phải ra ngoài bớt, khi số ngƣời trong thang chƣa tới giới hạn thì có thể tiếp tục vào.
Alphabet của tiến trình (Process Alphabet)[web2]: Alphabet của một
tiến trình là một tập hợp tất cả cách hành động mà nó có thể tham gia. Ta lấy một ví dụ định nghĩa WRITE sử dụng write[1] và write[3]:
WRITER = (write[1] – >write[3] – >WRITER) +{write[0..3]}.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 2.5.2. Quy trình tuần tự
Các tiến trình trong FSP đƣợc chia làm 3 loại [web2]:
- Các tiến trình cục bộ (local process) đƣợc định nghĩa là một trạng thái trong một tiến trình cơ bản.
- Tiến trình cơ bản (primitive process) đƣợc xác định bởi tập hợp các tiến trình cục bộ. Một tiến trình cục bộ đƣợc xác định bằng cách sử dụng STOP, ERROR, tiền hành động (Action prefix) và lựa chọn (choice).
- Tiến trình tuần tự (sequential process) là một tiến trình có thể kết thúc. Một tiến trình có thể kết thúc nếu một tiến trình cục bộ END có thể đƣợc với tới từ trạng thái bắt đầu của nó.
- Tiến trình cục bộ END: Tiến trình cục bộ END biểu thị trạng thái mà tiến trình kết thúc thành cơng. Một tiến trình đúng đắn khi khơng có hành động nào tiếp theo xảy ra sau END. Về mặt ngữ nghĩa nó tƣơng tự nhƣ STOP. Tuy nhiên, STOP là một trạng thái mà tiến trình tạm ngƣng quá sớm, thƣờng là do deadlock. STOP đƣợc sử dụng khi ta muốn kết thúc một tiến trình. Ví dụ sau mơ tả tiến trình hẹn giờ một quả bom:
Hình 2.6.Máy trạng thái biểu diễn tiến trình tuần tự BOMP.
Trong đó, BOMB, E lần lƣợt là các trạng thái đầu và kết thúc. tick là các hành động đếm thời gian, bang biểu diễn hành động nổ bom.
Sự tổng hợp các tiến trình tuần tự: Nếu Q là một tiến trình tuần tự, P là một tiến trình cục bộ, sau đó P;Q biểu diễn cho sự tổng hợp tuần tự nhƣ vậy khi P kết thúc, P;Q sẽ trở thành tiến trình Q.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Nếu chúng ta định nghĩa tiến trình SKIP = END then P; SKIP ≡ P and SKIP; P ≡ P. Một sự tổng hợp tuần tự trong FSP ln ln có dạng: SP1;SP2;….;SPn;LP (Local Process)
Nơi SP1;…;SPn là sự tổng hợp tuần tự và LP là tiến trình cục bộ. Một sự tổng hợp tuần tự có thể xuất hiện ở bất cứ chỗ nào trong định nghĩa của một tiến trình cơ bản mà một tiến trình cục bộ tham chiếu đến có thể xuất hiện.
Ví dụ tiến trình P123 và LOOP:
Hình 2.7.Máy trạng thái biểu diễn sự tổng hợpcủa tiến trình tuần tự LOOP.
Sự tổng hợp song song các tiến trình tuần tự: Sự tổng hợp song song SP1 || SP2 của hai tiến trình tuần tự SP1 và SP2 kết thúc khi cả hai tiến trình cùng kết thúc. Nếu kết thúc có thể tới đƣợc trong SP1 || SP2 thì nó là tiến trình tuần tự.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 2.8 biểu diễn một ví dụ về sự tổng hợp song song của tiến trình tuần tự:
Hình 2.8. Máy trạng thái biểu diễn sự tổng hợp song song
củahai tiến trình tuần tự.
Trong đó S và P (S| |P) là sự tổng hợp song song của hai tiến trình tuần tự vì trạng thái kết thúc E có thể tới đƣợc trong các tiến trình S và P.
2.5.3. Cơng cụ kiểm chứng LTSA
LTSA (Labeled Transision System Analyser - LTSA)là công cụ kiểm chứng tự động tính thỏa mãn của các thuộc tính của một mơ hình tƣơng tranh cho trƣớc. Một cách cụ thể, từ đặc tả thiết kế của hệ thống cần kiểm chứng, chúng ta biểu diễn hệ thống dƣới dạng các tiến trình thành phần và cần đặc tả hình thức chúng bằng các máy hữu hạn trạng thái (Finite State Processess - FSP). Các tiến trình này sẽ đƣợc cơng cụ LTSA tự động chuyển thành hệ thống chuyển trạng thái có gán nhãn LTS (Labeled Transision System) tƣơng ứng. Các thuộc tính cần kiểm chứng của hệ thống cũng đƣợc đặc tả một cách tƣơng tự. Sử dụng toán tử ghép nối song song (ký hiệu “||”) để ghép nối các thành phần với nhau để thu đƣợc mơ hình của tồn bộ hệ thống. Công cụ
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
LTSA sẽ tự động ghép nối mơ hình này với thuộc tính cần kiểm chứng để kiểm tra liệu mơ hình có vi phạm thuộc tính cần kiểm chứng khơng [3].
2.6. Kết luận
Trong chƣơng này luận văn trình bày một số kiến thức cơ sở để đặc tả và kiểm chứng một số bài toán tƣơng tranh. Mục 2.1. giới thiệu phƣơng pháp kiểm chứng mơ hình. Các nghiên cứu và tìm hiểu của luận văn đƣợc thực hiện theo phƣơng pháp kiểm chứng này. Mục 2.2. giới thiệu các thành phần cơ bản, kiến trúc tổng quát, công cụ kiểm chứng mơ hình theo phƣơng pháp Event-B.
Trong mục 2.3. trình bày mơ hình máy hữu hạn trạng thái FSP và công cụ LTSA. Các phƣơng pháp và công cụ này đƣợc sử dụng để kiểm chứng một số bài tốn tƣơng tranh đã đƣợc trình bày trong chƣơng 1.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
CHƢƠNG 3
MộT Số Kỹ THUậT ĐặC Tả VÀ KIểM CHứNG BÀI TOÁN TƢƠNG TRANH
Trong chƣơng này, luận văn trình bày một số kỹ thuật đặc tả và kiểm chứng tự động một số bài tốn tƣơng tranh trong chƣơng 1. Trong đó học viên tập trung vào kiểm chứng các bài toán này ở giai đoạn thiết kế.Cuối cùng học viên cài đặt chƣơng trình thực nghiệm cho các bài tốn tƣơng tranh nói trên.
3.1. Đặc tả và kiểm chứng bài toán tƣơng tranh sử dụng Event-B
3.1.1. Kỹ thuật kiểm chứng sử dụng Event-B
Trong Event-B, một trạng thái của mơ hình đƣợc định nghĩa bởi một tập các biến biểu diễn cho bất kỳ một đối tƣợng toán học nào trong lý thuyết tập hợp. Ngoài các định nghĩa về biến, các bất biến là các vị từ đƣợc biểu diễn trong logic vị từ bậc một và lý thuyết tập hợp. Sự kết hợp của các biến và bất biến tạo thành trạng thái, một trạng thái của mô hình là một tập trừu tƣợng.
Nhƣ vậy, một sự kiện của Máy có thể đƣợc biểu diễn trừu tƣợng bằng một quan hệ nhị phân trong tập các trạng thái. Quan hệ này biểu diễn sự kết nối giữa hai trạng thái kế tiếp trƣớc và sau khi một sự kiện đƣợc thực hiện. Trong ký pháp của Event-B một sự kiện có thể đƣợc chia thành hai phần là điều kiện và hành động. Các hành động của một sự kiện đƣợc giả thiết là thực hiện đồng thời trên các biến khác nhau. Các biến khơng đƣợc gán giá trị thì nó sẽ không thay đổi.Các điều kiện của sự kiện biểu diễn điều kiện cần và đủ để cho một sự kiện đƣợc kích hoạt. Khi một sự kiệnđƣợc kích hoạt thì sự chuyển đổi trạng thái tƣơng ứng sẽ đƣợc thực hiện và ngƣợc lại. Giả sử chúng ta có hai sự kiện $e1$ và $e2$ đƣợc mơ tả nhƣ sau:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
e1≡ when g1 then a1 end e2≡ when g2 then a2 end
Nếu điều kiện g1 đƣợc thỏa mãn thì hành động a1 sẽ đƣợc thực hiện, và nếu điều kiện g2 đƣợc thỏa mãn thì a2 sẽ đƣợc thực hiện. Thơng thƣờng, với hai điều kiện g1 và g2 sao cho g1 ∩ g2 = thì các sự kiện e1 và e2 sẽ đƣợc thực hiện tuần tự. Để đặc tảthứ tự thực hiện giữa các tiến trình tƣơng tranh, trƣớc hết các tiến trình nàyđƣợc mơ tả bằng các sự kiện trong mơ hình Event- B. Trong đó các điều kiện của các sự kiện nàylà khơng rời nhau để bảo đảm các sự kiện sẽ đƣợc thực hiện tƣơng tranh với nhau theo cơ chế đan xen. Tuy nhiên, trong trƣờng hợp này, khi một biến xuất hiện trong cả hai sự kiện thì nó có thể đƣợc gán với các giá trị khác nhau tại cùng một thời điểm, từ đó gây ra vấn đề về cạnh tranh dữ liệu (data race).
Khi đó để đặc tả thứ tự thực hiện của các sự kiện này, chúng tôi sử dụng một biến logic đóng vai trị nhƣ biến semaphoretrong chƣơng trình tƣơng tranh nhằm điều khiển sự thực thi của các sự kiện. Một cách tƣơng tự, chúng ta có thể mở rộng để đặc tả nhiều tiến trình tƣơng tranh trong một mơ hình. Cùng với cơ chế làm mịn trong Event-B, mơ hình tổng quát để đặc tả ràng buộc về thứ tự giữa các tiến trình tƣơng tranh nhƣ trong (Hình 3.1).
Machine
(Concurrent model) Context
Context Machine (Decomposition) sees sees extends refines refines extends
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Trong đó, mơ hình khởi tạo biểu diễn một máy trừu tƣợng với các sự kiện đƣợc thực hiện tƣơng tranh nhau. Mơ hình làm mịn biểu diễn giải pháp cho sự thực hiện tƣơng tranh của các sự kiện theo cơ chế semaphore. Mỗi tiến trình trong chƣơng trình tƣơng tranh đƣợc biểu diễn bằng một sự kiện.
Từ mơ hình tổng qt này, luận văn trình bày giải pháp để đặc tả thứ tự thực hiện của các sự kiện áp dụng cho các bài toán cung cấp-tiêu thụ từ bộ đệm dữ liệu và đọc-ghi dữ liệu từ bộ nhớ chia sẻ.
3.1.2. Đặc tả Event-B cho bài toán cung cấp tiêu thụ
Mơ hình khởi tạo của vấn đề cung cấp-tiêu thụ đƣợc biểu diễn nhƣ trong (Hình 3.2), trong đó các điều kiện G1 ∩ G2 ≠ để bảo đảm các sự kiện của tiến trình producer và consumer có thể đƣợc thực hiện song song. Tại thời điểm ban đầu, sự kiện khởi tạo init sẽ đƣợc thực hiện để đồng thời kích hoạt các sự kiện producer và consumer, khi hàng đợi đã đầy sự kiện producer sẽ kích hoạt sự kiện close theo giao thức = [init, producer||consumer,close]
Do bộ đệm dữ liệu đƣợc giả thiết là hữu hạn và có kích thƣớc cố định. Học viên sử dụng cơ chế đồng bộ hóa với biến semaphore là Count đƣợc khởi
machine ProducerConsumer init … Producer consumer when when grd1 : G1 grd1 : G2 then then
act1 : produce the database act1 : consume the database
end end close
…
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
tạo bằng không để biểu diễn số phần tử của bộ đệm. Biến Count sẽ tăng lên một khi một phần tử dữ liệu mới đƣợc bổ sung vào bộ đệm và giảm khi một phần tử dữ liệu đƣợc loại bỏ từ bộ đệm. Biến Buffer_Size biểu diễn kích thƣớc (số phần tử tối đa) của bộ đệm, bộ đệm sẽ đầy khi biến semaphore Count bằng kích thƣớc của nó và ngƣợc lại rỗng khi Count bằng khơng. Khi bộ đệm đã đầy sự kiện Producer sẽ kích hoạt sự kiện close thông qua biến semaphore isClose để chuyển sang trạng thái CLOSED. Mơ hình làm mịn đƣợc đặc tả nhƣ trong (Hình 3.3).
Mơ hình làm mịn trong (Hình 3.3) chỉ thực hiện tốt khi chúng ta có một tiến trình cung cấp và một tiến trình tiêu thụ. Trong trƣờng hợp có nhiều tiến trình cung cấp đồng thời đẩy các phần tử dữ liệu, hoặc nhiều tiến trình cùng tiêu thụ dữ liệu thì sẽ gây ra trƣờng hợp cạnh tranh dữ liệu (data race) do các tiến trình cùng nhau đọc/ghi dữ liệu tại một ô nhớ của bộ đệm ở cùng một thời điểm.
Để giải quyết vấn đề này chúng ta cần một cơ chế loại trừ, sao cho tại cùng một thời điểm chỉ cho phép một tiến trình producer và một tiến trình consumer đƣợc thực hiện song song nhau. Chi tiết đặc tả và kết quả chứng minh tự động đƣợc trình bày trong phụ lục B.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 3.1.3. Đặc tả Event-B cho bài toán đọc ghi
Để đặc tả bài tốn này, học viên giả thiết mỗi tiến trình đƣợc biểu diễn bằng một sự kiện của mơ hình khởi tạo (Hình 3.4). Tƣơng tự nhƣ mơ hình khởi tạo của bài toán cung cấp-tiêu thụ, các điều kiện đƣợc giả thiết là thỏa mãn: G1 ∩ G2 = để các sự kiện kiện của nó đƣợc thực hiện tƣơng tranh với nhau.
Machine ReaderWriter Init … reader writer when when grd1 : G1 grd : G2 then then
act1 : read the database act1 : write the database
end end
Hình 3.4. Mơ hình khởi tạo cho vấn đề đọc ghi.
refines ProducerConsumer invariant
inv1 : Buffer_size INAT inv2 : Count ()..Buffer_size …
Init
act1 : Count :=0 …
producer consumer
refiness producer refiness consumer
when when
grd1 : G1 grd1 : G2
grd2 : Count <Buffer_size grd2 : Count > 0
then then
act1 : create d act1 : consumer d act2 : Count := Count + 1 act2 : Count := Count – 1 act3 : if Count = Buffer_size then end
isCount = True end close when grd1 : isCount = True then act1 : G1 := False act2 : G2 := False end
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Học viên đặc tả các tiến trình tƣơng tranh reader-writer nhƣ trong Hình 3.5.Trong đặc tả này biến readers biểu diễn số tiến trình reader đƣợc đọc song
song nhau từ cơ sở dữ liệu sau khi thực hiện thành công sự kiện StartRead và trƣớc khi thực hiện sự kiệnEndRead. Tƣơng tự, biến writers biểu diễn số tiến trình writer đƣợc ghi song song vào cơ sở dữ liệu sau khi thực hiện xong sự kiện StartWrite và trƣớc khi thực hiện sự kiện EndWrite.
Biến điều kiện OKtoRead đƣợc sử dụng để khóa các tiến trình đọc reader cho đến khi điều kiện của nó đƣợc thỏa mãn cho phép đọc. Tƣơng tự với biến điều kiện OKtoWrite đƣợc sử dụng để khóa các tiến trình writer cho đến khi điều kiện của nó đƣợc thỏa mãn cho phép ghi write.
Các biến readers và writers đƣợc tăng dần trong sự kiện startRead và giảm dần trong sự kiện endRead. Tại thời điểm ban đầu, sự kiện startRead sẽ kiểm