Một tiến trình nào đó cần sử dụng tài nguyên để phát triển công việc của mình phải yêu cầu bộ cung cấp một cách hợp thức bằng cách gửi thông điệp yêu cầu.. cầu sử dụng tài nguyên cũng có
Trang 1LỜI CAM ĐOAN
Tôi xin cam đoan :
1 Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của PGS.TS Lê Văn Sơn
2 Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm
Sinh viên
Nguyễn Trọng Tiệp
Trang 2LỜI CẢM ƠN
Để hoàn thành khóa luận tốt nghiệp này, tôi đã nhận được sự hướng dẫn tận tình ngay từ những ý tưởng cơ bản ban đầu của thầy giáo PGS.TS Lê Văn Sơn; cùng với sự giúp đỡ, động viên của các thầy cô giáo trong khoa Tin học trường Đại học Sư Phạm – Đại học Đà Nẵng, những người đã tận tình dạy dỗ, truyền lại cho chúng tôi kiến thức và những bài học kinh nghiệm quý giá Bên cạnh đó tôi cũng nhận được sự giúp đỡ từ các thầy cô trong khoa Tin học, và các anh, chị, bạn bè giúp đỡ tôi trong khóa luận tốt nghiệp này
Tôi xin chân thành cảm ơn thầy giáo PGS.TS Lê Văn Sơn là người trực tiếp hướng dẫn tôi trong khóa luận này – thầy đã hướng dẫn rất tận tình, thầy
Trang 3MỤC LỤC
LỜI CAM ĐOAN 1
LỜI CẢM ƠN 2
MỤC LỤC 3
DANH MỤC CÁC HÌNH VẼ 5
MỞ ĐẦU 7
Chương 1: BẾ TẮC VÀ CÁC CHIẾN LƯỢC CUNG CẤP TÀI NGUYÊN TRONG HỆ PHÂN TÁN 11
1.1 MỘT SỐ KHÁI NIỆM 11
1.2 BẾ TẮC (DEADLOCK) TRONG VIỆC CUNG CẤP TÀI NGUYÊN DÙNG CHUNG 13
1.3 CHIẾN LƯỢC CUNG CẤP TÀI NGUYÊN 15
1.3.1 Cung cấp tài nguyên duy nhất 15
1.3.2 Cung cấp một tập hợp các tài nguyên Vấn đề bế tắc 18
Chương 2: TỔNG QUAN VỀ THUẬT TOÁN LOMET 22
2.1 CÁC PHƯƠNG PHÁP CUNG CẤP SỬ DỤNG TRẠNG THÁI TỔNG QUÁT 22
2.2 THUẬT TOÁN LOMET 25
2.2.1 Vị trí của vấn đề 25
2.2.2 Nguyên lý và thuyết minh phương pháp 27
2.2.3 Thuật toán 28
Chương 3: XÂY DỰNG ỨNG DỤNG BÀI TOÁN BÃI ĐỔ XE 30
3.1 GIỚI THIỆU BÀI TOÁN 30
3.2 GIẢI PHÁP TRONG BÀI TOÁN 32
3.3 PHÂN TÍCH ỨNG DỤNG 33
3.3.1 Mô hình use-case (Hình 3.3) 33
3.3.2 Đặc tả chức năng của client 33
3.3.3 Đặc tả chức năng của các server 37
3.4 XÂY DỰNG ỨNG DỤNG 44
3.4.1 Xây dựng client 44
3.4.2 Xây dựng server 45
Trang 43.5 CÀI ĐẶT ỨNG DỤNG 47
3.5.1 Client 47
3.5.2 Server 51
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 57
DANH MỤC TÀI LIỆU THAM KHẢO 58
Trang 5DANH MỤC CÁC HÌNH VẼ
Số hiệu
Hình 1.2 Đồ thị cung cấp tài nguyên bị bế tắc 14 Hình 1.3 Đồ thị truy cập vào tài nguyên bằng server duy nhất 16
Hình 1.4 Đồ thị truy cập vào tài nguyên bằng một chương trình trực
Hình 2.6 Trạng thái cung cấp tài nguyên trên 3 trạm 28
Hình 3.2 Mô phỏng bãi đậu xe trong mạng máy tính 31 Hình 3.3 Minh họa mô hình use-case của ứng dụng 33
Hình 3.5 Biểu đồ hoạt động chức năng yêu cầu ra khỏi bãi đậu
Trang 6Hình 3.10 Mô tả hoạt động của Multicast trong java 42
Hình 3.11 Mô tả hoạt động của Multicast ứng dụng trong
Hình 3.12 Sử dụng Lamport để giải quyết truy cập tài nguyên 43
Hình 3.15 Giao diện chính của Client mục gởi – trả xe 47
Hình 3.17 Giao diện xem hiện trạng của bãi đậu xe 49 Hình 3.18 Giao diện chính của Client mục xem hiện trạng 50 Hình 3.19 Giao diện chính của Server khởi động 51 Hình 3.20 Chương trình chạy của Server 1 trong vòng tròn ảo 52 Hình 3.21 Chương trình chạy của Server 2 trong vòng tròn ảo 53 Hình 3.22 Chương trình chạy của Server 3 trong vòng tròn ảo 54 Hình 3.23 Chương trình chạy của Server 4 trong vòng tròn ảo 55 Hình 3.24 Chương trình chạy của Server 5 trong vòng tròn ảo 56
Trang 7MỞ ĐẦU
1 Lý do chọn đề tài
“Thế kỷ XXI là thế kỷ của công nghệ thông tin” bởi vì bước vào thế kỷ này công nghệ thông tin đã phát triển một cách rất mạnh mẽ, nó đã thâm nhập vào mọi lĩnh vực trong đời sống của con người Công nghệ thông tin đã làm thay đổi đời sống con người cả về nội dung và hình thức, nhờ đó mà đã mang lại rất nhiều hiệu quả cao trong mọi lĩnh vực hoạt động như: công nghiệp, nông nghiệp, khoa học kỹ thuật, an ninh quốc phòng, …
Vào giữa năm 1980, người sử dụng dùng các máy tính độc lập bắt đầu chia sẻ các tập tin bằng cách dùng modem kết nối với các máy tính khác Cách thức này được gọi là điểm nối điểm, hay truyền theo kiểu quay số Khái niệm này được mở rộng bằng cách dùng các máy tính là trung tâm truyền tin trong một kết nối quay số Các máy tính được gọi là sàn thông báo (bulletin board) Các người dùng kết nối đến sàn thông báo này, để lấy đi các thông điệp, cũng như gửi lên hay tải về các tập tin Hạn chế của hệ thống là có rất ít hướng truyền tin và chỉ với những ai biết về sàn thông báo đó Ngoài ra, các máy tính tại sàn thông báo cần một modem cho mỗi kết nối, khi số lượng kết nối tăng lên, hệ thống không thể đáp ứng được nhu cầu
Qua các năm 1950, 1970, 1980 và 1990, Bộ Quốc phòng Hoa Kỳ đã phát triển các mạng diện rộng WAN có độ tin cậy cao, nhằm phục vụ các mục đích quân sự và khoa học Công nghệ này khác truyền tin điểm nối điểm Nó cho phép nhiều máy tính kết nối lại với nhau bằng các đường dẫn khác nhau Bản thân mạng sẽ xác định dữ liệu di chuyển từ máy tính này đến máy tính khác như thế nào Thay vì chỉ có thể thông tin với một máy tính tại một thời điểm,
Trang 8nó có thể thông tin với nhiều máy tính cùng lúc bằng cùng một kết nối Sau này, WAN của Bộ Quốc phòng Hoa Kỳ đã trở thành Internet
Hiện nay, mạng Internet đã được ứng dụng toàn cầu và nó ngày càng phát triển mạnh nhằm phù hợp với nhu cầu của con người và xã hội, chính vì thế mà mạng máy tính là công nghệ của thời đại Các ứng dụng mạng đóng vai trò không thể thiếu để khai thác tiềm năng của mạng máy tính, đặc biệt là mạng Internet Chính sự phát triển đó kéo theo nhiều vấn đề được đưa ra nhằm giải quyết và nêu lên các phương pháp nhằm làm cho mạng máy tính phát triển mạnh hơn
Thông thường, vấn đề cung cấp tài nguyên được đánh giá như là một trong những lĩnh vực tri thức quan trọng vì nó vận dụng thường xuyên trong quá trình triển khai nghiên cứu, khảo sát, phân tích, thiết kế và xây dựng các
hệ điều hành nói chung, hệ tin học phân tán nói riêng
Chúng ta đã biết đến khá nhiều trong các ấn phẩm liên quan đến hệ điều hành về vấn đề cung cấp tài nguyên và các giải pháp hữu hiệu nhằm vào các
hệ tập trung với bộ nhớ chung Thế đối với hệ phân tán thì sao? Việc cung cấp tài nguyên dùng chung như thế nào?
Để trả lời các câu hỏi đó, tôi tìm hiểu tới một trong những phiên bản của thuật toán Lomet, phiên bản này sử dụng trạng thái từng phần khi ứng dụng vào hệ phân tán Và đó cũng là lý do tôi chọn đề tài:
“Tìm hiểu thuật toán Lomet trong cung cấp tài nguyên dùng chung phục vụ
hệ thống máy chủ ảo của Điện toán đám mây”
2 Mục tiêu và nhiệm vụ nghiên cứu
Khóa luận nghiên cứu tới một trong những phiên bản của thuật toán Lomet trong việc cung cấp tài nguyên dùng chung phục vụ hệ thống máy chủ
Trang 9ảo của điện toán đám mây; áp dụng thuật toán vào chương trình ứng dụng là bài toán bãi đậu xe
3 Đối tượng và phạm vi nghiên cứu
Đối tượng được nghiên cứu cụ thể là: Nghiên cứu lý thuyết về một phần trong thuật toán Lomet; việc cung cấp tài nguyên dùng chung phục vụ hệ thống máy chủ ảo cụ thể sử dụng trạng thái từng phần; nghiên cứu và xây dựng ví dụ kinh điển trong hệ điều hành là bài toán bãi đậu xe
Trong phạm vi nghiên cứu của đề tài, khóa luận nghiên cứu xây dựng hệ thống đa server sử dụng thuật toán Lomet trong việc cung cấp tài nguyên dùng chung phục vụ hệ thống máy chủ ảo [2]
4 Phương pháp nghiên cứu
Với các mục tiêu trên, khóa luận sử dụng phương pháp nghiên cứu lý thuyết và nghiên cứu thực nghiệm để thực hiện đề tài theo các bước sau [2]:
- Thu thập và nghiên cứu các tài liệu có liên quan đến đề tài
- Nghiên cứu lý thuyết về thuật toán Lomet và tìm hiểu việc cung cấp tài nguyên dùng chung phục vụ hệ thống máy chủ ảo trong thuật toán Lomet
- Nghiên cứu về ví dụ kinh điển trong hệ điều hành là bài toán bãi đậu
Trang 105 Thực tiễn của đề tài
Việc nghiên cứu thuật toán Lomet và ứng dụng vào việc cung cấp tài nguyên dùng chung trong hệ thống máy chủ ảo làm cơ sở nhằm phục vụ trong việc đăng kí sử dụng tài nguyên dùng chung [2]
Đồng thời, kết quả nghiên cứu của đề tài làm nền tảng giải quyết các bài toán đăng kí từ xa trong mạng máy tính và hệ thống mạng Internet, ví dụ như: đăng kí vé máy bay, vé tàu, đăng kí tín chỉ, …
6 Bố cục khóa luận
Khóa luận được chia làm 3 chương [2]:
Chương 1 trình bày về bế tắc, các chiến lược cung cấp tài nguyên trong
hệ phân tán và lý thuyết liên quan
Chương 2 trình bày nội dung nghiên cứu tổng quan tới thuật toán Lomet Chương 3 được dành để giới thiệu về ứng dụng, phân tích ứng dụng và
đề ra xây dựng ứng dụng Tiến hành xây dựng hệ thống bãi đậu xe, cài đặt ứng dụng và đưa ra một số kết quả thực hiện của ứng dụng
Trang 11Chương 1: BẾ TẮC VÀ CÁC CHIẾN LƯỢC CUNG CẤP TÀI NGUYÊN TRONG HỆ PHÂN TÁN
1.1 MỘT SỐ KHÁI NIỆM
Thực hiện các tiến trình của một ứng dụng phân tán đòi hỏi phải có các đối tượng khác nhau như bộ xử lý, bộ nhớ, thiết bị ngoại vi, các tập tin,… cũng như quyền được truy cập theo kiểu loại trừ tương hỗ đến các thông tin, quyền được sử dụng các hàm, thủ tục, chương trình
Tài nguyên được định nghĩa như là một đối tượng mà trong đó các quy tắc sử dụng và chia sẻ được kết hợp với nhau Nói chính xác, đó là những vấn
đề quyền truy cập loại trừ hay truy cập chia sẻ, có hạn chế số lượng NSD hay không,…
Trong hệ phân tán, thông thường người ta hay sử dụng khái niệm giao dịch như là thực thể sử dụng, ví dụ như người sử dụng các tài nguyên chẳng hạn
Giao dịch là phép toán hợp thành một logic hoàn chỉnh mà việc triển khai nó có thể dẫn đến thực hiện nhiều tiến trình trên các trạm ở xa là đối tượng mà ta cần phải quan tâm nghiên cứu
Một tiến trình nào đó cần sử dụng tài nguyên để phát triển công việc của mình phải yêu cầu bộ cung cấp một cách hợp thức bằng cách gửi thông điệp yêu cầu Từ đây trở đi, ta gọi các yêu cầu thông điệp này bằng cách gọi ngắn
gọn là yêu cầu Như thế, rõ ràng là một tiến trình có nhu cầu tài nguyên sẽ bị
treo chừng nào tài nguyên đó còn chưa được giải phóng hay chưa được cung cấp cho nó [1]
Bộ cung cấp có thể áp dụng nhiều kiểu cung cấp khác nhau như tiến trình duy nhất, tập hợp các tiến trình, tập hợp các thủ tục,… Các thông điệp yêu
Trang 12cầu sử dụng tài nguyên cũng có thể có các dạng khác nhau như gọi thủ tục, thông báo, thực hiện các lệnh đặc biệt,…
Thuật ngữ tải là tập hợp các yêu cầu phục tùng các quy tắc của một bộ
cung cấp [1]
Các tham số đặc trưng cho tải là:
1 Số lượng các yêu cầu được cung cấp tài nguyên
2 Bản chất của các yêu cầu
3 Phân tán theo thời gian các yêu cầu tạo ra nó
Một yêu cầu được thỏa mãn bởi bộ cung cấp tài nguyên cho tiến trình đề nghị với điều kiện là yêu cầu đó phải tuân thủ các quy tắc nhất định
Có hai điều kiện làm cho các tiến trình mất khả năng sử dụng tài nguyên
đã được cung cấp trước đó Đó là:
1 Giải phóng Tiến trình phát tín hiệu ngừng sử dụng tài nguyên
2 Thu hồi Sự lấy lại tài nguyên đã được cung cấp cho tiến trình
Bộ cung cấp tài nguyên sẽ tiến hành công việc này
Trong hệ, hoạt động của một tập hợp các tiến trình trên một tập hợp các tài nguyên dùng chung được xem là tuyệt vời, nếu không để xảy ra bế tắc và thiếu thốn tài nguyên vĩnh viễn
Trang 131.2 BẾ TẮC (DEADLOCK) TRONG VIỆC CUNG CẤP TÀI NGUYÊN DÙNG CHUNG
tài nguyên lại phát yêu
cầu về nhu cầu sử
Lúc này, ta thấy có hai chu trình kín trong đồ thị là:
Trang 14Hình 1.2 Đồ thị cung cấp tài nguyên bị bế tắc
Thiếu tài nguyên vĩnh viễn là sự chờ đợi bất tận của một tiến trình mà yêu cầu của nó trễ đến mức không thể xác định được Nguyên nhân của hiện
tượng vừa nêu có nhiều, nhưng ta có thể chỉ ra ví dụ thường gặp là do sử dụng luật ưu tiên để cung cấp tài nguyên [1]
Một chiến lược cung cấp tài nguyên tồi cũng có thể là nguồn gốc hủy hoại hiệu năng hoạt động của hệ do các hiện tượng “sốc” làm tăng các yêu cầu mà không được đáp ứng của một số tài nguyên Ví dụ như sự sụp đổ của
hệ đa chương trình
Để tránh các hiện tượng đó, bộ cung cấp tài nguyên cần phải đảm bảo
chức năng điều khiển
Ta có thể chia thành hai phương diện để nghiên cứu:
1 Phân tán các yêu cầu giữa các tài nguyên tương đương có khả năng thỏa mãn Chức năng này gọi là phân phối tải Trong hệ phân tán, nó cần phải tạo điều kiện để tránh tình hình mà ở đó các yêu cầu đợi đến
T2
T4
Trang 15lượt được thỏa mãn trên một trạm bị đầy, trong khi đó các tài nguyên tương đương lại rỗi rãi trên các trạm [1]
2 Giới hạn số lượng các yêu cầu được phép cho một số tài nguyên Việc
đó có thể thực hiện bằng cách hạn chế (tĩnh hay động) số các tiến trình hay số các giao dịch được chọn (trúng tuyển) sử dụng toàn bộ
hay từng phần tài nguyên Ta gọi trường hợp này là điều khiển tải tổng quát [1]
Tóm lại: Bộ cung cấp cần phải phân phối các tài nguyên trên cơ sở tuân thủ các quy tắc sử dụng, tránh xảy ra bế tắc và thiếu thốn vô hạn, phân phối tải tương đối đồng đều giữa các tài nguyên cùng loại (cùng có thể thỏa mãn)
và giới hạn nhu cầu nhằm duy trì hệ thống hoạt động đạt mức hiệu quả nhất định
1.3 CHIẾN LƯỢC CUNG CẤP TÀI NGUYÊN
1.3.1 Cung cấp tài nguyên duy nhất
Vấn đề cung cấp tài nguyên duy nhất trên một trạm trong hệ phân tán liên quan đến việc phân phối tài nguyên này cho một tập hợp các tiến trình trên cơ sở quy tắc: truy cập loại trừ hay chia sẻ, có hệ số ưu tiên, không được mất,… Các tiến trình có thể ở các trạm khác từ xa
Việc quản lý các truy cập đến một tài nguyên duy nhất có thể được thực hiện theo hai cách:
1 Truy cập bằng một tiến trình duy nhất
2 Truy cập bằng các tiến trình tương tranh
Trang 161.3.1.1 Truy cập bởi server duy nhất
Một tiến trình duy nhất hay còn gọi là server được giao nhiệm vụ quản lý tài nguyên Nó xử lý tất cả các yêu cầu truy cập từ các tiến trình và các khách (client) Sự loại trừ truy cập được bảo đảm bởi tính duy nhất của server
Server đồng thời cũng là chương trình đánh thức [1]
Chương trình có thể viết như sau:
Do vậy, sơ đồ này loại bỏ tất cả các đặc tính song song để truy cập vào tài nguyên Tiến trình server có thể được lập trình để triển khai toàn bộ chiến lược liên quan đến loại trừ tương hỗ của các yêu cầu (độ ưu tiên, quyền truy cập tài nguyên) [1]
m := cho_thong_diep (nil) {treo}
<Chương trình xử lý các yêu cầu và gửi trả kết quả>
Kết thúc vòng lặp
Trang 171.3.1.2 Truy cập tương tranh có điều khiển
Trong trường hợp này, tài nguyên được truy cập bởi nhiều server, thông thường, có số lượng không ổn định Các server này thực hiện các truy cập tương ứng với các yêu cầu dưới dạng gọi thực hiện các thủ tục Việc thực hiện các thủ tục này được điều khiển bởi cơ chế đảm bảo tôn trọng các quy tắc truy cập
Các quy tắc này được khởi sự bằng hai cách bởi các tiến trình khách Hình vẽ 1.4 cho thấy việc truy cập được tiến hành bằng một chương trình trực duy nhất
Hình 1.4 Đồ thị truy cập vào tài nguyên bằng một chương trình trực duy nhất
Trong cách thứ hai, việc truy cập được tiến hành trực tiếp với các server
và thể hiện bằng hình vẽ 1.5
Hình 1.5 Truy cập trực tiếp vào các server
Trang 18Trong hình 1.4, ta thấy một tiến trình đánh thức D duy nhất sau hàng đợi làm nhiệm vụ phân phối yêu cầu cho các server cục bộ Các tiến trình khách không biết server
Ngược lại, trong hình 1.5, các máy server đều được các tiến trình khách biết trước
Việc triển khai đặc biệt đối với các server có liên quan đến việc phân phối chúng với các điểm vào một module quản lý tài nguyên như chương trình
monitor (Thường dùng trong các hệ điều hành) chẳng hạn
1.3.2 Cung cấp một tập hợp các tài nguyên Vấn đề bế tắc
Tiến trình p đưa ra yêu cầu cung cấp tài nguyên e để thực hiện phép toán
cài then có tính loại trừ v_loai_tru_th(e) Ngoại trừ một số trường hợp đặc
biệt, tất cả các tài nguyên đều được truy cập theo kiểu loại trừ Nếu việc cung
cấp hoàn toàn hợp thức thì tài nguyên này được trao cho p sử dụng Ta nói rằng tài nguyên này đã được p cài then, nếu không thì p bị treo và đương nhiên p không cài then được tài nguyên này
Ở đây sẽ xét các giao dịch T i có thể sử dụng các tài nguyên được định vị trên các trạm Mỗi một giao dịch được triển khai nhờ một tập hợp các tiến trình thể hiện là các đại diện của chúng trên các trạm khác nhau Hai tiến trình của cùng một giao dịch được định vị trên các trạm khác nhau có thể được
thực hiện song song Nhằm thu hồi lại tài nguyên e trên trạm S i , giao dịch T i
cho thực hiện phép toán v_loai_tru_th(e) thông qua đại diện p ij của mình trên trạm này
Ngoại trừ một số trường hợp đặc biệt, việc cung cấp diễn ra không có thu hồi Một tài nguyên bị khóa bởi một tiến trình không thể rút nó trở về được Như thế, nó cần được giải phóng bởi tiến trình này một cách tường minh nhờ
vào phép toán mở then cài mo_then(e)
Trang 19Như vậy, có thể xảy ra rủi ro do bế tắc, khi các tiến trình truy cập loại trừ được phân phối mà không có khả năng thu hồi và các tiến trình cần phải sử dụng đồng thời nhiều tài nguyên
Ví dụ:
Giả sử có hai tiến trình p và q cùng sử dụng hai tài nguyên e 1 và e 2, chúng được mô tả trong đoạn chương trình sau:
Nếu các yêu cầu được thỏa mãn theo thứ tự p 1 , q 1 , thì tất yếu xảy ra vấn
đề chặn nhau giữa p và q Lý do hiển nhiên là p 1 và q 2 không bao giờ được đáp ứng, nếu e 1 và e 2 không được giải phóng
Bế tắc có thể được giải quyết bằng cách dự báo và phòng tránh (gọi chung
là dự phòng) có nghĩa là tài nguyên được cung cấp theo kiểu có đề phòng trường hợp bế tắc Một phương pháp khác có liên quan đến vấn đề này là phát hiện và chữa trị có nghĩa là khi có sự cố thì quay trở về trạng thái trước đó Các thuật toán dự phòng, phát hiện và chữa trị đã được nghiên cứu cho trường hợp là tất cả các tài nguyên đều được quản lý bởi bộ cung cấp duy nhất Bộ cung cấp này tiếp nhận tất cả các yêu cầu và biết rất rõ trạng thái của tất cả các tài nguyên
Trang 20Tư tưởng cơ bản của phương pháp này là các tài nguyên được sắp xếp theo các nhóm con C1, C2,…Cn Một tiến trình nào đó chỉ có thể thu hồi các tài nguyên của nhóm Ci với i > 1, nếu trước đó nó đã thu hồi tất cả các tài nguyên của các nhóm cần thiết cho nó C1, C2,…, Ci-1 Như thế, trật tự duy nhất của việc thu hồi các tài nguyên được xác định sẽ tránh được bế tắc Phương pháp này dẫn đến các tiến trình cần thu hồi trước (tạm ứng) các tài nguyên của chúng là do vậy làm giảm khả năng thực hiện song song của hệ Khi các tiến trình phát triển và thông báo trước về nhu cầu cực đại các tài nguyên, thì các phương pháp mềm dẻo hơn có thể được sử dụng [1]
Ví dụ:
Phương pháp chủ nhà băng Habermann chỉ cho phép cung cấp, nếu nó
duy trì được hệ thống trong trạng thái ổn định Đó là trạng thái mà xuất phát
từ trạng thái ấy ta có thể cho thực hiện tuần tự, không có bế tắc các tiến trình trong tình huống bất lợi nhất Mỗi tiến trình đều đòi toàn bộ các tài nguyên đã thông báo trước [1]
1.3.2.1.2 Phương pháp phát hiện và chữa trị
Phương pháp Holt sử dụng một đồ thị trạng thái định hướng mà các nút là
các tài nguyên hay tiến trình Các cung cấp tiến trình – tài nguyên biểu hiện các yêu cầu không được thỏa mãn, các cung cấp tài nguyên – tiến trình thể
hiện các cung cấp đã được thực hiện Nếu có sự hiện diện của vòng lặp khép kín trong đồ thị này thì đó chính là biểu hiện của tình trạng bế tắc [1]
Sau khi đã phát hiện bế tắc, vấn đề chữa trị đã được đặt ra, nhưng các phương pháp này rất phức tạp, tốn kém Hiện nay, thuật toán chữa trị đang được các nhà chuyên môn quan tâm nghiên cứu và phát triển
1.3.2.2 Phân tán chức năng cung cấp
Bây giờ, giả định rằng chức năng cung cấp không thể tin tưởng giao phó
hoàn toàn cho một bộ cung cấp duy nhất, mà được phân tán thành một tập
Trang 21hợp các bộ cung cấp trên các trạm khác nhau, trong đó mỗi bộ cung cấp chỉ
quản lý các đối tượng cục bộ của trạm đó mà thôi [1]
Tồn tại cho hai nhóm giải pháp cho vấn đề đặt ra:
1.3.2.2.1 Duy trì duy nhất của trạng thái tài nguyên
Biểu hiện duy nhất (thể hiện tính duy nhất) của trạng thái tài nguyên được
chia sẻ bởi tập hợp các bộ cung cấp Biểu hiện này tuần hoàn giữa các trạm khác nhau dưới dạng một thông điệp Các trạm luân phiên đóng vai trò của bộ cung cấp các tài nguyên mà mình đang chịu trách nhiệm quản lý Giải pháp này loại bỏ tất cả các khả năng song song, không loại bỏ khả năng mất thông điệp trạng thái, thiếu thốn tài nguyên một cách vô hạn [1]
1.3.2.2.2 Phân tán biểu hiện trạng thái và chức năng cung cấp
2
Ta phân tán biểu hiện trạng thái trên các trạm, mỗi một trạm chỉ có trạng thái của các tài nguyên cục bộ của mình Các quyết định được đưa ra trên các trạm khác nhau cần phải được phối hợp theo kiểu sao cho dữ liệu của việc cung cấp phải được gắn bó với nhau
Trang 22Chương 2: TỔNG QUAN VỀ THUẬT TOÁN LOMET
2.1 CÁC PHƯƠNG PHÁP CUNG CẤP SỬ DỤNG TRẠNG THÁI TỔNG QUÁT
Bây giờ, vấn đề quan trọng được đặt ra là tại sao có thể áp dụng thuật toán dự phòng bế tắc của các hệ tập trung vào môi trường phân tán theo kiểu duy trì trên mỗi trạm một bản sao trạng thái cung cấp của tất cả các tài nguyên [1]
Nội dung của các bản sao trên các trạm của hệ có thể phản ánh trong bảng sau:
STT Nội dung của bản sao
1 Tập hợp tất cả các tài nguyên còn chưa được cung cấp
2 Tập hợp các tài nguyên đã cung cấp
3 Đối tượng đang chiếm giữ tài nguyên
4 Kiểu sử dụng
5 Tập hợp các yêu cầu không được thỏa mãn
6 Tập hợp các thông điệp dành cho trường hợp đã được sử dụng
7 Tập hợp các thông điệp dành cho trường hợp thất bại
Cung cấp tài nguyên chỉ được chấp nhận, nếu trạng thái xuất phát từ việc cung cấp đó được đánh giá là chấp nhận được theo thuật toán đã sử dụng Trên cơ sở thực hiện cùng một thuật toán và có cùng thông tin, mỗi trạm ra
quyết định cung cấp căn cứ vào bản thân sao trạng thái cục bộ của nó Việc
cung cấp cho tiến trình đề nghị sẽ được thực hiện ngay trên trạm có tài nguyên [1]
Trang 23Để cập nhật thông tin, mỗi tiến trình phát đi cho một tập hợp nhất định các trạm:
1 Các thông điệp của mình
2 Các yêu cầu của mình
3 Các thông điệp giải phóng của mình
Các bản sao trạng thái tổng quát trên các trạm phải có cùng các bước chuyển trạng thái Để đảm bảo điều đó, cần phải xử lý các yêu cầu trong cùng một trật tự trên tất cả các trạm Trật tự này có thể khác với trật tự đến Có thể
sử dụng các kỹ thuật đã được kiểm tra như dấu, bộ tuần tự tuần hoàn,… để giải quyết vấn đề đồng bộ thông tin
Ta sẽ sử dụng với tư cách là ví dụ nguyên lý triển khai thuật toán trình bày trong ấn phẩm của Lomet và ứng dụng kỹ thuật thông cáo hợp thức
Khi bắt đầu thực hiện giao dịch T i thì gia dịch này cần phải phát thông điệp hợp thức của tập hợp các tài nguyên mà nó định sử dụng Một tài nguyên chỉ có thể thu hồi, nếu đó là một phần của thông điệp
Ta định nghĩa một quan hệ gọi là phụ thuộc thế năng giữa hai giao dịch T j
và T k và ký hiệu là T j > T k điều đó nói lên rằng T j chậm hơn T k
T j > T k nghĩa là tồn tại ít nhất một tài nguyên bị cài then bởi T j và là thành
phần thuộc thông điệp của T k
Quan hệ này có thể được biểu diễn bằng đồ thị G, biến theo thời gian gọi
là đồ thị các xung đột thế năng Tồn tại vòng lặp trong đồ thị này sinh ra bế tắc
Ví dụ 1:
Hãy đánh giá 3 giao dịch T 1 , T 2 , và T 3 sử dụng ba tài nguyên e 1 , e 2 và e 3
Ta ký hiệu a_loai_tru_th() là phép toán thông điệp
Trang 25Hình 2.1 Vòng khép kín trên đồ thị
Để tránh bế tắc diễn ra, ta duy trì tại mỗi trạm một bản sao của đồ thị G và
ta chỉ được cung cấp tài nguyên, nếu việc cung cấp đó không phát sinh vòng lặp trên đồ thị này
Mỗi một thông cáo, thông điệp hay khuyến nghị giải phóng đều nhận một
dấu, rồi phát ra cho tất cả các trạm Để cập nhật bản sao của mình về đồ thị G,
mỗi trạm xử lý các thông điệp mà nó nhận được trong một trật tự chặt chẽ được xác định bởi dấu căn cứ theo phương pháp chỉ dẫn
2.2 THUẬT TOÁN LOMET
Đây là một trong những phiên bản của thuật toán Lomet Đây là phiên bản sử dụng trạng thái từng phần
2.2.1 Vị trí của vấn đề
Đây là một ví dụ minh họa các khó khăn trong khi ứng dụng vào hệ phân tán
Ví dụ 2:
Trở lại với ví dụ 1 và bổ sung các điểm sau: ta giả sử rằng các tài nguyên
e 1 , e 2 , và e 3 được bố trí trên các trạm tương ứng S 1 , S 2 , S 3 Nếu trạm S i chỉ nhận các thông báo tương ứng với tài nguyên mà nó quản lý, thì nó chỉ duy trì
đồ thị G i – hình ảnh thu nhỏ của G cho các giao dịch đã phát thông báo
e3
T1
Trang 26Nhƣ vậy, sau khi đã thực hiện t 32 , ta có các hình ảnh sau:
Trang 27Trong thực tế, mặc dầu không có đồ thị nào trong số này cho phép phát hiện sự hình thành một vòng lặp bế tắc, nhưng trên một trạm cho trước nào
đó, ta lại không thể dự phòng bế tắc có kết quả được
2.2.2 Nguyên lý và thuyết minh phương pháp
Ta sẽ thay thế vào điều kiện cung cấp trong đồ thị G không vòng một điều
kiện khác mạnh hơn, nhưng được kiểm tra bằng các thông tin cục bộ trên từng trạm
Để làm được điều đó, ta thêm vào cho từng đồ thị G ’ i hình ảnh thu nhỏ cho S i của đồ thị của một quan hệ trật tự toàn bộ chặt chẽ được xác định trên
tập hợp các giao dịch Quan hệ trật tự này có thể có được nhờ phương tiện dấu Điều kiện cung cấp tài nguyên là duy trì tình trạng không vòng lặp cho
các đồ thị G i Căn cứ theo cấu trúc, điều kiện này có thể được kiểm tra cục bộ trên từng trạm Ta sẽ được chỉ ra G có được tình trạng không vòng lặp như thế nào Để làm việc đó, ta bắt đầu chỉ ra sự tồn tại của vòng trong G kéo theo sự tồn tại của vòng trong ít nhất một G ’ i [1]
Ta ký hiệu T j >> T k là quan hệ trật tự toàn phần chặt chẽ trên các giao dịch Lúc này, G ’ i là hình ảnh thu nhỏ của trạm S i của đồ thị của quan hệ >>
xác định bởi:
Giả sử rằng G có vòng lặp bao gồm một tập hợp của n giao dịch được đánh số từ 0 đến n-1 trong trật tự của vòng lặp của trật tự xác định bởi quan
hệ > Giả sử rằng T p là nguyên tố (*) của tập hợp này đến trước tất cả các cái
khác theo chiều của quan hệ >> và giả sử rằng q = p – 1 modulo n Ta có:
Tj >> Tk Tj > Tk hay Tj >> Tk
Trang 28Nếu S là số của trạm chứa tài nguyên bị cài then bởi T q và thuộc quyền sở
hữu của thông báo của T p thì G ’ i chứa vòng lặp
2 Trong trường hợp bị từ chối, tiến trình thực hiện giao dịch trên
trạm S được đưa ra vào hàng đợi cục bộ tại S
3
Khi tài nguyên được giải phóng, tất cả các tiến trình của hàng đợi được kiểm tra nếu các yêu cầu của chúng có thể được thỏa mãn
Quá trình vận hành thuật toán được minh họa bởi ví dụ liền sau đây:
Trang 29Hình 2.6 Trạng thái cung cấp tài nguyên trên 3 trạm
Yêu cầu t 22 : v_loai_tru_th(e 2 ) kéo trên trạm S 2 sự tạo nên cung T 2 – T 1 bị
loại bỏ; bởi vì nó sinh ra vòng lặp trên S 2 Tương tự như vậy, yêu cầu t 32 : v_loai_tru_th(e 3 ) bị từ chối bởi vì nó tạo ra vòng lặp trên S 3 Nhưng ta cần lưu
ý là nếu trật tự theo dạng T 1 , T 2 , T 3 , thì yêu cầu vừa nêu có thể được chấp