Xây dựng biến và tiến trình đồng hồ

Một phần của tài liệu Kiểm chứng tính đúng đắn hệ thống tính toán của chương trình bằng kiểm duyệt mô hình (Trang 45)

4. Cấu trúc luận văn

3.1. Xây dựng biến và tiến trình đồng hồ

Bàn về kỹ thuật kiểm duyệt mô hình cho hệ thống không có ràng buộc thời gian và có ràng buộc thời gian, có thể đưa ra nhận xét: Với kỹ thuật kiểm duyệt mô hình để kiểm duyệt hệ thống có ràng buộc thời gian thường phức tạp, tốn thời gian nghiên cứu. Ngoài ra nó còn đòi hỏi thời gian chạy lâu và chỉ áp dụng cho những hệ thống nhỏ, bởi hệ thống càng lớn thì số trạng thái càng tăng dẫn tới việc bùng nổ không gian trạng thái. Bùng nổ không gian trạng thái xảy ra khi số trạng thái tăng theo cấp số nhân so với số các biến của hệ thống, chẳng hạn cho biến N với miền giá trị k, khi đó số các trạng thái có thể tăng lên tới kN trạng thái. Với hệ thống song song, hệ thống thời gian thực thì không gian trạng thái dễ dàng vượt ra khỏi giới hạn cho phép. Với kỹ thuật kiểm duyệt mô hình để kiểm duyệt hệ thống không có ràng buộc thời gian dễ tìm hiểu hơn, và hạn chế được phần nào vấn đề bùng nổ không gian trạng thái. Hơn nữa, các kỹ thuật kiểm chứng trợ giúp việc kiểm chứng các tính chất thời gian tổng quát, trong khi các hệ thống có ràng buộc thời gian thực tế thường chỉ đòi hỏi kiểm chứng các tính chất đơn giản ở dạng deadline. Từ những nhận xét trên cho thấy, có thể sử dụng kỹ thuật kiểm duyệt mô hình cho hệ thống không có ràng buộc thời gian kết hợp với kỹ thuật xây dựng biến, tiến trình đồng hồ để kiểm chứng hệ thống có ràng buộc thời gian, cụ thể là hệ thống báo động, báo cháy.

Kỹ thuật kiểm duyệt mô hình được áp dụng để kiểm chứng rất nhiều hệ thống trong thực tế có tương tác với thời gian (hệ thống thời gian thực). Trong các hệ thống này thời gian rất quan trọng. Chẳng hạn với máy bức xạ, thời gian mà bệnh nhân phải chịu bức xạ là rất quan trọng, nếu quá thời gian quy định sẽ rất nguy hiểm gây biến chứng hay có thể tử vong. Có thể nói “sự đúng đắn của hệ thống thời gian không chỉ phụ thuộc vào kết quả hợp lý của sự tính toán mà còn phụ thuộc vào thời gian đưa ra kết quả”.

Trong hệ thống thời gian thực, mỗi sự kiện xảy ra đều phụ thuộc vào thời gian (hệ thống thời gian thực chứa các giao thức thời gian và nhiều hệ thống nhúng điều khiển). Một hình thức mô hình hóa hệ thống thời gian thực là có thể sử dụng Timed Automata – một sự mở rộng của hệ thống truyền với các biến đồng hồ để đo thời gian. Mô hình này gồm các ràng buộc về thời gian tồn tại của

trạng thái và thời gian hành động. Có thể nói một Timed Automaton là một máy hữu hạn trạng thái được mở rộng với tập các biến đồng hồ. Trong đó một biến đồng hồ có giá trị là một số thực và tất cả các tiến trình đồng hồ được đồng bộ.

Các biến đồng hồ (clock variables) được thể hiện qua các biến khác nhau. Các đồng hồ có thể được thiết lập lại bằng 0, sau đó tăng giá trị của đồng hồ lên giả sử d đơn vị thời gian. Thời gian của đồng hồ được đo bằng thời gian trôi đi (thời gian trễ) kể từ lần thiết lập lại cuối cùng của đồng hồ. Với mỗi sự truyền (ràng buộc giữa hai sự kiện) cần kết hợp với một ràng buộc thời gian. Sự truyền (hành động truyền) chỉ được thực hiện khi giá trị hiện thời của đồng hồ thỏa mãn ràng buộc thời gian của đồng hồ. Ràng buộc đồng hồ là sự so sánh giá trị hiện thời của đồng hồ với giá trị hằng số. Việc này được thực hiện bằng cách sử dụng các biểu thức logic. Sự kết hợp các biểu thức logic sẽ tạo ra các ràng buộc phức tạp hơn.

Định nghĩa 3.1: Giá trị đồng hồ (Clock Valuation) [2]

Một giá trị đồng hồ trên tập các đồng hồ C là hàm : C 0, việc gán mỗi đồng hồ x  C có giá trị hiện thời là (x).

Cho Eval(C) là tập các giá trị đồng hồ trên C. Sử dụng ký hiệu [x = v, y =v’] để thể hiện giá trị đồng hồ Eval({x, y}) với (x) = v và (y) = v’.

Định nghĩa 3.2: Ràng buộc đồng hồ (Clock Constraint) [2]

Một ràng buộc đồng hồ trên tập các đồng hồ C được thực hiện theo cú pháp:

g::= x < c | xc | x > c | xc | gg

Với: c  và x  C. Gọi CC(C) là tập ràng buộc đồng hồ trên C. Ví dụ 3.1: Ví dụ về sự truyền có một đồng hồ

Cho đồ thị truyền sau với hai trạng thái S0S1, cùng hai nhãn truyền a, b

trên sự truyền tương ứng và một đồng hồ x, ràng buộc đồng hồ x<2.

Trong đồ thị ở ví dụ 3.1, sự truyền bắt đầu từ trạng thái S0 tới S1 đồng hồ được thiết lập x: = 0 trên cạnh tương ứng để đọc ký hiệu a. Tương tự ràng buộc

(x<2)? trên cạnh ứng với sự truyền từ S1 sang S0 để đọc ký hiệu b. Thời gian bắt đầu được đếm kể từ khi ký hiệu a được đọc lần cuối (tức đồng hồ x được thiết lập lại lần cuối cùng). Ký hiệu b chỉ được đọc khi ràng buộc đồng hồ được thỏa

a, x: = 0

b, (x<2) ?

mãn x<2. Vòng lặp này được lặp mãi nếu ràng buộc còn thỏa mãn. Ràng buộc thời gian được thể hiện bởi sự truyền này là thời gian trễ giữa ab luôn nhỏ hơn 2.

Trong trường hợp có nhiều đồng hồ thì các đồng hồ khác nhau có thể được thiết lập lại ở những thời điểm khác nhau.

Ví dụ 3.2: Ví dụ về sự truyền có 2 đồng hồ

Đồ thị truyền có 4 trạng thái S0, S1, S2, S3, 4 nhãn truyền a, b, c, d, 2 đồng hồ x, y, và ràng buộc thời gian cho 2 đồng hồ x<1, y>2.

Với đồ thị truyền trong ví dụ 2.32, S0 truyền nhãn a tới S1 đồng thời thiết lập đồng hồ x: = 0, S1 truyền nhãn b tới S2 đồng thời thiết lập đồng hồ y: = 0, S2

truyền được nhãn c tới S3 nếu đảm bảo ràng buộc thời gian hiện tại của đồng hồ

x phải nhỏ hơn 1(x<1), S3 truyền nhãn d tới S1 nếu đảm bảo ràng buộc thời gian hiện tại của đồng hồ y phải lớn hơn 2 (y>2).

Để có thể kiểm chứng hệ thống thời gian thực cần kết hợp kỹ thuật kiểm duyệt mô hình cho hệ thống không có ràng buộc thời gian với tiến trình đồng hồ. Ở đây tiến trình đồng hồ được xây dựng gồm biến đồng hồ (time) kiểu nguyên, kênh thiết lập đồng hồ (set_time) là kênh gặp – rendezvous lưu trữ các thông điệp kiểu nguyên, kênh inc để tăng thời gian (tăng c đơn vị thời gian) mỗi khi có hành động mất thời gian xảy ra, inc cũng là kênh gặp lưu trữ các thông điệp kiểu nguyên, c là biến nguyên chứa giá trị thời gian cần tăng của hành động mất thời gian. Các biến kênh set_time, inc và biến nguyên time là biến toàn cục, c là biến cục bộ.

chan set_time=[0] of {int}; chan inc=[0] of {int}; int time;

Tiến trình đồng hồ có thể được xây dựng bởi ngôn ngữ mô hình hóa Promela như sau:

1 2 proctype clock() { int c; (x< 1) ? c S0 S1 S2 S3 d, (y>2) ? a b x: = 0 y: = 0

3 4 5 6 7 8 9 10 11 12 13 14 15 time=-1; do ::set_time?1->if ::time=-1->time=0; ::else->skip; fi; ::set_time?-1->time=-1; ::inc?c->if ::time!=-1->time=time+c; :: else -> skip; fi; od }

Mục đích xây dựng tiến trình đồng hồ là để đo thời gian khi cần thiết. Hoạt động của nó có thể được mô tả như sau:

Ban đầu biến đồng hồ time = -1, tức là chưa dùng đồng hồ.

Nhánh thứ nhất trong vòng lặp do thể hiện: Khi kênh set_time nhận giá trị 1 (set_time?1), tức là bắt đầu dùng đồng hồ và biến đồng hồ lúc này được thiết lập bằng 0 (time = 0). Tuy nhiên việc thiết lập biến đồng hồ time ở đây chỉ được thực hiện nếu time chưa được thiết lập trước đó (time = -1), nếu kênh set_time

nhận giá trị 1 nhưng biến time đã được thiết lập rồi thì giữ nguyên giá trị của

time.

Nhánh thứ 2 trong vòng lặp do thể hiện: Khi kênh set_time nhận giá trị -1 (set_time?-1), tức là lúc này không dùng đến đồng hồ thì biến đồng hồ time

không được thiết lập (time = -1).

Nhánh thứ 3 trong vòng lặp do thể hiện: Khi kênh inc nhận giá trị c (thời gian cần cho hành động mất thời gian nào đó) sẽ kiểm tra nếu biến đồng hồ đang được đếm hay đồng hồ đang được dùng (time!=-1) thì tăng giá trị của biến đồng hồ thêm c, còn ngược lại thì giữ nguyên giá trị của time.

Với tiến trình đồng hồ được xây dựng như trên, khi áp dụng vào mô hình hệ thống báo động, báo cháy có ràng buộc thời gian thực là “hệ thống phải báo động sau 5 giây kể từ khi nhận được thông báo động”. Ràng buộc này được thể hiện qua biến đồng hồ time (time<5). Để kiểm chứng ràng buộc thời gian, ta cần sử dụng assersions trong Spin. Với ràng buộc cho biến đồng hồ time:

Một phần của tài liệu Kiểm chứng tính đúng đắn hệ thống tính toán của chương trình bằng kiểm duyệt mô hình (Trang 45)

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

(66 trang)