Tải bản đầy đủ (.doc) (29 trang)

ĐỒ ÁN MÔN HỆ PHÂN TÁN: XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ BÃI ĐỖ XE ÔTÔ NHIỀU CỔNG VÀORA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (967.21 KB, 29 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA

ĐỒ ÁN MÔN HỌC HỆ PHÂN TÁN

XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ
BÃI ĐỖ XE ÔTÔ NHIỀU CỔNG VÀO/RA

GVHD
HVTH

:
:

PGS.TS. Lê Văn Sơn

Mai Xuân Phú (Nhóm trưởng)
Trần Hữu Phước
Huỳnh Thị Hiền Thắm
Hoàng Tiến Sơn
Lớp KHMT K31 (2015-2017)

Đà Nẵng - Tháng 11/2015


Đồ án môn học Hệ tin học phân tán

DANH SÁCH NHÓM 03
TT
1.


2.
3.
4.

Họ và tên

Email

Ghi chú

Huỳnh Thị Hiền Thắm
Trần Hữu Phước



Hoàng Tiến Sơn



Mai Xuân Phú



Nhóm trưởng

PHÂN CÔNG NHIỆM VỤ
TT

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.
2.
3.
4.
5.
6.
7.

Người thực hiện
Cả nhóm

Viết báo cáo (chương 1)

Huỳnh Thị Hiền Thắm

Viết báo cáo (chương 2)

Trần Hữu Phước

Viết báo cáo (chương 3)

Hoàng Tiến Sơn

Lập trình phần mềm

Mai Xuân Phú
Hoàng Tiến Sơn

Chuẩn bị slide báo cáo


Huỳnh Thị Hiền Thắm

Tổng hợp, chỉnh sửa báo cáo

Cả nhóm

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

2


Đồ án môn học Hệ tin học phân tán

MỤC LỤC
MỤC LỤC........................................................................................................3
DANH MỤC BẢNG VÀ HÌNH VẼ................................................................4
LỜI MỞ ĐẦU...................................................................................................5
CÁC KHÁI NIỆM CƠ BẢN VỀ HỆ TIN HỌC PHÂN TÁN.........................7
1.TỔNG QUAN VỀ HỆ TIN HỌC..................................................................7
2.HỆ TIN HỌC TẬP TRUNG..........................................................................8
3.HỆ TIN HỌC PHÂN TÁN............................................................................8
CƠ SỞ LÝ THUYẾT.....................................................................................11
1.BÀI TOÁN BÃI ĐỂ XE ÔTÔ NHIỀU CỔNG VÀO/RA..........................11
1.1. Phát biểu bài toán.....................................................................................................11
1.2. Một số tình huống....................................................................................................11

2.CƠ SỞ LÝ THUYẾT..................................................................................14
1.3. Các qui tắc cho các thuật toán cung cấp trong hệ phân tán.....................................14
1.4. Miền găng................................................................................................................14

1.5. Phân nhóm các thuật toán truy cập loại trừ tương hỗ..............................................15
1.6. Đồng hồ logic...........................................................................................................15
1.6.1. Đồng hồ logic là gì?.........................................................................................15
1.6.2. Giải thuật nhãn thời gian logic.........................................................................15
1.6.3. Vì sao sử dụng đồng hồ logic?.........................................................................16
1.6.4. Thứ tự bộ phận “xảy ra trước”.........................................................................17
1.7. Thời gian logic vector..............................................................................................17
1.7.1. Vấn đề đối với đồng hồ logic...........................................................................17
1.7.2. Thời gian logic vector......................................................................................17
1.7.3. Giải thuật cập nhật đồng hồ vector..................................................................17
1.7.4. So sánh hai vector............................................................................................18
1.7.5. Ví dụ về cập nhật thời gian vector...................................................................18
1.7.6. Xác lập thứ tự nhân quả giữa hai sự kiện.........................................................19
1.8. Hàng đợi (Queue)....................................................................................................19

3.GIẢI THUẬT LAMPORT..........................................................................19
1.9. Mô tả........................................................................................................................19
1.10. Trình bày giải thuật................................................................................................20

CHƯƠNG III..................................................................................................22
ÁP DỤNG GIẢI QUYẾT BÀI TOÁN...........................................................22
1.PHÂN TÍCH BÀI TOÁN............................................................................22
1.11. Phân tích bài toán...................................................................................................22
1.12. Trạng thái của các trạm..........................................................................................23

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

3



Đồ án môn học Hệ tin học phân tán

1.13. Thuật toán xử lý cho mỗi trạm...............................................................................24

2.XÂY DỰNG CHƯƠNG TRÌNH................................................................25
1.14. Tổ chức dữ liệu......................................................................................................25
1.15. Truyền thông điệp giữa các trạm...........................................................................26

CHƯƠNG TRÌNH DEMO.............................................................................27
BÀI TOÁN BÃI ĐỖ XE NHIỀU CỔNG VÀO/RA......................................27
1.Giao diện đăng nhập tại một trạm................................................................27
........................................................................................................................27
2.Giao diện quản lý tại một trạm....................................................................27
<HÌNH ẢNH >...............................................................................................27
KẾT LUẬN....................................................................................................28
TÀI LIỆU THAM KHẢO..............................................................................29

DANH MỤC BẢNG VÀ HÌNH VẼ

Hình 1. Các thành phần của hệ tin học.............................................................7
Hình 2. Ba thực thể của hệ tin học....................................................................8
Hình 3. Thực thể của hệ tin học phân tán.........................................................9
1.1. Phát biểu bài toán.....................................................................................................11

Hình 4. Mô phỏng bãi đậu xe ôtô...................................................................11
1.2. Một số tình huống....................................................................................................11

Bảng 1. Ký hiệu thông điệp............................................................................13
Hình 5 Thời hạn truyền và nhận thông điệp không có trật tự.........................13
Bảng 2. Sự gắn bó thông tin giữa các bảo vệ.................................................13

1.3. Các qui tắc cho các thuật toán cung cấp trong hệ phân tán.....................................14
1.4. Miền găng................................................................................................................14
1.5. Phân nhóm các thuật toán truy cập loại trừ tương hỗ..............................................15
1.6. Đồng hồ logic...........................................................................................................15
1.6.1. Đồng hồ logic là gì?.........................................................................................15
1.6.2. Giải thuật nhãn thời gian logic.........................................................................15

Hình 6. Đồng hồ logic....................................................................................16
1.6.3. Vì sao sử dụng đồng hồ logic?.........................................................................16
1.6.4. Thứ tự bộ phận “xảy ra trước”.........................................................................17
1.7. Thời gian logic vector..............................................................................................17
1.7.1. Vấn đề đối với đồng hồ logic...........................................................................17
1.7.2. Thời gian logic vector......................................................................................17
1.7.3. Giải thuật cập nhật đồng hồ vector..................................................................17

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

4


Đồ án môn học Hệ tin học phân tán

1.7.4. So sánh hai vector............................................................................................18
1.7.5. Ví dụ về cập nhật thời gian vector...................................................................18

Hình 7. Cập nhật thời gian vector...................................................................18
1.7.6. Xác lập thứ tự nhân quả giữa hai sự kiện.........................................................19
1.8. Hàng đợi (Queue)....................................................................................................19

Hình 8. Cấu trúc hàng đợi...............................................................................19

1.9. Mô tả........................................................................................................................19
1.10. Trình bày giải thuật................................................................................................20
1.11. Phân tích bài toán...................................................................................................22
1.12. Trạng thái của các trạm..........................................................................................23
1.13. Thuật toán xử lý cho mỗi trạm...............................................................................24
1.14. Tổ chức dữ liệu......................................................................................................25
1.15. Truyền thông điệp giữa các trạm...........................................................................26

LỜ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 con
ngườ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ông
qua 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ều
hà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 đỗ xe
vớ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.

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

5



Đồ án môn học Hệ tin học phân tán

Chúng tôi xin chân thành cảm ơn PGS.TS. Lê Văn Sơn đã cung cấp
kiế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ước
Huỳnh Thị Hiền Thắm
Hoàng Tiến Sơn

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

6


Đồ án môn học Hệ tin học phân tán

CHƯƠNG I

CÁC KHÁI NIỆM CƠ BẢN VỀ HỆ TIN HỌC PHÂN TÁN
1. TỔNG QUAN VỀ HỆ TIN HỌC
Một cách tổng quát, hệ tin học có thể bao gồm các thành phần bản như
phần cứng, hệ điều hành, các chương trình ứng dụng và người sử dụng
(NSD)… và có thể được mô tả như hình sau :

Hì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ều
hà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ương
trì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ự động
vận hành, gắn với máy tính... đang khai thác hệ thống qua lệnh điều khiển
theo 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ệ
GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

7


Đồ án môn học Hệ tin học phân tán

thống các chương trình, điều khiển và sắp xếp nhằm khai thác phần cứng
phục vụ cho các chương trình ứng dụng khác nhau của NSD khác nhau với
kế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:

Hình 2. Ba thực thể của hệ tin học

Vậy hệ thống tin học (Informatic System) là một hệ thống bao gồm hai
thành phần cơ bản phần cứng (hardware) và phần mềm (software) gắn bó hữu
cơ với nhau và có khả năng xử lý thông tin.


2. HỆ TIN HỌC TẬP TRUNG
Tiêu biểu là hệ thống máy đơn, là máy không kết nối vật lý và logic
với các máy khác.
Ở một thời điểm nhất định, máy đơn được điều hành bởi một hệ điều
hành duy nhất. Hệ thống như vậy được gọi là hệ tin học tập trung, thích hợp
với các máy tính loại trung và loại lớn.
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ên
thiế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

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

8


Đồ án môn học Hệ tin học phân tán

các vị trí khác nhau được liên kết với nhau thông qua 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ều hành.
Hệ phân tán gồm 4 thực thể:
1. Tập hợp phần cứng
2. Các hệ thống phần mềm
3. Hệ thống truyền thông
4. Hệ thống dữ liệu
Mô hình 04 thành phần như sau:


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ưng
chức năng cơ bản nhất là đảm bảo cung cấp cho người sử dụng khả năng truy
cậ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ài
nguyê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.

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

9


Đồ án môn học Hệ tin học phân tán

+ 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ông
việ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.


GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

10


Đồ án môn học Hệ tin học phân tán

CHƯƠ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ô

1.2. Một số tình huống
Bài toán nêu ra một số tình huống sau:
Tình huống thứ 1:
Giả sử bãi để xe ôtô là loại bãi lớn có một cổng vào dưới sự kiểm soát
của một người bảo vệ (BV) duy nhất. BV chỉ biết được một phần trạng thái
GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.


11


Đồ án môn học Hệ tin học phân tán

của 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 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ố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 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ấp
tà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ác
tiế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ần
thiế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ường
hợ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

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

12


Đồ án môn học Hệ tin học phân tán

trướ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ông
tin cho ở bảng sau:
STT Ký hiệu
Thông tin phát đi
1
M1
Thêm 20 chỗ trống
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ự

Bảo vệ 1

Trật tự
Thông Giá
xử lý
điệp
trị
100
1
M1
120
2
M2
110
3
M3
99

Bảo vệ 2
Thông Giá
điệp
trị
100
M1
120
M2
110
M3
99

Bảo vệ 3
Thông Giá

điệp
trị
100
M1
120
M2
110
M3
99

Bảo vệ 4
Thông Giá
điệp
trị
100
M1
120
M2
110
M3
99

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ệ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ệ) có
GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.


13


Đồ án môn học Hệ tin học phân tán

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 ở chương tiếp.
1.

2. CƠ SỞ LÝ THUYẾT
1.3. Các qui tắc cho các thuật toán cung cấp trong
hệ phân tán
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 qui tắc
sau:
TT
Qui tắc
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.
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
2
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
3
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ấ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 của các tiến trình cung cấp. Vấn đề nghiên cứu phương pháp

sắ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 được
trình bày ở phần sau.

1.4. Miền găng
Miền găng là đoạn chương trình cho phép tiến trình truy cập vào tài
nguyên dùng chung (nhưng mỗi lần chỉ một tiến trình được phép sử dụng).
Vấn đề miền găng: các sự truy cập chồng lên nhau có thể dẫn đến các
kết quả khác với truy cập tuần tự. Do đó làm thế nào bảo đảm rằng các tiến
GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

14


Đồ án môn học Hệ tin học phân tán

trình thi hành miền găng một cách tuần tự chứ không phải là đồng thời, hay
nói cách khác là làm thế nào tuân theo giải thuật loại trừ tương hỗ.

1.5. 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ói
cách khác, các tiến trình cạnh tranh hay tranh giành nhau quyền truy cập vào
miề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 thi
hà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ạn
khô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ông
thiế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.

1.6. Đồng hồ logic
1.6.1.

Đồng hồ logic là gì?

Đồng hồ logic là các giá trị gán cho các sự kiện tính để cung cấp thông
tin về thứ tự xảy ra của chúng.
Số nguyên L(e) gán cho sự kiện e trong một thực hiện thỏa mãn điều
kiện a → b ⇒ L(a) < L(b).
1.6.2.

Giải thuật nhãn thời gian logic

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

15


Đồ án môn học Hệ tin học phân tán

 Mỗi bộ xử lý pi duy trì một biến đếm (nhãn thời gian logic) Li, có
giá trị ban đầu là 0.
 Mọi thông báo do pi gửi đi được gán nhãn thời gian giá trị hiện thời
của Li.

 Với mỗi sự kiện tính a, Li đượ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 Li khi sự kiện a kết thúc, ký hiệu Li(a).
Ví dụ: Đồng hồ logic

Hình 6. Đồng hồ logic

Thứ tự bộ phận:
 a → b : L(a) = 1 < 2 = L(b)
 f → i : L(f) = 4 < 5 = L(i)
 a → e : L(a) = 1 < 3 = L(e)

Thứ tự toàn phần: Sử dụng thêm id của bộ xử lý trong nhãn thời gian.
ví dụ: L(a) = (1,0) < (1,1) = L(c).
1.6.3.

Vì sao sử dụng đồng hồ logic?

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:
+ p0 gửi thông báo m0 cho p1.
+ Trước khi m0 tới p1, p1 gửi thông báo m1 cho p0.
+ p0 và p1 không thể biết thông báo nào đã được gửi trước.
Ví dụ 2:
+ p0 gửi thông báo m0 cho p1.
+ Sau khi m0 tới p1, p1 gửi thông báo m1 cho p0.
+ p0 và p1 biết m0 được gửi và nhận trước khi m1 được gửi.
GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.


16


Đồ án môn học Hệ tin học phân tán

 Cần sắp xếp các sự kiện theo thứ tự bộ phận.
1.6.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 ║.

1.7. Thời gian logic vector
1.7.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.

1.7.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 Si nắm
giữ một vector Hi[1..n], với Hi được gọi là đồng hồ cục bộ của trạm Si (i là số
thứ tự của trạm Si trong hệ, 1≤ i ≤ n, n là số trạm có trong hệ).
Hi[j] cho thấy hiểu biết mới nhất của Si về thời gian cục bộ của trạm Sj.
Như vậy thời gian vector cho ta thấy toàn cảnh của thời gian logic giữa các
trạm.
1.7.3.

Giải thuật cập nhật đồng hồ vector

Các quy luật để một trạm Si cập nhật lại đồng hồ vector của mình:
GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

17


Đồ án môn học Hệ tin học phân tán

 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:
Hi[i] := Hi[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 Sj khi nhận được thông điệp sẽ cập nhật
lại đồng hồ vector của nó theo công thức:
Hj[i] := max(Hj[i], t[i]), ∀i=1..n
1.7.4.

So sánh hai vector

Cho H1 và H2 là hai vector nguyên n chiều.
+ Bằng nhau:


H1 = H2 ⇔ H1[i] = H2[i], ∀i

Ví dụ: (3,2,4) = (3,2,4)
+ Nhỏ hơn hoặc bằng:




H1 ≤ H2 ⇔ H1[i] ≤ H2[i], ∀i

Ví dụ: (2,1,4) < (3,2,4)
+ Nhỏ hơn:





H1 < H2 ⇔ H1 ≤ H2 và (H1 = H2)

Ví dụ: (2,1,4) < (3,2,4)
+ Không thể so sánh:


1.7.5.



H1 ║ H2 ⇔ (H1 ≤ H2) và (H2 ≤ H1)



Ví dụ: (3,2,4) ║(4,1,4)
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.

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

18


Đồ án môn học Hệ tin học phân tán


1.7.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 Si, khi đó
a→b ⇔ Hi[a]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 Si và Sj bất kỳ
trong hệ thì ta có: a→b ⇔ Hi[a]Quy tắc 4: Nếu hai sự kiện a, b thì ta có: a║b ⇔ H[a] ║ H[b].

1.8. 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ủa
mình.
Thêm

Loại bỏ

Đầu

Cuối
Hình 8. Cấu trúc hàng đợi


3. GIẢI THUẬT LAMPORT
1.9. Mô tả
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ồ lôgic để 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à Hs. Đó
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

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

19


Đồ án môn học Hệ tin học phân tán

đ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ồ Hr riêng của mình bằng giải thuật sau:
Nếu Hr, thì
Hr := He +1
Chấ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 Hr.
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à Hi(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 ⇔ Hi(a) < Hi(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ằ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 (Hi(a),i).
Theo định nghĩa, ta có:
a ⇒ b ⇒ (Hi(a) < Hi(b))
hay
(Hi(a) = Hi(b) và i < j)

1.10.

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,Hi,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.
• Hi 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.
TT 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.

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.


20


Đồ án môn học Hệ tin học phân tán

2
3

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.

ACQ

Thông điệp ACQ được gửi bởi trạm j cho
trạm i, khi trạm j đã nhận được từ trạm i
thông điệp REQ.

2. 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ố thứ tự> của từng thông điệp.
Theo cấu trúc, hàng đợi luôn luôn chứa một thông điệp và chỉ một thường
trực trong mỗi trạm, bao gồm trạm cục bộ. 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, Hinit , i)
Trong đó: i, Hinit là thời điểm khởi sự giống nhau cho tất cả các trạm.
3. Trên mỗi trạm, khi nhận được một thông điệp dạng (REQ, Hi, i)
hoặc (REL, Hi, i), tức là trạm i yêu cầu vào đoạn găng hoặc giải phóng đoạn
găng, thì thông điệp này sẽ thay thế bất kỳ thông điệp Mi nào khác. Khi nhận

thông điệp dạng (ACQ, Hi, i), thông điệp này thay thế Mi ngoại trừ nếu Mi là
một yêu cầu mà trong trường hợp đó ACQ bị bỏ qua. Do đó, ta có thể tiết
kiệm gửi đi thông điệp ACQ cho trạm i khi trạm này đã gửi một thông điệp
REQ và không còn thông điệp REL.
4. Trạm i được quyền vào đoạn găng khi thông điệp REQ của nó đến
trước theo định nghĩa của quan hệ ⇒ tất cả các thông điệp khác trong hàng
đợi của nó. Cần chú ý rằng hàng đợi chứa một thông điệp loại này trên một
trạm.

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

21


Đồ án môn học Hệ tin học phân tán

CHƯƠNG III
ÁP DỤNG GIẢI QUYẾT BÀI TOÁN
1. PHÂN TÍCH BÀI TOÁN
1.11.

Phân tích bài toán

Trong bài toán, chúng ta xem mỗi cổng là một trạm tại đây đặt một
server, người bảo vệ là các chương trình cài đặt trên server đó, các vị trí trong
bãi đỗ xe là các tài nguyên. Tại mỗi trạm, người bảo vệ sẽ có hai nhiệm vụ:
1. Phát đi các thông điệp và lưu vào queue thông điệp mới phát đi.
2. Nhận các thông điệp lưu vào queue (sắp xếp theo thời gian vector).
Có 5 loại thông điệp như sau:
TT 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
BV, khi BV i muốn tìm một vị trí trống.

2

REL

Thông điệp REL được phát đi cho tất cả các
BV, khi BV i đã giải phóng một vị trí.

3

ACQ

Thông điệp ACQ được phát đi bởi BV j cho BV
i, khi BV j đã nhận được từ BV i thông điệp
REQ.

4

PUT

Thông điệp PUT được phát đi cho tất cả các BV

khi BV i đã đặt một xe vào vị trí j.

5

FRE

Thông điệp FRE được phát đi cho tất cả các BV
khi BV i đã giải phóng vị trí j.

Khi một xe yêu cầu vào vị trí đậu, có nghĩa là tiến trình yêu cầu tài
nguyên dùng chung. Ngược lại, khi một xe yêu cầu ra khỏi vị trí đậu, nghĩa là
tiến trình khuyến nghị giải phóng tài nguyên dùng chung.
Mỗi trạm có một địa chỉ IP duy nhất định danh cho trạm và một Port
để quy định dịch vụ hoạt động trên trạm đó. Đồng thời, mỗi trạm có cơ sở dữ

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

22


Đồ án môn học Hệ tin học phân tán

liệu riêng để lưu trữ thông tin về trạng thái tài nguyên, thông tin địa chỉ IP và
cổng của các trạm khác.
Như vậy, tại một trạm nào đó, một xe yêu cầu được vào bãi thì tiến
trình phát tại trạm này sẽ phát sinh các thông điệp và gửi các thông điệp đến
trạm khác và ngay cả chính nó. Những thông điệp này sẽ được nhận bởi các
tiến trình nhận tại trạm nhận và đưa vào hàng đợi cục bộ của nó.
Phân tích bài toán bãi đỗ xe ở trên, chúng ta nhận thấy việc sắp xếp các
thông điệp được phát ra từ các trạm là điều cực kỳ quan trọng để đảm bảo

tính đồng bộ của dữ liệu nhằm quản lý tốt các dòng xe vào và ra. Vấn đề này
đặt ra yêu cầu phải duy trì một thời gian tuyệt đối đồng bộ.

1.12.

Trạng thái của các trạm.

Trạng thái của mỗi trạm được thể hiện trong biểu đồ sau:

Trạng thái 1-Rảnh rỗi: là thời điểm trạm không có xe vào, lúc này nó
chỉ xử lý các yêu cầu lưu trữ trong Queue của mình. Thông điệp này có thể
bao gồm cho xe ra khỏi bãi qua trạm này (giải phóng tài nguyên).
Trạng thái 2-Yêu cầu tài nguyên: một trạm chuyển sang trạng thái
này khi có một xe ra hoặc vào cổng. Khi đó, trạm sẽ gửi yêu cầu REQ đến
các trạm khác và chờ cho đến khi tất cả các trạng đều đồng ý cho sử dụng tài
nguyên.

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

23


Đồ án môn học Hệ tin học phân tán

Trạng thái 3-Sử dụng tài nguyên: Khi các trạm đã đồng ý (ACQ) thì
trạm này chuyển sang trạng thái sử dụng tài nguyên, có 2 trường hợp sử
dụng: Một là, đặt xe vào một vị trí nào đó, rồi gửi thông điệp PUT cho các
trạm khác; Hai là, giải phóng một vị trí, rồi gửi thông điệp FRE cho các trạm
khác để chỉ rõ vị trí đã giải phóng. Sau khi sử dụng xong tài nguyên, trạm sẽ
gửi thông điệp REL cho tất cả các trạm để trả lại tài nguyên, và trở lại trạng

thái Rảnh rỗi.
Trong một thời điểm, có nhiều trạm có cùng trạng thái Rảnh rỗi và Yêu
cầu tài nguyên nhưng chỉ duy nhất một trạm có trạng thái Sử dụng tài
nguyên.

1.13.

Thuật toán xử lý cho mỗi trạm

Vấn đề đồng bộ hóa các tiến trình vào/ra trong bài toán bãi đỗ xe ôtô
được thực hiện theo giải thuật loại trừ tương hỗ phân tán nhờ dấu trên cơ sở
thời gian vector.
Khi tiến trình pi muốn vào bãi thì quá trình gửi và nhận thông điệp sẽ
diễn ra như sau:
[1] pi gửi thông điệp yêu cầu (REQ, Hi, i) cho tất cả các tiến trình
trong mạng pj (với 1 ≤ j ≤ n, nghĩa là gửi cho cả chính nó).
[2] Các pj nhận được thông điệp này thì đẩy thông điệp vào hàng đợi
cục bộ của trạm đó và xử lý như sau:
i.

Nếu pj đang ở trạng thái 1-Rảnh rỗi hoặc 2-Yêu cầu tài
nguyên thì nó sẽ trả lời cho pi bằng thông điệp ACQ.

ii.

Ngược lại, nó chờ cho đến khi mình sử dụng xong tài nguyên
thì mới gửi cho pi thông điệp ACQ.

[3] Tại pi sau khi nhận được thông điệp trả lời từ tất cả các trạm sẽ
thực hiện cho xe vào bãi, sau đó gửi thông điệp REL đến tất cả

báo đã giải phóng tài nguyên.

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

24


Đồ án môn học Hệ tin học phân tán

Tiến trình pi muốn ra khỏi bãi:
[1] pi gửi thông điệp REL cho tất cả các tiến trình khác trong mạng.
[2] Xóa yêu cầu vào tương ứng của nó trong hàng đợi cục bộ.
Khi trạm ở trạng thái Rảnh rỗi hoặc Yêu cầu tài nguyên: thì trạm sẽ
lần lượt xử lý các thông điệp trong hàng đợi theo thứ tự như sau:
[1] Thông điệp (REL, Hj, j): có thông điệp REL tức là trước đó trạm j
đã gửi thông điệp REQ và hiện tại trạm j đã chuyển sang trạng
thái Rảnh rỗi. Vì vậy, xử lý của trạm này là lấy thông điệp REQ
của trạm j trong hàng đợi của mình, cập nhật CSDL (theo REQ)
và đồng hồ vector (theo REL). Đồng thời xóa 2 thông điệp này
của trạm j.
[2] Thông điệp (REQ, Hj, j): cập nhật đồng hồ vector của Hj rồi gửi
lại thông điệp ACQ cho trạm j.
Lưu ý: Ở trạng thái rảnh rỗi thì sẽ không có thông điệp ACQ trong
hàng đợi của mình.

2. XÂY DỰNG CHƯƠNG TRÌNH
1.14.

Tổ chức dữ liệu


Giả sử bãi đỗ xe có m chỗ để xe và n cổng vào/ra. Như vậy, sẽ có n
trạm trong hệ thống, các trạm phải biết được địa chỉ của các máy trên trạm
còn lại, và hiện trạng của bãi đỗ xe như thế nào.
Cơ sở dữ liệu tại mỗi trạm được quy ước gồm 2 file như sau:
station.txt gồm n dòng, mỗi dòng chứa thông tin máy chủ của mỗi
trạm tương ứng, cấu trúc như sau:
host
port
Trong đó host là địa chỉ server, port là cổng dịch vụ trên server đó.
parking.txt gồm m dòng, mỗi dòng ghi số 0 hoặc 1 tương ứng đang có
xe đậu tại vị trí đó hay không.

GVHD: PGS.TS. Lê Văn Sơn. Thực hiện: Nhóm 03, lớp KHMT K31.

25


×