CHƯƠNG 4. XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG PHÂN TÍCH ĐỊNH LƯỢNG LUỒNG TIN
4.3. Thuật toán chương trình mô phỏng
Chương trình mô phỏng bao gồm hai thành phần chính:
1. Phân tích không gian trạng thái 2. Tính toán lượng tin rò rỉ
Dưới đây sẽ giải thích cụ thể hơn về chương trình mô phỏng này.
4.3.1. Thuật toán phân tích không gian trạng thái
Thuật toán của chương trình mô phỏng được mô tả như ở hình 2.
Ban đầu chương trình mô phỏng sẽ thực hiện các khai báo và khởi tạo giá trị ban đầu cho biến bí mật, biến công công, phân bố xác suất tương ứng với các giá trị của biến bí mật, phân bố xác suất của bộ lập lịch, tuỳ thuộc vào yêu cầu của chương trình cần phân tích.
Dựa vào phân bố xác suất của bộ lập lịch, chương trình mô phỏng sẽ tiến hành chọn ngẫu nhiên luồng thông tin nào sẽ được thực hiện trước, ví dụ đối với phân bố xác suất đều thì quá trình lựa chọn luồng 𝐶1 và 𝐶2 là như nhau. Để khai phá đầy đủ không gian trạng thái của chương trình đa luồng, chương trình mô phỏng sẽ tiến hành chạy phân tích với số vòng lặp cho trước, để đảm bảo cả hai trường hợp luồng 𝐶1 thực hiện trước và luồng 𝐶2 thực hiện trước đều sẽ được phân tích.
Sau đó chương trình đa luồng sẽ được phân tích thành từng dòng lệnh đơn và đưa vào chương trình mô phỏng. Sau khi câu lệnh được thực hiện, hàm cập nhật không gian trạng thái sẽ cập nhật lại số trạng thái đã được tính toán dựa trên câu lệnh, kết quả của biến công cộng. Quá trình phân tích sẽ tiếp tục với câu lệnh hay luồng tiếp theo. Quá trình sẽ kết thúc khi câu lệnh cuối cùng được thực thi. Tại thời điểm kết thúc phân tích chương trình đa luồng, ta thu được một không gian trạng thái cùng với phân bố xác suất cuối cùng của tất cả các trạng thái kết thúc có thể có.
Hình 4.2. Thuật toán chương trình mô phỏng
Không gian trạng thái sẽ được xử lý để hình thành một tập không gian các trạng thái kết thúc. Tập không gian này sẽ được sử dụng để tính toán lượng tin rò rỉ.
Một thành phần quan trọng trong phân tích không gian trạng thái chính là hàm cập nhật không gian trạng thái. Thuật toán của hàm cập nhật không gian trạng thái được mô tả như hình 3. Hàm cập nhật trạng thái này sẽ trả về những trạng thái mới được khai phá sau khi câu lệnh đã được thực hiện. Để thực hiện được điều này, hàm sẽ tính
Khởi tạo các giá trị ban đầu start
Chọn luồng
Thực hiện câu lệnh
Cập nhật không gian trạng thái
Xử lý không gian trạng thái
Tính toán lượng tin rò rỉ
end Câu lệnh
toán số lượng sẽ nhánh trạng thái phụ thuộc vào các giá trị biến công cộng, từ đó tính toán lại phân bố xác suất của biến bí mật tương ứng.
Hình 4.3. Thuật toán hàm cập nhật không gian trạng thái
Hàm cập nhật trạng thái này cũng cần phải phân biệt được giữa những câu lệnh có làm thay đổi phân bố xác suất và những câu lệnh không làm thay đổi phân bố xác suất của biến bí mật.
4.3.2. Thuật toán tính toán lượng tin rò rỉ
Sau khi đã thu được không gian trạng thái từ quá trình phân tích ở trên, chương trình mô phỏng sẽ thực hiện tính toán lượng tin rò rỉ. Thuật toán tính toán lượng tin rò rỉ được mô tả ở hình 4. Không gian trạng thái thu được sẽ được lọc để loại bỏ các thành phần trùng nhau trong quá trình khai phá không gian trạng thái. Từ không gian trạng thái đã được xử lý này, chương trình mô phỏng sẽ thu được một tập các trạng thái kết thúc tại thời điểm chương trình đa luồng thực thi hoàn toàn. Từ đó, tính toán
Tính số rẽ nhánh trạng thái start
Cập nhật giá trị biến công cộng Cập nhật
Cập nhật phân bố xác suất của biến bí mật
Rẽ nhánh?
Cập nhật không gian trạng thái
lượng tin rò rỉ dựa vào xác suất của các vệt chương trình (trace) tương ứng với tập các giá trị của phân bố xác suất của các trạng thái.