2 Các SAL Common Intermediate Language
Cơ giới phân tích chính thức bắt đầu từ một mô tả của vấn đề quan tâm thể hiện trong ký hiệu của các công cụ được sử dụng. Xây dựng các mô tả này thường đòi hỏi công việc đáng kể: đầu tiên để viết lại các đặc điểm kỹ thuật hệ thống từ ngữ bản địa của nó trong C, Esterel, Java, SCR, UML, Verilog, hoặc bất cứ điều gì, vào ký hiệu của các công cụ liên quan, sau đó để trích xuất các phần đó là có liên quan đến việc phân tích ở bàn tay, và cuối cùng để giảm bớt nó thành một dạng công cụ này có thể xử lý. Nếu một công cụ thứ hai là để được làm việc cho một phân tích khác nhau, sau đó là một mô tả thứ hai của vấn đề phải được chuẩn bị, với sự nỗ lực duplicationof đáng kể. Với ngôn ngữ nguồn và các công cụ, chúng ta cần dịch. Tình trạng này một cách tự nhiên cho thấy việc sử dụng một ngôn ngữ trung gian phổ biến, nơi con số của các công cụ cần thiết có thể được giảm đến phiên dịch.
Các ngôn ngữ trung gian phải phục vụ như một phương tiện để biểu diễn ngữ nghĩa chuyển đổi trạng thái của một hệ thống được mô tả trong một ngôn ngữ nguồn như Java hay Esterel . Nó cũng phải phục vụ như là một biểu tượng chung cho lái xe một số công cụ back-end như provers lý, người kiểm tra mô hình. Một ngôn ngữ trung gian hữu ích để mô tả hệ thống đồng thời phải cố gắng giữ gìn cả các cấu trúc và ý nghĩa của các đặc điểm kỹ thuật ban đầu khi hỗ trợ một phân tích mô-đun của hệ thống chuyển đổi.
Đối với những lý do này, các ngôn ngữ trung gian SAL là một ngôn ngữ khá phong phú. Trong phần tiếp theo, chúng tôi cung cấp một cái nhìn tổng quan về các tính năng chính của ngôn ngữ loại SAL, ngôn ngữ biểu hiện, ngôn ngữ mô-đun, và ngôn ngữ ngữ cảnh. Đối với một định nghĩa chính xác và ngữ nghĩa của ngôn ngữ SAL, kể cả so sánh với ngôn ngữ liên quan để diễn tả hệ thống đồng thời, xem [31].
Các loại hệ thống của SAL hỗ trợ các loại cơ bản như toán luận, vô hướng, số nguyên và subranges số nguyên, hồ sơ, mảng, và kiểu dữ liệu trừu tượng. Biểu thức được đánh mạnh. Các biểu thức bao gồm các hằng, biến, ứng dụng của Boolean, số học, và các hoạt động bit-vector (bit-vectơ chỉ là mảng Boolean), và mảng và ghi lại lựa chọn và cập nhật. mutex: BỐI CẢNH = BEGIN
PC: TYPE = cố gắng, quan trọng, ngủ
mutex [tval: boolean]: MODULE = BEGIN
VÀO PC2: PC, x2: boolean
OUTPUT pc1: PC, x1: boolean
INITIALIZATION
TRUE -> pc1 = ngủ; x1 = tval
CHUYỂN pc1 = ngủ
-> pc1 '= cố gắng; x1 '= (x2 = tval)
[] = pc1 cố gắng VÀ
(PC2 = ngủ OR x1 = (x2 / = tval))
-> pc1 '= critical
[] pc1 = critical
-> pc1 '= ngủ; x1 '= (x2 = tval) END
hệ thống: MODULE = HIDE x1, x2
(mutex [FALSE]
|| RENAME PC2 TO pc1, x2 TO x1, pc1 TO PC2, x1 x2 TO mutex [TRUE])
mutualExclusion: Hệ thống Định lý | -
AG (NOT (pc1 = critical
và PC2 = critical))
eventually1: hệ thống bổ đề | - EF (pc1 = critical)
eventually2: Bổ đề
hệ thống | - EF (PC2 = critical)
END
Hình 1. Loại trừ lẫn nhau
biểu thức có điều kiện cũng là một phần của ngôn ngữ biểu hiện và chức năng người dùng định nghĩa cũng có thể được giới thiệu.
Một module là một đặc điểm kỹ thuật khép kín của một hệ thống chuyển tiếp trong SAL. Thông thường, một số mô-đun được thu thập trong một bối cảnh. Bối cảnh cũng bao gồm các loại tờ khai và liên tục. Một module hệ thống chuyển tiếp bao gồm tên kiểu nhà nước, một điều kiện khởi tạo vào loại trạng thái này, và một mối quan hệ chuyển đổi nhị phân của một hình thức cụ thể về các loại hình nhà nước. Các loại nhà nước được quy định bởi bốn bộ tách rời cặp đầu vào, đầu ra, toàn cầu, và các biến địa phương. Các đầu vào và các biến toàn cầu là các biến quan sát của một mô-đun và các đầu ra, toàn cầu, và các biến địa phương là các biến kiểm soát của các mô-đun. Nó là dụng pháp tốt để đặt tên cho một module. Tên này có thể được sử dụng để chỉ các biến địa phương để họ không cần phải được đổi tên trong thành phần. Ngoài ra, các tính chất của các mô-đun có thể được lập chỉ mục trên các tên để tra cứu nhanh chóng.
Xem xét, ví dụ, các đặc điểm kỹ thuật SAL của một biến thể của thuật toán loại trừ lẫn nhau của Peterson trong Hình 1. Ở đây, nhà nước của các mô-đun bao gồm các biến kiểm soát tương ứng riêng pc1 nó đếm chương trình và boolean biến x1, và các biến quan sát là PC2 tương ứng và x2 của quá trình khác.
Quá trình biến đổi của một mô-đun có thể được chỉ định variablewise bằng phương tiện của các định nghĩa hoặc chuyển khôn ngoan bằng cách ra lệnh canh gác. Từ đó về sau, sơn lót biểu thị biến tiếp theo trạng thái biến X '. Một định nghĩa có dạng X = f (Y, Z). Cả khởi tạo và chuyển tiếp cũng có thể được quy định như bài tập bảo vệ. Mỗi lệnh bảo vệ bao gồm một công thức bảo vệ và một phần chuyển nhượng. Bảo vệ là một biểu thức boolean trong kiểm soát (địa phương, toàn cầu, và đầu ra) biến và hiện tại, nhà nước và các biến đầu vào tiếp theo nhà nước hiện hành. Các phần chuyển nhượng là một danh sách các bất đẳng giữa một biến tiếp theo nhà nước ở phía bên trái và một biểu hiện bên tay phải trong các biến cả hiện tại-nhà nước và tiếp theo nhà nước.
modules Parametric cho phép sử dụng hợp lý (stateindependent) và kiểu tham số trong định nghĩa của mô-đun. Module mutex trong hình 1, ví dụ, là tham số trong tval Boolean. Hơn nữa, mô-đun trong SAL có thể được kết hợp bởi hai thành phần đồng bộ ||, hoặc thành phần không đồng bộ []. Hai trường hợp của module mutex, ví dụ, là dính liền đồng bộ để tạo thành một module gọi là hệ thống trong Hình 1. Sự kết hợp này cũng sử dụng ẩn và đổi tên. Đầu ra và các biến toàn cầu có thể được thực hiện tại địa phương bởi các cấu trúc hide. Để tránh xung đột tên, các biến trong một modulecan được renamedusing các cấu trúc RENAME.
Bên cạnh đó tuyên bố mới các loại, các hằng số, hoặc mô-đun, SAL cũng bao gồm các cấu trúc để nêu đặc tính mô-đun và trừu tượng hóa giữa các module. Công thức CTL được sử dụng, ví dụ, trong hình 1 để an toàn và tài sản nhà nước liveness về hệ thống mô-đun kết hợp.
Các hình thức của các thành phần trong SAL hỗ trợ một phân tích thành phần trong ý nghĩa rằng bất kỳ thuộc tính mô-đun hiện trong thời gian tuyến tính logic của thời gian hoặc trong fragment phổ quát biểu cảm hơn của CTL * được bảo tồn thông qua thành phần. Một tuyên bố tương tự như giữ cho các thành phần không đồng bộ đối với nói lắp thuộc tính bất biến nơi một bước nói lắp là một nơi mà các biến địa phương và đầu ra của các mô-đun vẫn không thay đổi.
Bởi vì SAL là một định lý environmentwhere minh cũng như mô hình kiểm tra có sẵn, sự vắng mặt của các vòng nhân quả trong các hệ thống đồng bộ được đảm bảo bằng cách tạo ra các nghĩa vụ chứng minh, chứ không phải bằng các phương pháp cú pháp chặt chẽ hơn như trong các ngôn ngữ khác. Hãy xem xét các định nghĩa sau:
X = IF THEN ELSE A KHÔNG Y C ENDIF
Y = IF A THEN ELSE B X ENDIF
Điều này đôi nghĩa là chấp nhận được trong SAL bởi vì chúng ta có thể chứng minh rằng X là nhân quả phụ thuộc vào Y chỉ khi A là đúng, và ngược lại chỉ khi nó là giả do đó không có vòng lặp nhân quả. Nói chung, kiểm tra nguyên nhân tạo ra nghĩa vụ chứng minh khẳng định rằng các điều kiện có thể kích hoạt một vòng lặp nhân quả là không thể truy cập.
đang được dịch, vui lòng đợi..
