ĐỀ TÀI :LẬP TRÌNH BẰNG CÁC PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE BÁO CÁO TIỂU LUẬN LẬP TRÌNH MẠNG Giáo viên hướng dẫn : PGS.TS Lê Văn Sơn Người thực hiện : Lê Quốc Dũng Lớp : Kho
Trang 1BÁO CÁO TIỂU LUẬN
LẬP TRÌNH MẠNG
Trang 2ĐỀ TÀI :
LẬP TRÌNH BẰNG CÁC PHƯƠNG PHÁP
PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
BÁO CÁO TIỂU LUẬN LẬP TRÌNH MẠNG
Giáo viên hướng dẫn : PGS.TS Lê Văn Sơn Người thực hiện : Lê Quốc Dũng
Lớp : Khoa học máy tính Khoá : K16
Trang 3Giới thiệu đề tài
Mục tiêu nghiên cứu của đề tài nhằm tìm hiểu về sự gắn bó dữ liệu
và lập trình bằng phương pháp phân tán để điều khiển bãi đổ xe, dựa trên đồng hồ lôgíc để giải quyết trình tự cập nhật thông tin nhất thiết phải giống nhau trên các trạm trong hệ phân tán
Nội dung chủ yếu trình bày của đề tài được phân bố trên ba chương :
- Chương 1 : Phần cơ sở lý thuyết những vấn đề chung nhất của hệ tin học
phân tán làm cơ sở cho các phần sau của đề tài
- Chương 2 : Nội dung của bài toán hệ quản lý bãi đổ xe và nêu ra những vấn đề không gắn bó dữ liệu trên các trạm
- Chương 3 : Lập trình bằng phương pháp phân tán để điều khiển bãi đổ xe
Những nguyên lý và thuật toán sắp xếp các thông điệp đến dựa trên đồng hồ lôgíc (nội dung của giải thuật được trình bày theo giải thuật Lamport)
Trang 4II SỰ GẮN BÓ DỮ LIỆU TRONG HỆ
QUẢN LÝ BÃI ĐỖ XE
II.1 Đặt vấn đề
•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.
Trang 5II SỰ GẮN BÓ DỮ LIỆU TRONG HỆ
QUẢN LÝ BÃI ĐỖ XE
II.2 TRẬT TỰ TỪNG PHẦN
•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.
Trang 6II SỰ GẮN BÓ DỮ LIỆU TRONG HỆ
Trang 7II SỰ GẮN BÓ DỮ LIỆU TRONG HỆ
QUẢN LÝ BÃI ĐỖ XE
II.3 GIẢ ĐỊNH CÁC ĐIỀU KIỆN CHUNG
• Các hệ phân tán được xây dựng trên cơ sở các trạm làm việc được mắc nối với nhau (nối mạng) Mỗi một trạm có bộ nhớ riêng của mình
và tuyệt đối không có bộ nhớ chung.
1 H1 Một trạm trong các trạm đều có thể liên lạc với các trạm còn lại
trong hệ
2 H2 Không có lỗi truyền thông tin và không mất thông điệp
3 H3 Trật tự nhận trên trạm j của dãy các thông điệp cũng giống như
chính tại trạm I là giống với trật tự của nơi phát
4 H4 Sự cố hay gián đoạn vật lý tại một trạm nào đó được phát hiện sẽ
lập tức thông báo đến tất cả các trạm có ý định liên lạc với nó
Trang 8II SỰ GẮN BÓ DỮ LIỆU TRONG
VT VT
Trong bài toán
- Bãi đậu xe chính là tài nguyên
- Xe chính là các tiến trình
- Nếu một cửa là tập trung còn nhiều của sẽ diến ra tranh
chấp
Trang 9II SỰ GẮN BÓ DỮ LIỆU TRONG
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 được cho các xe khác tiếp tục đượ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
Trang 10II SỰ GẮN BÓ DỮ LIỆU TRONG
trạng thái với độ trễ nhất định và điều đó dẫn đến tình huống thứ
2 Đó là tình huống có nhiều trung tâm ra quyết định như trong hình vẽ
Trên thực tế một người bảo vệ nào đó tin rằng không còn chỗ trống nữa, trong khi một người bảo vệ khác lại vừa mới cho ra khỏi bãi một số xe mà anh ta chưa kịp báo cho các người bảo vệ 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
Trang 11II SỰ GẮN BÓ DỮ LIỆU TRONG
HỆ QUẢN LÝ BÃI ĐỖ XE
II.5 BÀI TOÁN HỆ QUẢN LÝ BÃI ĐỖ XE
Tình huống thứ 3 :
Giả sử rằng ở thời điể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 lúc này của hệ là gắn bó Ba trong số họ phát đi các thông tin
Trang 12Bảo vệ 1 Bảo vệ 2 Bảo vệ 3
Hình II.3 : Thời hạn truyền và nhận thông điệp có trật tự
II SỰ GẮN BÓ DỮ LIỆU TRONG
Trang 13II SỰ GẮN BÓ DỮ LIỆU TRONG
Trang 14II SỰ GẮN BÓ DỮ LIỆU TRONG
HỆ QUẢN LÝ BÃI ĐỖ XE
II.5 BÀI TOÁN HỆ QUẢN LÝ BÃI ĐỖ XE
Tình huống thứ 4 :
Giả sử rằng ở thời điể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 lúc này của hệ là gắn bó Ba trong số họ phát đi các thông tin
Trang 15II SỰ GẮN BÓ DỮ LIỆU TRONG
Trang 16II SỰ GẮN BÓ DỮ LIỆU TRONG
HỆ QUẢN LÝ BÃI ĐỖ XE
II.5 BÀI TOÁN HỆ QUẢN LÝ BÃI ĐỖ XE
Bảng II.1 : Sự không gắn bó giữa bốn người bảo vệ
Giá Trị Thông điệp Giá Trị Thôn g
điệp
Giá Trị Thôn g
điệp
Giá Trị
Trang 17II SỰ GẮN BÓ DỮ LIỆU TRONG
HỆ QUẢN LÝ BÃI ĐỖ XE
II.6 KẾT LUẬN
Trong bài toán hệ quản lý đổ xe việc không gắn bó dữ liệu luôn luôn xảy ra ở các trạm nếu không có một cơ chế để thực hiện đồng bộ hoá các tiến trình (cho phép các ô tô vào bãi đậu theo một trình tự) Khi thực hiện phân tán chức năng cung cấp trên nhiều trạm khác nhau (các bảo vệ) 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 để đảm bảo cho hoạt động cung cấp hoàn toàn chính xác Trên cơ
sở phân tích bài toán ở trên chúng ta nhận thấy vấn đề không gắn bó dữ liệu trên các hệ phân tán cần phải có cách giải quyết thích hợp Phương pháp giải quyết vấn
đề này được nêu lên ở phần tiếp theo.
Trang 18III SẮP XẾP CÁC THÔNG ĐIỆP ĐẾN DỰA TRÊN ĐỒNG HỒ LOGIC
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
III 1 CƠ SỞ LÝ THUYẾT
III.1.2 Các quy tắc
Trang 19III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
Queue: là một danh sách tuyến tính mà phép thêm được
tiến hành một đầu danh sách, phép loại bỏ được tiến hành tại đầu còn lại của danh sách Queue còn gọi là danh sách
FIFO (First In First Out)
III 1 CƠ SỞ LÝ THUYẾT
III.1.2 HÀNG ĐỢI
Trang 20III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
Giải thuật được trình bày ở đây là giải thuật Lamport nhằm cho phép ghi lại các sự kiện của hệ tin học phân tán Giải thuật này nhằm giải quyết vấn đề trình tự (vấn đề mấu chốt của hệ phân tán) dựa trên giá trị đồng hồ lo gích để sắp xếp các thông điệp đến.
Mỗi trạm s đều có trang bị công tơ với các giá trị nguyên gọi là Cs Đó chính là đồng hồ lô gích tăng lên giữa hai sự kiện kế tiếp Trạm e phát thông điệp ghi dấu E của mình dựa trên giá trị hiện hành của He Khi nhận được thông điệp, trạm r cập nhật đồng hồ Cr riêng của mình bằng giải thuật sau đây :
III.2 GIẢI THUẬT
Nếu Cr, thì
Cr := Ce +1 Chấm dứt nếu
Trang 21III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
Một sự kiện a sinh ra trong trạm i và được đánh dấu bởi đồng hồ cục bộ gọi là Ci(a) Nếu a và b đều là hai sự kiện trên hai trạm i và j, ta luôn luôn có quan hệ xác định như sau :
III.2 GIẢI THUẬT
a b Ci(a) < Ci(b)
Đó là trật tự không chặt chẽ do vì hai sự kiện trên hai trạm khác nhau có thể đến cùng một thời điểm giống nhau.
Trang 22III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
Ta có thể mở rộng quan hệ thành quan hệ trật tự chặt chẽ bằng cách kết hợp một số khác cố định cho mỗi trạm và bằng cách đánh dấu thời gian cho mỗi sự kiện a của trạm i bằng cặp (Ci(a),i).
Theo định nghĩa, ta có :
a b (Ci(a) < Ci(b)) hay (Ci(a) = Ci(b) và i<j)
III.2 GIẢI THUẬT
Trang 23III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
Giả thiết
1 Trạm i của mạng có thể gửi cho các trạm khác thông điệp
có dạng (T Hi, i), trong đó Hi là dấu của thông điệp có nghĩa là đồng
hồ lô gích của nó và T có thể nhận một trong ba giá trị REQ, REL, và ACQ.
Ba giá trị này xác định bản chất của ba loại thông điệp khác nhau
III.2 TRÌNH BÀY GIẢI THUẬT
STT Thông điệp Giải thích
1 REQ Thông điệp REQ được phát đi cho tất cả các trạm, khi
trạm i muốn vào trong đoạn găng
2 REL Thông điệp REL được phát đi cho tất cả các trạm, khi
trạm i đã rời khỏi đoạn găng
3 ACQ Thông điệp ACQ được gửi bởi trạm i cho trạm j đã nhận
được từ trạm i thông điệp REQ.
Trang 24III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
2.Khi có một thông điệp được gởi đi bởi trạm i đồng thời nó cũng
được ghi trong hàng đợi của trạm này.
Giả sử rằng mỗi hằng đợi ban đầu chứa các thông điệp :
Mi = (REL, Cinit , i)
Trong đó, i, C init là thời điểm khởi sự giống nhau cho tất cả các trạm.
III.2 TRÌNH BÀY GIẢI THUẬT
Trang 25III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
III.2 GIẢI THUẬT
Tiêu chí để sắp xếp dựa vào Ci
Mỗi trạm quản lý một hàng đợi các thông điệp được sắp xếp hoàn toàn bởi quan hệ theo cặp <thời gian, số> của
từng thông điệp.
Thuật toán được mô tả theo sơ đồ sau :
Khởi tạo hàng đợi, mỗi máy tự phát thông điệp
Mi = (REL, Cinit , i)
Trang 26III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
III.2 GIẢI THUẬT
+ Khi trạm đang truy cập vào tài nguyên
- Để truy cập vào tài nguyên một trạm nào đó sẽ phát một thông điệp
yêu cầu M i (T,C i ,i) đến tất cả các trạm khác và đưa yêu cầu vào hàng
đợi yêu cầu của trạm này.
- Khi trạm j nhận thông điệp yêu cầu từ i, nó sẽ gởi ngược lại thông
điệp (có chứa đồng hồ logic C j ) cho trạm j và đưa yêu cầu này vào
trong hàng đợi yêu cầu của nó.
If (state =muon) and (T, C j ,j) < (T i , C i ,i) then Begin
Send M(T,C j ,j) đến trạm i INSERT(M i ,hàngđợi) ‘được sắp xếp theo H End
Trang 27III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
III.2 GIẢI THUẬT
+ Khi trạm đang thực thi yêu cầu
Trạm i nhận một thông điệp với đồng hồ logic lớn hơn đồng hồ
ở thời điểm hiện tại của trạm i và yêu cầu của trạm i đang ở vị trí của
hàng đợi yêu cầu của nó.
If (C>C i ) and (Vị trí M ở đầu của hàng đợi) then state=namgiu
+ Khi trạm không thực hiện gì cả
Xoá yêu cầu và gởi thông điệp giải phóng những trạm khác sẽ loại bỏ yêu cầu tương ứng
If state=ranh then xử lý(các thông điệp hàng đợi) ‘sau đó xoá
Send thông điệp giải phóng đến các trạm
Những trạm khác cũng sẽ xoá yêu cầu của nó trong hàng đợi của
mình
Trang 28III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
III.3 CÀI ĐẶT CHƯƠNG TRÌNH
III.3.1 Phân tích bài toán
• Để xây dựng một hệ thống quản lý bãi đổ xe
chúng ta sử dụng mô hình mạng client/ server
để thực hiện việc truyền các thông tin từ giữa các máy trạm cho máy chủ hoặc máy chủ với máy chủ đảm bảo dữ liệu dùng chung (bãi xe) cho các thao tác tại các cổng (xe vào/xe ra)
• Để đảm bảo gắn bó dữ liệu trong bài toán
quản lý bãi đổ xe sử dụng thuật toán Lamport
để cài đặt
Trang 29III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
III.3 CÀI ĐẶT CHƯƠNG TRÌNH
III.3.1 Phân tích bài toán
Với các giả thiết
+Một trạm trong các trạm đều có thể liên lạc với các trạm còn lại trong hệ
+ Không có lỗi truyền thông tin và không mất thông điệp
+ Trật tự nhận trên trạm j của dãy các thông điệp cũng giống như chính tại trạm i là giống với trật
tự của nơi phát
+ Sự cố hay gián đoạn vật lý tại một trạm nào
đó được phát hiện sẽ lập tức thông báo đến tất cả các trạm có ý định liên lạc với nó.
Trang 30III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
III.3 CÀI ĐẶT CHƯƠNG TRÌNH
III.3.1 Phân tích bài toán
Các ràng buộc trong chương trình :
+ Các bộ cung cấp bắt buộc phải thực hiện cùng một giải thuật
+ 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
+ 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
Trang 31III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
III.3 CÀI ĐẶT CHƯƠNG TRÌNH
Trang 32III LẬP TRÌNH BẰNG PHƯƠNG PHÁP PHÂN TÁN ĐỂ ĐIỀU KHIỂN BÃI ĐỔ XE
III.3 CÀI ĐẶT CHƯƠNG TRÌNH
III.3.3 Demo chương trình
- Chương trình gồm có các Modul : SERVER1, SERVER2, SERVER3,
CLIENT1, CLIENT2
- Cấu trúc chương trình trong mỗi Server gồm các phần:
+ Phần kết nối đến với Client và các Server.(dưới các thủ tục Connect)+ Gởi và nhận các thông điệp qua các cổng (dưới các thủ tục
Getserver, SendServer, GetClient, SendClient)
+ Tổ chức và Sắp xếp các thông điệp trên mảng (Cấu trúc FIFO) (dưới các thủ tục POP, PUSH, SORT)
+ Trao đổi giữa Server với Server, Server với Client
Cấu trúc chương trình trong mỗi Client gồm các phần:
+ Phần kết nối đến với Client và các Server.(dưới các thủ tục Connect)+ Gởi và nhận các thông điệp qua các cổng (dưới các thủ tục
GetClient, SendClient)
+ Quản lý bãi xe (Xuly)
- Kết quả chạy thử chương trình :
Trang 33SEVER 1 SEVER 2 SEVER 3
CỔNG 1 (CLIENT 1) CỔNG 2 (CLIENT 2)
Trang 34KẾT LUẬN
- Việc sắp xếp các thông điệp đến dựa trên đồng hồ lôgích cho phép đánh dấu các sự kiện và xác định một trật tự tổng quát chặt chẽ Nhưng tại đây ta không có quan hệ nào giữa các sự kiện và các giá trị của dấu.
- Sự mâu thuấn : giả thiết cả hai trạm 1 và 2 cùng thực hiện trùng nhau Rồi sau đó cả hai điều kiện yêu cầu đều nằm ở đỉnh của hàng đợi của mỗi chúng nhưng trong trường hợp đồng hồ lôgíc của trạm 1 lại nhỏ hơn trạm 2
- Rõ ràng là yêu cầu trạm i phải có mặt trong hàng đợi của trạm j khi
trạm j đang vào đoạn găng Điều này cung cấp sự mâu thuẫn yêu cầu của chính tạm j ở tại đỉnh của hàng đợi yêu cầu khi một đồng hồ logic nhỏ hơn đang có mặt
Trang 35XIN CÁM ƠN CÁC THẦY CÔ VÀ
CÁC BẠN TRONG LỚP
Email : dunglq82@yahoo.com.vn dunglq1982@gmail.com