24/05/2018, 15:46

Cơ cấu ngôn ngữ cho đồng bộ

Trên cơ sở khái niệm QT, yêu cầu đặt ra là cần xây dựng cấu trúc ngôn ngữ thi hành được sự tương tác QT. Một ngôn ngữ lập trình đồng thời cho phép đặc tả được việc xử lý đồng thời, cách thức để đồng bộ các QT đồng thời và truyền thông giữa chúng. Theo một lẽ ...

Trên cơ sở khái niệm QT, yêu cầu đặt ra là cần xây dựng cấu trúc ngôn ngữ thi hành được sự tương tác QT. Một ngôn ngữ lập trình đồng thời cho phép đặc tả được việc xử lý đồng thời, cách thức để đồng bộ các QT đồng thời và truyền thông giữa chúng. Theo một lẽ tự nhiên, cần xuất phát từ một ngôn ngữ tuần tự sẵn có, để rồi bổ sung thêm các phương tiện hỗ trợ xử lý đồng thời. Cách tiếp cận này là dễ dàng hơn cho người lập trình (ứng dụng) vì chỉ cần một ít bổ sung khi học ngôn ngữ. Từ một ngôn ngữ tuần tự cần phải bổ sung các cấu trúc sau đây để có thể nhận được một ngôn ngữ đồng thời:

-Đặc tả được các hoạt động đồng thời

-Đồng bộ hoá các QT

-Truyền thông liên QT

-Sự thực hiện không định trước của các QT

Đồng bộ hóa QT đã được khảo sát kỹ trong HĐH tập trung (sinh sự kiện generate / chờ đợi sự kiện wait). Việc truyền thông liên QT thông qua việc CTĐ là một vấn đề mới khi lưu ý đến hệ thống phân tán. Mục này đưa ra một số giải pháp chuẩn đồng bộ QT cùng với việc làm phù hợp chúng đối với hệ phân tán và cách thức tiến hóa chúng thành vấn đề truyền thông nút trong hệ phân tán. Rất nhiều cách đặt vấn đề được đặt ra để giải quyết bài toán đồng bộ theo nhiều góc độ khác nhau của một ngôn ngữ lập trình. Đầu tiên mô tả ngắn gọn cấu trúc ngôn ngữ để từ đó tìm cách mở rộng chúng nhằm đồng bộ QT.

Một ngôn ngữ hướng thủ tục chung được định nghĩa tổng quát bằng việc đặc tả hoàn chỉnh cấu trúc cú pháp và ngữ nghĩa các thành phần chính. Theo đặc tính, các thành phần này được phân lớp như sau:

-Cấu trúc chương trình chỉ ra chương trình và các thành phần con của nó (thủ tục, khối, câu lệnh, biểu thức, biến, hằng....) được bố trí như thế nào. Ngầm định các thành phần của chương trình được thực hiện tuần tự; ngoại trừ việc thay đổi tường minh bằng câu lệnh điều khiển.

-Cấu trúc dữ liệu được định nghĩa để trình bày các đối tượng trong chương trình. Tính trừu tượng hoá của kiểu dữ liệu và sự thi hành hiệu quả của chúng là mục tiêu nguyên thủy.

-Cấu trúc điều khiển qui định dòng thực hiện chương trình. Đa số ngôn ngữ nhấn mạnh việc dùng cấu trúc điều khiển hiển dạng one - in - one - out (một - vào - một - ra: là một đặc trưng của lập trình có cấu trúc) chẳng hạn như là if - then - else, while - do, repeat - until. Một loại cấu trúc điều khiển bao chứa lời gọi, quay về và thoát khỏi chương trình con.

-Các thủ tục và lời gọi hệ thống kích hoạt các thủ tục đặc biệt hoặc dịch vụ hệ thống. Chúng làm thay đổi hướng thực hiện và cho phép truyền tham số.

-Vào/Ra cho phép nhập dữ liệu vào và đưa ra kết quả thực hiện chương trình. Mọi chương trình đều có ít nhất một thao tác ra. Vào/Ra có thể được xem là trường hợp riêng của truyền thông CTĐ.

-Phép gán sinh kết quả cho đối tượng dữ liệu: đó là các thao tác cơ bản khi thực hiện chương trình

Bảng 3.1 cho ví dụ về các phương pháp đồng bộ được hiển thị theo phương tiện sử dụng ngôn ngữ. Mối quan hệ giữa phương pháp đồng bộ và những phương tiện ngôn ngữ tương ứng là không tường minh. Nó được dùng chỉ để chứng tỏ sự tiến hóa việc phát triển cấu trúc ngôn ngữ cho ĐBQT.

Phương pháp đồng bộ Phương tiện ngôn ngữ
Đồng bộ chia xẻ biến chia xẻ
Semaphore (Cờ tín hiệu) Biến chia xẻ và lời gọi hệ thống
Bộ giám sát Trừu tượng hóa kiểu dữ liệu
Khoảng tới hạn điều kiện Cấu trúc điều khiển
Kết xuất định kỳ Kiểu dữ liệu và cấu trúc điều khiển
Biểu thức đường đi Kiểu dữ liệu và cấu trúc chương trình
Đồng bộ CTĐ
Các QT tuần tự truyền thông Vào và Ra
Lời gọi thủ tục từ xa - RPC Lời gọi thủ tục
Cuộc hẹn Lời gọi thủ tục và truyền thông

Bảng 3.1 Kỹ thuật đồng bộ và phương tiện ngôn ngữ

Khái niệm đồng bộ ở đây được chia làm hai loại: 5 trường hợp trên là phương pháp đồng bộ chia xẻ biến chung, còn 3 trường hợp dưới theo cách tiệm cận CTĐ. Hai đoạn tiếp theo sẽ thảo luận về các cơ chế đồng bộ kiểu CTĐ thông qua giải bài toán đọc đồng thời / ghi độc quyền bằng cách sử dụng từng phương pháp ở đây.

Bài toán QT đọc / QT ghi sử dụng giả thiết thông thường về đọc và ghi thực thể đối tượng dữ liệu (chẳng hạn, nhiều QT đọc có thể đồng thời nhưng QT ghi cần loại trừ ràng buộc với các QT đọc và ghi

0