Chương 1: TỔNG QUAN VỀ HỆ PHÂN TÁN Công nghệ thông tin và viễn thông ngày càng phát triển, đòi hỏi nhu cầu về xử lí thông tin ngày càng cao, nhanh hơn nhiều lần tốc độ phát triển của tài nguyên phần cứng và phần mềm. Có nhiều vấn đề đặt ra mà các hệ thống tập trung thông thường không đáp ứng được, do tốc độ xử lí còn hạn chế. Xây dựng một hệ thống phân tán có khả năng xử lí đồng thời một bài toán trên nhiều máy tính là một hướng giải quyết khả thi và đã được chứng minh tính hữu dụng. Hệ thống phân tán còn tạo nhiều thuận lợi trong việc chia sẻ thông tin trên toàn thế giới Mặt khác sự phát triển không ngừng của các kỹ thuật tiên tiến về máy tính, đặc biệt là các giải pháp mạng, cùng với sự bùng nổ nhanh chóng các dịch vụ và nguồn thông tin trên mạng đã làm gia tăng số người sử dụng Internet đến con số hàng tỷ (theo International Data Corp, tính đến cuối năm 2006 sẽ có hơn 1 tỷ người trên toàn thế giới kết nối Internet). Các đặc điểm của nguồn thông tin, tổ chức mạng, cũng như việc khai thác, xử lý thông tin ngày càng trở nên phức tạp và đa dạng hơn, có thể kể đến các khuynh hướng chính yếu: Các thiết bị di động (Mobile devices): Việc cung cấp các phần mềm, các dịch vụ hỗ trợ hiệu quả cho lớp thiết bị di động (laptop, PDAs đến điện thoại di động hay sổ tay điện tử...) này vẫn đang phải đối mặt với nhiều khó khăn vì các thiết bị di động thường có tài nguyên hạn hep, và thường dựa trên các kết nối với băng thông thấp, độ trễ cao của đường điện thoại, hay mạng không dây. Người dùng di động (Mobile users): Ngày nay người dùng thường có nhu cầu truy cập vào máy tính của mình, tài khoản của mình từ bất cứ đâu, vì thế việc hỗ trợ kết nối ở mọi nơi, mọi lúc và trên mọi thiết bị là một thách thức được đặt ra. Nhu cầu chuyên biệt hoá: Việc khai thác thông tin, sử dụng dịch vụ đã không còn thỏa mãn với các cơ chế thụ động, mà người dùng thường có khuynh hướng muốn chuyên biệt hoá nhu cầu của mình một cách chủ động. Internet là cơ sở để thực hiện mong muốn này, vấn đề còn lại là khả năng hỗ trợ chuyên biệt hoá của các ứng dụng mạng dành cho người dùng. Nguồn tin đa dạng, khối lượng cực lớn: Đã xuất hiện sự bùng nổ thông tin trên mạng với sự xuất hiện của nhiều kho dữ liệu khổng lồ. Các kho dữ liệu này lại được cung cấp từ nhiều nguồn nên thường không đồng nhất về tổ chức, đây sẽ lại là một khó khăn mới đối với người dùng khi truy vấn. Gia tăng sử dụng mạng cục bộ: Việc các mạng Intranet được xây dựng phổ biến là một điều kiện tốt để triển khai các kỹ thuật mới trong việc xây dựng các ứng dụng mạng, vì Intranet cho phép việc thiết lập an toàn hệ thống dễ dàng hơn trong một tập hợp mang tính cộng tác và tin cậy. Môi trường không đồng nhất: Khi kết nối các máy tính, các mạng cục bộ vào Internet, các ứng dụng và người dùng phải đối mặt với một môi trường không đồng nhất cả về phần cứng, lẫn về kiến trúc, hệ điều hành…Và bài toán tương thích, dễ mang chuyển sẽ là vấn đề cần giải quyết ở đây. Sự khập khiễng về đường truyền: Mặc dù ngành viễn thông đã đạt đến những tiến bộ đáng kinh ngạc, và cho ra đời các loại cáp quang với tốc độ truyền tải nhanh đáng kể, đa số người dùng vẫn bị giới hạn với các thiết bị kết nối như modem hay các đường truyền băng thông thấp với mạng không dây. Với tất cả các đặc điểm trên đây, các ứng dụng phân tán phát triển theo mô hình clientserver truyền thống tỏ ra một số bất lợi vì đòi hỏi làm việc đồng bộ, đòi hỏi đường truyền băng thông cao, độ trễ thấp và cuối cùng là các dịch vụ thiếu linh động, khó thay đổi hay bổ sung. Mobile Agent là một mô hình trong đó các tiến trình được gọi là agent có tính tự trị và khả năng di động từ máy chủ này sang máy chủ khác để hoàn tất tác vụ. Ý tưởng chủ đạo của mobile agent là di chuyển xử lý đến gần nguồn dữ liệu, nhờ đó có thể giảm tải mạng, khắc phục tình trạng trễ, hỗ trợ xử lý không đồng bộ và tạo ra sự tưng thích mạnh trên các môi trường không đồng nhất. Mobile agent với các ưu điểm này hứa hẹn một giải pháp mới, hiệu quả và dễ dàng hơn trong việc phát triển ứng dụng phân tán. 1.1. Định nghĩa Có rất nhiều định nghĩa được đưa ra cho hệ phân tán. Sau đây là một số định nghĩa: 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. 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. 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 Distributed systems software Hệ phân tán = Mạng máy tính + Phần mềm Hệ phân tán Ví dụ Hệ phân tán 1. Mạng máy tính là 1 hệ phân tán trong đó phần mềm hệ phân tán cung cấp các ứng dụng truyền thông Phải nắm vững về kiến trúc mạng máy tính (Network architecture) Topology Protocol (Sơ đồ kết nối hình học) (Giao thức) Mô hình ISO Mô hình TCPIP Mô hình ATM (trình không đồng bộ) (B_ISDN_mạng tích hợp dịch vụ số) Chuẩn de facto (thực tế) de jure (pháp lý) 1.2. Hệ điều hành phân tán Dòng Unix BSD4…hệ điều hành phân tán đầu tiên được xây dựng cho các máy mini. VD máy mini của IBM (RS6000 hoặc AS400) Mini (Unix hoặc Unix like) Terminal (màn hình, bàn phím) Unix cài đặt trên máy VAX (DEC) Để nâng cao chức năng phân tán của hệ điều hành Unix (BSD) nhóm Berkeley System Distributing. NES Network file system: hệ thống quản trị mạng Đại học Urije (Amsterdam Hà Lan) có sản phẩm là Amoeba được thiết kế theo các tiêu chuẩn phân tán Đại học Carmegie – Hellon (Mỹ) có sản phẩm có tên là Mach cài trên các máy chuyên dụng → máy NEXT Viện nghiên cứu tin học tự động (Pháp) INRIA đặt tên là Chorus (không thương mại hóa) 1.3. Các dịch vụ ứng dụng (hệ thống thông tin) phân tán Hệ đặt vé giữ chỗ máy bay Hệ thống quản lý du lịch Các hệ thống thương mại điện tử Các hệ thống hội nghị từ xa (Teleconference) or Video conferancy Theo phân loại cổ điển thường phân thành 3 loại Hệ điều hành phân tán Cở sở dữ liệu phân tán Các hệ thống tính toán phân tán (Distributed Computing Systems) Hiện nay chỉ phân thành 2 loại Hệ điều hành phân tán Các hệ thống thông tin phân tán Ví dụ: Hệ thống thông tin quản lý du lịch Công ty du lịch gồm nhiều đại lý đặt tại các thành phố. Mỗi đại lý có các chức năng: Cung cấp thông tin Đăng ký du lịch Mỗi đại lý phải lưu trữ thông tin liên quan đến hai chức năng cơ bản. Như vậy mỗi đại lý sẽ được xây dựng một hệ thông tin học cục bộ mạng WAN Cơ sở dữ liệu gốc Cơ sở dư liệu bản sao Privatenetwork Mạng quốc gia công ty khác Cơ sở dữ liệu bản sao Cơ sở dữ liệu bản sao Phương án 1: Cơ sở dữ liệu tập trung (kiến trúc tập trung) Phương án 2: Kiến trúc phân tán • Dùng các bản sao (có Cơ Sở Dữ Liệu gốc và các Cơ Sở Dữ Liệu bản sao) • Không dùng Cơ Sở Dữ Liệu tổng thể, mỗi đại lý có Cơ Sở Dữ Liệu cục bộ (chỉ lưu giữ các thông tin liên quan đến đại lý này) Nhiều vấn đế nảy sinh cần giải quyết: • Định dạng (IdertificationNaming) • Chia sẻ tài nguyên (Resource sharing) • Giải quyết tương tranh (Concurrency) Deadlock: hiện tượng yêu cầu tài nguyên quay vòng, xử lý bằng cách hủy bỏ một tiến trình nào đó • Giải quyết đồng bộ hóa giữa các tiến trình • Truyền thông liên tiến trình (Interprocess Communication) 1.4. Mục tiêu và đặc trưng của hệ phân tán Hệ phân tán có các mục tiêu và đặc trưng sau đây: Kết nối người sử dụng với tài nguyên Đặc thù của một hệ phân tán là có một tập tài nguyên (hữu hạn) và một tập người sử dụng (hữu hạn nhưng tăng trưởng rất nhanh). Do đó bài toán cơ bản, cuối cùng cần phải giải quyết của hệ phân tán là tìm giải pháp chia sẻ tài nguyên giữa các người sử dụng một cách tối ưu. 1. Chia sẻ tài nguyên Hardware Software Data Có 2 mô hình chính • Mô hình kháchchủ (Clientserver) • Mô hình hướng đối tượng (Object oriented) Ví dụ 1: Một server Queue Tài nguyên … Server Nhiều server … … … … … Chú ý: Chức năng phân bổ giữa S và C 2. Mỗi tài nguyên cần chia sẻ được xem như là một đối tượng (Object) • Đối tượng đó được định danh duy nhất trong toàn bộ hệ thống. • Đối tượng có thể di động trong hệ thống mà không cần tới định danh. • Mỗi tiến trình của người sử dụng muốn yêu cầu một tài nguyên nào đấy nó phải gửi một request tới đối tượng tương ứng với tài nguyên đó sẽ có một hệ điều phối tiếp nhận các request đó và xử lý. 3. Tính mở (Openness) Khả năng bổ sung them các dịch vụ mới mà không làm thay đổi hoặc cản trở đối với các dịch vụ đã có kể cả khả năng bổ sung tài nguyên mới. 4. Tính tương tranh (concurrency) 5. Tính chịu lỗi (Frult To Lerance) • Khi có một sự cố ở đâu đó, tiến hành cô lập sự cố. • Đi kèm với khả năng chịu lỗi là khả năng phục hồi: lưu trữ khả năng trung gian ngay trước khi xảy ra lỗi và thực hiện hồi phục lỗi từ điểm đó. 6. Tính thay đổi theo quy mô (tính co giãn) Scalabbility Hệ phân tán được thiết kế sao cho khi tăng quy mô hệ phân tán thì phần mềm chạy trên đó tăng ít (quy mô tăng hoặc giảm) 7. Tính trong suốt (Transparency) • Khả năng “che giấu” đối với người sử dụng, chương trình ứng dụng: che giấu sự rời rạc của các thành phần hệ phân tán ISO (Reference Model for Open Distributed Processing 1992) • Mô hình tham chiếu cho các hệ phân tán mở Định nghĩa: 8 loại trong suốt 1. Trong suốt truy cập (access transparency): cho phép các đối tượng thông tin cục bộ hay ở xa đều được truy cập bằng cùng một thao tác như nhau. 2. Trong suốt định vị (location transparency): cho phép các đối tượng thông tin truy cập mà không cần biết đến vị trị địa lý của chúng. 3. Trong suốt tương tranh: cho phép một số hoặc nhiều tiến trình hoạt động đồng thời bằng cách chia sẻ sử dụng nhiều thông tin mà không làm cản trở công việc chung, không làm tương tranh (concurrency transparency). 4. Trong suốt lặp (replication transparency): cho phép dùng nhiều bản sao của các đối tượng thong tin để tăng độ tin cậy và bản sao của hệ thống. 5. Trong suốt lỗi (failure transparency): cho phép che giấu các sự cố xảy ra trong hệ thống. 6. Trong suốt di trú (migration transparency): cho phép di chuyển các đối tượng thông tin trên hệ thống mà không ảnh hưởng đến người sử dụng và trình ứng dụng. 7. Trong suốt hiệu năng (performance transparency): cho phép hệ thống được cấu hình lại để tăng hiệu năng (cấu hình lại cả phần cứng và phần mềm). 8. Trong suốt về quy mô (scaling transparency).
Trang 1HỆ PHÂN TÁN (Distributed Systems)
Chương 1: TỔNG QUAN VỀ HỆ PHÂN TÁN
Công nghệ thông tin và viễn thông ngày càng phát triển, đòi hỏi nhu cầu về xử lí thôngtin ngày càng cao, nhanh hơn nhiều lần tốc độ phát triển của tài nguyên phần cứng và phầnmềm Có nhiều vấn đề đặt ra mà các hệ thống tập trung thông thường không đáp ứng được,
do tốc độ xử lí còn hạn chế Xây dựng một hệ thống phân tán có khả năng xử lí đồng thờimột bài toán trên nhiều máy tính là một hướng giải quyết khả thi và đã được chứng minh tínhhữu dụng Hệ thống phân tán còn tạo nhiều thuận lợi trong việc chia sẻ thông tin trên toàn thếgiới
Mặt khác sự phát triển không ngừng của các kỹ thuật tiên tiến về máy tính, đặc biệt làcác giải pháp mạng, cùng với sự bùng nổ nhanh chóng các dịch vụ và nguồn thông tin trênmạng đã làm gia tăng số người sử dụng Internet đến con số hàng tỷ (theo International DataCorp, tính đến cuối năm 2006 sẽ có hơn 1 tỷ người trên toàn thế giới kết nối Internet) Cácđặc điểm của nguồn thông tin, tổ chức mạng, cũng như việc khai thác, xử lý thông tin ngàycàng trở nên phức tạp và đa dạng hơn, có thể kể đến các khuynh hướng chính yếu:
Các thiết bị di động (Mobile devices): Việc cung cấp các phần mềm, các dịch vụ hỗ
trợ hiệu quả cho lớp thiết bị di động (laptop, PDAs đến điện thoại di động hay sổ tay điệntử ) này vẫn đang phải đối mặt với nhiều khó khăn vì các thiết bị di động thường có tàinguyên hạn hep, và thường dựa trên các kết nối với băng thông thấp, độ trễ cao của đườngđiện thoại, hay mạng không dây
Người dùng di động (Mobile users): Ngày nay người dùng thường có nhu cầu truy
cập vào máy tính của mình, tài khoản của mình từ bất cứ đâu, vì thế việc hỗ trợ kết nối ở mọinơi, mọi lúc và trên mọi thiết bị là một thách thức được đặt ra
Nhu cầu chuyên biệt hoá: Việc khai thác thông tin, sử dụng dịch vụ đã không còn
thỏa mãn với các cơ chế thụ động, mà người dùng thường có khuynh hướng muốn chuyênbiệt hoá nhu cầu của mình một cách chủ động Internet là cơ sở để thực hiện mong muốnnày, vấn đề còn lại là khả năng hỗ trợ chuyên biệt hoá của các ứng dụng mạng dành chongười dùng
Nguồn tin đa dạng, khối lượng cực lớn: Đã xuất hiện sự bùng nổ thông tin trên
mạng với sự xuất hiện của nhiều kho dữ liệu khổng lồ Các kho dữ liệu này lại được cung cấp
từ nhiều nguồn nên thường không đồng nhất về tổ chức, đây sẽ lại là một khó khăn mới đốivới người dùng khi truy vấn
Gia tăng sử dụng mạng cục bộ: Việc các mạng Intranet được xây dựng phổ biến là
một điều kiện tốt để triển khai các kỹ thuật mới trong việc xây dựng các ứng dụng mạng, vì
Trang 1
Trang 2Intranet cho phép việc thiết lập an toàn hệ thống dễ dàng hơn trong một tập hợp mang tínhcộng tác và tin cậy.
Môi trường không đồng nhất: Khi kết nối các máy tính, các mạng cục bộ vào
Internet, các ứng dụng và người dùng phải đối mặt với một môi trường không đồng nhất cả
về phần cứng, lẫn về kiến trúc, hệ điều hành…Và bài toán tương thích, dễ mang chuyển sẽ làvấn đề cần giải quyết ở đây
Sự khập khiễng về đường truyền: Mặc dù ngành viễn thông đã đạt đến những tiến
bộ đáng kinh ngạc, và cho ra đời các loại cáp quang với tốc độ truyền tải nhanh đáng kể, đa
số người dùng vẫn bị giới hạn với các thiết bị kết nối như modem hay các đường truyền băngthông thấp với mạng không dây
Với tất cả các đặc điểm trên đây, các ứng dụng phân tán phát triển theo mô hìnhclient-server truyền thống tỏ ra một số bất lợi vì đòi hỏi làm việc đồng bộ, đòi hỏi đườngtruyền băng thông cao, độ trễ thấp và cuối cùng là các dịch vụ thiếu linh động, khó thay đổihay bổ sung Mobile Agent là một mô hình trong đó các tiến trình - được gọi là agent - cótính tự trị và khả năng di động từ máy chủ này sang máy chủ khác để hoàn tất tác vụ Ýtưởng chủ đạo của mobile agent là di chuyển xử lý đến gần nguồn dữ liệu, nhờ đó có thểgiảm tải mạng, khắc phục tình trạng trễ, hỗ trợ xử lý không đồng bộ và tạo ra sự tưng thíchmạnh trên các môi trường không đồng nhất Mobile agent với các ưu điểm này hứa hẹn mộtgiải pháp mới, hiệu quả và dễ dàng hơn trong việc phát triển ứng dụng phân tán
1.1 Định nghĩa
Có rất nhiều định nghĩa được đưa ra cho hệ phân tán Sau đây là một số định nghĩa:
- 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
- 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ốngthống nhất, toàn vẹn
- 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
Distributed systems software
Hệ phân tán = Mạng máy tính + Phần mềm Hệ phân tán
Trang 3Unix cài đặt trên máy VAX (DEC)
Để nâng cao chức năng phân tán của hệ điều hành Unix (BSD) nhóm - Berkeley SystemDistributing
NES Network file system: hệ thống quản trị mạng
- Đại học Urije (Amsterdam - Hà Lan) có sản phẩm là Amoeba được thiết kế theo các tiêuchuẩn phân tán
- Đại học Carmegie – Hellon (Mỹ) có sản phẩm có tên là Mach cài trên các máy chuyên dụng
→ máy NEXT
- Viện nghiên cứu tin học tự động (Pháp) INRIA đặt tên là Chorus (không thương mại hóa)
1.3 Các dịch vụ ứng dụng (hệ thống thông tin) phân tán
- Hệ đặt vé giữ chỗ máy bay
- Các hệ thống thông tin phân tán
Ví dụ: Hệ thống thông tin quản lý du lịch
Công ty du lịch gồm nhiều đại lý đặt tại các thành phố Mỗi đại lý có các chức năng:
- Cung cấp thông tin
- Đăng ký du lịch
Trang 3
Mini
T
Trang 4Mỗi đại lý phải lưu trữ thông tin liên quan đến hai chức năng cơ bản Như vậy mỗi đại lý sẽđược xây dựng một hệ thông tin học cục bộ
mạng WAN Cơ sở dữ liệu gốc Cơ sở dư liệu bản sao
PrivatenetworkMạng quốc gia/ công ty khác
Cơ sở dữ liệu bản sao Cơ sở dữ liệu bản sao
Phương án 1: Cơ sở dữ liệu tập trung (kiến trúc tập trung)
Phương án 2: Kiến trúc phân tán
• Dùng các bản sao (có Cơ Sở Dữ Liệu gốc và các Cơ Sở Dữ Liệu bản sao)
• Không dùng Cơ Sở Dữ Liệu tổng thể, mỗi đại lý có Cơ Sở Dữ Liệu cục bộ (chỉ lưugiữ các thông tin liên quan đến đại lý này)
Nhiều vấn đế nảy sinh cần giải quyết:
• Định dạng (Idertification/Naming)
• Chia sẻ tài nguyên (Resource sharing)
• Giải quyết tương tranh (Concurrency)
Deadlock: hiện tượng yêu cầu tài nguyên quay vòng, xử lý bằng cách hủy bỏ một tiến trìnhnào đó
• Giải quyết đồng bộ hóa giữa các tiến trình
• Truyền thông liên tiến trình (Interprocess Communication)
1.4 Mục tiêu và đặc trưng của hệ phân tán
Hệ phân tán có các mục tiêu và đặc trưng sau đây:
Kết nối người sử dụng với tài nguyên
Đặc thù của một hệ phân tán là có một tập tài nguyên (hữu hạn) và một tập người sửdụng (hữu hạn nhưng tăng trưởng rất nhanh) Do đó bài toán cơ bản, cuối cùng cần phải giảiquyết của hệ phân tán là tìm giải pháp chia sẻ tài nguyên giữa các người sử dụng một cáchtối ưu
1 Chia sẻ tài nguyên
B
DC
Trang 5Chú ý: Chức năng phân bổ giữa S và C
2 Mỗi tài nguyên cần chia sẻ được xem như là một đối tượng (Object)
• Đối tượng đó được định danh duy nhất trong toàn bộ hệ thống
• Đối tượng có thể di động trong hệ thống mà không cần tới định danh
• Mỗi tiến trình của người sử dụng muốn yêu cầu một tài nguyên nào đấy nó phải gửi một request tới đối tượng tương ứng với tài nguyên đó sẽ có một hệ điều phối tiếp nhận các request đó và xử lý
Trang 5
C1
SC
2
Cn
Trang 63 Tính mở (Openness)
Khả năng bổ sung them các dịch vụ mới mà không làm thay đổi hoặc cản trở đối với các dịch
vụ đã có kể cả khả năng bổ sung tài nguyên mới
4 Tính tương tranh (concurrency)
5 Tính chịu lỗi (Frult To Lerance)
• Khi có một sự cố ở đâu đó, tiến hành cô lập sự cố
• Đi kèm với khả năng chịu lỗi là khả năng phục hồi: lưu trữ khả năng trung gian ngay trướckhi xảy ra lỗi và thực hiện hồi phục lỗi từ điểm đó
6 Tính thay đổi theo quy mô (tính co giãn)
Scalabbility
Hệ phân tán được thiết kế sao cho khi tăng quy mô hệ phân tán thì phần mềm chạy trên đótăng ít (quy mô tăng hoặc giảm)
7 Tính trong suốt (Transparency)
• Khả năng “che giấu” đối với người sử dụng, chương trình ứng dụng: che giấu sự rời rạc của các thành phần hệ phân tán ISO (Reference Model for Open Distributed Processing 1992)
• Mô hình tham chiếu cho các hệ phân tán mở
Định nghĩa: 8 loại trong suốt
1 Trong suốt truy cập (access transparency): cho phép các đối tượng thông tin cục bộhay ở xa đều được truy cập bằng cùng một thao tác như nhau
2 Trong suốt định vị (location transparency): cho phép các đối tượng thông tin truy cập
mà không cần biết đến vị trị địa lý của chúng
3 Trong suốt tương tranh: cho phép một số hoặc nhiều tiến trình hoạt động đồng thờibằng cách chia sẻ sử dụng nhiều thông tin mà không làm cản trở công việc chung,không làm tương tranh (concurrency transparency)
4 Trong suốt lặp (replication transparency): cho phép dùng nhiều bản sao của các đốitượng thong tin để tăng độ tin cậy và bản sao của hệ thống
5 Trong suốt lỗi (failure transparency): cho phép che giấu các sự cố xảy ra trong hệthống
6 Trong suốt di trú (migration transparency): cho phép di chuyển các đối tượng thôngtin trên hệ thống mà không ảnh hưởng đến người sử dụng và trình ứng dụng
7 Trong suốt hiệu năng (performance transparency): cho phép hệ thống được cấu hìnhlại để tăng hiệu năng (cấu hình lại cả phần cứng và phần mềm)
8 Trong suốt về quy mô (scaling transparency)
1.5 Các nguyên lý của hệ phân tán
Các nguyên lý hay là các vấn đề cần nghiên cứu đối với mỗi hệ phân tán là:
- Truyền thông
- Tiến trình
Trang 7Kiến trúc của Corba gồm bốn nhóm thành phần chính nối với ORB ( Object RequestBroker )
Hình 2.1 Kiến trúc của Corba
ORB đóng vai trò cốt lõi trong mọi hệ Corba
Một khái niệm đáng chú ý ở đây là Corba facility : đây là một tập hợp các dịch vụ đểthực hiện chức năng nào đó Có hai nhóm chính là:
- Horizontal facilities: các dịch vụ đa dụng cấp cao độc lập với các vùng
ứng dụng
- Vertical facilities: các dịch vụ cấp cao hướng tới các vùng ứng dụng cụ thể
Mô hình đối tượng
CORBA dùng mô hình đối tượng từ xa (remote object model) Trong đó các đối tượng
và các dịch vụ được mô tả bằng CORBA IDL IDL này mô tả chính xác phương thức và cúpháp của các đối tượng Các luật ánh xạ từ đặc tả IDL sang ngôn ngữ lập trình cụ thể cũngđược mô tả
Tổ chức chung của một hệ CORBA như hình sau:
Trang 7
Trang 8
Hình 2.2 Mô hình tổ chức của một hệ Corba
Mọi tiến trình dù ở client hay server đều phải dùng tới ORB ORB đảm nhận chứcnăng tổ chức quản lý mọi yêu cầu và phản hồi
Nó có hai dịch vụ chính là tổ chức lời gọi đối tượng và tìm dịch vụ tương ứng với tiếntrình Client giao tiếp với ORB qua giao diện (interface) Do có những trường hợp cần cógiao diện phù hợp ở lúc chạy chương trình nên có khái niệm giao diện triệu gọi động(dynamic invocation interface) Giao diện này cho phép client tạo một lời gọi vào lúc chạy( runtime)
Kho chứa giao diện và kho chứa thực thi
Để thực hiện lời gọi động được, đòi hỏi có một kho chứa các giao diện để một tiếntrình có thể tìm trong kho ra lời gọi thích hợp lúc chạy CORBA đưa ra kho chứa giao diện(Interface Repository) – chứa tất cả các định nghĩa giao diện
Khi dịch một định nghĩa giao diện thì chương trình dịch của IDL gán nó với một địnhdanh kho chứa ( repository indentifier) Nên dùng định danh này có thể lấy ra được địnhnghĩa của giao diện từ kho chứa Kho chứa giao diện có thể được chuẩn hóa
Bên cạnh khó chứa giao diện CORBA đưa ra : kho chứa thực thi (ImplementationRepository) Kho chứa thực thi chứa tất cả mọi thứ liên quan để thực hiện và kích hoạt đượcmột đối tượng Kho chứa thực thi gắn kết với hệ điều hành cụ thể nên nó không thể chuẩnhóa được như kho chứa giao diện
- Dịch vụ truy vấn ( query service ) : Tạo tập hợp các đối tượng để có thể truy vấn
được bằng ngôn ngữ khai báo
- Dịch vụ điều khiển tương tranh: Để cho phép các truy cập đồng thời vào đối tượng
- Dịch vụ sự kiện: Để truyền thông không đồng bộ bằng sự kiện.
- Dịch vụ thông báo ( notification service ): để hỗ trợ việc thông báo khi có sự kiện.
Trang 9- Dịch vụ mở rộng ( Externalization service ): Để đóng gói và mở gói ( marshaling và
unmarshaling) các đối tượng
- Dịch vụ vòng đời (life cycle service) : Tạo, xóa, sao chép và di chuyển đối tượng.
- Dịch vụ bản quyền: Gán bản quyền của người phát triển vào đối tượng.
- Dịch vụ đặt tên (naming service): Gán các đối tượng với các tên của chúng.
- Dịch vụ cung cấp thuộc tính ( property service ).
- Dịch vụ thương mại ( trading service ): Cung cấp cơ chế để đối tượng quảng cáo
các thuộc tính của mình
- Dịch vụ lưu trữ ( persistence service) : Để lưu trữ lâu dài các đối tượng.
- Dịch vụ quan hệ ( relationship service) : Mô tả quan hệ giữa các đối tượng.
- Dịch vụ an ninh: Cung cấp các cơ cấu cho kênh mật, xác thực và kiểm tra (audit).
- Dịch vụ thời gian : Cung cấp thời gian hiện tại.
DCOM
DCOM (Distributed COM) được hình thành dựa trên công nghệ đối tượng thành phần(Component Object Model – COM) của Microsoft Mục tiêu của COM là hỗ trợ sự phát triểncủa các thành phần có thể được kích hoạt và có thể tương tác với các đối tượng khác
Bản thân COM được cung cấp dưới dạng các thư viện được liên kết tới các tiến trình.Ban đầu, nó được phát triển để hỗ trợ cái được gọi là Compound Document một văn bảnđược xây dựng từ các thành phần khác nhau, mỗi một thành phần lại được gắn kết với cácứng dụng tạo ra nó
Để hỗ trợ các compound document, Microsoft cần một cách thức tổng quát nhằm phânbiệt các thành phần khác nhau và gắn kết chúng lại với nhau Điều này khởi đầu cho côngnghệ có tên OLE - Object Linking and Embedding
Hình 2.3 Mô hình chung của ActiveX, OLE và COM
Trong hình có ActiveX, nó chỉ chung tất cả những gì dùng để gọi OLE
DCOM mang lại cho mô hình trên khả năng liên lạc giữa một tiến trình với một thànhphần (component) nằm ở máy khác Cơ chế trao đổi thông tin giữa các thành phần trongCOM và DCOM là như nhau.Nên đối với một người lập trình, sự khác biệt giữa COM vàDCOM thường được che đi sau rất nhiều các giao diện
Mô hình đối tượng
DCOM sử dụng mô hình đối tượng từ xa
Trang 9
Trang 10Cũng giống như CORBA, DCOM bám xung quanh việc thực hiện các giao diện Mộtđối tượng DCOM đơn giản có thể coi là sự thực hiện một giao diện, một đối tượng đơn lẻ cóthể triển khai một vài giao diện cùng một lúc Tuy nhiên khác với CORBA, DCOM chỉ cógiao diện nhị phân (binary interface) Nó là một bảng với các con trỏ chỉ tới các phần thực thicủa các phương thức trong giao diện DCOM cũng có một IDL gọi là Microsoft IDL.
Mỗi một giao diện trong DCOM có một định danh 128 bit (Interface Indentifier - IID)
và đó là định danh có tính duy nhất toàn cục
Một đối tượng DCOM được tạo ra như một thể hiện (instance) của một lớp và để làmđược như vậy cần thiết phải có trước một lớp Để giải quyết vấn đề này, DCOM có đối tượnglớp Một đối tượng bất kì có thể coi như dùng giao diện IClassFactory Giao diện này cóphương thức CreateInstance, giống toán tử new trong C++ hay Java Việc gọi CreateInstancetrong một đối tượng lớp tạo ra đối tượng DCOM
Một đối tượng lớp đại diện cho một tập các đối tượng có cùng chung một kiểu và thựchiện cùng một giao diện Các đối tượng thuộc về một lớp sẽ chỉ khác nhau về trạng thái của
nó mà thôi Trong DCOM, mỗi một đối tượng lớp được tham chiếu thông qua các định danhlớp (CLSID)
Tất cả các đối tượng đều triển khai cùng một giao diện chuẩn gọi là IUnknown Khimột đối tượng được tạo bởi lời gọi CreateInstance, đối tượng lớp trả lại một con trỏ tới giaodiện này
Một điểm khác biệt với mô hình đối tượng CORBA: tất cả những đối tượng trongDCOM đếu là nhất thời
DCOM có hỗ trợ việc triệu gọi động một đối tượng bằng cách dùng giao diệnIDispatch Giao diện này tương tự DII trong CORBA
Thư viện loại (Type library) và Registry
Thư viện loại trong DCOM tương tự như kho chứa giao diện trong CORBA Một thưviện loại thường được gắn với một ứng dụng hoặc một thành phần lớn có chứa nhiều đốitượng lớp
Hình 2.4 Thư viện loại trong DCOM
Để kích hoạt một đối tượng, tức là đảm bảo rằng nó được tạo ra và đặt vào trong mộttiến trình để nó có thể chấp nhận một lời triệu gọi, DCOM sử dụng registry của Window
Trang 11cùng một tiến trình đặc biệt gọi là Service Control Manager (SCM) Registry được sử dụng
để ghi lại ánh xạ từ CLSID tới tên file chứa các triển khai của lớp đó
Khi một đối tượng được kích hoạt trên một máy trạm ở xa, client liên hệ với SCM củamáy trạm - một tiến trình phục vụ cho việc kích hoạt một đối tượng, nó tương tự như là khochứa thực thi của CORBA SCM này sẽ kiểm tra trong registry của nó để tìm ra file ứng vớiCLSID và sau đó khởi động tiến trình chứa đối tượng
CORBA Service DCOM/COM+ Service Windows 2000 Service
Transactions
Distributed Transaction Coordinator
Mô hình đối tượng
Không giống như các hệ phân tán dựa trên đối tượng khác, Globe không đưa ra môhình remote-object Thay vào đó, các đối tượng trong Globe có thể được chia sẻ một cách vật
Trang 11
Trang 12lý, tức là trạng thái của một đối tượng có thể được phân phối và nhân bản suốt dọc nhiều tiếntrình
Trong Globe, phần thực thi của một giao diện ở tại một vị trí gọi là local object, nóthực hiện các giao diện nhị phân Các đặc tả của giao diện được hỗ trợ bởi IDL được sử dụngtrong CORBA và DCOM
Local object chia làm hai loại:
- Primitive local objec: Không chứa bất cứ local object nào bên trong.
- Composite local object: Là một đối tượng mà được tạo bởi nhiều local object Để
hỗ trợ cho sự tích hợp này, một bảng giao diện được thành lập để chứa bên trong các con trỏ
để chỉ đến trạng thái và phương thức Mỗi một con trỏ trạng thái chỉ tới các dữ liệu thuộc vềmột local object cụ thể Đối với một giao diện của primitive local object, tất các cả các trỏtrạng thái đều chỉ về cùng một dữ liệu đại diện cho trạng thái của đối tượng đó Trong trườnghợp là sự tổng hợp của nhiều đối tượng thì con trỏ trạng thái chỉ tham chiếu để trạng thái củacác đối tượng khác nhau mà nằm trong đó
Hình 2.5 Mô hình phân phối chia sẽ đối tượng trong globe
Khác với CORBA hay DCOM, Globe cung cấp rất ít các dịch vụ Trên thực tế, chỉ cónhững dịch vụ mà không thể được cung cấp bởi các đối tượng mới được triển khai
Điều khiển tương tranh trong Globe thực hiện trên từng đối tượng Một đối tượng chia
sẻ bảo vệ các trạng thái của nó khỏi các truy cập đồng thời bằng giao diện riêng biệt cho việckhóa Không có một giao diện chuẩn hóa nào cho điều khiển tương tranh được định nghĩatrong Globe
Trong Globe, các giao tác sẽ được thực hiện nhờ đối tượng quản lý giao tác
Globe không có dịch vụ sự kiện Các đối tượng trong Globe thường là thụ động.Thông thường, để triển khai một dịch vụ sự kiện trong Globe thường đòi hỏi phải đi theo môhình kéo của CORBA
Việc đóng gói thường là dịch vụ được quản lý trên từng đối tượng Khả năng chịu lỗicủa Globe cũng được kiểm soát trên từng đối tượng
Trang 131.7 Các chương trình agent
Trong phần này chúng ta sẽ thiệt lập cơ sở hạ tầng cơ sở quyết định agent nào sẽ hoặcnên hành động như thế nào Trong CD CFIT, agent satcllite “thức giác” vào mỗi đơn vị thờigian ∆t, quảng bá một thông báo vị trí và quay trở lại “ngủ” đối với ∆t giây Ngược lại côngviệc của agent truck trong VD Khain bắt đầu được nhận một thông điệp từ một agent khácyêu cầu các nguồn tài nguyên xe tải Trong VD STORE agent credit có thể đối xử khác nhauvới các agent khác nhau, cung cấp các trả lời thích hợp cho các agent và từ chối dịch vụ vớicác agent khác Trong mỗi trường hợp, agent đang thực hiện một quyết định đáp lại các sựthay đổi trong môi trường của nó như thế nào (ví dụ chạy một thông điệp, chạy đồng hồ).Các agent khác nhau sử dụng các cách giải quyết khác nhau để thực hiện các quyết định Bộtạo hoặc bộ quản lý 1 agent muốn agent giữ vững các nguyên tắc tùy ý – ông ta phải thiết lậpcác hướng dẫn tác động để agent phải tuân theo Mục đích của chương này để định nghĩa mộtngôn ngữ gọi là các CT Agent, do sử dụng việc triển khai agent cá nhân chỉ rõ các hành độngnào agent phải thực hiện và các luật thực hiện của các hành động này
1.7.1 Kiến trúc quyết định agent
Các cấu trúc thực hiện các quyết định cơ sở sử dụng 1 agent được chỉ ra trong sơ đồ6.1, bao gồm các thành phần sau:
Những phần mềm cơ sở: Bao gồm tập hợp cấu trúc dữ liệu cơ sở và các mã kếthừa trên phần đầu agent được xây dựng Nó được truy cập thông qua cơ chếgọi mã Tại bất kỳ thời điểm t, có một tập các đối tượng thích hợp xác định vớimỗi loại dữ liệu quản lý bởi agent Tập tất cả đối tượng qua các kiểu dữ liệuđược quản lý bởi mã phần mềm được gọi là trạng thái của agent tại thời gian t
Rõ ràng trạng thái cỷa 1 agent thay đổi với thời gian Không mất tính tổng quátchúng ta giả sử rằng mã kế thừa của mỗi agent bao gồm “hòm thông điệp” (mô
tả trong phần 4.3)
Các ràng buộc toàn vẹn: Agent có 1 tập ràng buộc toàn vẹn xác định trườnghợp, IC, các ràng buộc toàn vẹn này phản ánh các sự mong muốn, trên mộtphần của nhà thiết kế agent mà trạng thái của 1 agent phải thỏa mãn
Các hành động: Mỗi agent có một tập các hành động trường hợp hành độngđược thực hiện do nội dung mà được thực hiện trong bất kỳ ngôn ngữ lập trìnhmệnh lệnh (hoặc khai báo) phù hợp Agent suy luận về các hành động thôngqua một tập các điều kiện và tác động đến việc định nghĩa các điều kiện Trạngthái agent phải thỏa mãn với hành động được coi là có thể thực hiện và trạngthái mới xảy ra do một sự thực hiện Chúng ta giả sử rằng các tiên đề và các kếtquả thích hợp với một hành động đúng chỉ rõ tác động của mã thực hiện hànhđộng Cú pháp và ngữ nghĩa không chính thức như các hành động tuần tự vàđồng thời được mô tả trong phàn b.2
Các ràng buộc hành động: Trong các trường hợp tùy ý, bộ tạo agent có thểmong muốn ngăn cản agent từ việc thực hiện đồng thời các hành động tùy ý
Trang 13
Trang 14mặc dù có thể khả thi để agent thực hiện chúng Các ràng buộc hành động làcác sự chỉ định rõ ràng buộc người sử dụng phát biểu các điều kiện dưới cáchành động có thể không thực hiện một cách đồng thời.
Các CT agent: Một agent là một tập các luật theo một ngôn ngữ được địnhnghĩa trong 6.4 Bộ tạo agent có thể sử dụng để chỉ rõ các nguyên tắc đưa vào
đó agent tác động và các cách giải quyết bao trùm bên các hành động agentthực hiện từ các trạng thái thừa có thể của các hành động có thể một cách ngắngọn, CT agent thích hợp với 1 agent mã hóa “thực hiện” và “không thực hiện”của agent
1.7.2 Cơ sở hành động
Trong phần này chúng ta sẽ giới thiệu khái niệm của một hành động và mô tả cách cáctác động của các hành động được thực hiện Trong phần lớp công việc trong AI và các cáchtiếp cận logic cho hành động, giả sử các trạng thái là một tập các phần tử logic cơ sở
Trong lĩnh vực phong phú của các cơ sở dữ liệu tích cực Giả sử rằng các trạng tháiphản ánh nội dung của một cơ sở dữ liệu quan hệ Tuy nhiên không chỉ hai cách tiếp cận làcân xứng với mục địch của chúng ta bởi vì trạng thái của 1 agent sử dụng mã phần mềm S =
(giả sử trong phần lớn việc thiết lập AI) hoặc chúng có thể là các mối quan hệ (trong cơ sở
dữ liệu tích cực) nhưng sự thực các đối tượng được thao tác bởi S là kiểu dữ liệu có cấu trúc,phức tạp hơn
Định nghĩa 1 Hành động - Phần tử hành động
Một hành động Q bao gồm 6 thành phần:
3 Action code: Đây là nội dung của các mã thực hiện hành động
4 Pre: Điều kiện gói mã χ gọi tiên đề (điều kiện xác định trước) của hành động,
5 Add: Một tập Add(α) của các điều kiện gọi mã
6 Del: Một tập Del(α) của các điều kiện gọi mã
Quan trọng để chú ý rằng có sự phân biệt lớn giữa định nghĩa một hành động củachúng ta và định nghĩa cổ điển của hành động trong AI
Một sự khác nhau tinh vi hơn là trong AI cổ điển, các trạng thái được thay đổi vật lý
do kết hợp trạng thái hiện tại với các mục trong danh sách thêm và sau đó xóa các mục trongdanh sách xóa Ngược lại, danh sách thêm và danh sách xóa trong cơ cấu không đóng bất kỳvai trò nào trong sự thực hiện hành động vật lý Hành động được thực hiện do mã hành động
Trang 15thích hợp Agent sử dụng các tiên đề, danh sách thêm và danh sách xóa để suy luận về cái gì
là đúng/ sai trong trạng thái mới
Chỉ rõ bất kỳ hành động, chúng ta có thể kết hợp với một thiết bị tự động mô hình hóamột hệ thống biến đổi như sau: Không gian trạng thái của một thiết bị tự động là một tậphợp tất cả các trạng thái có thể của agent Các trạng thái trong đó tiền đề của hành động là saikhông có tình trạng nguy khốn sắp thoát khỏi thiết bị tự động Có một tình trạng khó khăn(biến đổi) từ 1 trạng thái tới 1 trạng thái khác nếu trạng thái đầu tiên thỏa mãn tiên đề củahành động và trạng thái thứ 2 thu được kết quả từ việc thực hiện hành động ở trạng thái đầu
Chú ý : Giả sử tiên đề các danh sách thêm và xóa thích hợp với 1 hành động, mô tả
Hành động này cập nhật 2 cơ sở dữ liệu ACCESS đối với 1 kho chưa gửi và đã gửi.Agent supplier đầu tiên nên chắc chắn rằng lượng yêu cầu là có sẵn do thăm dò cơ sở dữ liệuchưa gửi Do đó agent supplier cập nhật kho cơ sở dữ liệu chưa giử để giảm lượng yêu cầu vàthêm 1 mục mới cho kho cơ sở dữ liệu đã gửi đối với công ty yêu cầu
Ví dụ 2 (CFIT) Cho rằng agent auto Pilot trong ví dụ CFIT có hành động say để tínhtoán vị trí hiện tại của máy bay
Name: compute_current Location (Report)Schema: (Satellite Report)
Pre: in (Report, msgbox; get Var (Msg, Id, “Report”))Del: in (Old Location, auto Pilot: Location ())
Add: in (Old Location, auto Pilot: Location ()) & in (Flight Route; auto Pilot:get Flighit Route ()) & in (Velocity, auto Pilot: Velocity ()) & in (New Location, auto Pilot:calculate Location (Old Location, Flight Route, Velocity))
Hành động này yêu cầu 1 thông báo vệ tinh được tạo ra do agent gps bằng việc kếthợp dữ liệu GPS Do đó nó tính toán vị trí hiện tại của máy bay dựa trên thông báo này nhưđịnh vị tuyến bay của máy bay
Ví dụ 3 (STORE) Agent profiling có thể có hành động sau:
Trang 15
Trang 16Name: update_high Profile (Ssn, Name, Profile)Schema: (String, String, User Profile)
Pre: in (spender (high), profiling: classify User (Ssn))Del: in (<Ssn, Name, Old Profile>, profiling: all (‘high Profile’))Add: in (<Ssn, Name, Profile>, profiling: all (‘high Profile’))Hành động này cập nhật các tóm tắt sơ lược về người sử dụng là người có mức tiêuthụ cao Để xác định những người tiêu thụ cao, đầu tiên nó dẫn chứng ra cuộc gọi mãClassify User, sau khi chứa đựng danh sách đích của người sử dụng, nó cập nhật các mục vềngười sử dụng trong cơ sở dữ liệu tóm tắt tiểu sử Agent profiling có thể cũng có các hànhđộng tương tự đối với những người tiêu thụ mức thấp và trung bình
Giả sử bất kỳ sự thay đổi trạng thái rõ ràng được khởi đầu do 1 agent là một hànhđộng Ví dụ việc gửi các thông điệp và đọc các thông điệp là các hành động Tương tự thựchiện một cập nhật cho cấu trúc dữ liệu bên trong là một hành động Việc thực hiện một tínhtoán trên cấu trúc dữ liệu bên trong của 1agent cũng là một hành động
Định nghĩa 5 Quản lý xảy ra đồng thời
Một quan điểm của sự xảy ra đồng thời là 1 hàm conc nhận đầu vào là 1 trạng thái đối
Định nghĩa trên nói rằng chi phí sự xảy ra đồng thời là 1 hộp đen – nó nhân 1 tập hànhđộng đơn lẻ sinh ra các biểu diễn 1 “kết hợp” của các hành động đơn lẻ và có thể không đượcbiểu diễn rõ ràng trong cơ sở hành động của agent, hơn nữa là 1 hành động kết hợp được xâydựng động Hoàn toàn có thể là hành động “kết hợp” đơn lẻ là không thể thực hiện đượctrong trạng thái do đó chỉ ra rằng hành động dưới dạng câu hỏi là không thực hiện được.Điều kiện duy nhất AS = {α} trong định nghĩa trên nói rằng sự thực hiện đồng thời của 1hành động đơn lẻ mang lại hành động tương tự
Tất nhiên khái niệm của 1 chú thích của sự xảy ra đồng thời là rất rộng và có thể cócác khoảng cách lớn, 1 vài trong số chúng là trực giác hơn các cái khác
Định nghia 6 Sự thực hiện đồng thời yếu
Trang 17Odel = def U O_Sol(Del(α(X) Ө) δ) (α(X), Ө, δ) € AS
cả {(α(X), Ө, δ) | α(t) € AS, α(X) Ө = α(X) Ө ground, (Ө, δ) € Ө Г (α(X))} Bộ 3 thực hiện
kết quả
Theo định nghĩa này mọi thứ đều thực hiện song song, đầu tiên là xóa tất cả và sau đó
là chèn tất cả Trong khi các sự thực hiện đồng thời yếu hoạt động chỉ tốt khi tập hành động
A không liên quan “các ánh xạ” chúng là khó giải quyết khi hành động trong A cạnh tranhđối với các tài nguyên
Ví dụ 5 (CHAIN) Xem xét tập các sự thực hiện hành động sau
update_stockDB(widget 5, 250, company A)
update_stockDB(widget 10, 100, company B)
update_stockDB(widget 5, 500, company C)
Hơn nữa cho rằng các cơ sở dữ liệu
Chương 2 Truyền thông trong hệ thống phân tán
Môt sự khác nhau quan trọng nhất giữa hệ phân tán và hệ thống bộ xử lí đơn là truyềnthông liên quá trình Trong hệ thống bộ xử lí đơn, hầu hết truyền thông liên quá trình hoàntoàn có thể nắm bắt được sự tồn tại bộ nhớ bị chia sẽ Một ví dụ điển hình là vấn đề ngườisản xuất và người tiêu thụ trong đó một tiến trình ghi vào một bộ đệm được chia sẽ và mộttiến trình khác thì đọc từ nó Thậm chí hầu hết các dạng cơ bản của sự đồng bộ hóa, cờ hiệu,yêu cầu một từ (bản thân biến cờ hiệu đó ) được chia sẽ Trong hệ thống phân tán không cóbất cứ một bộ nhớ nào được chia sẽ Vì vậy toàn bộ bản chất của truyền thông liên quá trìnhphải được xem xét lại một cách toàn diện bắt đầu từ điểm xuất phát Trong chương nàychúng ta sẽ thảo luận về nhiều vấn đề, ví dụ, và các vấn đề có liên quan đến truyền thông liênquá trình trong hệ điều hành phân tán
Chúng ta sẽ bắt đầu thảo luận các quy tắc mà tiến trình truyền thông phải tuân theo, đượcbiết đến như là những giao thức Đối với hệ phân tán diện rộng những giao thức này thườngđòi hỏi một biểu mẫu nhiều tầng, mỗi cái có một mục tiêu và quy tắt của nó Sau đó chúng ta
sẽ xem xét mô hình client-server được giới thiệu trong chương 9 một cách chi tiết hơn Sau
đó là thời gian để nhận biết các thông báo để trao đổi như thế nào và nhiều biến tùy chọn tớingười thiết kế hệ thống
Một tùy chọn đặc biệt, một lời gọi thủ tục từ xa, thì rất quan trọng để đảm bảo cho đoạnchính đó Lời gọi thủ tục từ xa thực sự là một cách thức tốt hơn để đóng gói sự chuyển tảithông báo, thực hiện nó như là lập trình truyền thông và như vậy thì sẽ sử dụng hơn Tuy vậy
nó có tính chất riêng biệt của nó và các vấn đề chúng ta sẽ xem xét
Sau cùng, chúng ta sẽ kết luận chương này bởi việc nghiên cứu làm thế nào mà các nhómnhững tiến trình có thể giao tiếp được với nhau thay vì chỉ có hai tiến trình Một ví dụ chi tiết
về nhóm giao tiếp ISIS sẽ được thảo luận
Trang 17
Trang 182.1 Các giao thức được phân lớp:
Dựa trên sự thiếu hụt của bộ nhớ chia sẻ , mọi sự giao tiếp trên những hệ thống phân tán
là căn cứ trên thông điệp đưa đến Khi tiến trình A muốn giao tiếp với tiến trình B thì trướctiên nó phải xây dựng một thông điệp mà trên đó có chứa không gian địa chỉ Sau đó nó thựchiện một lời gọi hệ thống, đó là nguyên nhân hệ điều hành tìm nạp thông điệp và gửi nó quamạng để đưa đến B Mặc dù ý tưởng cơ bản đúng đắn dễ hiểu này đủ để tránh những xáo trộnnhưng tiến trình A và tiến trình B phải thống nhất về ý nghĩa của các bít được gửi đến Nếutiến trình A gửi một nội dung được viết bằng tiếng Pháp và được giải mã bằng mã kí tựEBCDIC của máy IBM, và tiến trình B chờ đợi bảng kiểm kê của môi trường được viết bằngtiếng Anh và được giải mã trong ASCII , sự giao tiếp sẽ trở nên tối ưu
Cần có nhiều sự phù hợp khác nhau Có bao nhiêu volt được sử dụng cho tín hiệu 0-bit vàbao nhiêu volt cho tín hiệu 1-bit ? Làm thế nào để nơi nhận biết được đâu là bít cuối cùngcủa thông báo? Nếu một thông báo bị hỏng hoặc bị mất thì nơi nhận có thể tìm ra bằng cáchnào và nếu tìm ra được thì nó phải làm gì? Độ dài của số, chuỗi , dữ liệu là bao nhiêu ?Chúng được biểu diễn như thế nào? Tóm lại , sự phù hợp là cần thiết ở nhiều mức khácnhau , sự thay đổi của những chi tiết ở mức thấp của sự chuyển giao bit đến những chi tiết ởmức cao hơn như cách mà thông tin biểu diễn
Để đễ hơn trong việc phân chia chuỗi các mức và đưa ra những rắc rối trong truyền thông,
tổ chức chuẩn Quốc Tế , ISO đã trình bày một mô hình khác mà các mức phức tạp khác nhauđược nhận biết một cách rõ ràng , đặt cho chúng những cái tên chuẩn và chỉ ra những mứcnào thì làm những việc gì Mô hình này được gọi là Mô hình tham khảo OSI (Day andZimmerman, 1983), thường được viết tắt là ISO , OSI hoặc đôi khi chỉ là kiểu OSI Mặc dùchúng ta không có ý định đưa ra một phần mô tả đầy đủ của mô hình này và tất cả những cáiliên quan đến nó ở đây, một đoạn mở đầu ngắn gọn sẽ có ích Đối với những chi tiết cụ thể(Tanenbaum , 1988)
Lúc đầu , mô hình OSI được thiết kế cho phép hệ thống mở để truyền thông Một hệ thống
mở là đã sẵn sàng để giao tiếp với nhiều hệ thống mở khác bằng cách sử dụng thước chuẩn
mà nó chi phối khuôn thức, nội dung , ý nghĩa của các thông báo được gửi tới và được chấpnhận Những thước đo đó đã được chính thức hoá và được gọi là những định chuẩn Về cơbản thì một định chuẩn là một sự thống nhất trong các cách giao tiếp để tiến hành Khi mộtngười phụ nữ làm quen với một người đàn ông , cô ấy có thể chọn cách đưa tay ra Anh tatuỳ vào đó có thể lần lượt bắt tay hoặc hôn nó, ví dụ vậy , không biết có phải cô ấy là mộtluật sư người Mỹ trong một cuộc hội nghị về thương mại hay một công chúa của một nướcChâu Âu tại một buổi khiêu vũ trang trọng Vi phạm định ước sẽ làm cho giao tiếp khó khănhơn, nếu nó xảy ra
Với mức Công nghệ cao , nhiều công ty đã chế tạo ra được bảng mạch bộ nhớ cho máytính cá nhân IBM Khi bộ xử lý trung tâm CPU muốn đọc được một từ trên bộ nhớ thì nóphải có địa chỉ và những tín hiệu điều khiển nào đó trên bus Bảng mạch bộ nhớ chờ đợi đểnhận tín hiệu và được đáp ứng bằng cách đặt từ yêu cầu trên bus trong một khoảng thời gian
Trang 19Giao thức biểu diễn
sẽ phải phù hợp với tất cả các định ước được sử dụng Mô hình OSI phân biệt hai giao thức
có cùng kiểu Với giao thức kết nối có hướng , trước khi trao đổi dữ liệu thì trước tiên nơi gửi
và nơi nhận phải thiết lập giải nghĩa kết nối và có thể sắp xếp lại các giao thức mà chúng sẽ
sử dụng Điện thoại là một hệ thống truyền thông kết nối có hướng Với những kết nối vôhướng thí không cài đặt trước là cần thiết Máy điện báo chỉ truyền những thông báo khi mà
nó đã sẵn sàng Ví dụ thả một bức thư vào trong hộp thư là kết nối vô hướng Với máy tínhthì cả kết nối có hướng và kết nối vô hướng đều phổ biến
Trong mô hình OSI , giao tiếp được chia thành 7 mức (lớp) như trong hình 2.1 Mỗi lớptương ứng với một hình thức cụ thể của truyền thông Bằng cách này , một vấn đề có thểđược chia thành những phần nhỏ để dễ quản lý , mỗi vấn đề có thể được giải quyết một cách
Trang 19
MạngHình 2.1 Lớp, giao diện, giao thức trong mô hình OSI
Tiến trình
A
Tiến trìnhB
Trang 20Lớp kết nối DL Lớp mạng
Lớp truyền tải Lớp phiên
Lớp biểu diễn Lớp ứng dụng
độc lập với nhau Mỗi lớp được chuẩn bị một giao diện trên đỉnh của nó Giao diện bao gồmmột tập hợp các thao tác mà chúng xác định hỗ trợ lẫn nhau trong lớp để sẵn sàng cung cấpcho người sử dụng nó
Trong mô hình OSI , khi tiến trình A của máy 1 muốn giao tiếp với tiến trình B của máy 2thì nó phải xây dựng một thông báo và duyệt thông báo đó để gắn vào lớp trên máy đó Ví dụlớp có thể có một thủ tục thư viện nhưng nó cũng có thể thực thi một số cách khác (bên trong
hệ điều hành, trên mạch điện tử bên ngoài bộ đồng xử lý, ) Lớp phần mềm ứng dụng thêmvào đầu trang văn bản phía trước thông báo và duyệt qua kết quả của thông báo Lớp củabản trình bày lần lượt thêm vào ở đỉnh và duyệt xuống kết quả từng phiên lớp , và cứ tiếp tụcnhư vậy Một số lớp thêm vào không chỉ đầu trang phía trước Khi chạm đáy, lớp vật lýmới thật sự truyền thông báo
Khi thông báo đến máy 2 , nó được duyệt theo hướng đi lên , với mỗi lớp Cuối cùng ,thông báo đến nơi nhận là tiến trình B và tiến trình B có thể trả lời để nó sử dụng đường dẫnngược lại Thông tin trong đầu lớp được dùng cho các định ước của lớp
Một ví dụ về tại sao các định ước của việc đặt hàng là quan trọng , ta xem xét mối liên hệvới nhau giữa hai công ty Hãng Hàng không Zippy và Công ty cung cấp lương thực , thựcphẩm Mushy , đã kết hợp chặt chẽ với nhau Mỗi tháng ,tổ trưởng tổ phục vụ hành khách củahãng Zippy yêu cầu thư kí của cô ta liên hệ với thư kí giám đốc của công ty Mushy để đặt100,000 hộp gà Theo truyền thống thì có thể đặt hàng qua bưu điện Tuy nhiên , nếu phục
vụ qua đường bưu điện thì sẽ giảm chất lượng của thức ăn , lúc đó hai người trợ lý sẽ quyếtđịnh bỏ cách này và sẽ giao tiếp với nhau qua FAX Họ có thể làm việc này mà không làmphiền đến giám đốc của họ , từ đó nghi thức giao dịch của họ là chuyển giao ,vận chuyển tựnhiên, và như vậy họ đã không làm vừa lòng cấp trên của mình
Cũng như vậy , trưởng tổ phục vụ có thể quyết định không lấy món gà nữa và muốn đặtmột món đặc biệt , mới của Mushy là món sườn dê khai vị , và họ tự quyết định mà khônglàm phiền đến thư kí của mình Điều cần chú ý là ở đây chúng ta có hai người đặt hàng làngười quản lý và thư kí., và mỗi người có một nghi thức ngoại giao riêng của mình (chủ đềcủa cuộc thảo luận , Kỹ thuật – Công nghệ , ) Điều đó có thể thay đổi mà không phụ thuộcvào những cái khác Đúng như vậy, Sự độc lập này làm cho nghi thức ngoại giao về việc đặthàng sẽ thu hút hơn.Mỗi cách đều có thể bị thay đổi về Kỹ thuật-Công nghệ tiến bộ màkhông ảnh hưởng đến các cách khác
Trang 21Bit thực tế xuất hiện trên mạngHình 2.2 Một thông báo điển hình mà xuất hiện trên mạng
B nhận 0, tổng kiểm tra xấu
A gửi TB dữ liệu1, B nói vềtổng kiểm tra xấu
Cả hai đều đến đúng
Cả hai đều đến đúng
chuẩn được sử dụng trong một hệ thống riêng biệt được gọi là một bộ định chuẩn hay ngănxếp định chuẩn Trong đoạn sau đây , chúng ta cũng sẽ chỉ ra một số định chuẩn được sửdụng trong mỗi lớp
2.1.1 Lớp vật lý
Lớp vật lý liên kết sự truyền xâu 0 và xâu 1 Có bao nhiêu volt để sử dụng cho 0 và cho 1 ?
Có bao nhiêu bit được gửi đi trong vòng một giây và có hay không sự truyền mà nó chiếmchỗ trong cả hai hướng đồng thời – là khoá đưa ra trong lớp vật lý Trong phần thêm vào ,kích thước và hình dạng của mạng nối kết (phích cắm) cũng giống như những cái đinh ghim
và ý nghĩa của mỗi cách được quan tâm ở đây
Định chuẩn lớp Vật Lý có quan hệ với tiêu chuẩn hoá về điện , cơ khí , tín hiệu giao diệnnên khi một máy gửi đến một bit 0 thì trên thực tế nó cũng chỉ nhận một bit 0 mà không phải
là một bit 1 Có nhiều lớp Vật Lý chuẩn đã phát triển (các phương tiện đại chúng truyềnthông đại chúng khác) , ví dụ như chuẩn RS-232-C cho hàng loạt đường truyền thông
2.1.2 Lớp nối kết dữ liệu
Lớp Vật Lý chỉ gửi đi các bit Chừng nào không xuất hiện lỗi thì tất cả đều tốt Tuy nhiên ,những mạng truyền thông thực còn tuỳ thuộc vào lỗi, vì vậy một số cơ chế cần phải tìm ra vàsửa chữa lỗi Cơ chế này có nhiệm vụ chính trong lớp kết nối dữ liệu.Cái gì làm thành mộtnhóm các bit ở trong khối đôi khi nó được gọi là khung và xem như mỗi khung được thừanhận rộng rãi , đúng cách thức
Trang 21
Lớp kết nối dữliệu sau cùng
Data 1
Control 0
Control 0
Trang 22A truyền TBDL 0,B :”tôi muốn 0,
không phải 1”
A lại truyền TB dữ liệu 0Cuối cùng B nhận dữ liệu 0
thứ tự và đánh dấu chúng , cũng như việc tính toán 1 bài toán kiểm tra tổng bằng cách cộngtất cả các byte trong khung theo một cách nào đó Lớp nối kết dữ liệu được thêm vào kiểmtra tổng tới khung Khi khung đã hoàn thành, kiểm tra tổng từ dữ liệu đưa vào và so sánh kếtquả kiểm tra tổng sau của khung Nếu chúng đồng nhất thì khung có suy nghĩ chu đáo, chínhxác và đã được công nhận Nếu 2 kết quả không đồng nhất thì nơi nhận sẽ trả lời nơi gửi phảitruyền lại Những khung đã được phân công tuần tự các số (ở đỉnh) vì vậy mọi cái đều có thểnói cái gì là cái gì
Trong hình 10-3 chúng ta thấy (một rắc rối nhỏ) ví dụ của tiến trình A cố gắng gửi haithông báo 0 và 1 cho tiến trình B Tại giá trị 0, thông báo giá trị 0 được gửi đi , nhưng khi nóđến, tại giá trị 1 , sự tạp nhiễu trên đường truyền là nguyên nhân nó bị hỏng, do đó kiểm tratổng là sai
để chọn được đường dẫn tốt nhất được gọi là lộ trình và là ngăn xếp chính của lớp mạng Vấn đề trở nên phức tạp bởi việc tuyến ngắn nhất không phải lúc nào cũng là tuyến tốtnhất Vấn đề thực sự quan trọng là số lượng sự trì hoãn trên một tuyến đường đã cho , nó cóliên quan đến số lượng khả năng tải và số thông báo đã xếp hàng để chờ chuyển qua cáctuyến đường khác nhau Như vậy , sự trì hoãn có thể thay đổi tình thế diễn biến của thời gian Các thuật toán tuyến cố gắng thích nghi sự thay đổi của việc nhập vào , ngược lại , các cáikhác thì sẵn sàng đưa ra quyết định dựa trên cơ sở trung bình giới hạn lâu dài
Hai giao thức lớp mạng đang được sử dụng rộng rãi , một sự kết nối đã được định hướng
và một không kết nối Sự kết nối đã được định hướng thì được gọi là X.25 và rất được sựquan tâm của điều hành viên của mạng công cộng , như là các công ty diện thoại và các PTTcủa người Châu Âu Người sử dụng X.25 đầu tiên gửi một lời gọi yêu cầu tới đích , có thể làchấp nhận hoặc từ chối sự kết nối đã được đề ra Nếu sự kết nối được chấp nhận , người gọi
Hình 10.3 Trao đổi giữa người nhận và người gửi trong lớp kết nối dữ liệu
Trang 23sẽ nhận được một từ định danh của sự kết nối để sử dụng trong các yêu cầu tiếp theo Trongnhiều trường hợp , mạng chọn một tuyến từ người gửi tới người nhận trong khi cài đặt và sửdụng nó cho khả năng tải tiếp theo
Giao thức không kết nối được gọi là IP (đối với giao thức mạng ) và là một phần của DoD(Ban bảo vệ) bộ giao thức Một gói IP (giới hạn kỹ thuật cho một thông báo trên lớp mạng)
có thể được gửi mà không có một sự cài đặt nào Mỗi gói IP được gửi theo một tuyến đườngnhất định tới đích riêng biệt của nó của tất cả các gói tin khác Không có một đường dẫnbên trong nào được chọn lựa và ghi nhớ như trường hợp với X.25
2.1.4 Lớp truyền tải
Các gói tin khác có thể bị mất trên đường đi từ người gửi đến người nhận Mặc dù một vàiứng dụng có thể điều khiển được sự khôi phục lỗi của nó , thì những ứng dụng khác thíchmột kết nối đáng tin cậy hơn Công việc của lớp truyền tải là cung cấp sự phục vụ này Một
ý tưởng là lớp phiên cần có khả năng phân phối một thông báo tới lớp truyền tải với sự mongđợi rằng nó sẽ được phân phát mà không bị thất lạc
Với việc nhận một thông báo từ lớp phiên , lớp truyền tải chia nó thành các phần tử nhỏ đểcho nó vừa khít với các gói đơn , gán cho mỗi cái một dãy số và sau đó gửi tất cả chúng đi Vấn đề tranh cãi trong đầu đề của lớp truyền tải có liên quan đến gói tin nào được gửi đi , góitin nào được nhận , làm thế nào để nhiều hơn người nhận có khả năng chấp nhận và các chủ
đề tương tự
Các kết nối truyền tải đáng tin cậy (mà định nghĩa hướng kết nối) có thể được thiết lậptrên đầu của hoặc là X.25 hoặc là IP Trong trường hợp đầu , tất cả các gói sẽ đến theo mộttrình tự đúng (nếu chúng đến tất cả) , nhưng trong trường hợp sau có thể một gói nhận đượctuyến và đến sớm hơn gói đã gửi trước nó Nó để cho phần mềm lớp truyền tải đó đặt tất cảmọi thứ trở lại để duy trì ảo ảnh mà nối kết truyền tải như một ống lớn – bạn phải đặt thôngbáo của bạn vào trong nó và chúng đi ra còn nguyên và đi trong cùng một thứ tự
Giao thức truyền tải theo cách thức ISO có 5 biến thể được biết đến như TP0 đến TP4 Các
sự khác nhau có quan hệ với lối điều khiển và khả năng gửi vài kết nối truyền tải qua một kếtnối đơn X.25 Sự lựa chọn những cái để sử dụng phụ thuộc vào các đặc tính của các lớpmạng cơ bản
Giao thức truyền tải DoD được gọi là TCP (Giao thức điều khiển truyền tải ) Nó tương tựnhư TP4 Sự kết hợp TCP / IP được sử dụng rộng rãi ở các trường Đại học và trong hầu hếtcác hệ thống UNIX Bộ giao thức DoD cũng hỗ trợ giao thức truyền tải không kết nối gọi làUDP (Universal Datagram Protocol) thực chất chỉ là IP với vài sự bổ sung tối thiểu Chương trình của người sử dụng không cần thiết giao thức kết nối định hướng mà thôngthường mà sử dụng UDP
2.1.5 Lớp phiên
Trang 23
Trang 24Lớp phiên thực chất là phiên bản nâng cấp của lớp truyền tải Nó cung cấp điều khiển hội
thoại , để giữ khoảng rộng của nhóm hiện đang giao tiếp và nó cung cấp các điều kiện thuậnlợi của sự đồng bộ hoá Những cái sau thì hữu ích cho phép người sử dụng chèn những điểmkiểm tra vào trong các sự chuyển giao lâu dài để trong sự kiện của sự phá huỷ thì chỉ cầnquay trở lại điểm kiểm tra ban đầu , hơn là bắt đầu tất cả lại từ đầu Trong thực hành , mộtvài ứng dụng thì được quan tâm trong lớp phiên và rất ít khi được hỗ trợ Thậm chí nó cònkhông có mặt trong bộ giao thức DoD
21.6 Lớp các bản trình bày
Không giống như các lớp thấp hơn , lớp các bản trình bày có liên quan tới việc nhận cácbit từ người gửi tới người nhận một cách đáng tin cậy và hiệu quả , lớp các bản trình bày cóquan hệ với nội dung của các bit Hầu hết các thông báo không chứa các xâu bit ngẫu nhiên ,nhưng chứa nhiều thông tin cấu trúc hơn như tên người, địa chỉ, số tiền và vân vân Tronglớp các bản trình bày , có thể định nghĩa các bản ghi bao gồm các trường như trên và sau đó,người gửi khai báo ngừng nhận mà một thông báo có chứa một bản ghi riêng biệt theo mộtdạng nào đó Điều này làm cho sự biểu diễn bên trong khác nhau để giao tiếp của các máytrở nên dễ dàng hơn
2.1.7 Ứng dụng
Lớp ứng dụng thực ra chỉ là một tập hợp các giao thức có thể khác nhau đối với các hoạtđộng chung như thư điện tử, chuyển giao file và kết nối đầu cuối từ xa tới máy tính thôngqua mạng ĐIều tốt nhất được biết đến của những cái đó là giao thức thư điện tử X.400 vàthư mục máy chủ X.500 Không lớp này thì cũng là hai lớp trực tiếp ở dưới nó là điều màchúng ta quan tâm trong cuốn sách này
2.2 Mụ hỡnh khỏch chủ
Ban đầu, các giao thức đã được phân lớp theo các tuyến OSI , trông có vẻ như là một cách
tổ chức tốt trong hệ thống phân tán Kết quả là một người gửi đưa ra một kết nối (kí hiệuống dẫn bit) với người nhận và sau đó đẩy các bit vào bên trong sao cho không có lỗi hợp lệtới người nhận Điều này liệu có gì sai?
Rất nhiều điều sai , bắt đầu với hình 10-2 Sự tồn tại của những đầu đề kia phát sinh ra sốlượng đáng kể sự rắc rối Tại mọi lúc , một thông báo được gửi đi phải được xử lý bởikhoảng 6 lớp Mỗi lớp tạo ra và bổ sung một đầu đề ở phía trên hoặc loại bỏ và kiểm tra mộtđầu đề ở phía dưới Tất cả công việc này rất mất thời gian Trên mạng diện rộng số các bittrên một giây có thể được gửi đi là khá thấp (thường chỉ có 64K bit trên một giây) Điều nàykhông nghiêm trọng Nhân tố giới hạn là dung lượng của các tuyến và thậm chí với tất cả sựvận dụng đầu đề , các bộ xử lý trung tâm thì đủ nhanh để giữ cho các tuyến chạy ở tốc độ caonhất Như vậy, hệ thống phân tán diện rộng có khả năng sử dụng giao thức OSI hoặc TCP/IP
mà không bị mất trong khi thực hiện
Trang 25Ngoài ra, mô hình OSI chỉ hướng vào một khía cạnh nhỏ của vấn đề – các bit từ người gửitới người nhận (cái mà chúng muốn nói đến trong các lớp trên) Nó không nói gì về việc làmsao hệ thống phân tán cần phải có cấu trúc Điều này cần thiết hơn.
2 1 Máy khách và máy chủ
Đây cũng là mô hình máy khách – máy chủ mà chúng tôi đã giới thiệu trong chương
trước ý tưởng đằng sau mô hình này là để cấu tạo hệ điều hành như một nhóm các tiến trìnhhợp lại , được gọi là các máy chcungxconf cái mà yêu cầu sự phục vụ tới người sử dụng thìđược gọi là máy khách Máy chủ và máy khách thông thường chạy trên cùng một vi phân ,như chúng ta đã thấy trước đó, cả máy khách và máy chủ đều thực hiện như các tiến trình củangười sử dụng Một máy có thể thực hiện một tiến trình đơn lẻ hoặc nó có thể chạy nhiềumáy khách , nhiều máy chủ hoặc cả hai
Để tránh những rắc rối đáng kể của các giao thức kết nối có định hướng như OSI hayTCP/IP Mô hình Máy chủ – Máy khách thường dựa trên các cơ sở đơn giản Giao thứckhông kết nối yêu cầu đáp ứng Máy khách gửi một thông báo yêu cầu tới máy chủ yêu cầuvài sự phục vụ (đọc một khối của file) Máy chủ không thực hiện và trả về dữ liệu đã đượcyêu cầu hoặc mã lỗi cho biết tại sao công việc đó không được thực hiện , như mô tả tronghình 10-4 (a)
Thuận lợi chủ yếu của sơ đồ 10-4 (a) là sự đơn giản Máy khách gửi yêu cầu và nhận câu trảlời Không một sự kết nối nào phải được thiết lập trước khi sử dụng hoặc quay trở về sau Thông báo trả lời đáp ứng yêu cầu như một thông báo nhận
Từ sự đơn giản đã dẫn đến những lợi thế khác , đó là sự hiệu quả Ngăn xếp giao thức thìngắn và vì vậy hiệu quả hơn Giả sử tất cả các máy đều giống hệt nhau , chỉ ba cấp độ củagiao thức là cần thiết như biểu diễn ở sơ đồ 10-4 (b) Các giao thức kết nối vật lý và dữ liệuluôn quan tâm đến việc nhận các gói tin từ máy khách đến máy chủ và ngược lại Cái nàyluôn luôn được xử lý, ví dụ, tiêu chuẩn ghép nối phần cứng mạng cục bộ cùng định ước hoặc
mã thông báo mạch điện tử Không có lộ trình nào được cần và không có kết nối nào đượcthiết lập,vì vậy nó sắp thành lớp 3 và 4 khi chưa cần đến.Lớp 5 là yêu cầu tiêu chuẩn trả lờithông tin Nó xác định tập hợp của những yêu cầu hợp lý và tập hợp của sự trả lời đúngnhững yêu cầu này.Không có sự quản lý phiên bản bởi vì không có nhiều phiên bản Mộttrông những lớp trên chưa cầc đến
Trang 25Clie
Trang 26Đáp ứng
121314171
&mptr)và receive(ađr,&mptr).Vấn đề gửi thông báo để trỏ tới mptr đến một nhận dạng xử
lý bởi dest và gây ra người gọi sẽ bị ngăn cản cho đến khi thông báo đã được gửi đến Tiếptheo thì nó gây ra cho người gọi sẽ được một khối cho đến khi có thông báo.Khi thực hiệnmột việc, thông báo được sao chép đến bộ đệm trỏ vào bởi mptr và người gọi được giảitỏa.Tham số addr chỉ rỏ địa chỉ tới cái máy thu nào đang nghe.Có nhiều phương án về hai thủtục này và những tham số có thể thực hiện được.Chúng ta sẽ thảo luận một vài vấn đề nay ởsau chương này
2.2.2 Một vài ví dụ Client và Server
Để cung cấp nhiều sự hiểu biết hơn trong việc thực hiện của clients và servers, trong mụcnày chúng ta sẽ giới thiệu một phát thảo của một client và một file server trong C Cả haiclient và server đều cần chung một vài định nghĩa Như vậy chúng ta sẽ tập hợp điều này vàomột file goi là header.h mà đã được thấy trong hình 10-5 Cả client và server bao gồm nhữngđiều sử dụng câu lệnh #include <header.h> Câu lệnh này có hiệu ứng chèn theo đúng nghĩacủa nó là chèn vào toàn bộ nội dung của header.h vào trong chương trình trong suốt quá trìnhbiên dịch
Để chúng ta cần xem đàu tiên cua header.h Nó bắt đầu từ việc định nghĩa hai hằng số,MAX_PATH và BUF_SIZE quyết định kích cỡ của hai mảng khi cần trông thông điệp Vấn
đề trước đã nói nhiều về kí tự là một tên file (i,e, ,a đường dẫn được đặt tên như là/usro/ast/books/opsys/chapter/.t)có thể là hằng số.Tiếp theo là điểm cố định số lượng của dữliệu có thể đọc hoặc viết trong một thao tác đặt kích thước vùng đệm.Hằng số tiếp theoFILE_SERVER , cung cấp địa chỉ mạng của file server, vì vậy clients có thể gửi thông điệpcho nó
Nhóm thứ hai của những hằng số định nghĩa những số thao tác Những điều đó là cầnthiết để bảo đảm cho client và server chấp nhận mã của nó mô tả việt đọc, việc viết,và vânvân ở đây chúng ta chỉ cần biểu diễn 4 phần trên, nhưng trong hệ thống thực sự thì có nhiềuhơn thế
MạngHình 10.4 Mô hình máy khách-máy chủ Mặc dù nhân thực sự chuyển tất cả các thông báo,
điều này đã đơn giản hoá vòng quay sẽ được sử dụng khi không có sự không tường minh
Trang 27THE CLIENT-SERVER MODEL
/*definitions needed by clients and servers */
#define MAX_PATH 255 /*độ dài lớn nhất của một tên file */
#define BUF_SIZE 1024 /*có bao nhiêu dử liệu được chuyểntrong một lần */
#define FIEL_SERVER 243 /*sắp xếp địa chỉ mạng của server */
/* definitions of the allowed operation.*/
#define CREATE 1 /*Tạo một file mới */
#define READ 2 /*dọc một mảng của một file và trả lại nó */
#define WRITE 3 /*viết một mảng của một file */
#define DELETE 4 /* xóa một file hiện hành*/
/*Error codes */
#define OK 0 /*thao tác thực hiện chính xác */
#define E_BOA_OPCODE -1/*thao tác không được đòi hỏi */
#define E_BAO_PARAM -2/*lổi trong tham số */
#define E_10 -3/* lổi trong đĩa hoặc I/O khác*/
/*definitions of the massage format.*/
struct massage {
long source; /* sự nhận biết của người gửi*/
long dest; /* sự nhận biết của máy thu*?
long opcode; /* tiến trình : create, read, etc */
long count; /* có bao nhiêu byte dã di chuyển*/
long ofsset; /* nơi bắt đầu đọc và viết*/
long extra1; / * lĩnh vực thêm*/
long extra2; /*lĩnh vực thêm*/
long result; /*kết quả thao tác báo cáo ở đây*?
cnar name {MAX_PATH];/*tên của một file trong thao tác */
char data [SUF_SIZE]; /*dữ liệu được đọc hoặc viết */
};
Tất cả sự trả lời đều chứa một mã kết quả Nếu như các thao tác thành công thì mã kếtquả thường chứa những thông tin có ích (chẳng hạn như là số byte đọc được trên thự tế ).Nếu như không có giá trị nào được trả về(chẳng hạn như khi một file được tạo ra), giá trị OKđược sử dụng Nếu như thao tác không thành công bởi một vài lý do nào đó thì mã kết quả sẽchỉ ra tại sao,mã đang sử duụng như là E_BAD_OPCODE.E_BAD_PARM,Và vân vân.Cuối cùng chúng ta đến một phần quan trọng nhất của header.h định nghĩa của bản thânthông báo Trong ví dụ của chúng ta nó là một cấu trúc gồm một trường Tất cả yêu cầu từclient đến server có swr dụng dạng này trong khi thực hiện tất cỏ các câu trả lời Trông hệthực tế thì hệ thống không chứa một thông báo đã được định dạng trước đó (bởi vì khongphải trường nào cũng cần thiết trong tất cả các trường hợp ), nhưng ở đây nó cũng đưa ra một
Trang 27
Trang 28sự giải thích đơn giản hơn.Trường suorce và dest nhận biết người gửi và người nhận mộtcách tương đối, trường opcode là một trong những thao tác được định nghĩa ở trên, đó làCREATE, READ, WRITE,hoặc DELETE Trường count và offset được dùng cho các thamsố,và hai trường khác, extra1và extra2 dược định nghĩa để cung cấp khoảng trống cho cáctham số bổ sung nếu như server được mở rộng trong tương lai Trường kết quả thì khôngđược sử dụng cho các yeu cầu tư client tới server,nhưng nó lại giữ giá trị của kết quả cho các
sự trả lời tư server tới client.Cuối cùng chúng ta có hai mảng Thứ nhất là name chứa tênfile dược truy cập Thứ hai data lưu trữ dữ liệu được trả về trên một câu trả lời để đọc hoặc là
dữ liệu được gửi tới server để ghi
THECLIENT SERVER MODEL
case CREATE:r=do_create (&m1, &m2); break;
case READ: r=do_ read (&m1, &m2); break;
case WTIRE: r=do_wtire(&m1, &m2); break;
case DETELE :r=do_detele (&m1, &m2); break;
struct message m1; /* Thông điệp trung gian (đệm)*/
position = 0;
do { /* Lờy một khối dữ liệu từ tập tin nguồn*/
m1.pocode =READ; /* Thực hiện phép toán đọc*/
m1 ofsset = position; /* Vị trí dòng dữ liệu trong tập tin*/
m1.count = BUF_SIZE; /* Số lượng byte cần đọc*/
strcpo (&m1.name, src); /* Sao chép tên của các tập tin để đọc vào thông điệp*/
Trang 29send (FILE_SERVER , &m1); /* Gửi các thông điệp đến tập tin Server*/
/* Ghi dữ liệu vừa nhận được đến nơi nhận tập tin*/
m1.opcode =WRITE; /* Thực hiện việc ghi tập tin*/
m1.ofsset =position; /* Vị trí dòng dữ liệu trong tâp tin*/
m1.cout =m1.result; /* Số lượng tập tin cần ghi */
strcpo (&m1.name, dst); /* Sao chép tên tập tin để ghi vào vùng đệm*/
send (FILE_SERVER , &m1); /* Gửi các thông điệp đến tập tin server*/
receive (client, &m1 ); /* Khối chờ đợi sự trả lời*/
position =m1.result; /* m1.result là số byte được ghi*/
} while (m1.result > 0 ); /* Trả lại kết quả tốt hoặc thông báo lỗi*/
return (m1.result >= 0 ? OK : m1.result );
}
Hình 2.5 Máy chủ sử dụng file Header.h
Bây giờ chúng ta hãy cùng xem xét về mã lệnh, như là phác thảo trong hình 10-6 Trong hình(a) chúng ta có server, trong hình (b) chúng ta có client Về server không phức tạp lắm Vònglặp chính bắt đầu việc gọi receve để nhận thông báo yêu cầu.Tham số thứ nhất nhận ra đốitượng gọi bằng cách gửi cho nó địa chỉ và tham số thứ hai thì trỏ tới một bộ đệm thông báonơi mà đầu vào có thể được lưu trữ.Thủ tục thư viện receve bẩy lởi tới nhân để tạm dừngserver cho đến khi có một thông báo tới thì server tiếp tục và gửi đi bằng kiểu mã thao tác.Đối với mỗi kiểu mã thao tác thì một thủ tục khác được gọi.Thông báo đầu vào và một vùngđệm cho thông báo đi ra được gửi tới như là các tham số.Thủ tục kiểm tra thông báo đầu vào.ml và thiết lập câu trả lời Nó cũng trả về một giá trị của hàm được gửi trả lại trong trườngresult.Sau khi send hoàn thành server trở lên đầu vòng lặp để thực hiện receve và chờ thôngbáo đầu vào tiếp theo.Trong hình 10-6(b) chúng ta có thủ tục sao chép môt file có sử dụngserver Thân thủ tục chứa một vòng lặp đọc một khối từ file nguồn và ghi nó tới fileđích.Vòng lặp được lặp cho đến khi mà file nguồn được sao chép xong, có thể được chỉ rabởi một số 0 hoặc là một mã trả về phủ định từ việc đọc
Phần đầu tiên của vòng lặp có liên quan tới việc xây dựng thông báo cho thao tác đọc vàgửi nó tới server Sau khi câu trả lời được tiếp nhận, thì phần thứ hai của vòng lặp được thựchiện để nhận dữ liệu và gửi nó trở lại server trong biểu mẫu của WRITE tới file đích.Chương trìng trong hình 10-6 được mở rộng mã lệnh Nhiều chi tiết được bỏ qua Ví dụ như
là thủ tục dd_xx không được thể hiện và không được kiểm tra lỗi.Tuy nhiên, ý tưởng chung
về việc client và server tương tác với nhau như thế nào thì cần phải làm sáng tỏ.Trong mụctiếp theo chúng ta sẽ xem xét một vài vấn đề liên quan đến client và server chi tiết hơn
2.2.3 Địa Chỉ
Trang 29
Trang 30Trong thứ tự của một máy phụ gửi đến một thông báo cho máy chính Nó phải biết địa chỉcủa máy chính Trong ví dụ của mục trước,địa chỉ của máy chính đơn giản chỉ là phần cứngthành heade,h như là một hằng số Trong khi chiến lược này chỉ có thể làm việc trong một hệthống đơn giản đặc biệt thông thường nó tinh sảo hơn từ địa chỉ là rất cần thiết Trong mụcnày ta sẽ mô tả một vài vấn đề liên quan đến địa chỉ.
Trong ví dụ của chúng ta, một tập tin của server đã được gán cho một chỉ số địa chỉ (243),nhưng chúng ta không thực sự chỉ rõ được biện pháp nào Đặc biệt bên trong, làm cho nóchuyển đến một máy đặc biệt hoặc tới một tiến trình xử lý đặc biệt?Nếu nó chuyển đến mộtmáy đăc biệt, thì có thể gửi đến một bộ phận cốt lõi, có thể rút từ cấu trúc thông báo và sửdụng nó như là địa chỉ phần cứng của khối thông tin được gửi đến cho máy tính Tất cả các
bộ phận chủ yếu gửi đến phải thực hiện rồi mơi xây dựng một khung sử dụng 243 như sự nối
dữ liệu địa chỉ và đặt khung ở ngoài vào LAN Mạch giao diện của server sẽ nhìn thấykhung, chấp nhận 243 như địa chỉ của chính mình và chấp nhận nó
Nếu chỉ thực hiện một tiến trình về đích của máy tính, bộ phân cốt lõi sẽ biết làm gì với đầuvào thông báo - đưa nó tới nhân và chỉ thực hiện tiến trình ở đó.Tuy nhiên, cái gì sẽ xảy ranếu ở đó có một vài tiến trình thực hiện ở đích của máy tính? Có một thông báo nào? Bộphận cốt lõi không có cách biết Do đó, một sơ đồ sử dụng máy tính địa chỉ gửi đến xây dựngnhững quá trình chỉ có nghĩa duy nhất là tiến trình có thể thực hiện trên mỗi máy tính Trongkhi sự hạn chế này không phải là lổi không thể tránh đôi khi nó là sự hạn chế hệ trọng
Một hệ thống địa chỉ xen nhau gửi thông báo cho quá trìng xử lý hơn là cho máy tính.Mặtdầu phương pháp này loại trừ tất cả sự không rõ ràng về thực tế người nhận thư, nó giới thiệuvấn đề là làm sao để nhận dạng quá trình sử lý Một sự phổ biến đổi tên là sử dụng hai phầntên, chỉ định của hai phần một máy tính và một số tiến trình Như vậy 243.4 hoặc 4@243 mộtcái gì đó tương tự chỉ rõ tiến trình 4 trên máy tính
Con số máy móc được sử dụng như một bộ phận cốt lõi để tạo ra các thông điệp phát rachính xác đúng theo phong cách của máy móc và xử lý con số được sử dụng như bộ phậntrọng yếu củamáy tính đó là tốc độ Một đặc trưng tốt của sự thích hợp này là sự cần thiết bởi
vì ở đó luôn rỏ ràng giữa bộ xử lý trong máy tính 243 và trong máy tính 199 Trước đây làmáy 243.0 sau này là máy là 243.0 Sự sắp xếp này là mach lạc trong Fig 10.7 ( Máy tính xử
1 2
2 1
Client
Kernel
Server 3
4
Trang 31từ local.id Sau đó một thông điệp đưa vào địa chỉ của máy machine.local, nó biết được cáichủ yếu cần để gửi một thông điệp Phần lớn các truyền thông ở hệ điều hành Berkeley, ví dụnhư sử dụng các phương thức với 32 bít địa chỉ số được sử dụng cho các máy tính đặc biệt và
16 bit cho các máy tính Local-id
Tuy nhiên địa chỉ của máy tính machine.process là xa với tiêu chuẩn Đặc biệt nó không
rõ ràng từ khi người sử dụng thấy dược sự mạch lạc ở trong máy dịch vụ (Server).Xác định
vị trí chính xác rỏ ràng là một trong những mục tiêu chính của việc xây dựng hệ thống phânbố
Để thấy rõ tại sao các bản chất này cho rằng các tập tin phục vụ chỉ chạy trên các máy tính
243, nhưng trong giai đoạn đó máy tính còn thấp Máy 176 đã hoàn thành và sẵn sàng sửdụng những chương trình ngay trước đó hoàn thành đang được sử dụng header.h tất cả đều
có con số 243 đang sử dụng trong nó vì vậy chúng sẽ không làm việc nếu máy Server khônghoặt động Rõ ràng trật tự hoạt động này là không mong muốn
Một sự xen kẻ lẫn nhau là để phân công một tiến trình một địa chỉ duy nhất nó khôngchứa đựng con số đưa vào Một con đường để đạt được mục đích này là phải có một bộ sử lý
ô địa chỉ trung tâm nó dễ dàng bảo vệ một khoảng không gian lưu trữ Trên việc nhận mộtyêu cầu cho một địa chỉ, nó dễ dàng trả lại dòng các giá trị của không gian nhỏ và sau đó tựlớn lên Một sự bất lực của trình tự sắp xếp này là sự hợp thành một trung tâm nhưng nókhông cân bằng từ hệ thống lớn và theo cách đó nó sẽ bị tách lìa
Một phương thức khác để phân công một tiến trình xem xét là ngăn ngừa một tiến trìnhtruy cập chính nó, xem xét từ một địa chỉ hệ thống trắng thừa, trả lại một khoảng trắng 64 bít
số nhị phân, khả năng có hai tiến trình cùng truy cập đến một con số là rất hiếm và nhất làcác hệ thống có độ cân bằng tốt Tuy nhiên ở đây quả là một vấn đề lớn “ Bộ trọng tâm của
Trang 31
4
12
Network
Trang 32máy phải biết gửi cái gì và gửi như thế nào “ở một mạng cục bộ (LAN : Local erea network),việc truyền tín hiệu đi rộng rải được bảo vệ bộ truyền tin có chế độ bảo vệ đặc biệt đúng vị tríchứa các địa chỉ của nơi đến Bởi vì, nó là một gopí bảo vệ nó sẻ nhận tất cả các thông đIệpcủa các máy ở trong mạng, tất cả các bộ phận chủ yếu đều được kiểm tra để nhận biết nếuđúng là địa chỉ của chúng và nếu đúng sẽ được gửi trở lại một thông điệp đi cho địa chỉ mạng(địa chỉ của các máy con) Bộ phận chủ yếu gửi rồi sử dụng địa chỉ này và hơn nữa là nơi dấuđịa chỉ đó để tránh phân bố trong thời gian tới khi Server cần, phương thức này sẽ đưa vàotrong Fig 10.7
Mặc dù trật tự này sáng sủa thậm chí được dấu kín, một sự phân bố vào dạng đặc biệtvào trong hê thống nhưng dạng đặc biệt này có thể tránh bởi sự chuẩn bị đầy đủ một máy đặcbiệt để vạch định mức cao trên Server đến địa chỉ máy như đưa vào trong Fig 10-7 Khi hệthống này đang được sử dụng nó xử lý như một Server là tham chiếu đến một chuổi mãASCII và đó là một chuổi được nhúng vào trong chương trình của máy con hoặc bộ xử lý số.Một khi một Client chạy trong lần thử đầu tiên là kiểm tra việc sử dụng Server MộtClient gởi một thông điệp chất vấn đến một Server, thường là gửi đến tên của Server, lấy sốmáy của Server định vị hiện thời, một lần lấy địa chỉ lời yêu cầu được viết và gửi đi nhưtrong trường hợp sớm hơn, địa chỉ có thể được dấu
Trong bản tóm tắc chúng ta có dòng phương thức của việc sử lý địa chỉ như sau:
- Phần cứng của máy tính được đánh số trong mã của Client
- Quá trình chọn địa chỉ ngẫu nhiên; đặt vị trí chúng đúng vào sự phân bố
- Đặt tên của Server bằng mã ASCII vào trong Client; tìm chúng trong thời gianchạy
Mỗi thành đều có vấn đề : Thứ nhất, là không trong sáng, thứ hai là phát hiện cái phụ kiệnrồi chuyển về hệ thống và thứ ba là các đòi hỏi cấu thành bộ phận trung tâm, tên củaServer Dĩ nhiên tên của Server có thể thay đổi nhưng làm như vậy sẽ gay ra vấn đề tronggiao tiếp làm thích ứng với việc gửi được sự nhất quán
Một con đường đi đến sự hoàn thành khác là sử dụng phần cứng đặc biệt Cho phép xử lýcác địa chỉ một cách ngẫu nhiên.Tuy nhiên thay cho việc định vị chúng bằng cách truyềnthông rộng rải, một vỏ giao tiếp mạng được thiết kế để cho phép xử lý lưu trữ địa chỉ trongchúng cấu trúc sẽ được sử dụng để xử lý địa chỉ thay cho địa chỉ máy như mỗi khung cửa.Giao tiếp mạng sẽ thẩm tra sơ bộ cấu trúc để để nhìn thấy nếu tiến trình gửi đến đích là ngaytrong máy của mạng, nếu vậy cấu trúc sẽ nhận nếu không sẽ bỏ qua
2.2.4 Blocking Nonblocking Primitives (Đóng gói để gởi hay không)
Một thông điệp đã trải qua Primitives (thời nguyên thuỷ) thì chúng ta sẽ có bản mô tả đếnmức gọi nó là gì (thỉnh thoảng gọi nó là bộ sơ cấp đồng thời) Trong khi một thông điệp đượcgửi tiến trình tới là một khối Một lượng thông tin được gửi đi tạo thành gọi là To send khôngđược tiến hành cho đến khi một thông điệp được gửi đi hoàn thành như là đưa vào trong Fig10.7 Cũng như vậy một gọi để cách tiếp nhận không tả lại khối điều khiển một thông điệphiện tại được tả lại và đặt vào một bộ đệm thông điệp để làm tham số Một tiến trình còn lại
Trang 33tạm thời ngưng trong khối định vị nhận một thông điệp đến, thậm chí nó có thể mất hàng giờ.Trong một số hệ thống bộ phận nhận thông tin có thể định vị rõ ai có nhu cầu, trong trườnghợp có một yêu cầu nó để lại một thông đIệp từ nơi gửu đến
Một sự so sánh giữa Blocking và Nonblocking Primitives (Thường được gọi làAsynchronous Primitives ), nếu việc gửi đi là không được đóng gói (Nonblocking) nó sẽ điềukhiển trở lại để gọi trực tiếp, trước một thông điệp được gửi Một điều kiện hoàn toàn thuậnlợi của kế hoạch này là tiến trình gửi có thể tiếp tục tính toán song song với một thông điệptruyền đi, thay vì CPU rảnh rổi Một sự lựa chọn giữa Blocking và Nonblocking thường làđược làm bằng một hệ thống thiết kế một thông tin cơ bản là gửi có hoặc đã được gửi đi.Tuy nhiên, trong một vài hệ thống sẽ tồn tại cả hai loại biến Blocking và Nonblocking vàngười sử dụng có thể chọn cái mà họ muốn Tuy nhiên, việc thực hiện thuận lợi bằng phươngpháp Nonblocking được đánh giá là không kết quả như một vấn đề thiệt hại nghiêm trọng:
Bộ phận gửi không thể thay đổi bộ thông điệp trung gian cho đến khi thông điệp được gửi đi.Hiệu quả của tiến trình gửi đi là viết đè thông điệp trắng điều đó rất tệ hại so với dự tính, điều
tệ nhất là tiến trình gửi không hình dung được khi tiến trình gửi thành công Vì vậy nókhông bao giờ biết được khi nào nó thoả mãn để sử dụng lại bộ đệm Nó có thể tránh sự đụngchạm nhẹ mãi mãi
Message Begin sentMessage copies to
kernel buffer
ClientBlocked
Client running Client running
Blocked released
Message being sent
Trang 34THE CLIENT - SERVER MODEL.
Mô hình Client - Server
Đây là hai khía cạnh được phân chia rõ ràng
tiến trình được tiếp tục, như đưa vào trong Fig 10-7 Từ bộ gỏ định vị của đơn vị hiển thị một
kế hoạch là giống như một khối gọi là điều khiển trở lại càng sớm càng tốt, nó tranh thủ để
sử dụng lại bộ đệm Dĩ nhiên một thông điệp sẽ không được gửi nhưng bộ gửi không cản trởbởi sự việc này Một khó khăn của phương thức này là mỗi thông điệp sắp được truyền phảiđược sao chép từ khoảng trắng của người sử dụng đến bộ phận chủ yếu ( Khoảng thời gianrổi không truy cập server của Client) Với nhiều giao tiếp mạng, thông điệp phải được saochép từ phần cứng cấp phát đệm một cách châm trể và đại khái Vì vậy bản sao thứ nhấtthường có bản chất là không sử dụng đến Bản sao phụ có thể làm giảm quá trình thực hiệncủa hệ thống có sự cân nhắc
Giải pháp thứ hai: Để ngắt bộ gửi khi thông điệp đã được gửi đến báo tin cho nó thì bộđệm được được tái sử dụng lần nữa không phải sao chép và đòi hỏi ở đây là phải tiết kiệmthời gian nhưng nhãn người sử dụng làm ngắt chương trình khéo léo, khó khăn, và chủ đềđến điều kiện, việc làm này khiến chúng không tạo ra sản phẩm được Phần lớn các chuyênmôn đều đồng ý với phương thức này, tuy nhiên phương thức này là có hiệu quả cao và chophép sự hoạt động song song cao, sự bất lợi lớn ở đây là có nhiều ảnh hưởng hơn là có lợi:chương trình ngắt cơ bản là khó khăn để viết đúng cách thức và gần như không thể làm được
để gỡ khi chúng sai phạm
Thường các ngắt có thể bị che đậy bằng sự bắt đầu của một tiến trình (thread) mới củađiều khiển trong vòng thời gian địa chỉ của bộ gửi trống Tuy nhiên trường hợp này là đếnmức độ nào đó sạch sẽ hơn một so với ngắt chưa cải tiến, nó là vẫn còn xa vời phức tạp hơn
sự truyền đạt đồng bộ N chỉ đơn lẻ một tiến trình (thread) của là có khả năng sự lựa chọn sẽdẫn đến:
- Blocking send ( CPU sẽ rảnh rỗi trong suốt quá trình thông điệp truyền đi)
- Nonblocking gửi bản sao ( thời gian của CPU sẽ bỏ hoang cho bản phụ kiện)
- Nonblocking gửu một ngắt ( Làm chương trình khó)
Dưới mức bình thường, điều kiện thứ nhất là chọn cái tốt nhất Nó không phải hoạt độngsong song cực đại nhưng là đơn giản để hiểu và đơn giản để thi hành, nó cũng vậy không đòihỏi nhiều bộ đệm trung tâm quản lý Xa hơn nữa, như nó có thêm bắt đầu từ việc so sánh Fig10-8(a) đến Fig 10-8(b), một thông điệp sẽ luôn luôn bị đẩy ra nhanh hơn nếu không saochép cái đã yêu cầu Trong một trường hợp (hand) khác nếu sự chồng chéo tiến trình sử lý
Trang 35và truyền đi là chủ yếu cho nhiều ứng dụng, một nonblocking gửi đi với bản sao là việc chọntốt nhất
Cho một bản ghi, chúng ta có thể chỉ ra một vài tác giả sử dụng một tiêu chuẩn khác nhau
để phân biệt đồng thời từ đồng bộ nguyên hàm(Andrews1991) Trong cách nhìn của chúng
ta, thì sự khác nhau chủ yếu giữa nguyên hàm đồng bộ và không đồng bộ là bất cứ người gửinào có thể dùng lại vùng đệm thông báo ngay lập tức sau khi nhận lại điều khiển mà không
sợ làm hư việc gửi Khi mà thông báo gửi tới người nhận là không thích hợp
Trong các quan điểm để lựa chọn thì nguyên hàm đồng bộ là một cái mà trong đó ngườigửi bị ngăn cản cho đến khi người nhận chấp nhận thông báo và đưa trả về cho người nhận.Trong quan điểm này thì tất cả các thứ khác thì không đồng bộ ở đây có sự phù hợp hoàntoàn nếu như người gửi nhận được điều khiển trước khi thông báo, nguyên hàm là khôngđồng bộ.Tượng tự thì mọi người đồng ý rằng khi mà người gửi bị ngăn cản cho đến khingười nhận chấp nhận thông báo,chúng ta có một nguyên hàm đồng bộ
Những sự bất đồng được tiếp tục có chăng được xác định với tư cách là cái này hay cáikhác (thông báo được sao chép hoặc được sao chép và gửi đi nhưng lại không được chấpnhận) Các nhà thiết kế hệ điều hành có khuynh hướng thích phương pháp của chúng tôi hơn,
từ khi mối quan tâm của họ là sự quản lý bộ đệm và sự truyền tải thông điệp Còn các nhàthiết kế ngôn ngữ lập trình lại có xu hướng thích sự xác định luân phiên, bởi vì đó là cái đểxác định cấp độ của ngôn ngữ
Ngay khi mà gửi có thể là sự tái tạo một khối hoặc không tái tạo khối thì nó cũng có thể nhận Việc nhận không tái tạo khối chỉ đề cập đến nhân, nơi có bộ đệm, và trả lời sự kiểm
soát gần như là ngay lập tức Chính ở đây làm thế nào để cho đối tượng gọi biết được khi nàothì phép tính được thực hiện xong? Một phương pháp là cung cấp một hàm chờ cụ thể chophép người nhận nhận khối khi mà nó muốn
Các nhà thiết kế có thể đưa ra một thử nghiệm, một hàm cho phép bộ tiếp nhận kiểm
tra vòng nhân để xem xét trạng thái Sự thay đổi trong ý kiến này là việc nhận có điều kiện,
khi nhận được thông báo hay tín hiệu thất bại, nhưng trong bất cứ sự cố nào thì cũng được trả
về ngay lập tức hoặc trong một vài sự ngắt quãng của thời gian tạm ngưng Cuối cùng, nhữngngắt có thể được sử dụng để hoàn tất tín hiệu Đối với hầu hết các phần, bản tái tạo khối của
nhận thì đơn giản và được yêu thích hơn nhiều.
Nếu đa số chuỗi của điều khiển có mặt trong không gian địa chỉ đơn thì việc đến củamột thông điệp có thể gây ra hiện tượng một chuỗi được tạo ra một cách tự phát Chúng ta sẽtrở lại vấn đề này sau khi đã xem xét về chuỗi trong chương 12
Một vấn đề có quan hệ gần gũi đối với lời gọi tái tạo khối đối với lời gọi không tái tạo
khối là một vấn đề của thời gian tạm ngưng Trong một hệ thống mà gửi gọi tạo khối, nếu
không có sự trả lời thì bộ gửi sẽ tạo khối mãi Để ngăn chặn tình trạng này trong một vài hệthống thì đối tượng gọi có thể đặc tả một khoảng thời gian trong đó nó chờ đợi sự trả lời Nếu
không có gì tới trong khoảng thời gian đó thì gửi sẽ gọi kết thúc với lỗi trạng thái.
Trang 35
Trang 362.6 Nguyên hàm đáng tin cậy và không đáng tin cậy
Để nghiên cứu sâu hơn chúng ta ngầm giả định rằng khi mà một máy khách gửi mộtthông điệp, thì máy chủ sẽ nhận lấy nó Thông thường thì thực tế bao giờ cũng phức tạp hơnrất nhiều so với mô hình trừu tượng của chúng ta Các thông điệp có thể bị thất lạc, điều nàylàm anhr hưởng đến ngữ nghĩa của mô hình truyền tải thông điệp Giả thiết rằng nguyên hàmtạo khối đang được sử dụng Khi một máy khách gửi một thông điệp, thì nó sẽ tạm ngừng cáchoạt động cho đến khi thông điệp được gửi đi Tuy nhiên, khi máy khách đó bị khởi động lạithì không có gì đảm bảo rằng thông điệp đó đã được phân phối Nó có thể đã bị mất
Có ba sự tiếp cận khác nhau có thể xảy ra đối với vấn đề này Điều thứ nhất chỉ là để
xác định lại ngữ nghĩa của việc gửi là không đáng tin cậy Hệ thống không đưa ra một sự
đảm bảo nào về những thông điệp đang được phân phối Việc thực hiện sự lan truyền đángtin cậy đó là sự hình thành nên một khối gửi tới cho người sử dụng Bưu điện cũng làm việctheo cách này khi bạn bỏ lá thư vào trong thùng thư thì bưu điện sẽ cố gắng hết sức mình(nhiều hơn hoặc ít hơn) để phân phát thư nhưng nó không hứa hẹn bất cứ điều gì
Sự tiếp cận thứ hai là để yêu cầu nhân trên một máy nhận để gửi một thông báo cho biếtkết quả của việc truyền phát dữ liệu trở lại nhân của máy nhận Chỉ khi thông báo nhận nàyđược chấp nhận thì lúc đó nhân của máy gửi sẽ giải phóng tiến trình của người sử dụng (máykhách) Thông báo nhận truyền đi từ nhân đến nhân, không phải là máy khách cũng khôngphải là máy chủ tiếp nhận thông báo này Chỉ khi một yêu cầu từ máy khách đến máy chủđược nhân của máy chủ ghi nhận thì có một sự trả lời từ máy chủ gửi trở lại máy khách đượcnhân của máy khách ghi nhận Như vậy yêu cầu và sự trả lời tạo ra bốn thông báo như đượcthể hiện ở hình 10-10(a)
Sự tiếp cận thứ ba là để tận dụng bề mặt mà sự giao tiếp giữa máy khách và máy chủđược hình thành như một yêu cầu từ máy khách đến máy chủ dựa vào sự trả lời từ máy chủđến máy khách Trong phương pháp này máy khách bị tạo khối sau khi đã gửi thông điệp đi.Nhân của máy chủ không gửi trả lại thông báo nhận Thay vì thế sự tự trả lời đóng vài trònhư một thông báo nhận Vì vậy, những cái còn lại bị hạn chế sử dụng cho đến khi nhận
được sự trả lời Nếu như mất quá nhiều thời gian thì nhân nhận có thể gửi lại yêu cầu đề
phòng khả năng mất thông điệp Sự tiếp cận này thể hiện ở hình 10-10(b)
Mặc dù đối với một yêu cầu, chức năng trả lời được xem như là một thông báo nhậnnhưng lại không có một thông báo nhận nào cho sự trả lời cho dù sự thiếu sót này có nghiêmtrọng hay không phụ thuộc vào bản chất của yêu cầu đi chăng nữa Chẳng hạn như nếu máykhách yêu cầu máy chủ đọc một khối trong file và sự trả lời bị mất thì máy khách cũng chỉlặp lại yêu cầu và khi đó máy chủ sẽ gửi lại khối đọc đó Không có gì hư hỏng và ít khi bịmất
Mặt khác, nếu yêu cầu đòi hỏi thao tác điện toán mở rông trên phần của máy chủ thì sẽrất đáng tiếc vì phải loại bỏ câu trả lời trước khi máy chủ chắc chắn rằng máy khách đã nhậnđược sự trả lời Vì lý do này, một sự báo nhận từ nhân của máy khách tới nhân của máy chủthỉnh thoảng mới được sử dụng Cho đến gói tin này được nhận , việc gửi của máy chủ khônghoàn thành và ngăn cản các phần còn lại của máy tính (giả thiết hàm tạo khối đang được sử
Trang 3734
dụng) Trong bất kỳ trường hợp nào nếu câu trả lời bị mất và yêu cầu dược truyền tải lại,nhân của máy tính có thể nhận biết được đó là yêu cầu cũ và chỉ gửi lại câu trả lời mà khôngcần gọi đến máy chủ Vì vậy mà trong một số hệ thống thì sự trả lời được ghi nhận và ở một
số khác thì không Đó là lý do vì sao có một đường gạch nối trong sơ đồ 10-10(b)
1.Yêu cầu(từ máy khách tới máy chủ) 1.Yêu cầu(từ máy khách tới máy chủ)
2 ACK (từ nhân tới nhân) 2 Trả lời (từ máy chủ tới máy khách)
3.Trả lời (từ máy chủ tới máy khách) 3 ACK (từ nhân tới nhân)
4 ACK (từ nhân tới nhân)
Hình 10-10(a).Thông báo được ghi nhận một cách độc lập (b) sự trả lời đang được sử dụng như một thông báo nhận của các yêu cầu Chú ý rằng các ACK (ký tự điều khiển sự truyền phát đối với sự báo nhận chẵn) được điều khiển một cách hoàn toàn trong các nhân
Tình trạng mâu thuẫn giữa sơ đồ 10-10(a) và sơ đồ 10-10(b) vẫn thường xảy ra và đangtiến triển như thế Khi một yêu cầu đến nhân của máy chủ, đồng hồ đo thời gian bắt đầu Nếumáy chủ nhanh chóng gửi câu trả lời đầy đủ (trước khi đồng hồ đo thời gian hết hiệu lực).Chức năng trả lời được xem như là một thông báo nhận Nếu đồng hồ thời gian bắt đầu hoạtđộng thì thông điệp nhận riêng lẻ sẽ được gửi đi Như vậy trong hầu hết các trường hợp, chỉ
có ba thông báo là cần đến nhưng khi một yêu cầu phức tạp đang được thực hiện thì thôngbáo thứ tư được dùng đến
2 2.7 Thực thi mô hình Máy khách-máy chủ
Trong các phần trước, chúng ta đã xem xét 4 vấn đề về thiết kê, lập địa chỉ , tạo khốiđệm và sự đáng tin cậy, mỗi vấn đề đều có một vài sự lựa chọn chính được trình bày tóm tắttrong sơ đồ 10-11 Đối với mỗi mục chúng ta đều đưa vào danh sách ba mục chấp nhận được
Tuy nhiên chỉ trong vùng này (thông điệp đã xử lý), các nhà thiết kế hệ thống đã mất khánhiều thời gian trong việc chọn một tập hợp (hoặc nhiều tập hợp) những nguyên hàm truyềnthông
Trong khi những chi tiết của việc làm sao để việc truyền tải thông điệp được thực hiệnphụ thuộc phạm vi nào đó vè những sự lựa chọn được thi hành, nó vẫn có thể đưa ra một vàilời chú thích chung về việc thực hiện, giao thức và phần mềm Trên thực tế lúc đầu tất cả cácmạng máy tính đều có một kích thước gói cực lớn, tiêu biểu tối đa là một vài nghìn bytes.Các thông điệp có kích thước lớn hơn cái này thì phải được tách ra là nhiều gói nhỏ và gửi điriêng lẻ Một số gói này có thể bị mất hoặc cắt xoá, và thậm chí chúng lại có thể xuất hiệnkhi có một lệnh sai Để giải quyết vấn đề này, thông thường nó có đủ khả năng để gán một số
Trang 37
Clie
ServerClie
nt
Trang 38thông điệp và đặt nó trong mỗi gói của thông điệp cùng với một dãy số cho biết thứ tự củacác gói.
Item Option1 Option2 Option3
Addressing Số máy Địa chỉ của tiến trình Tên của bảng mã
ASCII tìm kiếmthông qua máy chủBlocking Hàm tạo khối Không tạo khối và sao chép
Không bộ đệm, thông báobất ngờ có tính chất tạm thời
Kế hoạch trước có một lợi thế, đó là nếu như một gói bị mất thì chỉ gói đó là được truyền tảilại mà thôi, nhưng nó cũng có sự bất lợi cho việc yêu cầu nhiều gói hơn trên mạng Cách làmsau có lợi thê là có ít gói hơn nhưng sự bất lợi khi khôi phục thì phức tạp hơn khi mất mộtgói (vì thời gian tạm ngưng của máy khách yêu cầu sự chuyển phát toàn bộ thông điệp) Sựchọn lựa phần lớn phụ thuộc vào tỷ lệ thất lạc của mạng đang được sử dụng
Một vấn đề đáng quan tâm khác là giao thức phía dưới được sử dụng trong truyền thôngMáy khách-Máy chủ Hình 10-12 cho thấy 6 kiểu gói thường được sử dụng để thực hiện giaothức Cái đầu tiên là gói REQ, thường gửi một yêu cầu từ máy khách tới máy chủ (nói mộtcách đơn giản hơn, đối với phần còn lại của mục này ta sẽ giả thiết rằng mỗi thông điệp trùngvới một gói đơn) Tiếp theo là gói REP nó mang kết quả trở lại từ máy chủ đến máy khách.Sau đó đến gói ACK, gói này được sử dụng trong một giao thức đáng tin cậy để chứng thựcđúng xác nhận của gói trước
Bốn loại gói tiếp theo tuy không quan trọng nhưng thông thường thì nó cũng có ích.Chúng ta hãy xem xét trường hợp một yêu cầu đã được gửi thành công từ máy khách đếnmáy chủ và sự ghi nhận đã được chấp nhận Tại đây, nhân của máy khách biết rằng máy chủđang thực hiện yêu cầu Nhưng chuyện gì xảy ra nếu không có câu trả lời sẵn sàng trong mộtkhoảng thời gian hợp lý? Liệu yêu cầu đó có thực sự phức tạp hay do máy chủ đã có một sựkết thúc không bình thường? Có thể phân biệt được hai trường hợp này, gói AYA đôi khiđược cung cấp vì vậy máy khách có thể yêu cầu máy chủ tiếp tục thực hiện Nếu câu trả lời làIAA thì nhân của máy khách biết rằng tất cả đều thuận lợi và chỉ cần tiếp tục chờ đợi Tấtnhiên thì tốt hơn nữa là một gói REP Nếu AYA không phát sinh ra bất kỳ một sự đáp ứngnào,thì nhân của máy sẽ chờ trong một khoanrg thời gian ngắn rồi thử lại lần nữa Nếu sựthất bại của thủ tục này nhiều hơn số lần chỉ định thì thông thường nhân của máy khách sẽ bỏ
Trang 39qua nó và bản báo cáo về sự thất bại sẽ dược gửi tới người sử dụng Các gói tin AYA và IAAthậm chí cũng có thể được sử dụng trong một giao thức mà các gói tin REQ không được ghinhận Chúng cho phép máy khách kiểm tra trạng thái của máy chủ.
Sau cùng chúng ta hãy cùng đến với hai loại gói cuối cùng rất hữu ích nếu như gói REQkhông thể được chấp nhận Có hai lý do giải thích tại sao điều này lại xảy ra, và đó là điềuquan trọng để cho nhân của máy khách có thể phân biệt chúng Một lý do nữa là hộp thư màyêu cầu dược gửi tới thì đã đầy Bằng cách gửi gói này trở lại nhân của máy khách, nhân củamáy chủ có thể chỉ ra rằng địa chỉ là hợp lệ và yêu cầu cần được lặp lại về sau Một lý dokhác đó là địa chỉ không thuộc bất kỳ một tiến trình hay hộp thư nào Lặp lại điều đó chậm sẽkhông trợ giúp được gì
Mã Kiểu gói tin Từ Đến Mô tả
REP Trả lời Server Client Sự trả lời từ máy chủ tới máy
khách
AYA Bạn có tồn tại? Client Server Kiểm tra máy chủ có bị hư hay
không
AU Không biết địa chỉ Server Client Không tiến trình nào đang sử
dụng địa chỉ này
Hình 10-12.Kiểu gói tin sử dụng trong giao thức máy khách-máy chủ
Tình trạng này cũng có thể xuất hiện khi việc đệm chưa được sử dụng và hiện tại máy
chủ không bị tạo khối trong lời gọi nhận Khi nhân của máy chủ quên rằng địa chỉ thậm chí còn tồn tại giữa những lời gọi nhận có thể dẫn dắt tới vấn đề, trong một vài hệ thống, một
máy chủ có thể thực hiện một lời gọi chỉ có một chức năng là đăng ký một địa chỉ nhất địnhvới nhân Bằng cách đó, ít nhất thì nhân cũng có thể chỉ ra sự khác nhau giữa một địa chỉ màhiện tại không một ai để ý đến nó với một địa chỉ sai cơ bản Sau đó nó có thể gửi TA trongtrường hợp đầu và AU trong trường hợp sau
Có thể tồn tại nhiều trình tự các gói Một vài gói thông thường được thể hiện ở hình
10-13 Trong sơ đồ10-13(a), chúng ta có một sự yêu cầu/ đáp ứng trực tiếp mà không cần có sựghi nhận Trong sơ đồ 10-13(b), chúng ta có một giao thức mà trong đó mỗi thông điệp đượcghi nhận một cách riêng lẻ Trong sơ đồ 10-13(c), chúng ta thấy rằng hành động trả lời cũngnhư sự ghi nhận đã thay đổi trình tự của ba gói Cuối cùng trong sơ đồ 10-13(d), chúng tathấy máy khách luôn kiểm tra xem máy khách có còn ở đó nữa hay không
Trang 39
Trang 402.3 Truyền thông từ xa (Các dịch vụ truyền thông trong Middleware)
Gọi thủ tục điều khiển từ xa: Mô hình máy khách- máy chủ đã đưa ra một cách thức
thông thường để thiết kế hệ điều hành phân tán, nhưng nó phải chấp nhận một nhược điểmkhông thể sửa chữa được: đó là mô hình cơ bản mà xung quanh đó tất cả các truyền thông
đều được xây dựng là nhập/xuất Thủ tục gửi và nhận được tiến hành về cơ bản trong nhập
/xuất Một khi nhập/ xuất không phải là một trong những khái niệm chủ chốt của những hệthông tập trung thì việc làm cho nó trở thành nền tảng cho sự tính toán phân tán cho thấy sựsai lầm của những người làm việc trong lĩnh vực này Mục đích của họ là sẽ làm cho sự tínhtoán phân tán trong như sự tính toán tập trung Việc xây dựng mọi thứ xung quanh việc nhậpxuất không phải là cách thức để làm điều đó
Hình 2 Một vài ví dụ về sự trao đổi gói tin trong giao tiếp Máy khách-Máy chủ
So sánh mô hình OSI 7 tầng, mô hình phân tầng của hệ phân tán có sự cải tiến, đó là gộptầng trình diễn và tầng phiên thành một tầng mới gọi là tầng Middleware Các dịch vụ truyềnthông sử dụng trong tầng Middleware này bao gồm:
- RPC (Remote Procedure Call): gọi thủ tục từ xa
- ROI (Remote Object Invocation): triệu gọi đối tượng từ xa
- Message – oriented Middleware : Middleware hướng thông điệp
- Stream – oriented Middleware: Middleware hướng dòn
RPC
RPC là một dịch vụ ở tầng middleware cho phép một tiến trình ở máy A có thể thựchiện một thủ tục ở máy B, và thu được kết quả ở máy A
Trong mô hình Client – Server, quá trình đó diễn ra như sau:
1 Tiến trình muốn thực hiện thủ tục ở máy client sẽ gọi client stub.
2 Client stub sẽ tạo một bản tin và có lời gọi đến hệ điều hành của client đó.
M¸y chñ M¸y chñ