Xử lý song song là quá trình xử lý gồm nhiều tiến trình được kích hoạt đồng thời vàcùng tham gia giải quyết một vấn đề, nói chung là thực hiện trên những hệ thống đa bộ xử lý.. 1.1.2 Sự
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
TIỂU LUẬN MÔN HỌC
HỆ TIN HỌC PHÂN TÁN
Đề tài:
BIỂU THỨC SONG SONG VÀ PHÂN TÁN TRONG CÁC
NGÔN NGỮ THUẬT TOÁN
VÀ CÁC ĐIỂM CẢI TIẾN CHỦ YẾU ĐỂ THUẬT TOÁN
LAMPORT HOẠT ĐỘNG NHANH HƠN
GVHD: PGS.TS LÊ VĂN SƠN HVTH: NGUYỄN THÀNH THỦY
Đà Nẵng, tháng 7 năm 2009.
Trang 2MỤC LỤC
LỜI NÓI ĐẦU 3
CHƯƠNG 1 CÁC CƠ SỞ LÝ LUẬN CÓ LIÊN QUAN 4
1.1 Xử lý song song và xử lý tuần tự 4
1.1.1 Tổng quan 4
1.1.2 Sự khác biệt giữa xử lý song song và xử lý tuần tự 4
1.1.3 Tại sao phải xử lý song song ? 5
1.2 Vấn đề đồng bộ hóa trong hệ phân tán 5
1.2.1 Thời gian lôgic và trật tự sự kiện từng phần (Lamport) 5
1.2.2 Gắn thời gian lôgic với các sự kiện 7
1.2.3 Thuật toán đóng dấu thời gian của Lamport 8
CHƯƠNG 2 BIỂU THỨC SONG SONG VÀ PHÂN TÁN TRONG CÁC NGÔN NGỮ THUẬT TOÁN 10
2.1 Tính toán song song và phân tán 10
2.1.1 Khái niệm 10
2.1.2 Các hệ thống song song 10
2.1.3 Môi trường lập trình 10
2.1.4 Các mô hình và thuật toán song song 11
2.2 Các chiến lược song song hoá phổ biến 11
2.2.1 Song song hoá kết quả 11
2.2.2 Song song hoá đại diện 13
2.2.3 Song song hoá chuyên biệt 14
2.3 Biểu thức song song trong các ngôn ngữ thuật toán 15
2.3.1 Ngôn ngữ CSP (Communicating Sequential Processes) 16
2.3.2 Ngôn ngữ ADA 17
2.4 Một số thư viện và công cụ hỗ trợ lập trình song song khác 19
CHƯƠNG 3 CÁC ĐIỂM CẢI TIẾN CHỦ YẾU ĐỂ THUẬT TOÁN LAMPORT HOẠT ĐỘNG NHANH HƠN 21
3.1 Thuật toán giả phân tán: Hàng đợi tập trung 21
3.2 Thuật toán Lamport: Hàng đợi phân tán 22
3.3 Cải tiến thuật toán Lamport (Thuật toán Ricart và Agrawala) 27
KẾT LUẬN 30
TÀI LIỆU THAM KHẢO 31
Trang 3LỜI NÓI ĐẦU
uộc cách mạng khoa học và công nghệ đang diễn ra một cách sôi động trênphạm vi toàn thế giới, thúc đẩy loài người nhanh chóng bước sang một kỷnguyên mới, đó là kỷ nguyên của nền văn minh dựa trên cơ sở của công nghiệptri thức Mở đầu cho cuộc cách mạng khoa học và công nghệ này là sự ra đời và pháttriển ồ ạt của máy vi tính và các phương tiện xử lý thông tin khác
C
Cùng với sự phát triển nhanh chóng số lượng máy vi tính cũng như nhu cầu traođổi thông tin trong mọi hoạt động xã hội loài người đòi hỏi sự phát triển đồng bộ cácphương pháp truyền thông Mạng máy tính ra đời làm cho thế giới của chúng tadường như nhỏ lại và mọi người trở nên gần nhau hơn
Trên thực tế, một xu hướng kỹ thuật mới được hình thành - xu hướng phân tán cácthành phần tạo nên hệ tin học theo hướng tiếp cận nơi sử dụng và sản xuất thông tintrên cơ sở mạng máy tính Song để khai thác có hiệu quả toàn bộ hệ thống, vấn đềquan trọng hàng đầu cần phải tính đến là các tài nguyên và chiến lược khai thác, sửdụng chúng một cách tối ưu nhất Bản thân người sử dụng thuần tuý không thể tự xâydựng nên chiến lược đó được, mà nó là chức năng chủ yếu của các hệ thống tin họcphân tán đồng thời cũng chính là đối tượng nghiên cứu của báo cáo này
Phạm vi và nhiệm vụ nghiên cứu của đề tài là phân tích đặc điểm của biểu thứcsong song và phân tán trong các ngôn ngữ thuật toán và các điểm cải tiến chủ yếu đểthuật toán Lamport hoạt động nhanh hơn nhằm phục vụ công tác lưu chuyển, xử lý dữliệu qua mạng dựa trên phương pháp lý thuyết
Về mặt bố cục, ngoài phần mở đầu, tài liệu tham khảo và mục lục, báo cáo đượcchia làm 3 chương, trong đó:
Chương 1: trình bày các vấn đề tổng quan về hệ phân tác và các cơ sở lý luận có
Trang 4CHƯƠNG 1 CÁC CƠ SỞ LÝ LUẬN CÓ LIÊN QUAN
1.1 Xử lý song song và xử lý tuần tự
Xử lý song song từ xa xưa cho đến gần đây là lãnh vực cao cấp hầu như chỉ dành cho các nhà khoa học Có ít nhất 2 nguyên nhân:
- Xử lý song song đòi hỏi siêu máy tính đắt tiền, chỉ chính phủ hoặc tập đoàn lớn mới kham nổi
- Nhà khoa học mới cần tính toán cao cấp, như trong nghiên cứu vật lý hạt và vũ trụ,sinh học cấu tạo, khí tượng địa cầu, khoa học máy tính
Gần đây nhờ sự phổ biến của phần cứng rẻ như CPU đa lõi, phần mềm tiện dụng như Erlang, đại chúng bắt đầu biết đến xử lý song song
Xử lý song song là quá trình xử lý gồm nhiều tiến trình được kích hoạt đồng thời vàcùng tham gia giải quyết một vấn đề, nói chung là thực hiện trên những hệ thống đa bộ
xử lý Là phân chia bài toán to thành nhiều bài toán nhỏ, rồi giải cùng lúc, nhờ đó tốc độgiải bài toán gốc tăng lên
Ví dụ: Tính tích phân trong khoảng [0, 100], thì có thể phân làm 2 bài toán nhỏ là tính
tích phân trong khoảng [0, 50] và [50, 100], rồi cộng 2 kết quả lại
1.1.2 Sự khác biệt giữa xử lý song song và xử lý tuần tự
Trong tính toán song song, một số bộ xử lý cùng kết hợp với nhau để giải quyết cùngmột vấn đề cho nên giảm được thời gian xử lý vì mỗi thời điểm có thể có nhiều phép toánđược thực hiện đồng thời
Trong tính toán tuần tự với một bộ xử lý thì mỗi thời điểm chỉ thực hiện được mộtphép toán
Mục đích của xử lý song song là tận dụng các khả năng của các hệ đa bộ xử lý để thựchiện những tính toán nhanh hơn trên cơ sở sử dụng nhiều bộ xử lý đồng thời Cùng vớitốc độ xử lý nhanh hơn, việc xử lý song song cũng sẽ giải quyết được những bài toán lớnhơn
Trang 51.1.3 Tại sao phải xử lý song song ?
Nhiều lĩnh vực mới như đồ họa máy tính, trí tuệ nhận tạo, phân tích số, v.v đòi hỏiphải xử lý một khối lượng dữ liệu rất lớn, những vấn đề về xử lý ngôn ngữ tự nhiên, nhậndạng, xử lý ảnh ba chiều (3-D), dự báo thời tiết v.v đều đòi hỏi phải xử lý dữ liệu với tốcđộc rất cao, với khối lượng dữ liệu rất lớn Hầu hết những bài toán này, những máy tính
xử lý tuần tự là không đáp ứng yêu cầu thực tế Do đó cần phải có những hệ thống máytính thật mạnh mới đáp ứng được những yêu cầu của thực tế
Mặc dù tốc độ xử lý của các Bộ xử lý tăng nhiều trong những năm qua, nhưng do giớihạn về vật lý nên khả năng tính toán của chúng không thể tăng mãi được Điều này dẫntới là muốn tăng được khả năng tính toán của các hệ thống máy tính thì đích cuối cùng làphải khai thác được khả năng xử lý song song của chúng Ngày càng xuất hiện nhiều bàitoán mà những hệ thống đơn một bộ xử lý không đáp ứng được yêu cầu xử lý về thờigian, do đó đòi hỏi phải sử dụng những hệ thống đa bộ xử lý và đòi hỏi phải xử lý songsong
1.2Vấn đề đồng bộ hóa trong hệ phân tán
1.2.1. Thời gian lôgic và trật tự sự kiện từng phần (Lamport)
Trong các hệ tin học tập trung, vấn đề đồng bộ hóa được giải quyết thông qua cơ chếloại trừ tương hỗ Cơ chế này cho phép xác lập trật tự hoàn toàn các sự kiện Tuy nhiên,trong thực tế một số hệ thống khi đồng bộ hóa chỉ đòi hỏi trật tự từng phần Chính vì vậy,trật tự hóa từng phần giữa các sự kiện mà tiến trình của nó cần phải đồng bộ là vấn đề cầnphải quan tâm giải quyết
Trong hệ phân tán, việc đồng bộ hóa chủ yếu yêu cầu thiết lập một trật tự giữa các sựkiện Giữa các trạm khác nhau, trật tự đó có thể thể hiện thông qua việc trao đổi cácthông điệp với nhau
Trang 6Trở lại năm 1979, Lamport đã đưa ra rằng hai sự kiện từ các trạm khác nhau chỉ cóthể có trật tự nếu chúng được tách rời với nhau bằng cách gửi và nhận thông điệp Ngượclại, cho dù một sự kiện xảy ra trước sự kiện khác theo thời gian, không có cách nào cho
sự kiện thứ hai có thể quan sát trật tự này và vì vậy, không có cách nào cho sự chính xáccủa nó phụ thuộc vào nó Giả định ở đây là không có sự quan sát bên ngoài của trật tự sựkiện Nếu sự chính xác của hệ thống phụ thuộc vào trật tự được quan sát bởi con người,
ví dụ, thì sự quan sát Lamport không áp dụng Tuy nhiên, sự chính xác trật tự chỉ phụcthuộc vào sự đồng bộ bên trong của các sự kiện và vì thế định nghĩa của Lamport có thể
a “xảy ra trước” c (a c) - bắc cầu -
Trang 7Trật tự các sự kiện được định nghĩa như sau:
Nếu A và B là hai sự kiện của cùng một trạm và A xảy ra trước B thì ta có AB.Nếu A là phát thông điệp từ một trạm nào đó và B là nhận thông điệp thì ta có AB.Nếu AB và BC, thì AC
Nếu hai sự kiện A và B xảy ra ở hai tiến trình riêng biệt và không trao đổi thông điệpthì ta không thể nói A B hay B A Các tiến trình này được gọi là song song (A||B)
1.2.2 Gắn thời gian lôgic với các sự kiện
Các đồng hồ lôgic: gán một số cho mỗi sự kiện cục bộ nhưng không liên quan đếnthời gian vật lý
Hệ thống các đồng hồ lôgic phải chính xác :
Hay nói cách khác:
Làm thế nào chúng ta có thể thực thi các đồng hồ thỏa mãn Điều kiện Đồng hồ? Bằngthuật toán đóng dấu thời gian của Lamport – cung cấp một tập hợp các quy luật thực thiđơn giản
sự kiện a,b : nếu a b thì C(a) < C(b)
Điều kiện đồng hồ
a Pi
Trang 81.2.3 Thuật toán đóng dấu thời gian của Lamport
Đồng hồ lôgic là thuật toán cho phép đóng dấu cho từng sự kiện trong hệ phân tán đểvới mỗi cặp sự kiện A và B ta có: nếu A có trước B (A B) thì đồng hồ lôgic của A nhỏhơn đồng hồ lôgic của B
Các quy luật:
Quy luật 1: Mỗi tiến trình Pi gia tăng Ci thêm một trị số giữa hai sự kiện thành công
Quy luật 2: Mỗi tiến trình Pi đóng dấu thời gian cho các thông điệp m gửi đi, Tm =
Thỉnh thoảng chúng ta cần đến trật tự toàn cục của các sự kiện
Trật tự toàn cục sắp xếp thứ tự cho từng sự kiện để tất cả các trạm đồng ý với trật tựnày
Trang 9Lamport định nghĩa trật tự toàn cục dựa trên quan hệ “có trước”, nó gán cho mỗi trạmmột số duy nhất và sau đó sử dụng số này để lập trật tự cho các sự kiện không được sắpxếp thứ tự bằng quan hệ “có trước”
Trật tự nhất quán của các sự kiện phát:
3 2
2
Trang 10CHƯƠNG 2 BIỂU THỨC SONG SONG VÀ PHÂN TÁN TRONG CÁC
NGÔN NGỮ THUẬT TOÁN2.1 Tính toán song song và phân tán
2.1.1 Khái niệm
Tính toán song song và phân tán (Parallel and Distributed Computing) là một dạngtính toán hiệu năng cao (high performance computing) bằng cách tận dụng sức mạnh tínhtoán của một tập các máy tính hoặc bộ xử lý được kết nối thông qua các hệ thống mạngchuyên dụng (tốc độ rất cao) hoặc mạng thông thường (TCP/IP chẳng hạn)
Hầu hết các ứng dụng của tính toán song song là nhằm giải quyết các bài toán có độphức tạp thời gian lớn hoặc những bài toán thời gian thực (real-time applications) Sauđây là một số ví dụ:
Tính toán trong vật lý và hóa học: mô phỏng các quá trình nhiệt học, mô phỏng
chuyển động các hạt cơ bản trong vật lý, mô phỏng các quá trình hóa học,…
Tính toán trong sinh học: hiện nay có một lĩnh vực đang được giới nghiên cứu
focus, đó là tin sinh (bioinformatics) Bài toán này chủ yếu phân tích thông tin di truyềnADN Bài toán phân tích và mô hình hóa bản đồ gen người cũng không thể không sửdụng các máy tính hiệu năng cao, trong đó có các hệ thống tính toán song song rất mạnh
Trò chơi: dòng máy tính DeepBlue của IBM, có khả năng tính toán hàng triệu nước
cờ trong một giây và đây là một hệ thống song song sử dụng môi trường lập trình MPI
Tính toán song song áp dụng trong khám phá tri thức từ cơ sở dữ liệu
(Knowledge Discovery from Databases - KDD & Data Mining)
2.1.2 Các hệ thống song song
Có rất nhiều các hệ thống song song khác nhau được phân loại theo cấu trúc, theochức năng hoặc theo sức mạnh tính toán Sau đây là một số ví dụ về các hệ thống tínhtoán song song:
- Cray T3E (massively parallel processors)
- IBM RS/6000 SP2 (distributed memory system)
- Sun Fire 15000 (shared memory system)
- Cray SV1 (massively parallel processors)
- PC-Cluster (một tập các máy PC được kết nối lại với nhau thông qua mạng chuyêndụng hoặc mạng thông thường)
2.1.3 Môi trường lập trình
Môi trường lập trình song song được chia làm hai mức như sau:
Mức hệ thống: thường là một phần mềm hệ thống chạy ở background nhằm thực hiện
các chức năng trong tính toán song song như quản lý tiến trình (task management), truyềnthông (communication), đồng bộ hóa (synchronization), Mức này còn cung cấp thư
Trang 11viện bao gồm các hàm về truyền thông, đồng bộ hóa, Hiện nay có khá nhiều phần mềm
hỗ trợ tính toán song song như MPI (Message Passing Interface), PVM (Parallel VirtualMachine),
Mức ngôn ngữ lập trình song song: Ngôn ngữ C/C++ để lập trình song song kết hợp
với bộ thư viện của MPI hoặc PVM cung cấp, ngoài ra ngôn ngữ FORTRAN (fortran 77hoặc fortran 90) hoặc HPF (High Performance Fortran) cũng được để lập trình song song
2.1.4 Các mô hình và thuật toán song song
Về mô hình song song được chia ra các dạng chính sau đây: SIMD (Đơn dòng lệnh,
đa dữ liệu Single Instruction Multiple Data); MISD (Đa dòng lệnh, đơn dữ liệu Multiple Instruction Single Data); MIMD (Đa dòng lệnh, đa dữ liệu - MultipleInstructions Multiple Data)
-Thuật toán song song rất đa dạng, mỗi bài toán có một chiến lược song song riêng Có
hai chiến lược chính là song song theo chức năng và song song theo dữ liệu.
2.2 Các chiến lược song song hoá phổ biến
Trong rất nhiều chiến lược khác nhau để song song hoá thuật toán tuần tự, có bachiến lược thiết kế chương trình song song tương đối phổ biến là: song song hoá kết quả,song song hoá đại diện và song song hoá chuyên biệt Mặc dù, trong từng bài toán cụ thểviệc kết hợp các chiến lược thiết kế có thể cho ta kết quả thú vị, song thông thường tuỳthuộc tính chất bài toán, chỉ một chiến lược thiết kế thuật toán song song được chọnnhằm đạt hiệu quả cao nhất
2.2.1 Song song hoá kết quả
Việc phân loại các chiến lược thiết kế thuật toán song song phụ thuộc vào tính chấtbài toán Song song hoá kết quả là cơ chế tính toán song song tập trung trên toàn bộ dữliệu của bài toán Mỗi bộ xử lý sẽ cho một phần kết quả của bài toán và các bộ xử lý hoạtđộng song song sao cho các phần việc được thực hiện độc lập tối đa có thể
Sau khi các phần việc hoàn thành, công đoạn cuối cùng là kết hợp các thành phần đểđược kết quả hoàn chỉnh Các lớp bài toán chia - để - trị, bảng đen (trong hệ chuyên gia)
và lơi - lặp (iterative relaxtion) thường sử dụng chiến lược song song hoá kết quả để thiết
kế chương trình song song
Mỗi bài toán trong lớp các bài toán chia-để -trị, thường được chia thành các bài toánthành phần Mỗi bài toán thành phần được giải quyết độc lập và kết quả cuối cùng là sựkết hợp các kết quả của bài toán thành phần
Trong hệ thống bảng đen cấu trúc dữ liệu thể hiện mô hình tính toán Mỗi bộ xử lýđộc lập có trách nhiệm quản lý, kiểm tra trạng thái hiện thời và cập nhật nó nếu cần.Trong lơi - lặp người ta chia không gian dữ liệu thành các vùng có quan hệ lánggiềng, mỗi vùng này được một hay nhiều bộ vi xử lý đảm nhiệm Mỗi bộ vi xử lý này
Trang 12đảm trách công việc theo từng vùng song song và khi cần có sự truyền thông điệp với cácláng giềng.
Việc thiết kế chương trình theo chiến lược song song hoá kết quả thông qua năm giaiđoạn:
- Giai đoạn đầu cần phải mô hình kết qủa dưới dạng cấu trúc dữ liệu gồm nhiều thànhphần, đồng thời xác định được sự phụ thuộc giữa chúng
- Giai đoạn hai, phân mỗi bộ xử lý đảm nhiệm công việc cho một hay nhiều thành phần
và việc phân chia này phải bảo đảm vấn đề hiệu suất của các bộ xử lý
- Giai đoạn ba, xác định nguồn tài nguyên cần thiết để thực hiện việc tính toán cácthành phần
- Bước tiếp theo xác định cách lấy các giá trị kết quả của các thành phần khi thực hiện
xử lý song song
- Cuối cùng, là giai đoạn kết hợp các kết quả thành phần để được kết quả bài toán vàkết thúc các xử lý
Ví dụ 1: Giả sử cần thực hiện tính n! trên hai máy tính, trong đó mỗi máy nhân n/2 số
với nhau và n lưu ở máy tính thứ nhất
Kết quả của máy tính thứ hai khi được tính xong sẽ được chuyển về máy tính thứ nhất
để nó nhân hai kết quả bộ phận với nhau
Bài toán này được phát biểu như sau:
B1 Máy tính thứ nhất gửi n cho máy tính thứ hai
B2 Cả hai máy tính thực hiện nhân n/2 số một cách đồng thời
P1= 1*2*3…*(ndiv2)
P2= n*(n-1)*(n-2)*…*(ndiv2+1)
B3 Máy tính thứ hai chuyển kết quả tính được về máy tính thứ nhất
B4 Máy tính thứ nhất nhân hai kết quả để có kết quả cuối cùng
Trang 132.2.2 Song song hoá đại diện
Thiết kế chương trình theo cơ chế song song hoá đại diện xác định cụ thể công việcphải thực hiện để song song hoá Như vậy, để giải quyết một bài toán có nhiều côngđoạn, mỗi công đoạn của bài toán được giải quyết song song cho đến khi hoàn thànhcông đoạn đó và các công đoạn tiếp theo cũng được thực hiện tương tự cho đến khi bàitoán được giải quyết Các mô hình của chiến lược này là Client/Server, tính toán - tổnghợp - truyền thông
Trong mô hình Client/Server, bài toán cần giải được chia thành các vấn đề phụ thuộclẫn nhau Các bộ xử lý đóng vai trò tớ trong mô hình có nhiệm vụ xử lý các vấn đề này vàgiữa chúng được điều phối bởi bộ xử lý đóng vai trò chủ Khác với phương pháp chia đểtrị, các vấn đề ở đây không nhất thiết cùng được tiến hành giải quyết, mà có thể được giảiquyết song song một cách tuần tự
Trong mô hình tính toán - tổng hợp - truyền thông thiết kế bao gồm ba giai đoạn Giaiđoạn tính toán thực hiện các tính toán cơ bản có tính chất cục bộ, giai đoạn tổng hợp kếthợp các dữ liệu cục bộ thành dữ liệu toàn cục, giai đoạn truyền thông trả lại các thông tintoàn cục cho các bộ xử lý
Việc thiết kế chương trình theo chiến lược song song hoá đại diện được thực hiệnthông qua ba giai đoạn:
- Giai đoạn đầu xác định các công việc cần phải thực hiện bởi các bộ xử lý
- Trong giai đoạn tiếp theo cần phải xác định bộ xử lý đóng vai trò điều khiển các côngviệc
- Cuối cùng cần phải nhận biết được kết quả công việc
Trang 142.2.3 Song song hoá chuyên biệt
Trong chiến lược song song hoá chuyên biệt, bài toán cần giải quyết bao gồm nhiềucông việc, mỗi công việc có đặc thù riêng được giao cho một bộ xử lý chuyên dụng.Ngoài ra hệ thống cần một bộ xử lý giữ vai trò agent, điều phối quá trình thực hiện côngviệc Trong mỗi công việc đặc thù, các phần việc nhỏ hơn được thực hiện song song Saukhi các phần việc này hoàn thành, cần tiến hành “phối hợp” các kết quả để hoàn thànhcông việc
Một số mô hình thường gặp trong chiến lược thiết kế này là: ống dẫn và bộ lọc,Client/Server
Trong mô hình ống dẫn và bộ lọc dòng dữ liệu kết quả ra của quá trình xử lý A là dữliệu vào của quá trình xử lý B
Trong mô hình Client/Server các yêu cầu từ các bộ xử lý đóng vai trò khách được gửiđến các bộ xử lý đóng vai trò phục vụ để xử lý
Ví dụ: Ta xét bài toán tìm phần tử a trên mảng A kích thước n.
Trong xử lý tuần tự: ta dùng một bộ xử lý duyệt từ phần tử đầu đến phần tử cuối củamảng
Trong xử lý song song, giả sử ta có một mô hình song song m bộ xử lý, ta chia việccho mỗi bộ xử lý đồng thực hiện tìm kiếm, một bộ xử lý tìm kiếm trên (n div m) phần tử.Trong quá trình thực hiện, bộ xử lý nào tìm thấy phần tử a hoặc đã duyệt qua hết rồinhưng không tìm thấy thì phải gửi thông điệp để hệ thống xử lý nhận biết, điều khiển quátrình xử lý
Chúng ta dễ nhận thấy là độ phức tạp của xử lý song song có thể sẽ lớn hơn xử lý tuần
tự rất nhiều, bởi vì cần có sự trao đổi thông tin và sự đồng bộ các tiến trình trong quátrình thực hiện xử lý bài toán, vấn đề chúng ta cần quan tâm ở đây chính là thời gian thựchiện chương trình
Một trong những mục đích chính của xử lý song song là nghiên cứu, xây dựng nhữngthuật toán thích hợp để cài đặt trên các máy tính song song, nghĩa là phát triển các thuậttoán song song nhằm giải quyết các bài toán đặt ra trong thực tế
Vấn đề đặt ra là là đánh giá một thuật toán song song như thế nào được gọi là thíchhợp? Trong thuật toán tuần tự thì chúng ta đánh giá dựa vào thời gian thực hiện thuậttoán, không gian bộ nhớ và khả năng lập trình, Đánh giá thuật toán song song thì phứctạp hơn nhiều, ngoài những tiêu chuẩn trên còn phải bổ sung thêm các thông số về số bộ
xử lý, khả năng của các bộ nhớ cục bộ, sơ đồ truyền thông, và các giao thức đồng bộ hoátiến trình …
Trang 152.3 Biểu thức song song trong các ngôn ngữ thuật toán
Nguyên cứu một số khía cạnh cơ bản của việc lập trình bằng các ngôn ngữ thuật toáncho phép biểu diễn cấu trúc kiểm tra và các cơ chế định danh
Các ngôn ngữ có thể chia làm hai loại chính:
- Một số ngôn ngữ cho phép lập trình ứng dụng với tư cách là kích hoạt song song vàhoàn toàn không quan tâm đến vấn đề là sẽ triển khai chương trình trên hệ tập trunghay là hệ phân tán Các ngôn ngữ này triển khai cấu trúc kiểm tra có tính chất thủ tục.Mặc dù có một số hạn chế, song chúng cũng triển khai trên các hệ phân tán
- Một số ngôn ngữ khác cho phép triển khai tường minh công việc phân tán Chúng chophép tạo các mối quan hệ cần thiết từ một trạm đến các trạm khác trong hệ phân tán.Hai loại ngôn ngữ để thể hiện cho biểu thức song song trong các ngôn ngữ lập trình làngôn ngữ CSP [Hoare] và ADA [Ichbiah], các phương tiện định nghĩa các tiến trình vàthực hiện trao đổi thông tin giữa chúng với nhau Hai ngôn ngữ này cho phép phân đoạn
dữ liệu của một ứng dụng thành các tập hợp độc lập nhau Việc quản lý các tập hợp nàyđược tiến hành nhờ một tiến trình đặc biệt
Cả hai ngôn ngữ này đều có các đặc tính chung như sau:
- Sự liên thông giữa hai tiến trình không cần đặt lại cho sự tồn tại của các biến toàn cục
- Các cơ chế sơ đẳng của việc đồng bộ ví dụ như "cuộc gặp gỡ" của hệ CSP, "vào" củaADA thường là gần giống nhau
- Các cấu trúc mô phỏng tạo thuận lợi cho các tiến trình thể hiện việc chờ tương đốiđồng nhất và có điều kiện phù hợp với một trong các khả năng có thể Các nguyên lýkhác nhau cho ta khả năng lựa chọn cấu trúc thể hiện quan hệ giữa các tiến trình cũngnhư công cụ song song cho phép truy cập đến dữ liệu
- Trong CSP, các quan hệ và các đồng bộ giữa các tiến trình được thể hiện tường minhbằng các trao đổi thông điệp Ngược lại, trong ngôn ngữ ADA, một tiến trình T1 nào
đó có thể truy cập vào dữ liệu cục bộ của tiến trình T2 khác bàng cách sử dụng hàmnguyên thuỷ mà hiệu ứng của nó là việc gọi thực hiện thủ tục Các đồng bộ thực tế(tuỳ vào tình hình) được trình bày bởi T2 nhờ cấu trúc chính xác
- Trong CSP, số lượng và lai lịch của các tiến trình được định nghĩa theo kiểu tĩnh Một
dữ liệu nào đó chỉ để được truy cập bởi tiến trình có nhiệm vụ quản lý rõ ràng, trongkhi đó ADA cho phép nhiều tiến trình truy cập đến dữ liệu (việc kiểm soát dữ liệuđược giao cho một tiến trình đặc biệt)
Cần phải nhấn mạnh là ngôn ngữ ADA là một ngôn ngữ được xây dựng theo hướngtổng quát Nó biểu hiện một số đặc tính như biến toàn cục, các quy trình về trực quangđối tượng,…