Được như vậy là nhờ vào hệ thống mạng máy tính và hệ tin học phân tán, đây là hệ thống xử lý thông tin bao gồm nhiều bộ xử lýhoặc bộ vi xử lý nằm tại các vị trí khác nhau và được liên kế
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA
Lớp KHMT K31 (2015-2017)
Đà Nẵng - Tháng 11/2015
Trang 2DANH SÁCH NHÓM 03
1 Huỳnh Thị Hiền Thắm hienthamht@gmail.com
2 Trần Hữu Phước huuphuoc13@gmail.com
3 Hoàng Tiến Sơn hoangson07t4@gmail.com
PHÂN CÔNG NHIỆM VỤ
1. Tìm hiểu Hệ tin học phân tán, bài toán bãi để xe ôtô, thuật toán xây dựng hệ thống. Cả nhóm
Hoàng Tiến Sơn
Trang 3MỤC LỤC
MỤC LỤC 2
DANH MỤC BẢNG VÀ HÌNH VẼ 3
LỜI MỞ ĐẦU 5
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN VỀ HỆ TIN HỌC PHÂN TÁN .6 1 TỔNG QUAN VỀ HỆ TIN HỌC 6
2 HỆ TIN HỌC TẬP TRUNG 7
3 HỆ TIN HỌC PHÂN TÁN 7
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 10
1 BÀI TOÁN BÃI ĐỂ XE ÔTÔ NHIỀU CỔNG VÀO/RA 10
1.1 Phát biểu bài toán 10
1.2 Một số tình huống 10
2 CƠ SỞ LÝ THUYẾT 13
2.1 Các qui tắc cho các thuật toán cung cấp trong hệ phân tán 13
2.2 Miền găng 13
2.3 Phân nhóm các thuật toán truy cập loại trừ tương hỗ 14
2.4 Đồng hồ logic 14
2.4.1 Đồng hồ logic là gì? 14
2.4.2 Giải thuật nhãn thời gian logic 14
2.4.3 Vì sao sử dụng đồng hồ logic? 15
2.4.4 Thứ tự bộ phận “xảy ra trước” 15
2.5 Thời gian logic vector 16
2.5.1 Vấn đề đối với đồng hồ logic 16
2.5.2 Thời gian logic vector 16
2.5.3 Giải thuật cập nhật đồng hồ vector 16
2.5.4 So sánh hai vector 17
2.5.5 Ví dụ về cập nhật thời gian vector 17
2.5.6 Xác lập thứ tự nhân quả giữa hai sự kiện 17
Trang 42.6 Hàng đợi (Queue) 18
3 GIẢI THUẬT LAMPORT 18
3.1 Mô tả 18
3.2 Trình bày giải thuật 19
CHƯƠNG 3: ÁP DỤNG GIẢI QUYẾT BÀI TOÁN 21
1 PHÂN TÍCH BÀI TOÁN 21
1.1 Phân tích bài toán 21
1.2 Trạng thái của các trạm 22
1.3 Thuật toán xử lý cho mỗi trạm 23
2 XÂY DỰNG CHƯƠNG TRÌNH 24
2.1 Tổ chức dữ liệu 24
2.2 Truyền thông điệp giữa các trạm 25
CHƯƠNG TRÌNH DEMO 26
1 Giao diện đăng nhập tại một trạm 26
2 Giao diện quản lý tại một trạm 26
KẾT LUẬN 27
TÀI LIỆU THAM KHẢO 28
DANH MỤC BẢNG VÀ HÌNH VẼ Hình 1 Các thành phần của hệ tin học 5
Hình 2 Ba thực thể của hệ tin học 6
Hình 3 Thực thể của hệ tin học phân tán 7
Hình 4 Mô phỏng bãi đậu xe ôtô 9
Bảng 1 Ký hiệu thông điệp 11
Hình 5 Thời hạn truyền và nhận thông điệp không có trật tự 11
Bảng 2 Sự gắn bó thông tin giữa các bảo vệ 11
Hình 6 Đồng hồ logic 14
Hình 7 Cập nhật thời gian vector 17
Hình 8 Cấu trúc hàng đợi 17
Trang 5LỜI MỞ ĐẦU
Ngày nay với sự phát triển của công nghệ thông tin đã phần nào đápứng ngày càng tốt hơn nhu cầu trao đổi thông tin của con người, làm cho conngười khắp thế giới trở nên gần nhau hơn, thông tin liên lạc nhanh chóng,thuận lợi và hiệu quả Được như vậy là nhờ vào hệ thống mạng máy tính và
hệ tin học phân tán, đây là hệ thống xử lý thông tin bao gồm nhiều bộ xử lýhoặc bộ vi xử lý nằm tại các vị trí khác nhau và được liên kết với nhau thôngqua phương tiện viễn thông dưới sự điều khiển thống nhất của một hệ điềuhành Một ứng dụng hệ phân tán giải quyết nổi bật chính là bài toán bãi đỗ xevới nhiều cổng vào/ra cùng lúc Trong giới hạn của tiểu luận kết thúc môn
học này, đề tài “Xây dựng chương trình quản lý bãi đỗ xe ôtô nhiều cổng
vào/ra” dựa trên các kiến thức về hệ phân tán để phân tích, thiết kế chương
trình hỗ trợ việc quản lý này
Nội dung của tiểu luận gồm có các phần sau:
- Những vấn đề chung nhất của hệ tin học phân tán
- Bài toán quản lý bãi đỗ xe nhiều cổng vào/ra
- 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 và áp dụng
Chúng tôi xin chân thành cảm ơn PGS.TS Lê Văn Sơn đã cung cấpkiến thức và tài liệu, hướng dẫn để có thể hoàn thành tiểu luận này
Nhóm học viên thực hiện
Mai Xuân PhúTrần Hữu PhướcHuỳnh Thị Hiền ThắmHoàng Tiến Sơn
Trang 6Hình 1 Các thành phần của hệ tin học
Các thiết bị phần cứng bao gồm các thiết bị xử lý trung tâm, bộ nhớ vàcác thiết bị ngoại vi đóng vai trò là một trong hai loại tài nguyên cơ sở của hệthống tin học Các chương trình ứng dụng là thành phần tiếp theo sau hệ điềuhành được hiểu như là các phần mềm cơ sở phục vụ cho việc triển khai cácứng dụng cụ thể như chương trình dịch, hệ quản trị cơ sở dữ liệu, các chươngtrình trợ giúp sử dụng các thiết bị chuyên dụng, các trò chơi điện tử
Người sử dụng (NSD) ở đây được hiểu theo nghĩa rộng, dưới góc độcủa hệ điều hành, có thể là các nhà chuyên môn, các máy tính, các hệ tự độngvận hành, gắn với máy tính đang khai thác hệ thống qua lệnh điều khiểntheo một thuật toán nào đó nhằm đạt được mục tiêu xác định từ trước
Hệ điều hành các máy tính và mạng máy tính gọi tắt là hệ điều hànhđược đặt sát phần cứng, nó gắn kết chặt chẽ với phần thiết bị bởi một hệ
Trang 7thống các chương trình, điều khiển và sắp xếp nhằm khai thác phần cứngphục vụ cho các chương trình ứng dụng khác nhau của NSD khác nhau vớikết quả và hiệu năng chấp nhận được
Như vậy, hệ tin học bao gồm ba thực thể: phần cứng, phần mềm và dữliệu:
Tóm lại, hệ tin học tập trung bao gồm một hệ thống máy đơn đượcđiều khiển bởi một hệ điều hành duy nhất và quản lý toàn bộ thông tin trênthiết bị nhớ cục bộ của mình
3 HỆ TIN HỌC PHÂN TÁN
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ý nằm tại
Trang 8các vị trí khác nhau được liên kết với nhau thông qua phương tiện viễn thôngdưới sự điều khiển thống nhất của một hệ điều hành.
phần mềm
Hệ thống truyển thông
Hệ thống dữ liệu
Hình 3 Thực thể của hệ tin học phân tán
Đặc điểm cần nhấn mạnh của hệ là các hệ xử lý thông tin thành phần:+ Không dùng chung hoặc chia sẻ bộ nhớ
+ Không sử dụng chung đồng hồ xung nhịp
+ Chúng liên lạc với nhau thông qua mạng truyền thông
+ Mỗi hệ xử lý có bộ xử lý, bộ nhớ và hệ điều hành riêng của 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ưngchức năng cơ bản nhất là đảm bảo cung cấp cho người sử dụng khả năng truycập có kết quả đến các tài nguyên vốn có và rất đa dạng của hệ thống như tàinguyên dùng chung Ưu điểm của hệ phân tán so với hệ tập trung như sau:
+ Tăng tốc độ bình quân trong tính toán xử lý
+ Cải thiện tình trạng luôn sẵn sàng của các loại tài nguyên
+ Tăng độ an toàn cho dữ liệu
+ Đa dạng hóa các loại hình dịch vụ tin học
Trang 9+ Bảo đảm tính toàn vẹn của thông tin.
Các thao tác chuẩn của hệ phân tán:
+ Tiếp nhận và ghi yêu cầu chỉ dẫn
+ Dịch yêu cầu để có các thông tin cần thiết Thực hiện một số côngviệc của hệ thống cục bộ như kiểm tra quyền truy cập thông tin,lập hóa đơn dịch vụ
+ Gửi kết quả cho hệ thống đã phát yêu cầu
Trang 10CHƯƠNG II
CƠ SỞ LÝ THUYẾT
1 BÀI TOÁN BÃI ĐỂ XE ÔTÔ NHIỀU CỔNG VÀO/RA
1.1 Phát biểu bài toán
Bài toán bãi đỗ xe là một bài toán kinh điển trong hệ phân tán nhằm
mô tả về việc đồng bộ hóa các tiến trình
Ta xét các ký hiệu sau (hình 4):
BV (Bảo vệ): có nhiệm vụ phân phối chỗ cho các xe ôtô
VT (vị trí) cho từng xe ôtô cụ thể Các mũi tên hai chiều được sửdụng để mô tả dòng vào ra của ôtô
Hình 4 Mô phỏng bãi đậu xe ôtô
Trang 11của bãi để xe Trong khi anh ta nghĩ rằng bãi xe đã bị đầy, khi đó lại có nhiềulá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 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, BV không nắm được trạng thái hiện hành
của bãi
Tình huống thứ 2:
Nếu ta có bãi để xe với nhiều cổng và tại mỗi cổng có một BV thì mỗi
BV chỉ có thể biết trạng thái với độ trễ nhất, đó là tình huống có nhiều trung
tâm ra quyết định (hợp lực) như trường hợp minh họa của hình trên.
Trên thực tế, một người bảo vệ nào đó tin rằng không còn chỗ trốngnữ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 ratrường hợp là cùng một lúc các BV giải quyết các xe vào cùng một vị trí
trong bãi (tương tranh) vì họ thiếu thông tin.
Tình huống thứ 2 đặt ra ở đây liên quan trực tiếp đến vấn đề cung cấptài nguyên của hệ, chức năng cung cấp được phân tán trên nhiều trạm của hệ.Trong đó một người bảo vệ có vai trò như là chương trình cung cấp của bãi
để xe, ở đây, chỗ để xe được xem là tài nguyên của hệ, các ô tô vào bãi là cáctiến trình của hệ
Như vậy, các BV phải hợp lực với nhau để phân phối chính xác các chỗ
trống trong bãi, đặc biệt là số lượng chỗ còn trống càng ít (tài nguyên hạn
chế) thì vai trò của hợp lực càng quan trọng.
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ầnthiết để đảm bảo cho hoạt động cung cấp được hoàn toàn chính xác
Tình huống thứ 3:
Để thấy được tầm quan trọng mang tính quyết định của trình tự xử lýthông điệp đối với yêu cầu gắn bó của hệ, ta hãy tiếp tục xem xét một trườnghợp về không gắn bó của bài toán bãi để xe: Giả sử rằng ở thời điểm cho
Trang 12trước ta có 4 người bảo vệ và có 100 chỗ còn trống Tất cả các BV để 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 thôngtin cho ở bảng sau:
2 M2 Có 10 chỗ bị chiếm
3 M3 Dành 10% chỗ trống để quét dọn bãi
Bảng 1 Ký hiệu thông điệp
Hình 5 Thời hạn truyền và nhận thông điệp không có trật tự
Trật tự
xử lý
Thông điệp
Giá trị
Thông điệp
Giá trị
Thông điệp
Giá trị
Thông điệp
Giá trị
Bảng 2 Sự gắn bó thông tin giữa các bảo vệ
Như vậy, trong bài toán hệ quản lý đỗ xe, việc không gắn bó dữ liệuluô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ựchiệ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ệ) có
Trang 13sự 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ântí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ếtvấn đề này được nêu lên ở chương tiếp
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.Qui tắc thứ ba, nhấn mạnh đến sự thiết yếu phải có một trật tự duy nhấttrê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ôngqua việc hợp lực của các tiến trình cung cấp Vấn đề nghiên cứu phương phápsắp xếp nhằm xác lập một trật tự đảm bảo cho yêu cầu đồng bộ hóa đượctrình bày ở phần sau
Trang 14trình thi hành miền găng một cách tuần tự chứ không phải là đồng thời, haynói cách khác là làm thế nào tuân theo giải thuật loại trừ tương hỗ
2.3 Phân nhóm các thuật toán truy cập loại trừ tương hỗ
Truy cập vào miền găng dựa trên sự xác nhận (contention based): Mỗi
tiến trình phải được xác nhận yêu cầu để truy cập vào miền găng Hay nóicách khác, các tiến trình cạnh tranh hay tranh giành nhau quyền truy cập vàomiền găng
Truy cập vào miền găng dựa trên dấu (token based): Việc truy cập vào
miền găng được điều khiển bởi một token Người giữ token có quyền thihành đoạn găng của nó
Tổng quát, một trạm bất kỳ trong hệ thống có thể:
• Yêu cầu miền găng
• Thi hành miền găng
• Hoặc không làm gì cả đối với miền găng (thi hành trong đoạnkhông phải miền găng)
• Các thuật toán nên thỏa mãn các yêu cầu: không bế tắc, khôngthiếu, các yêu cầu được thi hành theo thứ tự chúng được tạo, có thểvẫn hoạt động khi có sự cố tại một hoặc nhiều trạm
Trang 15 Mỗi bộ xử lý p i duy trì một biến đếm (nhãn thời gian logic) L i, cógiá trị ban đầu là 0.
Mọi thông báo do p i gửi đi được gán nhãn thời gian giá trị hiện thời
của L i
Với mỗi sự kiện tính a, L i được tăng thêm để lớn hơn giá trị trước
đó và nhãn thời gian của mọi thông báo nhận được
L(a) là giá trị của L i khi sự kiện a kết thúc, ký hiệu L i (a).
Trong hệ thống không đồng bộ, thường không thể biết sự kiện nào xảy
ra trước sự kiện nào
Ví dụ 1:
+ p 0 gửi thông báo m 0 cho p 1
+ Trước khi m 0 tới p 1 , p 1 gửi thông báo m 1 cho p 0
+ p 0 và p 1 không thể biết thông báo nào đã được gửi trước
Ví dụ 2:
+ p 0 gửi thông báo m 0 cho p 1
+ Sau khi m 0 tới p 1 , p 1 gửi thông báo m 1 cho p 0
+ p 0 và p 1 biết m 0 được gửi và nhận trước khi m 1 được gửi
Trang 16 Cần sắp xếp các sự kiện theo thứ tự bộ phận.
2.4.4 Thứ tự bộ phận “xảy ra trước”.
Trong một thực hiện, sự kiện tính a xảy ra trước sự kiện tính b, ký hiệu
a ® b, nếu:
• a và b xuất hiện trên cùng một bộ xử lý và a xảy ra trước b trong
thực hiện trên bộ xử lý đó, hoặc
• a gây ra việc gửi thông báo m và b bao hàm việc nhận thông báo m,
hoặc
• Có sự kiện tính c sao cho a ® c và c ® b.
Xảy ra trước có nghĩa là thông tin từ sự kiện a có thể ảnh hưởng đến
sự kiện b.
Nếu trong hai sự kiện không có sự kiện nào xảy ra trước thì chúng
tương tranh, ký hiệu ║.
2.5 Thời gian logic vector
2.5.1 Vấn đề đối với đồng hồ logic
a ® b Þ L(a) < L(b); chưa chắc L(a) < L(b) Þ a ® b
"Xảy ra trước" là thứ tự bộ phận, trong khi các giá trị đồng hồ logic
là những số nguyên có thứ tự toàn phần
2.5.2 Thời gian logic vector
Hệ thống đồng hồ vector là tổng quát hóa của đồng hồ logic Mỗi đồng
hồ là một vector n chiều thể hiện bởi n phần tử không âm Mỗi trạm S i nắm
giữ một vector H i [1 n], với H i được gọi là đồng hồ cục bộ của trạm S i (i là số thứ tự của trạm S i trong hệ, 1 i n, n là số trạm có trong hệ).
H i [j] cho thấy hiểu biết mới nhất của S i về thời gian cục bộ của trạm S j.Như vậy thời gian vector cho ta thấy toàn cảnh của thời gian logic giữa cáctrạm
2.5.3 Giải thuật cập nhật đồng hồ vector
Các quy luật để một trạm S i cập nhật lại đồng hồ vector của mình:
Trang 17 Trước khi thực hiện một sự kiện bất kỳ, Si cập nhật lại thời gian
vector của mình như sau:
H i [i] := H i [i] + 1
Trước khi gửi đi một thông điệp m, trạm Si sẽ gán nhãn thời gian cho thông điệp đó theo vector thời gian t mới nhất của trạm Si vào thời điểm gửi Trạm S j khi nhận được thông điệp sẽ cập nhậtlại đồng hồ vector của nó theo công thức:
H j [i] := max(H j [i], t[i]), "i=1 n
2.5.5 Ví dụ về cập nhật thời gian vector
Hình 7 Cập nhật thời gian vector
H(g) = (0,0,1) và H(b) = (2,0,0) là không thể so sánh mặc dù L(g) = 1
và L(b) = 2.
Trang 182.5.6 Xác lập thứ tự nhân quả giữa hai sự kiện
Việc xác lập thứ tự nhân quả của hai sự kiện a và b bất kỳ được thực
hiện dựa trên những quy tắc sau đây:
Quy tắc 1: Nếu hai sự kiện a, b xảy ra trên cùng một trạm S i, khi đó
a®b Û H i [a]<H i [b].
Quy tắc 2: Nếu a là sự kiện gửi đi một thông điệp m trên một trạm, và
b là sự kiện nhận được chính thông điệp đó thì a®b.
Quy tắc 3: Nếu hai sự kiện a, b xảy ra trên hai trạm S i và S j bất kỳ
trong hệ thì ta có: a®b Û H i [a]<H j [b].
Quy tắc 4: Nếu hai sự kiện a, b thì ta có: a║b Û H[a] ║ H[b].
2.6 Hàng đợi (Queue)
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).
Hàng đợi luôn chứa một thông điệp
Khi một trạm gửi thông điệp thì nó cũng đưa vào hàng đợi củamình
Mỗi trạm s đều có trang bị công tơ với các giá trị nguyên gọi là H s Đó
chính là đồng hồ lôgic tăng lên giữa hai sự kiện kế tiếp Trạm e phát thông
Trang 19điệp ghi dấu E của mình dựa trên giá trị hiện hành của H e Khi nhận được
thông điệp, trạm r cập nhật đồng hồ H r riêng của mình bằng giải thuật sau:
Nếu H r, thì
H r := H e +1Chấm dứt nếu
Sự kiện “Nhận thông điệp” lúc này được ghi nhận bằng giá trị của H r.Thuật toán này đảm bảo rằng thời gian nhận thông điệp là sau thời gian phát
nó đi
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à H i (a) Nếu a và b đều là hai sự kiện trên hai trạm i và j, ta luôn có
quan hệ xác định như sau:
a ® b Û H i (a) < H i (b)
Đó là trật tự không chặt chẽ 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
Ta có thể mở rộng quan hệ ® thành quan hệ trật tự chặt chẽ Þ bằngcá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 (H i (a),i)
Theo định nghĩa, ta có:
a Þ b Þ (H i (a) < H i (b))
hay
(H i (a) = H i (b) và i < j)
3.2 Trình bày giải thuật
1 Trạm i có thể gửi cho các trạm khác thông điệp có dạng (T,H i ,i),
trong đó:
T có thể nhận một trong ba giá trị REQ, REL và ACQ, xác định
bản chất của thông điệp khác nhau được mô tả trong bảng dưới
H i là dấu của thông điệp có nghĩa là đồng hồ lôgic của nó
i: số thứ tự của trạm gửi.
1 REQ Thông điệp REQ được phát đi cho tất cả cáctrạm, khi trạm i muốn vào trong đoạn găng.