1. Trang chủ
  2. » Công Nghệ Thông Tin

tính toán lưới - chương 2 công nghệ tính toán lưới và phân tán

75 2K 5
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 75
Dung lượng 2,97 MB

Nội dung

• 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 các bài toán lớn và đã được chứng minh tính hữu dụng... • Bài toán sẽ phân ra

Trang 1

Chương 2 Công nghệ tính toán

lưới và phân tán

Giảng viên: TS Đàm Quang Hồng Hải

TÍNH TOÁN LƯỚI

Trang 2

• Tính toán phân tán là tính toán song song

được phân quyền với nhiều máy tính liên lạc với nhau qua một mạng để hoàn tất một

nhiệm vụ chung

• Hệ thống tính toán 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

Trang 3

Tính toán phân tán và

tính toán lưới

• Hệ thống song song và phân tán cho phép chia sẻ, lựa chọn và kết hợp động các tài nguyên phân tán theo địa lý tại thời điểm thực thi dựa trên sự sẵn

sàng, dung lượng, hiệu năng, giá và những yêu cầu

về chất lượng dịch vụ

• Kỹ thuật lưới là “kỹ thuật cho phép ảo hoá tài nguyên

dự trữ theo yêu cầu, và chia sẻ dịch vụ, tài nguyên giữa các tổ chức”

• 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 các bài toán lớn và đã được chứng minh tính hữu dụng

Trang 4

Tính toán phân tán

• Để giải quyết được những bài toán rất lớn, thay vì tăng tốc độ tính toán của máy tính người ta sử dụng cùng một lúc nhiều bộ xử

• Bài toán sẽ phân ra thành nhiều phần thực hiện theo cách song song, mỗi phần do

một bộ xử lý riêng giải quyết

• Cách viết chương trình cho vấn đề này

được biết với tên gọi Lập trình song song (Parallel Programming)

Trang 5

Hiệu năng của hệ thống

• Độ trễ (Latency) và băng thông

(Bandwidth) là 2 tiêu chuẩn để xác định

hiệu năng của một hệ thống máy tính

– Bandwidth là tốc độ mà dữ liệu có thể đưa vào

từ bộ nhớ đến bộ xử lý - cho biết số lượng phép tính thực hiện được.

– Latency là thời gian chờ để nhận được dữ liệu khi dữ liệu đã chuyển đi.

• Ví dụ: hệ thống có độ trễ là 100 ns Một

phép toán đòi hỏi phải nạp 1 dữ liệu vào

bộ nhớ sẽ phát sinh độ trể nên tốc độ của tính toán sẽ bị giới hạn

Trang 6

Kiến trúc hệ thống song

song

• Kiến trúc SIMD - Single Instruction stream,

Multiple Data stream

• Kiến trúc MIMD - Multiple Instruction

stream, Multiple Data stream

• Kiến trúc SPMD - Single Program, Multiple

Data

• Kiến trúc chuyển thông điệp

Trang 7

• SIMD (Single Instruction

stream, Multiple Data

stream): đơn vị điều khiển

riêng lẽ gửi cùng câu lệnh

c[i] = a[i] + b[i]

• Với máy tính thi hành cùng câu lệnh, vòng lặp sẽ thi hành nhanh hơn Trong khi đó, với mẫu lập trình

SIMD sử dụng trong cấu trúc chọn lựa, việc thi hành

có điều kiện sẽ làm tổn hại đến hiệu năng của bộ xử

lý SIMD.

Kiến trúc SIMD

Trang 8

Kiến trúc MIMD

• Kiến trúc MIMD (Multiple Instruction stream,

Multiple Data stream) cho phép mỗi đơn vị xử lý thi hành những chương trình khác nhau.

• Các hệ thống MIMD có các đặc trưng sau: xử lí

phân tán thông qua một số các bộ xử lí độc lập, chia sẻ tài nguyên chứa trong hệ thống bộ nhớ

chính, mỗi bộ xử lí thực hiện độc lập, đồng thời và thực hiện các chương trình riêng

• Các hệ thống MIMD thực hiện các phép toán theo dạng song song không đồng bộ, các nút hoạt

động hợp tác chặt chẽ nhưng thực hiện độc lập

Trang 9

Memory Module2

Memory ModuleN

Kiến trúc MIMD (tiếp)

Trang 10

Kiến trúc SPMD

• Kiến trúc SPMD (Single Program,

Multiple Data) cho phép nhiều thực

thể (instance) của cùng một chương

trình thực thi trên các dữ liệu khác

nhau.

• Kiến trúc SPMD có thể diễn đạt bởi

kiến trúc MIMD bằng cách dùng

khối điều khiển if – else với điều

kiện được chỉ định bởi định danh

(identify) của tác vụ.

Trang 11

Kiến trúc chuyển thông điệp

• Về mặt luận lý, platform chuyển thông điệp Passing) bao gồm nhiều nút xử lý (Processing Node), mỗi nút sở hữu một không gian địa chỉ riêng.

(Message-• Mỗi nút có thể hoặc là một bộ xử lý đơn hoặc đa xử lý với không gian địa chỉ chung.

• Xu hướng hiện nay là phát triển máy tính song song dạng chuyển thông điệp (Message-Passing Parallel

Computer) Clustered Workstation hoặc Non - Shared – Address Space Multicomputer là những ví dụ về

platform chuyển thông điệp.

• Trên platform này, tương tác giữa các tiến trình

(process) hay tác vụ (task) thực thi trên các nút khác nhau thông qua việc chuyển các thông điệp.

Trang 12

Mô hình kiến trúc chuyển

thông điệp

• Hầu hết mẫu chuyển thông điệp hỗ trợ việc thi

hành chương trình khác nhau trên các nút.

• Việc tương tác được thực hiện bởi việc gửi và nhận thông điệp, chính vì vậy các thao tác cơ bản trong mẫu lập trình này Send và Receive.

• Các hàm giao diện lập trình ứng dụng như MPI

(Message-Passing Interface) và PVM (Parallel

Virtual Machine) có đầy đủ các chức năng giúp cho việc lập trình thuận lợi.

• Với platform này, vấn đề cần quan tâm là chi phí của thuật giải, bởi việc truy cập đến bộ nhớ của nút khác đòi hỏi gửi và nhận thông điệp Đó là chi phí

về sự trao đổi dữ liệu giữa các phần tử xử lý.

Trang 13

Giao tiếp cơ bản trên mạng

• Trong hầu hết các thuật giải song song, việc trao đổi

dữ liệu giữa các tiến trình là cần thiết và có ảnh hưởng đặc biệt đến hiệu suất của chương trình song song.

• Thời gian t s + mt w là thơi gian cho một trao đổi đơn

giản của m thông điệp giữa 2 tiến trình trên các nút

khác nhau của mạng Trong đó,

– t s là độ trễ hay thời gian khởi động để truyền dữ

liệu.

– t w thời gian truyền 1 dữ liệu.

• Có các giao tiếp cơ bản trên mạng như sau

– Phát tán (broadcast)

– Quy hồi (reduce)

– Phân phát (scatter)

– Thu thập (gather)

Trang 14

Thao tác phát tán

• Đây là hình thức truyền đi, nhằm gửi một thông điệp đến tất cả các tiến trình đang hoạt động trên mạng Thao tác này còn gọi là one-to-all broadcast.

• Khảo sát bài toán cần phát tán các thông điệp

đến p-1 tiến trình Để tránh sự tắt ngẽn trên

đường truyền cần quan tâm đến tiến trình nhận

Trang 15

Thuật giải broadcast

• Thuật giải broadcast này thực hiện như sau:

– Tiến trình nguồn (source process) lần đầu tiên gởi thông điệp đến một tiến trình khác.

– Bây giờ 2 tiến trình này đồng thời gởi thông điệp đến 2 tiến trình khác (mà chúng đang đợi để nhận thông điệp) – Thao tác tiếp tục cho đến khi tất cả các tiến trình nhận xong dữ liệu.

Trang 16

Thao tác quy hồi

• Là dạng đối ngẫu của thao tác broadcast, nên còn được gọi là thao tác all-to-one reduction.

• Trong thao tác quy hồi tất cả các tiến trình được tổ hợp lại

để tích luỹ về một giá trị Thực chất đây là sự thu thập

(gather) nhưng kết hợp với một phép toán nào đó để có kết quả tích lũy sau cùng Chính vì vậy, thao tác quy hồi thường được dùng để tính tổng, tính tích, tìm cực đại, cực tiểu, v.v

Trang 17

Thao tác quy hồi

Trang 18

Thao tác phân phát và thu thập

• Phân phát là việc gởi từng phần của dữ liệu đến các tiến

trình hoạt động trên mạng Còn thu thập là ngược lại của phân phát, nhằm tập hợp các giá trị riêng từ các thành

phần lại.

Trang 19

Môi trường lập trình

• Để thực hiện tính toán song song và phân tán

trên hệ thống chuyển thông điệp, cần một số yếu

Trang 20

Môi trường cho tính toán

phân tán

• Phân ly thuật giải hoặc dữ liệu thành các phần riêng và phân bổ những phần công việc này như các tác vụ làm việc đồng thời trên các bộ xử lý

• Hợp tác và trao đổi giữa các tác vụ này

• Có hai bước cơ bản cho các tính toán

truyền thông điệp:

– Tạo ra các tiến trình, tác vụ (process, task)

riêng để thực thi trên các máy tính khác nhau – Thực thi các việc liên quan đến gởi và nhận

thông điệp.

Trang 21

Hệ thống chuyển thông điệp

• Hệ thống truyền thông điệp tạo ra môi

trường cho phép người lập trình cài đặt

chương trình tính toán song song

• Môi trường nầy có thể hoạt động trên nhiều chủng loại máy tính khác nhau

• Hầu hết các ứng dụng song song đều được cài đặt trên hệ điều hành UNIX như Solaris, AIX, Linux,

• Bên cạnh đó, môi trường Windows NT/2000/

XP cũng có thể cài đặt các ứng dụng song song do khả năng xử lý đồng thời.

Trang 22

• Trên các hệ thống chuyển thông điệp

thường có hai mô hình lập trình:

– Mô hình master – slave.

– Mô hình task – to – task (hay node to node)

• Trong đó mô hình master – slave là sử thể hiện của dạng MPMD, còn task – to – task

là dạng SPMD

Trang 23

Mô hình master-slave

• Trong mô hình thiết kế master-slave, một tiến

trình chủ master điều khiển sự hoạt động của các tiến trình còn lại như là các slave thông qua các

định danh (identify) tác vụ hay định danh tiến

trình – thường được gọi là các ID.

• Trong mô hình master-slave, chương trình master

có thể phát sinh và kích hoạt để tạo ra các chương trình slave trên những node khác nhau của hệ

thống Khi đó một tiến trình hoạt động như là một thực thể (instance) của một slave trên node đó.

• Để xác định phần master hay slave, hệ thống

chuyển thông điệp dùng các ID để nhận biết, hoặc thông qua các hàm như _parent() Khi ID bằng 0,

có nghĩa đây là tiến trình đầu tiên, nên là tiến

trình master

Trang 24

Sự đồng bộ gửi và nhận

• Việc chuyển thông điệp giữa các tiến trình thực chất là

sử dụng các hàm thư viện send() và receive().

• Trong các hệ chuyển thông điệp, một hàm được gọi là chuyển đồng bộ (Synchronous Passing) nếu nó kết

thúc (return) khi việc truyền thông điệp vừa hoàn

thành.

• Hàm được gọi là gởi đồng bộ (synchronous send) nếu

nó đợi cho đến khi thông điệp được chấp nhận bởi tiến trình nhận Hàm nhận đồng bộ sẽ đợi cho đến khi

thông điệp mà nó mong đợi đi đến.

• Thực chất của các hàm đồng bộ là thực hiện hai hành động: truyền dữ liệu và đồng bộ hóa các tiến trình,

nói cách khác, có sự phối hợp với nhau trong việc gởi

và nhận.

Trang 25

Đồng bộ trong việc gửi và nhận

• Đôi khi còn dùng thuật ngữ blocking thay cho thuật ngữ đồng bộ và non-blocking là bất đồng bộ.

Trang 26

Các thành phần của tính toán phân tán

Trang 27

• Các tiến trình trên máy truyền và máy

nhận thiết lập một kết nối qua mạng IP

bằng socket theo mô hình Client/Server

• Có hai loại socket

– TCP (Transmission Control Protocol)

– UDP (User Datagram Protocol)

Trang 28

Client Process

socket() bind() sendto() recvfrom()

Client Process

1 2

3

socket() bind() recvfrom()

Trang 29

Remote Procedure Call

• RPC - Remote Procedure Call : gọi hàm từ

xa

• RPC là nền tảng của lập trình phân tán

(distributed programming) Các giao thức xây dựng trên RPC đã xuất hiện từ rất lâu

và có thể đã trở nên quen thuộc

• RPC là một mở rộng của việc gọi hàm

(procedure call) theo cách cổ điển Giờ

đây hàm cần gọi và nơi gọi hàm có thể

nằm ở 2 máy tính khác nhau nối với nhau qua mạng internet

Trang 30

Kiến trúc của RPC

• RPC được thiết kế để cung cấp cho việc

truyền tải thông tin giữa client và server

dễ dàng, bảo mật và thuận tiện hơn cho việc đồng bộ hóa các luồng dữ liệu

• Các hàm trong RPC hỗ trợ cho việc truy

cập bất kỳ chương trình nào đòi hỏi

phương pháp giao tiếp từ client đến server

Trang 31

Mô hình kiến trúc của RPC

Trang 32

Runtime application

programming interface (API)

• Cung cấp giao diện cho RPC tới Clients

hoặc Servers, thông thường, RPC Clients

và Servers sẽ gọi hàm API (giao diện lập

trình ứng dụng) để khởi tạo RPC và chuẩn

bị cấu trúc dữ liệu sẽ được sử dụng để thực hiện cuộc gọi RPC

• Lớp API sẽ quyết định nếu yêu cầu RPC

đến từ marshalling engine hoặc trực tiếp từ client/server đến máy chủ nội bộ hoặc máy chủ từ xa Sau đó lớp API sẽ dẫn đường

cho RPC đến Connection RPC, Datagram

RPC hoặc Local RPC Layers

Trang 33

RPC protocol engine

• Connection RPC protocol engine: Được sử

dụng khi RPC yêu cầu giao thức TCP Lớp này

chỉ định sử dụng giao UDP nếu RPC được gửi

đi hoặc nhận được một phi kết nối tới RPC

• Local RPC protocol engine: Được sử dụng khi Server và Client đặt trong cùng một host.

Trang 34

Quá trình xử lý của RPC

• Quá trình xử lý của RPC bắt đầu từ phía Client

Ứng dụng từ phía Client sẽ gọi Client stub thay vì client phải viết code triển khai cho hàm đó

• Các stub sẽ được biên soạn và liên kết với các ứng dụng từ phía client trong quá trình phát triển

• Các code của stub sẽ yêu cầu truy vấn những

tham số từ địa chỉ không gian của Client và sau đó chuyển chúng vào thư viện chạy thực của client

• Thư viện chạy thực của client sẽ biên dịch những tham số cần thiết vào định dạng chuẩn NDR

(Network Data Representation) để chuyển giao

cho Server.

Trang 35

Quá trình xử lý của RPC (2)

• Khi Server nhận được yêu cầu của RPC(từ phía

client trong nội bộ hoặc client từ xa), các hàm

trong thư viện chạy thực RPC của Server chấp

nhận các yêu cầu và gọi hàm xử lý Server Stub.

• Server stub sẽ truy vấn các tham số từ network buffer và chọn loại NDR20 (hạ tầng 32 bits) hoặc NDR64 (hạ tầng 64 bits) trong NDR Marshalling

Engines, chuyển đổi chúng từ định dạng truyền tải mạng sang định dạng theo yêu cầu

• Các thủ tục từ xa sẽ được chạy, có khả năng xuất

ra các tham số và trả về giá trị, khi hoàn tất, một chuỗi các bước tương tự sẽ trả về dữ liệu cho

Client

Trang 36

Quá trình xử lý của RPC (3)

Trang 37

Java RMI

• RMI - Remote Method Invocation

• Java RMI là một sản phẩm viết trên Java

của Sun Java RMI là một phần chính của bộ JDK 1.1 và 2 platform.

• Java là một ngôn ngữ độc lập với nền và cho phép các ứng dụng Java truyền tin với các

ứng dụng Java đang chạy trên bất kỳ phần cứng và hệ điều hành nào có hỗ trợ JVM

• Sự khác biệt chính giữa hai mục tiêu là RPC

hỗ trợ đa ngôn ngữ, ngược lại RMI chỉ hỗ trợ các ứng dụng được viết bằng Java.

Trang 38

Remote Method Invocation

• Remote Method Invocation (RMI) là một cơ chế gọi phương thức từ xa giữa 2 máy cài đặt máy

ảo Java, dùng để gọi một phương thức trên một đối tượng từ xa giống như trên máy cục bộ.

• RMI hoạt động dựa trên cơ chế stub/skeleton

nghĩa là phát sinh bộ khung sườn của đối tượng remote, đặt trên máy remote và máy local.

• Stubs hoạt động phía client và Sekeleton hoạt động phía server, trong đặc tả mới hiện nay, khi viết

code không cần tạo ra Skeleton nữa, chúng ta chỉ cần tạo ra stub cho client là đủ, phần còn lại, RMI

sẽ lo liệu cho chúng ta.

Trang 39

Java RMI (tiếp)

Trang 40

Mục đích của RMI

• Hỗ trợ gọi phương thức từ xa trên các đối tượng trong các máy ảo khác nhau

• Hỗ trợ gọi ngược phương thức ngược từ

server tới các applet

• Duy trì sự an toàn kiểu được cung cấp bởi môi trường thời gian chạy của nền tảng

Trang 41

Các thành phần của RMI

• Remote Interface: Có nhiệm vụ khai báo các

phương thức cần thiết Lớp phải kế thừa từ lớp

java.rmi.Remote và các phương thức phải định

nghĩa trả lổi “RemoteException”

• Remote Object : sẽ kế thừa từ lớp Remote

Interface và định nghĩa các phương thức được

nêu từ interface đó.

• RMIregistry sẽ là nơi để máy ảo java đăng ký nơi chứa Remote Object, việc thực hiện ở các máy ảo java có chứa lớp Remote Interface sẽ hoạt động như bình thường nhưng nguồn tài nguyên sẽ của lớp đó sẽ được lấy từ máy ảo định nghĩa lớp đó.

Trang 42

Lớp trung gian Stub và Skeleton

• Khi có một yêu cầu dưới client, stub có

nhiệm vụ sắp xếp thứ tự mọi tham số (là

object) và truyền lên Server,

• Skeleton thu nạp đối tượng này và xử lývà trả về cho Client

• Một ứng dụng RMI chúng ta trải qua những bước sau:

– Biên dịch các class trên server

– Tạo Stub and Skeleton (qua RMIC)

– Khởi động bộ đăng ký RMI (RMIregistry)

– Sử dụng dịch vụ

Trang 43

Công nghệ COM và DCOM

• COM - Component Object Model: là một

công nghệ được Microsoft phát triển để các phần mềm có thể liên kết được với nhau

• Component Object Model (COM) là 1 công nghệ phần mềm cho phép các ứng dụng

xây dựng từ các thành phần nhị phân và

được sử dụng trong nhiều lĩnh vực lập trình

về media, API, Direct Show

• DCOM (Distributed COM) và một phát triển của COM cho các ứng dụng Client/Server phân tán

Trang 44

Kiến trúc của COM

• Kiến trúc của COM là Client/Server

• Các Client trong COM truy cập vào đối

tượng thông qua các giao diện thực thi trên đối tượng đó

• Các thành phần giao tiếp với nhau được xử

lý bởi COM runtime

Ngày đăng: 13/03/2014, 10:11

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w