1.Tư tưởng mục tiêu môn học
• Hiểu được các đặc trưng và mục tiêu thiết kế hệ phân tán – Các vấn đề kỹ thuật cơ bản của hệ phân tán.
• Nắm vững các kiến thức hệ thống về phương pháp luận và công cụ để xây dựng và phát triển các hệ phân tán.
• Thông qua Bài tập lớn môn học sinh viên có thể bước đầu tập dượt nghiên cứu và triển khai ứng dụng tiếp cận với các công nghệ liên quan đến hệ phân tán
2.Tài liệu tham khảo
* Hệ phân tán
+ Giáo trình :Hệ phân tán – GV- Ths Trần Thị Gia – Khoa CNTT – ĐHSPKT VInh
+ Giáo trình :Tập bài giảng chuẩn hóa của Bộ môn Mạng và HTTT, Khoa CNTT,-Đại học SPKT Vinh
+ Nguyễn Thúc Hải, mạng máy tính và các hệ thống mở, NXBGD, 1999
+ giáo trình : tập bài giảng chuẩn hoá của Bộ môn Truyền thông và Mạng máy tính, Khoa Công nghệ Thông tin, Đại học Bách khoa Hà nội
* Lập trình C++
+ Giáo trình :Lập trình hướng đối tượng– GV- Ths Lưu Hương Giang – Khoa CNTT – ĐHSPKT VInh
+ Nguyễn Thanh Thuỷ, Lập trình hướng đối tượng với C++,NXB Khoa học và kỹ thuật,1999
+ Nguyễn Thanh Thuỷ - Nguyễn Quang Huy, Bài tập lập trình ngôn ngữ C,NXB Khoa học và Kỹ thuật,2003
14 trang |
Chia sẻ: oanh_nt | Lượt xem: 1114 | Lượt tải: 1
Nội dung tài liệu Báo cáo Tìm hiểu phát tràn không đồng bộ, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
BÀI TẬP LỚN
MÔN HỆ PHÂN TÁN
TÌM HIỂU PHÁT TRÀN KHÔNG ĐỒNG BỘ
Danh sách nhóm Và công việc của từng người như sau:
--------------------ooo000ooo--------------------
1.Lê Thị Lương : Tìm hiểu Lý thuyết-Cài đặt chương trình
2.Trần Thị Thanh Liên : Tìm hiểu Lý thuyết-Cài đặt chương trình
3.Hoàng Anh Tuấn : Lý thuyết-Báo cáo-cài đặt
4.Nguyễn Thị Ngọc Gái : Tìm hiểu nội dung công việc
5.Trần Thị Châu : Tìm hiểu nội dung công việc
6.Nguyễn Thị Hoài : Tìm hiểu nội dung công việc
7.Nguyễn Thị Diễn : Tìm hiểu nội dung công việc
8.Lê Thị Lam : Tìm hiểu nội dung công việc
9.Nguyễn Ngọc Dũng : Tìm hiểu nội dung công việc
10.Hoàng Trọng Cường : Tìm hiểu nội dung công việc
11.Nguyễn Thị Hương : Tìm hiểu nội dung công việc
NỘI DUNG BÁO CÁO
------------
A.Chuẩn bị nội dung làm bài tập lớn
1.Tư tưởng
2.Tài liệu tham khảo
3.Giới thiệu ngôn ngữ lập trình C++ áp dụng cài đặt
B.Giới thiệu chung về hệ phân tán
1.Tổng quan về hệ phân tán
2.Phân loại hệ phân tán
3.Vai trò của hệ phân tán
4.Đặc trưng của hệ phân tán
5.Mục tiêu hệ phân tán
6.Lý thuyết hệ phân tán
7.Các lĩnh vực ứng dụng
C.Phát tràn không đồng bộ
1.Nêu Khái niệm
2.Nguyên tắc hoạt động
3.Mô hình truyền thông báo
4.Trạng thái
5.Cấu hình
6.Thực hiện và tính thỏa đáng
7.Thực hiện không đồng bộ
8.Giải thuật phát tràn không đồng bộ
9.Độ phức tạp giải thuật phát tràn
10.Tính thoả đáng
11.Độ phức tạp
D.Áp dụng giải thuật phát tràn không đồng bộ
1.Ví dụ minh họa
2.Cài đặt giải thuật
3.Chạy chương trình
A.Chuẩn bị nội dung làm bài tập lớn
1.Tư tưởng mục tiêu môn học
Hiểu được các đặc trưng và mục tiêu thiết kế hệ phân tán – Các vấn đề kỹ thuật cơ bản của hệ phân tán.
Nắm vững các kiến thức hệ thống về phương pháp luận và công cụ để xây dựng và phát triển các hệ phân tán.
Thông qua Bài tập lớn môn học sinh viên có thể bước đầu tập dượt nghiên cứu và triển khai ứng dụng tiếp cận với các công nghệ liên quan đến hệ phân tán
2.Tài liệu tham khảo
* Hệ phân tán
+ Giáo trình :Hệ phân tán – GV- Ths Trần Thị Gia – Khoa CNTT – ĐHSPKT VInh
+ Giáo trình :Tập bài giảng chuẩn hóa của Bộ môn Mạng và HTTT, Khoa CNTT,-Đại học SPKT Vinh
+ Nguyễn Thúc Hải, mạng máy tính và các hệ thống mở, NXBGD, 1999
+ giáo trình : tập bài giảng chuẩn hoá của Bộ môn Truyền thông và Mạng máy tính, Khoa Công nghệ Thông tin, Đại học Bách khoa Hà nội
* Lập trình C++
+ Giáo trình :Lập trình hướng đối tượng– GV- Ths Lưu Hương Giang – Khoa CNTT – ĐHSPKT VInh
+ Nguyễn Thanh Thuỷ, Lập trình hướng đối tượng với C++,NXB Khoa học và kỹ thuật,1999
+ Nguyễn Thanh Thuỷ - Nguyễn Quang Huy, Bài tập lập trình ngôn ngữ C,NXB Khoa học và Kỹ thuật,2003
3.Giới thiệu ngôn ngữ lập trình áp dụng cài đặt
C++ là ngôn ngữ lập trình hướng đối tượng và là sự mở rộng của ngôn ngữ C.Nó là ngôn ngữ lập trình rát quan trọng, là tiền đề để phát triển của mọi ngôn ngữ lập trình và cũng là tiền đề để phát triển ngôn ngữ lập trình Java,....Chương trình C++ của chúng em chạy dựa trên phần mềm c free v5.0 hoặc DEV-C.
B.Giới thiệu chung về hệ phân tán
1.Tổng quan về hệ phân tán
Các khái niệm hệ phân tán
Định nghĩa 1: Hệ phân tán là tập hợp các máy tính tự trị được kết nối với nhau bởi một mạng máy tính và được cài đặt phần mềm hệ phân tán.
Định nghĩa 2: Hệ phân tán là một hệ thống có chức năng và dữ liệu phân tán trên các trạm (máy tính) được kết nối với nhau bởi một mạng máy tính.
Định nghĩa 3: Hệ phân tán là một tập các máy tính độc lập giao tiếp với người dùng như một hệ thống thống nhất, toàn vẹn.
=> Như vậy có thể nói : HPT = MMT+ Phần mềm hệ phân tán
- Ví dụ: bộ đa xử lý, mạng cục bộ, Internet,ngân hàng tự động,hệ thống thương mại điện tử
Hệ phân tán vs. hệ song song :
- Hệ song song phối hợp nhiều bộ xử lý nhằm giải quyết một vấn đề cho trước một cách nhanh nhất .
- Trong hệ phân tán, mỗi bộ xử lý nói chung có chýõng trình làm việc riêng bán độc lập, vì lợi ích chung nên cần phối hợp hành động với nhau.
Mục đích môn học là nghiên cứu các công cụ và kỹ thuật xây dựng phần mềm phân tán
Tập trung vào khía cạnh giải thuật
2.Phân loại hệ phân tán
Trước đây, HPT dược chia thành 3 loại: hệ điều hành hệ phân tán, cơ sở dữ liệu hệ phân tán và các hệ thống tính toán hệ phân tán
Ngày nay, HPT được phân chia như sau:
HPT mang tính hệ thống: hệ điều hành phân tán
HPT mang tính ứng dụng: các hệ thống truyền tin phân tán
3.Vai trò của hệ phân tán
Trao đổi tin cậy: Tiền đề để phát triển các mạng máy tinh.
Chia sẻ tài nguyên: Giúp giảm chi phí hệ thống.
Nâng cao độ tin cậy thông qua sao lăp: Hệ thống vẫn hoạt động khi một bộ phận gặp sự cố.
Nâng cao hiệu suất thông qua song song hóa: Thực hiện công việc chung hay chia sẻ công việc.
Đơn giản thiết kế thông qua chuyên dụng hóa: Phân tích hệ thống thành các tiến trình tác hợp với nhau
4.Đặc trưng của hệ phân tán
Kết nối người sử dụng và tài nguyên.
Tính trong suốt.
Tính mở.
Tính co giản.
Tính chịu lỗi.
Tính an toàn an ninh.
5.Mục tiêu hệ phân tán
A. Kết nối người sử dụng và tài nguyên: giải quyết bài toán chia sẻ tài nguyên trong hệ thống (resource sharing)
B. Tính trong suốt: Ẩn giấu sự rời rạc và những nhược điểm nếu có của hệ phân tán đối với người sử dụng và những nhà lập trình ứng dụng ( Theo tiêu chuẩn ISO cho HPT ISO/IS/10746 tên là “ open distributed processing reference model” 1995 đã cụ thể hóa 8 dạng trong suốt:….)
C. Tính mở (openness): HPT gọi là mở nếu nó cung cấp các dịch vụ theo các quy tắc chuẩn mô tả cú pháp và ngữ nghĩa của dịch vụ đó.
D. tính co giãn (Scalability): thich nghi với sự thay đổi quy mô của hệ thống
6.Lý thuyết hệ phân tán
Phát hiện và khái quát hóa các vấn đề cơ bản
Phát biểu các vấn đề một cách chính xác
Thiết kế các giải thuật để giải quyết các vấn đề
Chứng minh tính đúng đắn của các giải thuật
Phân tích độ phức tạp của các giải thuật
Dựa trên các tiêu chí như thời gian thực hiện, lượng bộ nhớ sử dụng, số thông báo trao đổi
Chứng minh các kết quả về tính không thể và các kết quả cận dưới
Phụ thuộc nhiều vào giả thiết
7.Các lĩnh vực ứng dụng
Hệ điều hành: Các tiến trình cần giao tiếp với nhau.
Cơ sở dữ liệu phân tán: Các server CSDL cần được phối hợp đồng bộ.
Khắc phục lỗi phần mềm: Cho chạy nhiều chýõng trình để nâng cao độ tin cậy.
Mạng máy tính: Thiết kế các dịch vụ điều khiển mạng.
Kiến trúc đa xử lý: Các bộ xử lý kết nối với nhau cần phối hợp thực hiện.
C.Phát tràn không đồng bộ
1.Khái niệm mô hình không đồng bộ
Hệ thống gọi là không đồng bộ nếu không có cận trên cố định với thời gian.
Từ lúc thông báo được gửi đi cho đến lúc giao.
Hoặc giữa các bước thực hiện của bộ xử lý.
Ví dụ: Internet.
Trên thực tế cận trên là lớn và không cố định có thể coi là hệ thống không đồng bộ.
2.Nguyên tắc hoạt động
Nguyên tắc cơ bản của hệ phân tán là sự đồng bộ và đa tiến trình, trong trường hợp này, các tiến trình truy cập cùng một lúc và nhiều tài nguyên, để tránh điều này của giải pháp pháp chúng ta thực hiện truy cập loại trừ lẫn nhau, hay thực hiện một cách không đồng bộ bộ nhằm mục đích:
Tránh xung đột đường truyền
Tham gia sự ưu tiên trong đối tượng hệ thống máy .
Giải thuật này chia thành 2 giải pháp cơ bản:
Thứ nhất: đưa ra một thông điệp đặc biệt giữa các tiến trình, được gọi là biểu tượng token…
Phụ thuộc vào tổ chức của tiến trình
Tiến trình phải đợi tiến trình khác để xử lý(deadlock)
Thứ hai: Một tiến trình muốn truy cập vào tài nguyên khác thì phải được sự cho phép của tiến trình khác.
Tập trung dữ liệu.
Phân tán dữ liệu.
3.Mô hình truyền thông báo
p0
p1
p3
p2
1
2
3
1
1
1
2
2
Các nút của đồ thị = các bộ xử lý p0, p1,..., pn-1
Các cạnh không định hýớng của đồ thị = các kênh hai chiều nối từng cặp nút
Mỗi bộ xử lý pi gắn nhãn cho các kênh kề nó 1, 2, 3,... r (r là bậc của Pi).
4.Trạng thái
Mỗi bộ xử lý là một máy trạng thái
Mỗi trạng thái của pi có 2r thành phần đặc biệt outbufi[l] và inbufi[l], với l = 1..r
outbufi[l] chứa các thông báo pi gửi cho nút bên cạnh trên kênh l nhưng chưa đến nơi
inbufi[l] chứa các thông báo pi nhận được trên kênh l nhưng chưa xử lý
Tập trạng thái Qi chứa một tập con gồm các trạng thái ban đầu
Ở trạng thái ban đầu các inbufi[l] phải rỗng
Hàm chuyển của pi có đầu vào (trạng thái khả truy nhập) không bao gồm các outbufi[l] và đầu ra là một trạng thái có các inbufi[l] rỗng
5.Cấu hình
Cấu hình là một vectơ C = (q0,..., qn-1) trong đó qi là một trạng thái của pi
Trạng thái của các biến outbuf của cấu hình thể hiện các thông báo đang di chuyển trên các kênh truyền
Cấu hình ban đầu là một vectơ (q0,..., qn-1) thỏa mãn mỗi qi là một trạng thái ban đầu của pi
Nói cách khác ở cấu hình ban đầu tất cả các bộ xử lý đều ở trạng thái ban đầu tương ứng
Có thể coi cấu hình là trạng thái tổng thể của toàn bộ hệ thống
6.Thực hiện và tính thỏa đáng
Các điều kiện đối với chuỗi các cấu hình xen kẽ sự kiện mô tả hoạt động của hệ thống
Điều kiện an toàn : điều kiện phải đúng với mọi tiền tố hữu hạn của chuỗi mô tả
Chưa có điều gì xấu xảy ra
Điều kiện sống động : điều kiện phải đúng một số lần nhất định (có thể vô hạn lần)
Điều tốt sẽ đến
Thực hiện là một chuỗi mô tả thỏa mãn mọi điều kiện an toàn đặt ra
Thực hiện thỏa mãn mọi điều kiện sống động đặt ra được gọi là thực hiện thỏa đáng
7.Thực hiện không đồng bộ
Hệ thống gọi là không đồng bộ nếu không có cận trên đối với thời gian
từ lúc thông báo được gửi đi cho đến lúc giao
hoặc giữa các bước thực hiện của bộ xử lý
Thực hiện là chuỗi các sự kiện xen kẽ nhau: (giao,tính, giao, tính...)
Trường hợp sự kiện giao : thông báo đã cho được chuyển từ outbuf của bên gửi đến inbuf của bên nhận
Trường hợp sự kiện tính : trạng thái của bộ xử lý đã cho (bao gồm các outbuf) thay đổi theo hàm chuyển của nó
8.Giải thuật phát tràn không đồng bộ
Vấn đề đặt ra:
Bộ xử lý p0 muốn gửi một thông báo M cho tất cả các bộ xử lý khác trên mạng
Giải thuật
- Khai báo các biến:
Biến color có hai giá trị green và red :
Biến này dùng để kiểm tra xem bộ xử lý đã nhận được M hay chưa?
+ Nếu Color[i] = red thì bộ xử lý Pi chưa nhận được thông báo M
+ Nếu Color[i] = green thì bộ xử lý Pi đã nhận được M
Các inbuf và outbuf
outbufi[l] chứa các thông báo pi gửi cho nút bên cạnh trên kênh l nhưng chưa đến nơi
inbufi[l] chứa các thông báo pi nhận được trên kênh l nhưng chưa xử lý
- Khởi tạo:
Với p0, color là green và tất cả các outbuf chứa M
Với các bộ xử lý khác, color là red và các outbuf rỗng
- Hàm chuyển
Nếu M nằm trong inbuf và color là red thì đổi color thành green và gửi M vào tất cả các outbuf
- Bước lặp:
Trong các bộ xử lý kề với P0 ta chọn một Pi nào đó rồi thực hiện hai sự kiện:
+ Sự kiện giao tại Pi từ P0
+ Sự kiện tính bởi Pi
Sau đó tiếp tục xét một trong các bộ xử lý kề với Pi mà chưa xét (đang ở trạng thái màu đỏ), giả sử một Pk nào đó rồi tiếp tục thực hiện hai sự kiện nói trên đối với Pk
- Sự kiện :
Có hai loại sự kiện
Sự kiện giao : chuyển một thông báo từ outbuf của bên gửi đến inbuf của bên nhận
Thông báo sẽ được xử lý ngay khi bên nhận thực hiện sự kiện tính toán tiếp theo
Sự kiện tính : một bước thực hiện của bộ xử lý
Tương ứng với việc áp dụng hàm chuyển lên trạng thái khả truy nhập hiện thời
Trạng thái khả truy nhập cũ
Trạng thái khả truy nhập mới
Các thông báo gửi đi
+
Sự kiện tính
- Xử lý các thông báo gửi đến
- Chuyển trạng thái bộ xử lý
- Kết thúc:
Giải thuật kết thúc khi biến color của tất cả các bộ xử lý trong mạng đều có giá tri bằng green
9.Độ phức tạp giải thuật phát tràn
Xác định trạng thái kết thúc
Trạng thái kết thúc có giá trị biến color là green
Độ phức tạp thông báo
Số thông báo gửi đi trong mọi thực hiện thỏa đáng là 2m, trong đó m là số cạnh của đồ thị
Một thông báo được gửi đi trên mỗi cạnh theo mỗi hướng
Độ phức tạp thời gian
Thời gian tối đa đến khi kết thúc giải thuật là D + 1, trong đó D là đường kính của đồ thị
Đến thời gian t, thông báo M tới được tất cả các bộ xử lý cách p0 t cạnh (hoặc nhỏ hơn)
10.Tính thoả đáng
Với mô hình không đồng bộ, một thực hiện là thỏa đáng nếu
Mọi thông báo trong các outbuf nhất định sẽ được giao
Mọi bộ xử lý thực hiện vô hạn bước tính
11.Độ phức tạp
Tập trung vào hiệu suất xấu nhất
Độ phức tạp thông báo là số tối đa các thông báo gửi đi trong thực hiện thỏa đáng
Độ phức tạp thời gian là thời gian tối đa đến khi kết thúc trong thực hiện thỏa đáng
-Với mô hình không đồng bộ đo dựa trên các giả thiết
Thời gian xử lý một sự kiện là không đơn vị
Thời gian truyền một thông báo (từ sự kiện gửi đến sự kiện xử lý thông báo) tối đa là một đơn vị
Lưu ý : Độ chính xác của giải thuật không đồng bộ cần được chứng minh độc lập với các giả thiết thời gian
D.Áp dụng giải thuật phát tràn không đồng bộ
1.Ví dụ về phát tràn không đồng bộ
p2
p0
p1
M
M
green
Giả sử có một hệ phân tán gồm có 3 bộ xử lý P0, P1, P2 được cho dưới dạng một mô hình truyền thông báo như sau:
Bài toán: P0 muốn gửi thông báo M cho tất cả các bộ xử lý khác ở trên mạng
Giải quyết bài toán:
Áp dụng giải thuật phát tràn không đồng bộ để chuyển thông báo M từ P0 tới tất cả các bộ xử lý khác ở trên mạng được minh hoạ như sau:
Khởi tạo:
- P0 chứa thông báo M
- outbuf0(p0p1)=M, outbuf0(p0p2)=M
- color(p0)=green, color(p1)=color(p2)=red, outbufi()={ }
p2
p0
p1
M
M
green
Bước lặp 1: Xét P1 là nút kề với P0 trên mạng
- Thực hiện sự kiện giao tại P1 từ P0
(Tức là thực hiện việc: P0 gửi thông báo M từ outbuf của P0 sang inbuf của P1 qua kênh P0P1)
Khi đó ta sẽ có:
- Thưc hiện sự kiện tính bởi P1,, tức là áp dụng hàm chuyển lên P1 và xử lý thông báo gửi đến.
- Sau khi thực hiện sự kiện tính colo(p1) =green và P1 gửi M vào tất cả các outbuf của nó
Minh hoạ bước lặp 1:
p0
p2
p1
green
red
red
M
M
p0
p2
p1
green
red
red
M
Sự kiện giao
tại p1 từ p0
p0
p2
p1
M
M
Sự kiện tính
bởi p1
M
red
green
green
Minh hoạ bước lặp 2:
Liệt kê các nút kề với P1 rồi chọn một nút bất kỳ đang ở trạng thái màu đỏ để xét tiếp. Ở đây ta chọn P2 là nút kề tiếp theo để xét. Tức là ta tiến hành thực hiện liên tiếp hai sự kiện giao và tính cho nút P2
Tại bước lặp này mọi nút trên mạng đều được chuyển sang màu xanh và thuật toán kết thúc
p0
p2
p1
red
green
M
M
M
p0
p2
p1
red
M
M
Sự kiện giao
tại p2 từ p1
M
Sự kiện tính bởi p2
green
green
green
p0
p2
p1
green
M
M
M
green
green
M
Minh hoạ tổng thể : p0
p2
p1
green
red
red
M
M
p0
p2
p1
green
red
red
M
M
Sự kiện giao
tại p1 từ p0
p0
p2
p1
green
red
green
M
M
Sự kiện tính
bởi p1
M
p0
p2
p1
green
red
green
M
M
Sự kiện giao
tại p2 từ p1
M
2.Cài đặt giải thuật
#include
#include
int a[50][50],b[50],n,v;
int tim(int i, int m) //xet dinh i da chuyen thanh mau green chua?
{int j;
j=0;
while(( j<=m)&& b[j]!=i) j++;
if (j>m) return 0; // chua chuyen thanh mau green
else return 1; //da chuyen mau green
}
int main()
{int i,j;
cout<<"\n nhap so dinh cua do thi:";
cin>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0;
i=0;
while(i<n)
{ do
{cout<<"\n nhap dinh ke voi dinh "<<i<<" ("<<n<<": het dinh ke) : ";
cin>>j;
if (j!=i && j>=0 && j<n)
{a[i][j]=1;
}
}while(j!=n);
i++;
}
cout<<"\n hien do thi vua nhap:\n";
for(i=0;i<n;i++ )
{
cout<<" dinh "<< i<<" co dinh ke la: ";
for(j=0;j<n;j++)
if (a[i][j]==1) cout<<j<<" ";
cout<<"\n";
}
do{
cout<<"\n phat tran bat dau tu dinh ("<< n<<":thoat) : ";
cin>>v;
if (v>=0 && v<n)
{
a[v][v]=2; //chuyen dinh v thanh mau green
// b la tap cac dinh da chuyen thanh mau green, thu tu cac dinh la thu tu da duyet
b[0]=v;
j=0;
while(j<n)
{i=0;
int k;
k=b[j];// dinh k da o mau green tim dinh ke voi dinh k la dinh i chua chuyen thanh mau green
while(!((a[k][i]==1)&& !tim(i,j)) && i<n )
i++;
cout<<"\n";
if (i==n)
{
// neu cac dinh ke voi dinh k da chuyen mau green , ta xet cac dinh con chua chuyen thanh green cua dinh cha cua k trong do thi
int g;
g=j-1;
while((i==n)&&(g>=0))
{i=0;
int h;
h=b[g];
while(!((a[h][i]==1)&& !tim(i,j)) && i<n )
i++;
g--;
}
// neu cac dinh con da chuyen thanh green, ta xet cac dinh con lai
if (i==n)
{i=0;
while((i<n)&& (a[i][i]!=0)) i++;
}
}
j++;
b[j]=i;
a[i][i]=2; // chuyen dinh i thanh mau green
}
cout<<"\n ket qua phat tran khong dong bo :";
for(i=0;i<n;i++) cout<<b[i]<<" ";
}
}while(v>=0 && v<n);
return 0;
}
3.Chạy chương trình
Ta lấy ví dụ trên (mục D.1)
- Phát tràn 3 trường hợp bắt đầu từ P0 ,P1,P2
Chúng em xin chân thành cảm ơn !
Các file đính kèm theo tài liệu này:
- bao_cao_he_phan_tan_5091.doc