Ngữ nghĩa trong Promela không có thời gian và có thời gian

Một phần của tài liệu Kiểm chứng các tính chất thời gian thực cho hệ thống đồng thời bằng RT-SPIN (Trang 50)

Ngữ nghĩa thực hiện của chƣơng trình P Promela không chứa thời gian đƣợc đặc tả dƣới hệ thống chuyển (transition system TS), i.e., Một đồ thị T = (Q,), Với Q là tập các node và ⊆ Q x Q tập các cung. Để đơn giản hóa vấn đề ta giả thiết có một số các tiến trình đã biết Po,P1, ...,Pm đƣợc kích hoạt tại thời điểm bắt đầu. Giả thiết P0 là tiến trình never claim nếu nhƣ có trong hệ thống, ngƣợc lại P0 dƣới dạng P0 ≝ { do :: skip od }.

Trạng thái của hệ thống đƣợc mô tả bởi nội dung của các kênh và bộ nhớ (các biến toàn cục và cục bộ) cũng nhƣ vị trí của mỗt tiến trình Pi. Cho gv (tƣơng ứng. lvi) là vector hiển thị các giá trị hiện tại của các biến toàn cục ( tƣơng ứng các biến cục bộ của Pi), và li là vị trí của Pi. Vị trí theo sau dấu ngoặc mở { (tƣơng ứng trƣớc dấu ngoặc đóng }) là starti (tƣơng ứng endi). Ta viết li st li’ nếu có một lệnh st chuyển từ li đến li’. Vector biến sau thực hiện st là st[gv] và st[lvi].

Vì vậy các trạng thái của Q dƣới dạng q = ( l0 ,l1, l2 , . . . , lm , lv0 , lv1 , . . . , lvm , gv ). Một lệnh li’sti li’’ của tiến trình Pi đƣợc enable thực hiện tại q nếu li’ = li và:

1. Hoặc sti là một lệnh gán, skip hay lệnh điều kiện thỏa mãn tại q.

2. Hoặc sti là phép gửi không đồng bộ (tƣơng ứng phép nhận không đồng bộ) đến một kênh không đầy (tƣơng ứng với kênh không rỗng).

3. Hoặc sti là một phép gửi đồng bộ nếu tồn tại một phép nhận đồng bộ lj’ stj lj’’ để lj’ = lj .

Khi đó tr=(q,q’) Є  nếu tồn tại một lệnh lệnh l0st0 l0’’ của P0 đƣợc enable tại q và:

1. Hoặc tồn tại listi li’ của Pi đƣợc enable tại q để q’ = (l0’, … li’,…,lm, st0[lv0], … sti[lvi], …, lvm, sti[st0[gv]]).

2. Hoặc tồn tại một cặp đồng bộ li sti

li’, lj stj lj’ enabed tại q để q’=(l0’, … li ’

, …lj

,…,lm, st0[lv0], … sti[lvi], … stj[lvj], …, lvm,gv’) với gv’ = sti[stj[st0[gv]]]. 3. Hoặc không có lệnh nào của tiến trình Pi, i >0 đƣợc kích hoạt tại q (trạng thái

nhƣ vậy đƣợc gọi là deadlock) và q’ = (l0’,…,lm, st0[lv0], …, lvm, st0[gv]). Trạng thái khởi tạo của T là q0 = (start0,…,startm,lv0init,…, lvminit, gvinit). Một đƣờng của T là một trình tự q0, q1,… trong đó (q0 , qi+1) Є .

4.2.2.2 Kiểm chứng trong Promela không có thời gian

Tính đúng đắn của Ρ dựa trên các loại phân tích đƣợc sửa dụng Spin. Các vị trí có thể đƣợc gán nhãn end, accept, hay progress. Cho trạng thái = ( l0 ,l1, l2 , . . . , lm ,…) ta định nghĩa end(q) = {li | li = endi hay li đƣợc gán nhãn end} và accept(q) = {li | li đƣợc gán nhãn accept}. Một trạng thái deadlock q đƣợc xem là đúng nếu ∀i = 1, …,m, li Є end(q) .[13] Ta nói rằng P là:

1. deadlock free nếu tất cả các trạng thái deadlock là đúng.

2. ω-correct nếu cho mỗi đƣờng p nếu q1, … qk là tập các trạng thái xuất hiện vô hạn nhiều lần trong p thì ∀i = 1, …,k, accept(qi) = Ø (không có một vòng lặp bao gồm 1 lệnh đƣợc gán nhãn chấp nhận).

Một phần của tài liệu Kiểm chứng các tính chất thời gian thực cho hệ thống đồng thời bằng RT-SPIN (Trang 50)

Tải bản đầy đủ (PDF)

(73 trang)