Mục đích của lập trình mạng phân tán là tận dụng các khả năng tính toán và khai thác dữ liệu của các hệ thống máy tính ở xa để thực hiện những tính toán nhanh hơn trên cơ sở sử dụng nhiề
Trang 1Ngày nay Internet cùng với các ứng dụng của nó đã đem lại cho xã hội một cuộc sống tiện nghi và đầy đủ hơn về thông tin Mạng Internet đã giúp cho con người bước vào một kỷ nguyên công nghệ thông tin và tri thức Để có được thành tựu đó thì lĩnh vực phân tán trong hệ tin học đã đóng một vai trò hết sức quan trọng
Mục đích của lập trình mạng phân tán là tận dụng các khả năng tính toán và khai thác dữ liệu của các hệ thống máy tính ở xa để thực hiện những tính toán nhanh hơn trên cơ sở sử dụng nhiều bộ xử lý, nhiều bộ nhớ đồng thời hoặc nhiều dữ liệu quý giá được phân tán khắp nơi Trên nền hệ thống mạng máy tính được kết nối rộng rãi hiện nay, việc xử lý phân tán sẽ giải quyết được những bài toán lớn hơn, phức tạp hơn và đa dạng hơn trong thực tế
Trong phạm vi của tiểu luận này tôi đề cập đến hai phần:
Phần 1 : Phần lý thuyết:
Khái quát về hệ tin học phân tán
Bài toán về bãi đỗ xe ô tô và vấn đề đồng bộ giữa các tiến trình
Lập trình mạng phân tán và RMI
Phần 2 : Phần bài tập:
+ Viết chương trình bài toán bãi đỗ xe để mô phỏng quá trình làm việc của hệ phân tán
Tôi xin chân thành cảm ơn: PGS.TS Lê Văn Sơn và các bạn đồng môn đã
giúp tôi hoàn thành tiểu luận này
Trang 2CHƯƠNG 1 : CƠ SỞ LÝ THUYẾT
Trong chương này, các vấn đề cơ bản sau đây được trình bày :
• Các khái niệm ban đầu như khái niệm hệ phân tán và các đặc điểm chủ yếu của hệ
• Tiến trình nhu cầu tài nguyên trong các hệ phân tán
• Tầm quan trọng của việc đồng bộ hóa các tiến trình trong hệ phân tán
• Vấn đề tương thích giữa thuật toán điều khiển bải để xe với chiến lược cung cấp tài nguyên dùng chung trong hệ phân tán
• Tổng quan về trật tự từng phần và khái niệm ban đầu về ấn phong di chuyển trên vòng tròn ảo
Sau đây, những vấn đề vừa nêu sẽ lần lượt được trình bày
1 Hệ phân tán
Hệ tin học phân tán là hệ thống đa dạng, phức tạp về mặt cấu trúc, đang được các chuyên gia Công nghệ Thông tin quan tâm nghiên cứu với hàng loạt các công trình được công bố
Cho đến nay, xét trên các phương diện khác nhau, người ta có thể có các định nghĩa khác nhau về hệ tin học phân tán, nhưng phổ biến hơn cả là định nghĩa được phát biểu như sau :
Hệ tin học phân tán hay nói ngắn gọn là hệ phân tán (Distributed System) là hệ thống xử lý thông tin bao gồm nhiều bộ xử lý (hoặc bộ vi xử lý) phân bố ở những vị trí địa lý khác nhau, được liên kết với nhau thông qua phương tiện truyền thông (viễn thông) dưới quản lý thống nhất của một hệ thống điều khiển
Qua đó ta có thể xem hệ phân tán như là một tập hợp các bộ xử lý (hoặc bộ vi
xử lý) với bộ nhớ và đồng hồ nhịp độc lập Điều này đồng nghĩa với việc các bộ xử lý
không sử dụng chung bộ nhớ và đồng hồ Như vậy, mỗi một hệ xử lý thông tin thành phần của hệ phân tán bao gồm một hay nhiều bộ xử lý và bộ nhớ cục bộ Trong hệ phân tán, hệ xử lý thông tin thành phần phải được thiết kế sao cho về cấu trúc, số lượng và dung lượng có thể cho phép thực hiện một cách trọn vẹn các chức năng mà
nó phải đảm nhận
Hệ tin học phân tán thực hiện hàng loạt các chức năng phức tạp, nhưng cơ bản
nhất là đảm bảo cung cấp cho người sử dụng (NSD) khả năng truy cập có kết quả đến các loại tài nguyên vốn có và rất đa đạng của hệ thống như là những tài nguyên dùng chung
Trang 3Việc định nghĩa các tài nguyên của hệ như là tài nguyên dùng chung sẽ mang đến cho NSD những tiện ích và đem lại cho hệ những hiệu năng tốt trong khai thác ứng dụng
Những ưu điểm căn bản của việc sử dụng chung tài nguyên được phản ảnh trong bảng I.1 sau đây :
1 Tăng tốc độ bình quân trong tính toán - xử lý
2 Cải thiện tình trạng sẵn sàng của các loại tài nguyên dùng chung
3 Tăng độ an toàn và an ninh cho dữ liệu
4 Cho phép đa dạng hoá các loại hình dịch vụ tin học nói chung
5 Đảm bảo tính vẹn toàn của thông tin do giải quyết được vấn đề gắn bó dữ liệu (Coherence)
Bảng I.1 Các ưu điểm căn bản của việc sử dụng chung tài nguyên
2 Các đặc điểm của hệ phân tán
Các đặc điểm và yêu cầu được liệt kê dưới đây (bảng I.2 và I.3) giúp ta nhận biết những đặc trưng cơ bản và phân biệt hệ tin học phân tán với các hệ tin học khác, đồng thời cung cấp thông tin cơ bản trong quá trình phân tích, thiết kế, xây dựng và đánh giá một hệ thống nào đó
TT Các yêu cầu cơ bản cần nghiên cứu giải quyết
1 Lập trình và thực hiện cho hệ thống đa truy cập, ngẫu nhiên, số
lượng lớn
2 Định danh định danh cho các đối tượng qua hệ thống viễn thông
3 Cấu trúc lập trình được cho các truy vấn đa chiều và đáp ứng lại
truy vấn
4 Trình tự và đồng bộ các tiến trình hoạt động
5 Gắn bó thông tin (Coherence) và vấn đề nhiều bản sao
6 Cung cấp từ xa các tài nguyên dùng chung (tài nguyên găng)
7 Vấn đề xử lý - tính toán đồng thời trong hệ
8 Vấn đề đa Server và hệ điều khiển - giám sát của người quản trị hệ
thống
9 Vấn đề tin cậy và hiệu năng hệ thống
Bảng I.2 Các yêu cầu cơ bản của hệ phân tán
Trang 4TT Đặc điểm
1 Thời gian truyền thông tin trong hệ không giống nhau
2 Các thông điệp có thể bị mất trong quá trình truyền thông tin
3 Các thông điệp có thể được truyền kép
4 Việc phát và nhận thông điệp đối với toàn hệ là ngẩu nhiên
5 Việc cập nhật thông tin (chương trình và dữ liệu) dẫn đến hệ rơi vào
trạng thái thiếu gắn bó
6 Hệ có thể rơi vào trạng thái bế tắc, tắt nghẽn đường truyền, chờ vô hạn
và thiếu thốn tài nguyên
7 Một (hay nhiều) máy tính cấu thành của hệ phân tán có thể bị sự cố
Bảng I.3 Đặc điểm cơ bản của hệ phân tán
Tiến trình (Process) là khái niệm khá quen thuộc và là đối tượng nghiên cứu của hệ điều hành Trong hệ phân tán ta chỉ xem xét và bổ sung đặc điểm hoạt động và truy cập của các tiến trình có nhu cầu cung cấp tài nguyên dùng chung
Các đặc điểm đó là :
1 Các tiến trình được hình thành và điều khiển bởi hệ điều khiển duy nhất
có nghĩa là nếu trong các thành phần tham gia hệ phân tán như mạng máy tính, các hệ tập trung, có thể có các hệ điều hành riêng với các tiến trình riêng của
mình, thì chúng cũng bị phái sinh lại trong nội dung của tiến trình mới, phân
tán
2 Tiến trình là chương trình hay đoạn chương trình đang hoạt động trong
hệ phân tán là đối tượng chủ yếu có nhu cầu tài nguyên phần cứng hay phần mềm để thực hiện các lệnh của mình Tiến trình cần tài nguyên để phát triển
Về nguyên tắc, tất cả các tiến trình và tài nguyên được cung cấp là các đối tượng ở xa
3 Các nguyên lý của hệ tập trung có thể nghiên cứu và áp dụng cho các tiến trình phân tán như dự phòng và chống bế tắc, chống xung đột,
4 Khi tiến trình được cung cấp tài nguyên có thể nó thực hiện ngay, nếu nó
là đối tượng được gửi đến từ trước trên bộ xử lý (máy) cục bộ hoặc phải gửi đối tượng là tiến trình qua hệ thống đường truyền
5 Việc cung cấp tài nguyên cho các tiến trình có thể thực hiện theo 2 cách trong hệ phân tán :
• Thông qua hệ thống cung cấp chung cho toàn hệ như Controllor/Allocator
Trang 5• Thông qua Allocator cục bộ trên Server/Workstation bằng cách tham chiếu vào bảng trạng thái, ảnh của thông tin toàn cục
Đồng bộ hoá tiến trình được hiểu như là quá trình điều khiển tạo nên sự ăn khớp với nhau giữa tất cả các tiến trình khác nhau giúp cho hệ phân tán hoạt động nhịp nhàng, tin cậy và phòng tránh các sự cố kỹ thuật
Trong tất cả các hệ thống tin học, ta cần phải nghiên cứu các công cụ đủ mạnh
và hiệu quả để có thể đồng bộ hóa các tiến trình Tính cấp thiết về mặt nguyên lý và kỹ thuật của vấn đề này thể hiện ở hai nguyên do cơ bản sau đây :
1 Các tiến trình kể cả các tiến trình xuất phát từ các ứng dụng độc lập muốn truy cập vào các tài nguyên với số lượng rất hạn chế hay truy cập vào thông
tin dùng chung cùng một lúc gây nên hiện tượng truy cập tương tranh
Tương tranh là nguyên nhân chính của các xung đột giữa các tiến trình muốn truy cập vào các tài nguyên dùng chung
2 Các tiến trình của cùng một hệ ứng dụng hoạt động theo kiểu hợp lực để
giải quyết các bài tóan đặt ra và cho kết quả nhanh chóng nhất Điều này cho phép tăng hiệu năng sử dụng thiết bị và hiệu quả hoạt động của chương trình
Hợp lực là nguyên nhân chính của sự tác động tương hỗ được lập trình giữa các tiến trình nhằm cho phép chúng tham gia vào các hành động chung
Sự tương tranh và hợp lực giữa các tiến trình đòi hỏi phải có trao đổi thông tin
qua lại với nhau Trong các hệ thống tập trung, điều đó được thực hiện nhờ thuật toán loại trừ tương hỗ thông qua các biến cùng tác động trong một vùng nhớ chung Trong
hệ tin học phân tán, các thông tin cần trao đổi thông qua các thông điệp bằng các kênh viễn thông
DÙNG CHUNG
Trong hàng loạt các tài liệu đã nêu lên nhiều mặt khác nhau của bài toán điểu khiển bãi để xe Trong phạm vi của tiểu luận này, ta trình bày vấn đề dưới giác độ
đồng bộ hóa đã được xác định trong phần I.3 ở trên Bãi để xe ô tô được mô tả trong
hình vẽ I.1 Bãi này có m chổ để xe và có thể phân n (n<m, nguyên, dương) khu vực ứng với n cửa vào/ra ô tô Tại mỗi cửa vào/ra, ta có người bảo vệ làm nhiệm vụ cung
cấp phiếu cho ô tô vào chổ còn trống và thu hồi lại phiếu khi có một ô tô ra, thông báo cho các người bảo vệ khác biết để cùng hành động cho chính xác trong việc phân phối chổ của bãi
Trang 6VT
VT VT
VT VT
BV BV
2 Gửi thông tin về vị trí cấp phát các người bảo vệ khác trong bãi
3 Chờ toàn bộ các người bảo vệ khác khẳng định nhận
4 Gạch chéo vào ô vừa phát phiếu (tồn tại một ma trận chổ)
5 Phát phiếu cho lái xe ô tô và mở cổng vào-ra
6 Gửi thông tin cho toàn bộ các người bảo vệ khác trong bãi
Các hành vi cơ bản thu hồi chổ bị bận trước đó
1 Thu hồi phiếu cấp phát
2 Gửi đi các người bảo vệ khác trong bãi
3 Chờ khẳng định nhận của tất cả những người bảo vệ khác trong bãi
4 Giải phóng ô phiếu, đưa ô về trạng thái tự do
Xử lý lúc rối loạn như mất điều khiển
1 Khởi động lại nạp lại chính xác số chổ còn trống
2 Trình tự khởi động các người bảo vệ
3 Xác định tính tuần tự
Tình huống sự cố
Không nhận được khẳng định từ người nhận
Hình I.3 : Mô phỏng bãi đậu xe ôtô
Trang 7Sự tương quan giữa các đối tượng trong bãi để xe và các đối tượng trong hệ phân tán có thể mô tả trong bảng I.4 dưới đây
1 Ô tô Tiến trình Ở đây, tiến trình được xem như
Ký hiệu là ĐK, hoàn toàn
Server/Workstation
3 Cổng vào/ra Server/Workstation Mỗi cổng đặt 1 máy (chưa tính
đến máy dự phòng) và nối chúng với nhau thông qua hệ thống đường truyền
4 Chổ để xe Tài nguyên Tài nguyên đồng nhất Trong
thực tế của hệ phân tán, tài nguyên có nhiều loại và có các đặc điểm rất khác xa nhau
5 Ma trận số vị
trí để xe ô tô
Hệ cơ sở dữ liệu phân tán
Đòi hỏi phải hoàn toàn giống nhau ở mọi thời điểm truy cập (Gắn bó dữ liệu)
Bảng I.4 Sự tương quan giữa các đối tượng bãi để xe và hệ phân tán Bài toán bãi để xe được phát biểu theo tình huống như sau :
Tình huống thứ 1
Ta giả sử rằng bãi để xe ô tô là bãi có số lượng ô lớn và có duy nhất một cổng
vào dưới sự kiểm soát của một (NBV) NBV chỉ biết được một phần của trạng thái bãi
để xe Trong khi anh ta nghĩ rằng bãi xe đã bị đầy, khi đó lại có nhiều lái xe đang cho
xe chạy ra cổng Vì suy nghĩ như vậy, trong trường hợp này, anh ta không giải quyết cho các xe khác tiếp tục vào bãi nữa, mặc dù lúc này trong bãi đang có chỗ trống
Như vậy, NBV không nắm được trạng thái hiện hành của bãi để xe do mình quản lý
Tình huống thứ 2
Nếu ta có bãi để xe với nhiều cổng vào và tại mỗi cổng vào có một NBV, thì
mỗi người NBV chỉ có thể biết được trạng thái với độ trễ nhất định và điều đó dẫn đến tình huống có nhiều trung tâm ra quyết định như trong hình vẽ I.1 ở trên
Trang 8Trong thực tế, một NBV nào đó tin rằng không còn ô trống nữa trong khi một NBV khác lại vừa mới cho ra khỏi bãi một số xe ô tô mà anh ta chưa kịp báo cho các NBV khác Cũng có thể diễn ra trường hợp là cùng một lúc các người bảo vệ giải quyết các xe vào cùng một vị trí trong bãi do vì họ thiếu thông tin
Như vậy, các người bảo vệ phải hợp lực với nhau để phân phối chính xác các
chỗ trong bãi, đặc biệt là số lượng ô còn trống càng ít, thì vai trò của sự hợp lực càng quan trọng
Vì lý do ổn định và hiệu quả của hệ trong quá trình cung cấp tài nguyên dùng chung cho các tiến trình mà ta phải phân tán chức năng cung cấp trên nhiều Server/Workstation khác nhau Sự hoạt động gắn bó với nhau giữa các chương trình cung cấp là rất cần thiết để bảo đảm cho hoạt động cung cấp được hoàn toàn chính xác
Tiếp tục nghiên cứu khía cạnh đồng bộ và ý nghĩa của việc gắn bó dữ liệu phân tán của bài toán điều khiển bải đỗ xe dưới đây, ta có thể rút ra một số kết luận quan trọng làm cơ sở cho việc giải quyết thích hợp các vấn đề đặt ra của tiểu luận văn này
Trong các phần trước, ta đã xác định một người bảo vệ có vai trò như là chương trình điều khiển và cung cấp chổ của bãi để xe ô tô Ở đây, chổ để xe được xem như là tài nguyên dùng chung của hệ Giả sử rằng ở thời diểm cho trước ta có 4 người bảo vệ
và có 100 chổ còn trống Tất cả các người bảo vệ đều có thông tin đó Trạng thái của
hệ lúc này là gắn bó Ba trong số họ phát đi các thông tin như sau :
TT Thông điệp Thông tin phát đi trong thông điệp
3 T3 Dành 10% chổ trống để quét dọn sân bãi
Bảng I.5 Nội dung của các thông điệp phát đi
Nếu ta không có ràng buộc nào đối với trình tự xử lý các thông điệp nhận được của các người bảo vệ, thì các người bảo vệ này sẽ có số lượng chổ trống khác nhau Để
bảo đảm các bản cập nhật giống nhau, thì trình tự cập nhật nhất thiết phải giống nhau trên tất cả các Server/Workstation
Thông
điệp
Giá trị
Thông
điệp
Giá trị
Thông
điệp
Giá trị
Trang 92 T3 108 T2 110 T1 110 T3 81
Bảng I.6 Sự không gắn bó giữa các người bảo vệ Tại đây, để dễ dàng hình dung vấn đề, ta có thể xem người bảo vệ như là
chương trình cung cấp tài nguyên nêu trên, còn chổ trong bãi là tài nguyên và các ô tô
là các tiến trình của hệ Dễ dàng nhận thấy rằng các vị trí (chỗ để xe) và các xe là
những thực thể đồng nhất Vì vậy, tiến trình và tài nguyên được xét trong ví dụ này là
tiến trình và tài nguyên đồng nhất
Để tìm giải pháp cho bài toán điều khiển bãi để xe, thực chất, là ta phải giải
quyết vấn đề đồng bộ hóa giữa các thực thể tạo ra các sự kiện trong hệ phân tán Đó
chính là các tiến trình tại các Server/Workstation yêu cầu tài nguyên để phát triển và tạo nên các thu, phát và là nguyên nhân chính của việc chuyển từ trạng thái này sang trạng thái khác một cách ngẩu nhiên
Liên quan đến vấn đề đồng bộ hoá là vấn đề gắn bó dữ liệu và tầm quan trọng
của nó với bài toán điều khiển phân tán, vấn đề trật tự hóa các sự kiện và vai trò của giải thuật Lamport với giá trị đồng hồ lô gíc mà ta sẽ lần lượt trình bày trong các phần
sau này được đánh giá như là vấn đề ưu tiên hàng đầu cần phải xét đến
Một sự hoạt động gắn bó của các chương trình cung cấp phân tán quản lý trên cùng một tập hợp các tài nguyên chỉ đặt được nêu tuân thủ các quy tắc sau, ở đây các thông điệp được hiểu là các yêu cầu hay khuyến nghị giải phỏng tài nguyên
1 Các bộ cung cấp bắt buộc phải thực hiện cùng một giải thuật
2 Các bộ cung cấp đều nhận tất cả các thông điệp phát đi từ các
tiến trình
3 Các thông điệp phải được xử lý cùng một trật tự như nhau trong
các chương trình cung cấp
Bảng I.7 Các quy tắc tổng quát của việc đồng bộ hoá các tiến trình
Quy tắc sau cùng nhấn mạnh đến sự thiết yếu phải có một trật tự duy nhất trên
tập hợp các thông điệp của hệ Trật tự này có thể được thực hiện thông qua việc hợp lực giữa các tiến trình cung cấp mà ta sẽ gặp trong các chương sau hay giữa các tiến trình phát thông điệp Trong các phần sau đây của chương này, ta sẽ kiểm tra hai chiến
lược hợp lực giữa các tiến trình phát nhằm phân phối cho mỗi thông điệp một dấu ( có tài liệu còn gọi là dấu hiệu ) nhằm dựa vào đó, ta có thể xác lập một trật tự hoàn toàn
Các chiến lược phản ứng được với các sự cố diễn ra trên một Server/Workstation, nếu
giả sử H 4 của được nghiên cứu và triển khai
Trang 10VII S Ắ P X Ế P B Ằ NG B Ộ TU Ầ N T Ự
1 Khái niệm bộ tuần tự
Khái niệm bộ tuần tự được giới thiệu nhằm mục đích đánh số thứ tự và sắp xếp các sự kiện của hệ và tránh được các nhược điểm mà các phương pháp nêu trên đã mắc phải
Bộ tuần tự là đối tượng đồng bộ cung cấp cho mỗi yêu cầu một số (hay còn gọi
là một tíc kê) nhằm xác lập trật tự
Giá trị số mà nó cung cấp phải là các giá trị nguyên, không âm Để cho hai yêu
cầu kế tiếp nhau, thì hai số liên tục nhau được cung cấp Giá trị 0 được cung cấp cho
yêu cầu đầu tiên
Một tiến trình muốn nhận giá trị từ bộ tuần tự S, thì nó phải gọi thủ tục (hoặc hàm) có tên là phieu(S) Mỗi một giá trị chỉ phục vụ cho một và chỉ một sự kiện mà
thôi
Giả sử rằng tất cả các sự kiện được đánh số bởi một bộ tuần tự duy nhất S Khi một tiến trình cung cấp cho sự kiện i một số thông qua phieu(S), ta có thể khẵng định
như sau (không có sự cố) :
1 rằng các sự kiện t bao hàm các giá trị nhỏ hơn t đã được diễn ra
2 rằng số thứ tự sự kiện kề liền sau t phải bằng t+1
Việc triển khai một bộ tuần tự cần phải mang hai đặc tính sau đây :
1 P1 Nếu a và b là hai sự kiện thực hiện trên cùng hàm
phieu(S), thì ta có a→b hay b→a
Nếu a thực hiện phép t = phieu(S), thì giá trị gán cho t là
số lượng các phép phieu(S) đã được thực hiện trước a
Bảng I.8 Đặc tính của bộ tuần tự
Đặc tính P1 thể hiện việc loại trừ tương hổ trên các phép toán phieu(S), còn P2
thể hiện tính liên tục trong khi đánh số có nghĩa là không để lại khoản trống khi đánh
Việc vận dụng tương đối tổng quát bộ tuần tự S trong hệ phân tán là sự chuyển động giữa các trạm một đối tượng duy nhất gọi là ấn phong chứa giá trị hiện hành của
bộ tuần tự Khi một trạm có ấn phong, nó có thể thực hiện hàm phieu(S)
Trang 11Trước hết, chúng ta nghiên cứu hai phương pháp cho phép di chuyển ấn phong,
sau đó là giải thuật triển khai phép toán phieu Cuối cùng, ta quan tâm hai vấn đề là sử
dụng đường lan truyền và việc sao chép bộ tuần tự trên mỗi trạm
2 Bộ tuần tự di chuyển
2.1 Vòng tròn ảo
Để triển khai một ấn phong có kết quả, đầu tiên ta cần phải xác định hành trình của nó trong mạng máy tính như thế nào Phương pháp đơn giản nhất là lắp đặt các trạm nằm trên một vòng theo một chiều xác định Mỗi trạm chỉ được liên hệ với hai trạm gần nhất
Ta hãy xem xét một mạng được hoàn toàn nối với nhau có nghĩa là một tập hợp
bao gồm N trạm, trong đó một trạm có thể liên lạc với các trạm khác một cách dễ dàng Một số duy nhất bao gồm từ 0 đến N-1 được phân phối một lần cho toàn bộ trên từng trạm Trạm i đều có trạm hàng xóm phải hay còn gọi trạm kế tiếp sau mà số của trạm đó là suc[i] và hàng xóm bên trái hay còn gọi là trạm kề liền trước mà số của nó
là pred[i] Sự mô tả này cho ta hình dung một vòng tròn ảo Khi hoạt động bình thường, N trạm được thể hiện đầy đủ trên vòng tròn, lúc này ta có :
Các thuật toán được giới thiệu sau đây dựa trên nguyên tắc như sau Ấn phong được cụ thể hóa trên một vài cấu hình của các biến trạng thái và quay trên vòng tròn ảo luôn luôn theo một chiều xác định Để vòng tròn có thể hoạt động tốt, thì cần thiết phải xây dựng lại vòng tròn khi có một trạm nào đó bị sự cố Phép xử lý này gọi là cấu hình
lại bao gồm cả việc cập nhật các giá trị của suc[i] và pred[i] của các hàng xóm của
trạm bị sự cố Việc cấu hình lại mạng không khó khăn lắm, nếu trạm bị sự cố không phá huỷ hoàn toàn liên kết lô gíc Khi một trạm bị sự cố có thể hoạt động trở lại, thì phép toán chèn cho phép nó tham gia vào mạng Tốt nhất là hai phép toán cấu hình lại
và chèn được thể hiện ở tầng giao vận
2.2 Ấn phong bằng các biến trạng thái
Giải thuật đầu tiên là một giải pháp thích nghi của giải thuật Dijkstra
2.2.1 Hoạt động không sự cố
Một số nguyên K (K >1) được chọn cho tập hợp của hệ Trên trạm i (i chiếm giá trị từ 0 đến N-1), một tiến trình Pi được giao nhiệm vụ di chuyển ấn phong tuân thủ
các quy tắc sau đây :
1 Mỗi tiến trình Pi đều có biến trạng thái S[i] có thể nhận các giá trị nguyên từ
0 đến K-1
suc[i] = i + 1 modulo N pred[i] = i-1 modulo N
Trang 122 Mỗi biến S[i] đều được cập nhật bởi Pi và có thể đọc bởi trạm kế tiếp sau của Pi
Thuật toán di chuyển trạng thái ấn phong được thể hiện như sau :
a Tiến trình Pi có ấn phong chỉ khi :
S[i] ≠ S[i - 1] , cho i ≠ 0 S[0] - S[N - 1] , cho i = 0
b Khi tiến trình Pi có ấn phong, thì nó phải bỏ ấn phong sau một
khoản thời gian xác định và phải thay đổi trạng thái :
S[i] := S[i-1], nếu i ≠ 0 S[0] := S[0] + 1 mod K, nếu i = 0
Đó là trường hợp duy nhất mà tiến trình có thể cập nhật các biến trạng thái của
mình
Nếu tất cả các tiến trình loại Pi đều sử dụng thuật toán này, thì quyền bình đẳng
giữa các trạm được bảo đảm vì mỗi tiến trình đều được nhận ấn phong khi đến phiên mình
Ta lấy ví dụ với các giá trị N =3 và K = 2 Nếu trạng thái ban đầu của ba biến trạng thái là 000, hệ thống chuyển qua các trạng thái sau đây Ta ký hiệu dấu * là biến
của tiến trình có ấn phong
Trang 132.2.2 Đưa trạm bị sự cố vào lại
Để đưa một trạm bị sự cố đã khắc phục xong vào mạng, ta cần phải định lại cấu
hình vòng tròn ảo Sau đó, tiến trình cần phải khởi động lại S[i] Miễn là trạm j
=suc[i] không cho phép đọc biến S[j] của mình trong thời gian vào đoạn găng Chỉ
cần thực hiện như sau là đủ :
Nếu j < i thì S[i] := S[j] - 1 mod K
nếu không S[i] := S[j]
Kết thúc nếu
2.3 Jeton tuần hoàn
Trong thuật toán thứ hai thuộc Le Lann, ấn phong được cụ thể hóa bằng một thông điệp đặc biệt và gọi là Jeton tuần hoàn trên vòng tròn Như thế, việc sự cố trên trạm có thể dẫn đến mất Jeton Các biến trạng thái được duy trì trên mỗi trạm cho phép tái sinh jeton trong trường hợp bị mất
Thuật toán triển khai ý tưởng này là :
1 Jeton mang giá trị là v tương tự với cao độ của mặt trước trong thuật toán của Mỗi một trạm j có một biến trạng thái S[j] Trước khi phát lại jeton vào mạng, các
tác động như sau được thực hiện :
S[j] := v cho j ≠ 0
v := v +1 mod K ; S[j] := v cho j = 0
2 Mỗi một lần chuyển jeton trên trạm j , một đồng hồ bảo vệ được trang bị Nếu nó được phát động trước khi jeton đến, thì j tham chiếu đến biến trạng thái S[i] của trạm kề liền trước i = pred(i) trên vòng tròn
Nếu một trong hai điều kiện sau đây được kiểm tra,
2.4 Triển khai bộ tuần tự tuần hoàn
Hai thuật toán đã trình bày đều dựa vào sự tuần hoàn của ấn phong có thể được
sử dụng nhằm triển khai một bộ tuần tự Trong thuật toán thứ hai, ví dụ ta áp cho jeton
Trang 14một công tơ với các giá trị nguyên mà duy nhất chỉ có trạm có jeton mới có thể tăng và tham chiếu Các giá trị xuất phát từ tham chiếu đó được xem như là kết quả của các
phép toán phieu được thực hiện trên trạm
TT /Bảng I.9/ Diễn giải
1
Khi có một tiến trình trên một trạm muốn gọi phép toán phieu(S), thì phải có
một yêu cầu đặt vào trong hàng đợi vào của TBTT Tiến trình yêu cầu đó cần phải đợi cho đến khi yêu cầu của nó xuất hiện trong hàng đợi ra của TBTT : tại thời điểm đó, yêu cầu này đã được lan truyền và nó được sắp xếp cùng với các yêu cầu khác
2
Trạm i xử lý tất cả các yêu cầu phieu(S) đang có trong hàng đợi ra của TBTT của
nó Mỗi khi có một yêu cầu đến từ một trong các trạm khác, thì trạm i sẵn sàng
tăng nội dung công tơ cục bộ của mình lên Khi có một yêu cầu nào đó đến từ
một trong các tiến trình của chính trạm i, thì tiến trình này nhận giá trị hiện hành
của công tơ cục bộ và công tơ này tăng lên một số gia
Lợi ích hiển nhiên của phương pháp đánh số không lổ hổng này là tránh được hội thoại giữa các trạm để biết số sự kiện tiếp theo sau một sự kiện đã cho Nhưng thực
tế, việc hội thoại này lại phải diễn ra để có được số hiện hành Sự khác nhau của phương pháp này và phương pháp dấu là ở chổ chịu đựng được các sự cố Trên thực
tế, các trạm bị sự cố không thể nào phục vụ số được, bộ cung cấp cần phải tìm lại số lượng và giá trị của các số đó Để thực hiện điều đó, cần phải hội thoại với các trạm khác
3 Bộ tuần tự trên kênh lan truyền
Bây giờ ta hãy xem xét trường hợp liên lạc giữa các trạm được thực hiện bởi một kênh duy nhất Các trạm nối với kênh này bởi thiết bị truyền thông (TBTT) Việc cạnh tranh truy cập đường truyền, việc xử lý các xung đột và việc nhận các thông điệp được thực hiện thông qua thiết bị này theo các kỹ thuật và công nghệ đã được trình bày trong môn học mạng máy tính Theo thiết kế, một lúc, chỉ có một thông điệp được truyền
Ta giả sử rằng mỗi TBTT truyền các thông điệp vào đường truyền theo trình tự
mà trạm liên lạc với nó xác định và dội lại trạm này các thông điệp từ đường truyền,
kể cả các thông điệp của chính nó Ngoài ra, ta còn giả định là
đường truyền không hề làm mất thông điệp và các TBTT đều sắp xếp các thông điệp theo một trật tự giống nhau Trong trường hợp này, ta có một trật tự tổng quát và
nó được thể hiện trong hình vẽ I-4
Trang 15Để thực hiện một bộ tuần tự phân tán S , trạm i nào đó cần phải duy trì công tơ
cục bộ và thực hiện cùng một thuật toán
Thuật toán đó thể hiện như bảng I.9
Trong trường hợp có một trạm bị sự cố, các trạm khác vẫn tiếp tục hoạt động theo thuật toán nêu trên hay nói một cách giản đơn cũng có ít nhất một công tơ đang hoạt động
Để có thể tự tham gia lại công việc trong mạng sau sự cố, trạm i phải gửi yêu cầu vào lại cho một trạm nào đó trong số các trạm còn lại, ví dụ như j chẳng hạn, và
đặt mình vào trạng thái lắng nghe đường truyền trong hàng đợi ra của TBTT của mình
Trạm j sẽ gửi cho nó một thông điệp đồng bộ để cập nhật Khi thông điệp này xuất
hiện trong hàng đợi ra của TBTT, thì :
1 Trạm j là trạm cần phải gửi thông điệp cho i hiểu rằng nó phải gửi giá trị
hiện hành của công tơ của nó
2 Trạm i hiểu rằng nó có thể vào lại được trong mạng Để cho việc đó, nó bắt
đầu bằng cách lờ đi tất cả các thông điệp đến trước thông điệp đồng bộ Thông điệp đồng bộ đến sau cùng Nó lưu trữ mà không xử lý tất cả các thông điệp theo sau nó và
điều đó được duy trì cho đến khi xuất hiện giá trị hiện hành của công tơ được gửi bởi j
Sau khi thông điệp đồng bộ đến, trạm xử lý tất cả các thông điệp theo sau thông điệp đồng bộ
Trang 16Các trạm khác không được phép can thiệp Do vậy, chúng lờ đi yêu cầu vào lại , thông điệp đồng bộ và giá trị truyền
Phương pháp cập nhật này cũng có thể được sử dụng tại các trạm để trao đổi giá trị của các công tơ trong việc kiểm tra định kỳ
Tóm lại, trạng thái của các thành phần thuộc hệ thống tin học phân tán chỉ được biết một cách không chắc chắn lắm do vì thời gian truyền thông tin trên đường truyền không cố định, tăng số lượng các trung tâm ra quyết định và đặc biệt có thể xảy ra sự
cố bất cứ lúc nào
Chúng ta đã nghiên cứu một số vấn đề về đồng bộ không chắc chắn và một số vấn đề khác trên cơ sở trật tự toàn bộ mà việc triển khai được đặt trên nền tảng đánh số
sự kiện
Chúng ta cũng đã giả định rằng việc sự cố một trạm hay một đường truyền nào
đó không là nguyên nhân gián đoạn trao đổi giữa các trạm
VIII K Ế T LU Ậ N
Thông qua chương 1 của tiểu luận, những vấn đề có tính chất cơ sở về phân tích, thiết kế, xây dựng, khảo sát - kiểm nghiệm các chiến lược đồng bộ hoá tiến trình trong hệ phân tán được trình bày Hệ phân tán với các đặc điểm quan trọng là :
1 Không sử dụng chung bộ nhớ và đồng hồ vật lý,
2 Được mắc nối với nhau thông qua hệ thống đường truyền (viễn thông), nhưng về cơ bản hệ hoạt động hoàn toàn độc lập với nhau trên bộ xử lý riêng của mình,
Trang 173 Các thành phần cơ bản của hệ có thể được bố trí trên một phạm vi địa lý rộng lớn,
4 Việc ăn khớp giữa các hoạt động này (còn gọi là đồng bộ hóa các hoạt động thành phần) được tiến hành thông qua trao đổi thông điệp giữa các thực thể của hệ,
5 Truy cập mang tính ngẫu nhiên, từ xa và số lượng truy cập lớn
6 Trong qua trình hoạt động, hệ có thể bị sự cố kỹ thuật
Một hệ thống với những đặc điểm như vậy là hệ thống kỹ thuật lớn, đa dạng và rất phức tạp về mặt cấu trúc mà việc nghiên cứu đồng bộ hoá các tiến trình đang hoạt động trong đó là yếu tố then chốt cho sự ổn định của toàn hệ, đặc biệt là tiến trình có nhu cầu được cung cấp tài nguyên ở xa và bản thân lời yêu cầu cung cấp cũng được tiến hành từ xa
Trang 18CH ƯƠ NG II : SỰ GẮN BÓ DỮ LIỆU TRONG HỆ QUẢN LÝ
BÃI ĐỖ XE
I ĐẶ T V Ấ N ĐỀ
Trong tất cả các hệ thống tin học, ta cần phải nghiên cứu các công cụ đủ mạnh
và hiệu quả để đồng bộ hoá các tiến trình Tính cấp thiết về mặt nguyên lý và kỹ thuật của vấn đề này thể hiện ở hai nguyên do cơ bản sau :
1 Nhìn chung, các tiến trình kể các tiến trình xuất phát từ các ứng dụng độc lập muốn truy cập vào các tài nguyên với số lượng vốn rất hạn chế hay truy cập vào thông tin dùng chung cùng một lúc Trường hợp này gọi là truy cập tương tranh
Vì vậy, tương tranh là nguyên nhân chính của các xung đột giữa các tiến trình muốn truy cập vào tài nguyên dùng chung đây là một trong những nguyên nhân phải thực hiện cơ chế đồng bộ hoá các tiến trình
2 Các tiến trình của cùng một hệ ứng dụng hoạt động theo kiểu hợp lực để giải quyết các bài toán đặt ra và cho kết quả nhanh chóng nhất Điều này cho phép tăng hiệu năng sử dụng thiết bị và hiệu quả hoạt động của chương trình đây là một trong những nguyên nhân phải thực hiện cơ chế đồng bộ hoá các tiến trình
Sự tương tranh và hợp lực giữa các tiến trình đòi hỏi phải có trao đổi thông tin qua lại với nhau Trong các hệ thống tập trung điều đó được thực hiện nhờ thuật toán loại bỏ tương hỗ thông qua các biến cùng tác động trong một vùng nhớ chung Trong
hệ thống tin học phân tán, các thông tin cần trao đổi thông qua các kênh thuộc hệ viễn thông
II TR Ậ T T Ự T Ừ NG PH Ầ N
Cần chú ý rằng, trong các hệ thống tin học tập trung, vấn đề đồng bộ hoá được giải quyết thông qua cơ chế loại trừ tương hỗ Cơ chế này cho phép sắp đặt (xác lập trật tự) hoàn toàn các sự kiện Trong thực tiễn, nói một cách chính xác, có một hệ thống vấn đề về đồng bộ hoá chỉ đòi hỏi trật tự từng phần Chính vì vậy trật tự hoá từng phần giữa các sự kiện mà các tiến trình của nó cần phải đồng bộ là vấn đề cần phải quan tâm giải quyết
Trong các hệ thống phân tán, việc đồng bộ hoá chỉ đặt ra duy nhất vấn đề thiết lập một trật tự giữa các sự kiện Giữa các trạm khác nhau, trật tự đó chỉ có thể hiện được thông qua việc trao đổi các thông điệp với nhau
Giả sử rằng ta có thể xác định một trật tự giữa các sự kiện của hệ phân tán nhờ vào quan hệ được ký hiệu là → và gọi là “có trước” hay “ở ngay trước”
Quan hệ này tối thiếu phải thoã mãn được ràng buộc thể hiện trong bảng sau đây :
Trang 19Hình vẽ II.1 sau đây cho ta một ví dụ về trật tự hoá từng phần của các sự kiện trong hệ thống
Ràng buộc C2 nói lên nguyên tắt nhân quả
Quan hệ có trước xác định một trật tự từng phần trên tập hợp các sự kiện của hệ
và trật tự này có thể hiện trong hình vẽ trên
C1 : Nếu A và B là hai sự kiện của cùng một trạm và nếu A được thực hiện trước B thì theo trật tự cục bộ của trạm ta có A → B
C2 : Nếu A là phát thông điệp bởi một trạm nào đó và nếu B là thu của thông điệp này thì ta có A → B
A1 A2 A3 A4 A5
B1 B2 B3 B4
B5
t