Một trong những tư tưởng lớn của các hệ phân tán là phân tán hóa các quátrình xử lý thông tin và thực hiện các công việc đó trên các trạm xa nhau.. Với hệ phân tán không có bộ nhớ chung,
Trang 1Hệ tin học phân tán là hệ thống rất đa dạng, đa diện, phức tạp về mặt cấutrúc, là vùng tri thức hiện đại đang được các chuyên gia công nghệ thông tin đặcbiệt quan tâm và đổi mới rất nhanh chóng
Một trong những tư tưởng lớn của các hệ phân tán là phân tán hóa các quátrình xử lý thông tin và thực hiện các công việc đó trên các trạm xa nhau Đó là
cơ sở để xây dựng các hệ ứng dụng lớn như thương mại điện tử, giáo dục điện
tử, chính phủ điện tử
Phân tán hóa các quá trình xử lý, tạo nên ưu thế của hệ có thể đáp ứngviệc giải quyết các bài toán lớn, một cách nhanh chóng Nhưng cũng tạo tínhphức tạp, nan giải trong các yêu cầu thiết lập hệ Việc hợp lực của các thànhviên trong hệ, dẫn đến hàng loạt các vấn đề như: định danh, cấp phát tài nguyêndùng chung (đảm bảo tránh tương tranh), giải quyết sự cố tạo nên tính tin cậycủ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óacá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ệnduy 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ệ
Trong phạm vi của tiểu luận này tôi chỉ đề cập đến một khía cạnh nhỏtrong hệ tin học phân tán đó là “Trật tự từng phần và vấn đề đồng bộ hóa các
tiến trình”,
Để hoàn thành tiểu luận này, tôi xin chân thành cám ơn sự chỉ bảo tậntình của Thầy giáo: PGS.TS.Lê Văn Sơn và các bạn học viên trong lớp Tuynhiên chắc hẳn vẫn còn nhiều thiếu sót, kính mong sự góp ý của thầy giáo vàcác bạn
Trang 2PHẦN A CƠ SỞ LÝ THUYẾT
CHƯƠNG 1 GIỚI THIỆU VỀ HỆ TIN HỌC PHÂN TÁN
1.1 Hệ 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 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
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 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 loại tài nguyên vốn có và rất đa dạng của hệ thống như là những tàinguyên dung chung
Hệ thống tính toán phân tán đã tạo được bước ngoặc vĩ đại so với các hệtập trung, và hệ khách chủ (Client/Server) Việc tính toán phân tán về cơ bảncũng giống như việc tính toán của hệ khách chủ trên phạm vi rộng lớn Dữ liệuđược chứa trên nhiều máy chủ ở tại nhiều vị trí địa lý khác nhau kết nối nhauthông qua mạng diện rộng WAN hình thành các nơi làm việc, các phòng ban,các chi nhánh của một cơ quan
Tính toán phân tán hình thành từ tính toán tập trung và Client/Server Cácmạng được xây dựng dựa trên kỹ thuật Web (ví dụ như: Internet; intranet…) làcác mạng phân tán Hệ thống cơ sở dữ liệu back-end có thể được nối kết với cácserver Web để lấy được các thông tin động Kỹ thuật Web này đã mở ra hướngmới cho hệ phân tán Các trình duyệt Web giúp cho khách hàng trên toàn cầu kếtnối với hệ thống Web chủ, mà không bị khống chế bởi bất kỳ hệ điều hành nàođang chạy trong máy của khách hàng
1.2 Các điểm mạnh trong hệ tin học phân tán
- Đặc điểm cơ bản của hệ tin học phân tán
Trang 3 Thời hạn truyền thông tin trong hệ không giống nhau, các thông điệp cóthể bị mất trong quá trình chuyển tải, các thông điệp có thể được truyềnkép và hệ thống có thể rơi vào sự cố.
Một (hay nhiều) máy tính cấu thành của hệ phân tán có thể bị sự cố vàhoạt động của toàn hệ trở nên kém hiệu quả
- Cơ chế tính toán phân tán hỗ trợ truy cập các dữ liệu được lưu ở nhiều nơi
- Nhờ cơ chế nhân bản nên người dùng chỉ cần truy cập cục bộ cũng lấyđược các thông tin từ các trung tâm chính ở rất xa
- Hệ thống khắc phục được các hiểm họa địa phương Vì nếu chúng ta khôngtruy cập dữ liệu được tại vị trí này, chúng ta có thể thử ở nơi khác
- Dữ liệu phân tán đòi hỏi phải được nhân bản và đồng bộ hóa cao thông quacác mối liên kết mạng, điều này làm cho việc quản trị và giám sát phức tạp hơn.Một số nhà quản trị cho rằng, ở hệ thống như thế này sẽ gây khó khăn trong vấn
đề bảo mật và điều khiển
- Hệ phân tán được xây dựng trên giao thức TCP/IP và các kỹ thuật Webcùng với các ứng dụng trung gian (middleware) thúc đẩy việc tính toán phân tán.Quả thật đây là một đổi thay mang tính cách mạng Nhiệm vụ trước mắt là làmthế nào để chuyển tiếp sang hệ này một cách khoa học
1.3 Xử lý Phân tán
Có hai khái niệm xử lý phân tán và có liên quan với nhau Khái niệm thứnhất liên quan đến việc tính toán trên hệ Client/Server Trong đó ứng dụng đượcchia ra thành hai phần, phần của server và phần của client và được vận hành ởhai nơi Trong tính toán phân tán này cho phép truy cập trực tiếp dữ liệu trên đĩa
và xử lý các thông tin trên đĩa cho các client
Khái niệm thứ hai là việc thực hiện các tác vụ xử lý phức tạp trên nhiều hệthống Không gian nhớ và bộ xử lý của nhiều máy cùng hoạt động chia nhau tác
vụ xử lý Máy trung tâm sẽ giám sát và quản lý các tiến trình n ày Có trườnghợp thông qua Internet, hàng nghìn máy cùng xử lý một tác vụ
Trang 41.4 Các Mô hình ứng dụng Phân tán
Có một số mô hình trong xây dựng ứng dụng phân tán, và cung cấp cácgiao tiếp giữa các client, các server, các thành phần chương trình gồm:
- RPC (remote procedure call) Giao thức truyền thông theo phiên giữa cácmáy được kết nối giữa các mạng RPC thường được sử dụng trong các thao táccần thời gian thực, hướng kết nối
- Messaging services Dịch vụ thông điệp còn gọi là dịch vụ MOM oriented middleware)-cung cấp một phương thức trao đổi thông tin giữa các ứngdụng và các thành phần dùng hàng đợi và cách chuyển thông điệp theo từngbước (store-and-forward) Cách này không phù hợp với truyền thông trong thờigian thực
(message ORB (object-request broker) Một tác nhân kiểm soát truyền thông, chophép các đối tượng được phép truyền thông lên mạng Ví dụ một đối tượng đangchạy trên client nào đó nếu muốn gửi một thông điệp cho một đối tượng khácđang chạy trên server, ta có thể gửi thông điệp từ giao diện ORB của client đếncho giao diện ORB của server
Trang 5CHƯƠNG 2 MỘT SỐ PHƯƠNG PHÁP ĐỒNG BỘ HÓA
Ngày nay, công nghệ thông tin nhìn chung phát triển rất mạnh mẽ Từ cácquốc gia có nền kinh tế kém phát triển đến các cường quốc kinh tế cũng đều cónhu cầu rất lớn về xử lý thông tin Nhu cầu thu thập thông tin có thể xuất phát từnhiều nguồn khác nhau và ở cách xa nhau Vấn đề đặt ra là làm thế nào chúng ta
có thể xử lý thông tin ở cách xa nhau một cách nhanh nhất và hiệu quả nhất giữacác hệ thống tin học, mà không xảy ra tranh chấp trong việc thu thập và xử lýthông tin giữa các hệ thống tin học ở khắp nơi trên thế giới
Để giải quyết vấn đề này thì việc thiết kế các chiến lược đồng bộ hóa cáctiến trình trong các hệ thống tin học là rất cần thiết và được quan tâm chú ý rấtnhiều Tính cấp thiết về mặt nguyên lý và kỹ thuật của vấn đề đồng bộ hóa cáctiến trình này thể hiện ở hai nguyên lý cơ bản sau :
- Nhìn chung, 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 vốn rất hạn chế hay truycập vào thông tin dùng chung cùng một lúc Trường hợp này gọi là truy cậptương tranh Vì vậy, tương tranh là nguyên nhân chính của các xung đột giữacác tiến trình muốn truy cập vào tài nguyên dùng chung
- 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 toán đặt ra và cho kết quả nhanh chóng nhất Điều này chophé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 Vìvậy 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ữacá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ôngtin qua lại với nhau Trong hệ tin học phân tán, các thông tin cần trao đổi thôngqua các kênh thuộc hệ thống viễn thông
Có nhiều phương pháp đồng bộ hóa tiến trình Dưới đây sẽ giới thiệu một
số các phương pháp đồng bộ hóa các tiến trình để thực hiện việc truy xuất cácmiền găng
Trang 62.1 Đồng bộ hóa bằng phương pháp kiểm tra luân phiên
Đây là một giải pháp đề nghị cho hai tiến trình Hai tiến trình này sử dụng
chung biến turn (phản ánh phiên tiến trình nào được vào miền găng), được khởi động với giá trị 0 Nếu turn = 0, tiến trình A được vào miền găng Nếu turn = 1, tiến trình A đi vào một vòng lặp chờ đến khi turn nhận giá trị 0 Khi tiến trình A rời khỏi miền găng, nó đặt giá trị turn về 1 để cho phép tiến trình B đi vào miền
ở trong miền găng Giả sử tiến trình B ra khỏi miền găng rất nhanh chóng Cảhai tiến trình đều ở ngoài miền găng, và turn = 0 Tiến trình A vào miền găng và
ra khỏi nhanh chóng, đặt lại giá trị của turn là 1, rồi lại xử lý đoạn lệnh ngoài
Trang 7miền găng lần nữa Sau đó, tiến trình A lại kết thúc nhanh chóng đoạn lệnhngoài miền găng của nó và muốn vào miền găng một lần nữa Tuy nhiên lúc này
B vẫn còn mãi xử lý đoạn lệnh ngoài miền găng của mình, và turn lại mang giátrị 1 ! Như vậy, giải pháp này không có giá trị khi có sự khác biệt lớn về tốc độthực hiện của hai tiến trình
2.2 Đồng bộ hóa bằng giải pháp phần cứng thông qua chỉ thị TSL and-Set-Lock)
(Test-Đây là một giải pháp đòi hỏi sự trợ giúp của cơ chế phần cứng Nhiều máytính cung cấp một chỉ thị đặc biệt cho phép kiểm tra và cập nhật nội dung một
vùng nhớ trong một thao tác không thể phân chia, gọi là chỉ thị Test-and-Set
Lock (TSL) và được định nghĩa như sau:
Trang 8TSL sao cho được xử lý một cách không thể phân chia, nhất là trên máy với cấuhình nhiều bộ xử lý.
Tất cả các giải pháp trên đây đều phải thực hiện một vòng lặp để kiểm traliệu nó có được phép vào miền găng, nếu điều kiện chưa cho phép, tiến trìnhphải chờ tiếp tục trong vòng lặp kiểm tra này Các giải pháp buộc tiến trình phảiliên tục kiểm tra điều kiện để phát hiện thời điểm thích hợp được vào miền găng
như thế được gọi các giải pháp « busy waiting » Lưu ý rằng việc kiểm tra như
thế tiêu thụ rất nhiều thời gian sử dụng CPU, do vậy tiến trình đang chờ vẫnchiếm dụng CPU
2.3 Đồng bộ hóa bằng phương pháp trao đổi thông điệp
Phương pháp này dựa trên cơ sở trao đổi thông điệp với hai primitive Gui
và Nhan để thực hiện sự đồng bộ hóa:
+ Gui(destination, message): gởi một thông điệp đến một tiến trình hay
gởi vào hộp thư
+ Nhan(source,message): nhận một thông điệp từ một tiến trình hay từ bất
kỳ một tiến trình nào, tiến trình gọi sẽ chờ nếu không có thông điệp nào để nhận
Có nhiều cách thức để thực hiện việc truy xuất độc quyền bằng cơ chế traođổi thông điệp Đây là một mô hình đơn giản: một tiến trình kiểm soát việc sửdụng tài nguyên và nhiều tiến trình khác yêu cầu tài nguyên này Tiến trình cóyêu cầu tài nguyên sẽ gởi một thông điệp đến tiến trình kiểm soát và sau đóchuyển sang trạng thái blocked cho đến khi nhận được một thông điệp chấpnhận cho truy xuất từ tiến trình kiểm soát tài nguyên Khi sử dụng xong tàinguyên , tiến trình gởi một thông điệp khác đến tiến trình kiểm soát để báo kếtthúc truy xuất Về phần tiến trình kiểm soát , khi nhận được thông điệp yêu cầutài nguyên, nó sẽ chờ đến khi tài nguyên sẵn sàng để cấp phát thì gởi một thôngđiệp đến tiến trình đang bị khóa trên tài nguyên đó để đánh thức tiến trình này.while (TRUE) {
Gui(process controler, request message);
Nhan(process controler, accept message);
Trang 10CHƯƠNG 3 ĐỒNG BỘ HÓA BẰNG PHƯƠNG PHÁP TRẬT TỰ
Trong mô hình đồng bộ hoá bằng phương pháp trật tự Có 2 phương pháp
mà ta đặc biệt chú ý quan tâm và nghiên cứu kỹ chúng là:
Trong các hệ thống phân tán, việc đồng bộ hóa 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ỉ 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” Quan hệ này tối thiểu
phải thỏa mãn được các ràng buộc thể hiện qua hai cách:
+ 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ệntrước B thì theo trật tự cục bộ của trạm ta có: A B
+ 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
Trang 11Giả sử rằng NP là số lượng sản xuất ra và NC là số lượng tiêu thụ tại thờiđiểm khởi sự C chỉ tiêu thụ được một sản phẩm, nếu sản xuất sản phẩm đó đãdiễn ra, có nghĩa là, nếu
NP – NC > 0Tương tự, P chỉ sản xuất một thông tin, nếu
NP – NC < NHai quan hệ này thể hiện các điều kiện của việc đồng bộ hóa và có thể mô
tả trong hình sau:
t
A1 A2 A3 A4 A5
B1 B2 B3 B4 B5
Trang 12Trong hệ thống tin học phân tán, người ta có thể vận dụng hợp lực này theokiểu như sau:
1 Trên trạm P một biến NC’ ảnh của NC mà P gia tăng mỗi
một lần nó nhận được thông điệp từ C báo cho nó biết làtiêu thụ mới đã diễn ra
2 Trên trạm C một biến NP’ ảnh của NP mà C gia tăng mỗi
một lần nó nhận thông điệp từ P báo cho nó biết một sảnxuất mới đã diễn ra
Ta sẽ chứng minh rằng một sự đồng bộ hóa chính xác được đảm bảo bằngviệc xác nhận trên mỗi trạm các điều kiện sau đây:
Trang 13trong đó, np số lượng thông tin đã sản xuất bởi P mà C không biết,
NC = NC’ + nc, với nc > 0
trong đó, nc số lượng thông tin đã tiêu thụ bởi C mà P không biết
Ta có thể khái quát hóa phương pháp này cho điều kiện đồng bộ hóa bằng côngthức:
CiXi > K (theo i)trong đó, Ci và K là các hằng số Ta hoàn toàn có khả năng và điều kiện mạnhhơn bằng cách thay thế tất cả các Xi mà hệ số của nó là đại lượng dương bằngcác ảnh của nó X’i , nếu và chỉ nếu các Xi là các biến không lùi
Vì nguyên nhân xa cách giữa người sản xuất và người tiêu thụ mà trật tựtổng quát này không cần thiết và chỉ cần sủ dụng để đồng bộ hóa các bản sao cácbiến trạng thái gần đúng là đủ
Trong hệ thống người sản xuất - người tiêu thụ, nếu N = 1, thì có sự liênkết chặt chẽ giữa hai tiến trình cho phép xác định một trật tự chặt chẽ giữa các
sự kiện
Cơ chế đồng bộ ở đây là dùng các công tơ sự kiện phù hợp với từng vấn đề
đặt ra Mỗi một công tơ, biến nguyên không lùi, được kết hợp với một nhóm đặcbiệt các sự kiện
Trên một công tơ sự kiện nào đó có phối hợp với nhóm E nào đó, được xácđịnh bởi ba hàm nguyên thủy:
+ Tang_len(E) : Tăng nội dung công tơ lên 1 đơn vị, cũng có nghĩa làmột sự kiện nhóm E đến
+ Truy_van(E) : Cung cấp giá trị hiện hành của công tơ phối hợp với E+ Cho(E,n) : Treo tiến trình gọi chừng nào giá trị công tơ còn nhỏhơn n
Mỗi công tơ được khởi động ngay khi thành lập nó
Với bài toán người sản xuất - người tiêu thụ, cần định nghĩa:
Hai công tơ sự kiện NP’ và NC’, được khởi động bằng giá trị 0
Trang 14 Hai biến nguyên NP và NC, khởi sự là 0, là cục bộ đối với tiến trình ngườisản xuất P và người tiêu thụ C.
Các tiến trình có thể viết như sau:
tieu_thutang(NC’)NC:=NC+1Kết thúc vòng lặp
Việc triển khai các công tơ sự kiện có thể được thực hiện bằng cách giaocho bộ xử lý duy nhất đảm trách việc điều khiển toàn bộ công việc này
3.2 Đồng bộ hóa bằng phương pháp trật tự tổng quát chặt chẽ
Phương pháp này được áp dụng trong một số trường hợp cần phải sắp xếptoàn bộ theo kiểu chặt chẽ các sự kiện của hệ Nguyên lý của phương pháp nàyđượ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ử dụng tài nguyên, mộttiế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
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áctiế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ảiphóng được truyền cho các 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ắpxếp các yêu cầu này theo một trật tự nhất định nào đó luôn luôn được đặt ra