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

tiểu luận môn lập trình mạng triển khai công tơ sự kiện phân tán trên n server n=2 và xác định giá trị ảnh của các công tơ sự kiện trên mỗi trạm

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 (306.86 KB, 30 trang )

Tiểu luận Môn học Lập trình Mạng nâng cao
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
  
BÁO CÁO MÔN HỌC
LẬP TRÌNH MẠNG
ĐỀ TÀI :
TRIỂN KHAI CÔNG TƠ SỰ KIỆN PHÂN TÁN TRÊN N
SERVER (N>=2) VÀ XÁC ĐỊNH GIÁ TRỊ “ẢNH” CỦA
CÁC CÔNG TƠ SỰ KIỆN TRÊN MỖI TRẠM
Giáo viên hướng dẫn:
PGS. TS. LÊ VĂN SƠN
Học viên thực hiện:
Huỳnh Anh Tuấn
Lớp: Khoa học Máy tính – K24
Đà Nẵng, 5/2012
MỤC LỤC
LẬP TRÌNH MẠNG 1
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 1/30
Tiểu luận Môn học Lập trình Mạng nâng cao
TRIỂN KHAI CÔNG TƠ SỰ KIỆN PHÂN TÁN TRÊN N SERVER (N>=2) VÀ
XÁC ĐỊNH GIÁ TRỊ “ẢNH” CỦA CÁC CÔNG TƠ SỰ KIỆN TRÊN MỖI
TRẠM 1
Giáo viên hướng dẫn: 1
PGS. TS. LÊ VĂN SƠN 1
Học viên thực hiện: 1
Lớp: Khoa học Máy tính – K24 1
1
Đà Nẵng, 5/2012 1
MỤC LỤC 1
LỜI GIỚI THIỆU 3


YÊU CẦU CỦA ĐỀ TÀI 4
PHẦN BÀI TẬP 26
KẾT LUẬN 29
TÀI LIỆU THAM KHẢO 30
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 2/30
Tiểu luận Môn học Lập trình Mạng nâng cao
LỜI GIỚI THIỆU
Ngày nay với sự phát triển của khoa học kỹ thuật đặc biệt là kỹ thuật tin học đã 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 mọi
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ả. Mạng máy tính và hệ tin học phân tán 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ụ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 như 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 của thực tế.
Trong hệ tin học phân tán, việc hợp lực của các thành viên trong hệ dẫn đến hàng
loạt các vấn đề như: định danh, cấp phát tài nguyên dùng chung (đảm bảo tránh tương
tranh), giải quyết sự cố tạo nên tính tin cậy của hệ. Để đảm bảo tính gắn bó của hệ, yêu
cầu đặt ra trước hết là đồng bộ hóa các tiến trình. Với hệ phân tán (không có bộ nhớ
chung, bộ tạo xung đồng hồ chung), khả năng gắn bó và việc đồng bộ hóa cho hệ chỉ dựa
trên phương tiện duy nhất là truyền thông điệp nên lời giải cho yêu cầu đồng bộ hóa
thường chỉ dừng lại ở mức chấp nhận được đối với mỗi hệ.
Nội dung của tiểu luận trình bày các vấn đề:
 Cở sở lý thuyết hệ phân tán.
 Đồng bộ hoá và gắn bó dữ liệu trong hệ phân tán.
 Triển khai chương trình tìm “ảnh” của các công tơ.
Em xin chân thành cảm ơn thầy giáo PGS.TS. Lê Văn Sơn đã cung cấp kiến thức và

tài liệu để em có thể hoàn thành tiểu luận này.
Học viên thực hiện
Huỳnh Anh Tuấn
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 3/30
Tiểu luận Môn học Lập trình Mạng nâng cao
YÊU CẦU CỦA ĐỀ TÀI
Vấn đề:
Ta triển khai công tơ sự kiện phân tán trên N Server (N≥2). Giả sử rằng trong thời gian
đầu các trạm hoạt động rất ổn định và ta cài đặt trên mỗi trạm một công tơ sự kiện cục
bộ. Hãy cho biết làm thế nào một trạm có thể có giá trị "ảnh" của các công tơ sự kiện trên
mỗi trạm.
Mục tiêu:
1. Giải quyết bài toán đồng bộ hóa và gắn bó dữ liệu
2. Viết chương trình cho biết giá trị “ảnh” của các công tơ.
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 4/30
Tiểu luận Môn học Lập trình Mạng nâng cao
CHƯƠNG I: TỔNG QUAN VỀ HỆ PHÂN TÁN VÀ LẬP TRÌNH MẠNG
I.1. Hệ thống tin học
Hệ thống tin học (Informatics System) là hệ thống bao gồm hai phần cơ bản là
phần cứng (hardware) hay là phần vật lý và phần mềm (software) là phần logic hay là
chương trình gắn bó hữu cơ với nhau và có khả năng xử lý thông tin. Hệ thống tin học
gồm ba thực thể: phần cứng, phần mềm, dữ liệu.
I.2. 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 các 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.
Hệ tin học phân tán là hệ thống không chia sẻ bộ nhớ và đồng hồ. Điều đó cho phép
phân biệt với một xu hướng tin học khác về phân tán các tính toán trên nhiều bộ xử lý
hay vi xử lý của hệ thống đa bộ xử lý.

Hệ tin học phân tán đòi hỏi hệ thống phần cứng của mình phải trang bị bộ nhớ cục
bộ. Các bộ xử lý trao đổi với nhau thông qua các hệ thống đường truyền khác nhau như là
cáp quang, điện thoại, cáp chuyên dụng, bus trao đổi,
Mục tiêu của hệ phân tán:
- 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 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
- Đảm bảo tính toàn vẹn của thông tin.
I.3. Các mô hình hệ phân tán và ứng dụng mạng
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 5/30
Tiểu luận Môn học Lập trình Mạng nâng cao
Các lớp phần mềm:
Kiến trúc phần mềm: cấu trúc của phần mềm như là các lớp và các module trong
các thuật ngữ của các dịch vụ đưa ra và yêu cầu giữa các tiến trình trên cùng hoặc trên
các máy tính khác nhau.
Platform (hệ nền): phần cứng mức thấp nhất và các lớp phần mềm (hệ điều hành).
Middleware: một lớp của phần mềm mà mục đích của nó là đánh dấu heterogeneity
và để cung cấp một mô hình lập trình cho các ứng dụng, như: CORBA, RMI (Remote
Method Invocation), DCOM (Distributed Component Object Model),
I.4. Kiến trúc hệ thống
I.4.1. Mô hình Client/Server
Một WebServer thường là một client của một File Server cục bộ.
Các WebServer và các Server của Internet khác là các client của một DNS Server
cái mà dịch các tên miền Internet thành các địa chỉ mạng.
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 6/30
Tiểu luận Môn học Lập trình Mạng nâng cao
Một máy tìm kiếm là một Server, nhưng nó chạy chương trình được gọi là Web
Crawlers cái mà truy cập các Web server thông qua Internet cho thông tin yêu cầu.
Dịch vụ cung cấp bởi nhiều server, trong đó nhiều Server có thể:

 Mỗi phần là một tập hợp các đối tượng.
 Duy trì các bản sao của toàn bộ tập hợp các đối tượng trên một vài máy.
Ví dụ: Web Proxy Server: cung cấp một bộ nhớ cache chia xẻ cho các máy client tại
một site hoặc băng qua một vài site khác nhau
I.4.2. Mô hình tương tác trong hệ phân tán
 Thực hiện truyền thông:
o Sự tiềm ẩn (Latency):
 Sự trì hoãn lan truyền: thời gian cần thiết để một bit đầu tiên của một
thông điệp truyền đến được đích.
 Sự trì hoãn truyền: là khoảng thời gian giữa sự truyền bit đầu tiên và
bit sau cùng của một thông điệp.
 Sự trì hoãn xử lý: là thời gian cần để hệ điều hành xử lý/gửi/nhận
thông điệp.
 Sự trì hoãn xếp hàng: thời gian cần để một thông điệp xếp hàng ở
cuối máy chủ hoặc ở các node trung gian đợi để truyền đi.
o Băng thông (bandwidth): Tổng số thông tin có thể được truyền đi trong
một thời gian đã cho.
o Sự biến đống tạp (Jitter): thời gian khác nhau giữa các sự trì hoãn ảnh
hưởng bởi các thông điệp khác nhau.
 Đồng hồ và thứ tự các sự kiện:
o Không có khái niệm toàn cục của thời gian.
o Nhịp độ đồng hồ trôi: nhịp độ tương đối ở một đồng hồ máy tính trôi
dạt ra khỏi từ một đồng hồ tham chiếu hoàn hảo.
o Đồng bộ hóa đồng hồ:
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 7/30
Tiểu luận Môn học Lập trình Mạng nâng cao
o Hệ thống định vị toàn cầu (GPS): một ít máy tính có thể sử dụng máy
thu radio để nhận thời gian đọc từ GPS với độ chính xác là 1 micro-
giây. Chúng có thể gửi các thông điệp thời gian đến các máy tính khác
trong mạng tương ứng của chúng.

 Các đồng hồ logic: mỗi thông điệp là thời gian đóng dấu lên với một số nối
tiếp mà phản chiếu thứ tự lôgic của chúng.
CHƯƠNG II: ĐỒNG BỘ HÓA TRONG HỆ PHÂN TÁN
II.1.Đồng bộ hóa tiến trình
Đồ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.
II.1.1. Vấn đề tương tranh và hợp lực
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.
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 8/30
Tiểu luận Môn học Lập trình Mạng nâng cao
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 qui tắc sau:
STT 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
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 cuối, 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. Ở phần sau chúng ta nghiên cứu một số 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.
II.1.2. Vấn đề gắn bó dữ liệu
Gắn bó dữ liệu là quá trình khi thực hiện trao đổi thông tin qua lại với nhau vào tại
một thời điểm t nào đó thì giá trị các tiến trình phải giống nhau. Để hiểu rõ hơn về gắn bó
dữ liệu ta xét bài toán bãi đỗ xe như sau:
Trong đó:
BV: Người 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 ra vào.
Trong bài toán này chúng ta nhận thấy :
• Bãi đậu xe chính là tài nguyên
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 9/30
VT
VT
VT
VT
VT
VT
VT
VT
VT
VT

VT
VT
VT
VT
VT
VT
VT
VTVT
VT
VT
BV
BV
BV
BV
BV
BV
Tiểu luận Môn học Lập trình Mạng nâng cao
• 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
 Tình huống thứ 1:
Ta giả sử rằng 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ệ (NBV) duy nhất. 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 đượ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.
 Tình huống thứ 2:
- Nếu ta có bãi để xe có nhiều cổng vào và tại mỗi cổng có một người bảo vệ thì
mỗi người bảo vệ chỉ có thể biết được trạng thái với độ trễ nhất định và điều
đó đã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.
- 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.
- 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 chổ còn trống càng ít thì vai trò của hợp lực
còn quan trọng. Đây chính là sự không gắn bó dữ liệu ở bãi đậu xe ô tô
- Để hiểu rõ hơn vấn đề đồng bộ hoá ta xét ví dụ cụ thể như sau : 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 sau :
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 10/30
Tiểu luận Môn học Lập trình Mạng nâng cao
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 NBV sẽ có thông tin về 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 trạm.
Trật tự
xử lý
Bảo vệ 1 Bảo vệ 2 Bảo vệ 3 Bảo vệ 4
Thông
điệp
Giá
Trị
Thông
điệp
Giá
Trị

Thông
điệp
Giá
Trị
Thông
điệp
Giá
Trị
100 100 100 100
1 M1 120 M2 90 M3 90 M1 120
2 M3 108 M3 81 M1 110 M2 110
3 M2 118 M1 101 M2 100 M3 99
Trong bài toán quản lý bãi đỗ 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.
II.1.3. 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 là có một hệ thống vấn đề
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 11/30
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 sân bãi
Tiểu luận Môn học Lập trình Mạng nâng cao
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 :
Hình vẽ 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.
Theo hình vẽ trên, ta có thể biểu diễn trật tự như sau :
 Trật tự từng phần của các sự kiện
A
1
→ A
2
→ A
3
→ A
4
→ A
5
B
1
→ B
2
→ B
3
→ B
4
 Trao đổi thông tin

GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 12/30
C
1
: 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.
C
2
: 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
Tiểu luận Môn học Lập trình Mạng nâng cao
A
1
→ B
2
và B
3
→ A
4
 Chuyển qua

A
1
→ A
2
→ B
2
→ B
3
→ B
4
B
1
→ B
2
→ B
3
→ A
4
→ A
5
A
1
→ A
2
→ B
2
→ B
3
→ A
4

→ A
5
Ví dụ: Về các sự kiện không so sánh
B
1
và A
1
, A
2
, A
3
A
3
và B
2
, B
3
, B
4
Ràng buộc C1 thể hiện rằng trật tự có thể được bởi quan hệ có trước là tương thích
với các trật tự cục bộ được định nghĩa trong từng trạm.
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.
II.1.4. 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.
Ta áp dụng các ký hiệu trong bảng sau :
STT Ký hiệu Thuyết minh
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ó.
Trước hết, trong đề tài này nghiên cứu sự hoạt động của hệ không có sự cố, rồi sau
đó sẽ chỉ ra hiệu ứng của sự cố hay việc phục hồi lại một trạm. Đó là trường hợp đã nêu
lên trong H4 ở trên. Ngoài ra còn giả sử rằng hiện tượng gây sự cố trên một trạm chỉ làm
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 13/30
Tiểu luận Môn học Lập trình Mạng nâng cao
cho trạm đó không liên lạc được với mạng mà hoàn toàn không ảnh hưởng đến sự hoạt
động của các trạm còn lại hoặc ít nhất là một nhóm các trạm khác.
II.1.5. Trật tự tổng quát chặt chẽ
Trong một số trường hợp cần phải sắp xếp toàn bộ theo kiểu chặt chẽ các sự kiện
của hệ liên quan trực tiếp đến việc cung cấp các tài nguyên. Nguyên lý của vấn đề được
khái quát như sau. Một tiến trình nào đó gởi thông điệp để yêu cầu sử dung tài nguyên;
một tiến trình sử dụng xong tài nguyên nào đó truyền một thông tin giải phóng khi nó
ngừng chiếm dụng.
 Cung cấp tập trung :
Hiện tại, trong các hệ thống tập trung, mỗi một loại tài nguyên của hệ được quản lý
bởi một chương trình cung cấp duy nhất, goi là bộ cung cấp tài nguyên. Chương trình này
tiếp tục nhận tất cả các yêu cầu, khuyến nghị giải phóng và sắp xếp chúng trong một hàng
đợi xử lý theo kiểu loại trừ tương hỗ và xử lý chúng theo một trật tự nhất định của hàng
đợi này.

Trong các hệ phân tán, chương trình cung cấp nằm trên một trạm và các tiến trình
đề nghị lại ở trên các trạm khác; các yêu cầu và khuyến nghị giải phóng được truyền cho
chương trình cung cấp thông qua hình thức thông điệp chuyển theo các kênh của hệ
thống viễn thông. Chính vì vậy nhu cầu sắp xếp các yêu cầu này theo một trật tự nhất
định nào đó luôn được đặt ra.
Nếu chỉ có một thông điệp đến chương trình cung cấp thì trật tự đến thể hiện một
trật tự chặt chẽ. Ngược lại, nếu có nhiều thông điệp đến cùng một lúc thì việc sắp xếp
chúng phải theo kiểu loại trừ tương hỗ trong hàng đợi cục bộ của trạm có chứa chương
trình cung cấp. Điều đó cũng cho phép ta có một trật tự chặt chẽ.
Trật tự có được tại trạm cung cấp có thể không giống như trật tự phát, nếu thời gian
truyền không được cố định. Đây là trường hợp khá phổ biến trong mạng máy tính. Nhưng
nếu ta muốn xử lý các thông điệp theo trình tự không tính tới thời gian truyền, thì cần
phải tính đến một trật tự tổng quát của các lần truyền thông điệp từ các trạm khác nhau.
 Cung cấp phân tán :
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 14/30
3
.
a
P
(a

c) - bắc cầu -

b
Q

c
2
.
.

a
P
(a

b) - nhân quả -

b
Q

c
Tiểu luận Môn học Lập trình Mạng nâng cao
Vì lý do ổn định và hiệu quả mà ta phải phân tán chức năng cung cấp trên nhiều
trạm 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 để đảm bảo cho hoạt động cung cấp được hoàn toàn chính xác.
II.2.Sắp xếp kiểu đóng dấu
II.2.1. Đồng hồ logic
Đối với nhiều ứng dụng, các sự kiện không cần lập lịch hay đồng bộ đối với thời
gian thực. Nó chỉ là thứ tự sự kiện hoạt động liên quan. Trong trường hợp như vậy, đồng
hồ logic có thể được dùng để biểu thị thứ tự thông tin cho các sự kiện, đặc biệt trong hệ
phân tán, nó khó giữ được đồng hồ vật lý chung giữa tất cả các tiến trình đang sắp xếp.
Đồng hồ logic Lamport là khái niệm cơ bản để sắp xếp các tiến trình và các sự kiện trong
hệ phân tán.
II.2.2. Minh họa trật tự từng phần
Trong thực tế một số hệ thống
khi đồng bộ hóa chỉ đòi hỏi trật tự từng
phần. Chính vì vậy, trật tự hóa từng
phần giữa các sự kiện mà tiến trình của
nó cần phải đồng bộ là vấn đề cần phải quan tâm .
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ó trước” (→) hay “ở ngay trước”:

Trật tự các sự kiện được xác định dựa
trên các nguyên tắc sau:
1. Nếu A và B là hai sự kiện của cùng
một trạm và A xảy ra trước B thì ta
có A→B (trật tự cục bộ).
2. Nếu A là phát thông điệp từ một trạm
nào đó và B là nhận thông điệp thì ta
có A→B. (nhân-quả)
3. Nếu A→B và B→C, thì A→C. (bắc
cầu)
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 15/30
Tiểu luận Môn học Lập trình Mạng nâng cao
Sơ đồ của “ có trước ”:
• a → b : chúng ta có thể đi từ a đến b theo sơ đồ bằng cách di chuyển về phía
trước theo thời gian dọc theo các đường tiến trình và thông điệp. Ví dụ : p1
→ r4. (a tác động nhân quả đến b)
• Hai sự kiện là hợp lực nếu chúng có tác động nhân quả với nhau. Ví dụ : p3
và q3 là hợp lực. Cho dù q3 xảy ra tại thời điểm vật lý sớm hơn p3 , tiến
trình P không biết tiến trình Q đã làm gì tại thời điểm q3 cho đến khi nó nhận
được thông điệp tại thời điểm p4.
II.2.3. Gắn thời gian logic với các sự kiện
Các đồng hồ lôgic: gán một số cho mỗi sự kiện cục bộ.
Hệ thống các đồng hồ lôgic phải chính xác :
Điều kiện đồng hồ :
Để thực thi các đồng hồ thỏa mãn Điều kiện Đồng hồ, ta có thể áp dụng thuật toán
đóng dấu thời gian.
II.3.Đồng bộ hóa theo trật tự tổng quát chặt chẽ
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 16/30
p2
p1

p3
p4
q1
q2
q3
q4
q5
q6
r1
r2
r3
r4
P RQ
∀ sự kiện a,b : nếu a → b thì C(a) < C(b)
Tiểu luận Môn học Lập trình Mạng nâng cao
Trong các hệ thống tập trung, mỗi loại tài nguyên được quản lý bởi một chương
trình cung cấp duy nhất. Chương trình này tiếp nhận tất cả các yêu cầu, khuyến nghị giải
phóng và sắp xếp chúng trong một hàng đợi xử lý theo kiểu loại trừ tương hỗ.
Trong các hệ phân tán, chương trình cung cấp nằm trên một trạm và các tiến trình
đề nghị từ các trạm khác. Các yêu cầu, khuyến nghị giải phóng được truyền cho chương
trình cung cấp thông qua hình thức thông điệp chuyển theo các kênh của hệ thống viễn
thông. Chính vì vậy, nhu cầu sắp xếp các yêu cầu này theo một trật tự nhất định nào đó
luôn được đặt ra.
Trật tự từng phần chỉ có thể áp dụng cho một số hệ thống, điều này có nghĩa là một
số hệ thống có thể gắn bó được thông qua việc sắp xếp các sự kiện theo trật tự bằng quan
hệ “có trước”. Tuy nhiên có rất nhiều hệ phân tán các sự kiện không thể sắp được bằng
trật tự từng phần, do vậy phải cần đến trật tự chặt chẽ (=>) của các sự kiện.
Nếu chỉ có một thông điệp đến chương trình cung cấp thì trật tự đến thể hiện một
trật tự chặt chẽ. Ngước lại, việc sắp xếp chúng phải theo kiểu loại trừ tương hỗ cho hàng
đợi cục bộ của trạm có chứa chương trình cung cấp. Điều đó cũng chi phép có được một

trật tự chặt chẽ.
II.3.1. Cấu trúc trật tự tổng quát chặt chẽ
Lamport định nghĩa trật tự chặt chẽ dựa trên quan hệ “có trước”, nó gán cho mỗi
trạm một số duy nhất và sau đó sử dụng số này để lập trật tự cho các sự kiện không sắp
xếp được thứ tự bằng quan hệ “có trước”.
 Trật tự nhất quán của các sự kiện phát
 Định dạng thông điệp từ Pi : (m, Tm, i)
 Tại tiến trình Pi, một sự kiện phát (m, Tm, j) từ Pj được gọi là có trước sự
kiện phát (n, Tn, k) từ Pk nếu :
Nếu T
m
< T
n
, hoặc Nếu T
m
= T
n
và j < k
Hình sau minh họa cho dạng thông điệp với trật tự chặt chẽ ⇒
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 17/30
Tiểu luận Môn học Lập trình Mạng nâng cao
II.3.2. Giải thuật đóng dấu thời gian của Lamport
II.3.3. Các ký hiệu:
• Một chương trình phân tán được tạo thành bởi tập hợp n tiến trình độc
lập và không đồng bộ P1, P2, ,Pn. Các tiến trình này không chia xẻ
một đồng hồ chung.
• Mỗi tiến trình có thể xử lý một sự kiện tự động; khi gửi một thông
điệp, nó không phải đợi việc phân phát hoàn thành.
• Việc xử lý của mỗi tiến trình Pi, sản sinh ra một dãy sự kiện ei0,
ei1, , eix, eix+1,

Tập hợp các sự kiện được sản sinh ra bỡi Pi có một tổng thứ tự được xác định bởi
dãy các sự kiện eix  eix+1
Chúng ta nói rằng eix xảy ra trước eix+1
Quan hệ xảy ra trước  có tính bắc cầu: eii  eij với mọi i<j.
 Các sự kiện xảy ra giữa hai tiến trình đồng thời nói chung không quan hệ,
ngoại trừ hai tiến trình đó có liên quan theo quan hệ như sau:
Đối với mỗi thông điệp m trao đỗi giữa hai tiến trình Pi và Pj, chúng ta có e
i
x
=
send(m), e
j
y
= receive(m) và e
i
x
 e
j
y
.
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 18/30
P1 P2 P3 P4
0 0 0 0
(a,1,1)
(b,1,4)
3
2
2
3
2

2
Tiểu luận Môn học Lập trình Mạng nâng cao
 Các sự kiện trong một sự xử lý phân tán là được sắp xếp riêng biệt.
 Các sự kiện cục bộ là tổng thể được sắp đặt.
 Các sự kiện nguyên nhân là tổng thể được sắp đặt.
 Tất cả các sự kiện khác là không được sắp đặt.
Cho bất kỳ hai sự kiện e
1
và e
2
trong một sự xử lý phân tán, có thể là:
(i) e
1
 e
2
(ii) e
2
 e
1
(iii) e
1
|| e
2
(e
1
và e
2
là đồng thời).
 Ví dụ:
Những sự kiện nào là quan hệ  ? Những sự kiện nào là đồng thời ?

Thứ tự các sự kiện tại của các tiến trình tại các trạm phát nhận
II.3.4. Những điều kiện đồng hồ:
 Trong một hệ thống các đồng hồ logic, các tiến trình riêng biệt có một đồng hồ
logic mà được áp dụng theo một giao thức.
 Mỗi sự kiện được gán một timestamp (thời gian đánh dấu) trong cách thức mà thõa
mãn điều kiện bền chặt đồng hồ: nếu e
1
 e
2
thì C(e
1
) < C(e
2
).
Trong đó: C(e
i
) là timestamp (thời gian đánh dấu) được gán cho sự kiện e
i
.
 Nếu giao thức thõa mãn các điều kiện theo sau nữa, thì đồng hồ được nói rằng bền
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 19/30
Tiểu luận Môn học Lập trình Mạng nâng cao
chặt mạnh: nếu C(e
1
) < C(e
2
) thì e
1
 e
2

.
II.3.5. Thuật toán Lamport – Tính giá trị đồng hồ logic
R1:Tất cả các máy (tiến trình - Pi) sử dụng một bộ đếm (đồng hồ - Ci) với giá trị
khởi tạo là 0.
R2: Trước khi xử lý một sự kiện (gửi, nhận hoặc ngắt), Pi xử lý như sau: tăng bộ
đếm và gán cho mỗi sự kiện, như là timestamp (thời gian đánh dấu) của nó.
Ci = Ci + d (d>0, thường d=1)
R3: Mỗi thông điệp mang giá trị đồng hồ của người gửi nó tại thời điểm gửi. Khi
Pi nhận một thông điệp với timestamp (thời gian đánh dấu) Cmsg, nó xử lý như sau:
1. Ci = Max(C
i
, C
msg
)
2. Xử lý R2.
3. Phát thông điệp.
Đồng hồ logic tại bất kỳ tiến trình nào là ngày càng tăng đơn giản.
Các thời gian đánh dấu Lamport (Lamport timestamps)
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 20/30
Tiểu luận Môn học Lập trình Mạng nâng cao
CHƯƠNG III: SỰ GẮN BÓ DỮ LIỆU TRONG CSDL PHÂN TÁN
III.1. Tác động và giao dịch
Các đối tượng khác nhau của hệ không phải là các đối tượng độc lập nhau, chúng
quan hệ với nhau bởi tập hợp các quan hệ gọi là các ràng buộc toàn vẹn. Các ràng buộc
này thể hiện sâu sắc các đặc tính riêng biệt của hệ.
Trạng thái của hệ thoả mãn một tập các ràng buộc toàn vẹn gọi là trạng thái gắn bó.
Các nhà thiết kế và vận hành hệ mong muốn rằng việc thực hiện các tiến trình phải
duy trì cho được hệ trong trạng thái gắn bó. Để chính xác hoá đặc tính này, cần phải lưu ý
là trạng thái của hệ chỉ được xác định ở mức quan sát cho trước.
Ta quan tâm đến hai mức quan sát:

STT Mức Giải thích
1 NSD
Tiến trình là một dãy thực hiện các giao dịch.
Giao dịch đó là chương trình duy nhất được thực hiện từ
một trạng thái gắn bó dẫn hệ đến một trạng thái gắn bó
khác.
2 Hệ thống Mỗi giao dịch được cấu tạo từ nột dãy các tác động được
thể hiện như sau. Nếu 2 tác động A và B thuộc hai giao
dịch khác nhau được thực hiện bởi hai tiến trình thì hiệu
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 21/30
Tiểu luận Môn học Lập trình Mạng nâng cao
ứng tổng quát của chúng sẽ là hiệu ứng của dãy (A;B) hoặc
là (B;A)
Ở mức hệ thống, ta có thể nói rằng các tác động là phần tử nhỏ nhất không thể chia
cắt được nữa.
Cho một tập hợp giao dịch M={T1, T2…, Tn} lần lượt được thực hiện bởi các tiến
trình độc lập p1, p2,…,pn. Việc thực hiện tuần tự có nghĩa là thực hiện tất cả các giao
dịch của M theo kiểu nối đuôi nhau và tuân thủ một trật tự nào đó. Sự gắn bó của hệ được
bảo toàn theo định nghĩa là bằng việc thực hiện riêng biệt từng giao dịch. Do vậy, nó
cũng được bảo toàn trong chế độ thực hiện tuần tự của M.
Nếu vì lý do hiệu quả, nhiều giao dịch được thực hiện song song thì sự gắn bó
không còn đảm bảo được nữa.
Một yêu cầu khác nữa rất quan trọng là trong quá trình thực hiện hệ phải đảm bảo
cho các tác động không bị ngắt quãng.
III.2. Trật tự hóa các tác động
Trở lại với tập hợp giao dịch M = {T1, T2…, Tn} cho ở phần trước. Mỗi giao dịch
được cấu tạo từ một dãy các tác động. Bằng các tác động không chia sẻ được này, toàn
bộ sự việc thực hiện của tập hợp các giao dịch M bởi một tập hợp các tiến trình tương
tranh là tương đương với việc thực hiện một dãy S các tác động thuộc các giao dịch này,
như S = (a1, a2, , an) chẳng hạn. Trong trật tự tuân thủ trật tự nội tại của từng giao

dịch, dãy này bao gồm tất cả các tác động cấu tạo nên các giao dịch M; mỗi tác động chỉ
xuất hiện một và chỉ một lần. Một dãy như vậy gọi là trật tự hóa của tập các giao dịch M.
Ví dụ: Cho T1 = (a11, a12, a13, a14) và T2 = (a21, a22, a23). Một trật tự hóa (T1,
T2) được thể hiện như sau:
S = a21, a11, a12, a22, a13, a23, a14
Trong số các trật tự hóa của một tập hợp các giao dịch, điều rất quan trọng là phải
tách ra cho được những cái phục vụ trạng thái gắn bó dữ liệu và chúng được gọi là trật tự
hóa gắn bó.
Như vậy, đặc tính quan trọng của trật tự hóa là: các trật tự hóa tương ứng với việc
thực hiện tuần tự của tập hợp các giao dịch hay còn gọi ngắn gọn là trật tự hóa tuần tự.
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 22/30
Tiểu luận Môn học Lập trình Mạng nâng cao
Điều kiện đủ cho sự gắn bó của một trật tự hóa có thể được phát biểu như sau: Một
trật tự hóa là gắn bó, nếu nó có cùng quan hệ phụ thuộc với một trật tự tuần hoàn.
III.3. Triển khai giao dịch tôn trọng sự gắn bó
Cho một tập hợp giao dịch M={T1, T2…, Tn}. Một trật tự hóa của tập hợp các tác
động thành phần sẽ tương ứng với việc thực hiện hoàn toàn các giao dịch. Việc thu được
một trật tự hóa gắn bó chỉ có thể thành công khi áp dụng các ràng buộc trên trật tự thực
hiện các tác động. Nguyên lý của phương pháp là ở chỗ làm chậm một tác động nào đó
cho đến thời điểm mà sự thực hiện của nó không còn có nguy cơ phá hủy sự gắn bó của
trật tự hóa (bằng cách chặn tiến trình hiện hành).
Để đảm bảo các giao dịch trên tôn trọng sự gắn bó thông tin thì người ta đưa ra các
phương pháp, cơ chế để đảm bảo khi giao dịch vẫn có sự gắn bó thông tin toàn vẹn dữ
liệu trên cơ sở dữ liệu phân tán là:
• Cơ chế then cài: Cho phép một giao dịch có thể giải phóng đối tượng mà nó
đã cài then.
• Loại trừ tương hỗ: Nếu ta biết trước các đối tượng được xử lý bởi một giao
dịch nào đó, thì ta có thể cài then công việc truy cập đến các đối tượng.
• Then cài lựa chọn đối tượng: Một giao dịch thay đổi giá trị của đối tượng
phải loại trừ tất cả các đối tượng khác muốn truy cập, ngược lại thì việc truy

cập được tiến hành theo kiểu tương tranh.
• Giao dịch hai pha: 1. Toàn bộ đối tượng bị cài then vẫn ở trong tình trạng
cài then cho đến cuối giao dịch và 2. Không có then cài nào có thể diễn ra
tiếp theo một then cài khác trong cùng một giao dịch.
Bây giờ ta tưởng tượng rằng các đối tượng được phân tán trên nhiều trạm khác nhau
và được nối với nhau thông qua hệ thống viễn thông và rằng các tiến trình diễn ra trên
các trạm khác nhau. Hệ thống viễn thông cho phép các tiến trình trên các trạm khác nhau
có thể trao đổi các thông điệp với nhau. Ta giả định rằng các tiến trình và các phương
tiện truyền thông là các đối tượng có thể rơi vào sự cố. Một hệ quản lý tập hợp thông tin
phân tán bao gồm:
STT Cơ chế
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 23/30
Tiểu luận Môn học Lập trình Mạng nâng cao
1
Cơ chế cho phép sắp xếp một cách tổng quát các tác động của
cùng một giao dịch, ngay cả khi các tác động này diễn ra trên các
trạm khác nhau.
2
Cơ chế điều khiển các tranh chấp truy cập cục bộ vào các đối
tượng đảm bảo tôn trọng tính toàn vẹn của các đối tượng truy cập
cục bộ này.
3
Cơ chế có khả năng xử lý các bế tắc và thiếu thốn vô hạn, hậu
quả của việc hủy bỏ các giao dịch.
4 Cơ chế phục hồi các giao dịch đã hủy bỏ hay xử lý các sự cố.
Cơ chế xử lý sự cố
STT Phải thực hiện
1 Giao dịch T bắt buộc phải thực hiện một cách trọn vẹn
2 Nếu có sự cố xảy ra thì phải quay lại điểm xuất phát.
Muốn thực hiện những điều vừa nêu ở trên, người ta đòi hỏi giao dịch phải có các

đặc tính toàn vẹn như sau:
STT Phải thực hiện
1
Nếu một tiến trình bị sự cố trước khi kết thúc T nhưng lại sau
các thao tác thay đổi cần thiết của T, trạng thái của hệ là gắn bó.
2
Nếu một tiến trình bị sự cố trước khi diễn ra các thay đổi của T,
trạng hái của hệ là gắn bó.
3
Nếu một tiến trình bị sự cố giữa các thay đổi của T, trạng thái
của hệ là không gắn bó.
Nếu dữ liệu được phân tán trên nhiều server, để bảo đảm dữ liệu sẽ được ghi lên
đúng đắn lên mọi cơ sở dữ liệu, đòi hỏi phải có các cơ chế bảo vệ dữ liệu. Ví dụ như việc
cập nhật bảng cân đối tài khoản khách hàng ở ba cơ sở dữ liệu khác nhau. Nếu có sự cố
kết nối xảy ra trong thời gian ghi giao dịch, cơ sở dữ liệu sẽ mất tính đồng bộ. Xử lý giao
dịch khắc phục tình trạng này bằng cách giám sát những thay đổi tác động lên các cơ sở
dữ liệu liên quan nhằm bảo đảm toàn vẹn dữ liệu một khi có sự cố.
III.4. Quản lý gắn bó các giao dịch
Bây giờ ta hãy xem xét một hệ, trong đó các đối tượng được phân tán trên nhiều
trạm, không có bản sao mỗi đối tượng chỉ tồn tại có một bản duy nhất. Một giao dịch Tj
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 24/30
Tiểu luận Môn học Lập trình Mạng nâng cao
có thể tham chiếu đến các đối tượng nằm trên các trạm khác nhau và do vậy gồm nhiều
tác động thực hiện trên nhiều trạm. Như vậy ta phải xác định trên một trạm Si một tiến
trình Pji với nhiệm vụ thực hiện các tác động giao dịch Tj trên Si, các tác động được thực
hiện trên các trạm khác nhau có thể tiến hành theo kiểu song song.
Các phương pháp để quản lý gắn bó các giao dịch như: Phương pháp dự phòng để
chống bế tắc, phương pháp dựa vào việc hạn chế các khả năng diễn ra bằng cách phát
hiện bế tắc có tính chất động, điều đó dẫn đến hủy bỏ các giao dịch.
GV hướng dẫn: PGS. TS. Trần Văn Sơn Trang 25/30

×