Lập trình bộ nhớ chia sẻ

Một phần của tài liệu Parallel processing (Trang 34)

Một vài chú ý (1/4)

1. Hệ thống đa bộ xử lý đối xứng SMP(symmetric multiprocessor Sysstem)

• Các bộ xử lý là như nhau

• Không có những BXL đặc biệt để xử lý vào/ra • Không có BXL được gán nhiệm vụ đặc biệt nào khác. 2. Để nghiên cứu về XLSS, chúng ta không nhất thiết phải có hệ

đa bộ xử lý vật lý.

3. Trong môi trường UNIX, chúng ta có thể tạo ra nhiều tiến trình khác nhau trong hệ thống và chúng được sử dụng để mô phỏng lập trình đa bộ xử lý.

4.Hầu hết các hệ UNIX đều cho phép tạo ra một số các tiến trình bất kỳ và chúng được lập lịch cho những bộ xử lý thích hợp

201

1. LẬP TRÌNH BỘ NHỚ CHIA SẺMột vài chú ý (2/4) Một vài chú ý (2/4)

5.Về nguyên tắc, chương trình là tập các tiến trình và việc viết chương trình là độc lập với các bộ xử lý, việc phân chia các tiến trình cho các bộ xử lý là công việc của hệ điều hành..

6. Trong những hệ thống đa nhiệm như UNIX, số bộ xử lý và số các tiến trình không nhất thiết phải bằng nhau. Nhưng nên tổ chức một tiến trình có một BXL đảm nhiệm để tiện việc lập lịch. 7. Một vấn đề quan trọng cần xem xét khi XLSS là cần bao nhiêu

nút (BXL) để chương trình song song thực hiện hiệu quả nhất?

8. Nhiều chương trình được xây dựng phụ thuộc vào một cấu hình xác định. Nói chung, loại chương trình phụ thuộc như vậy hình xác định. Nói chung, loại chương trình phụ thuộc như vậy là không tốt, vì khi bộ xử lý bận thì các tiến trình tiếp theo phải

chờ. 202

1. LẬP TRÌNH BỘ NHỚ CHIA SẺ Một vài chú ý (3/4) Một vài chú ý (3/4)

Trong môi trường lập trình chia sẻ bộ nhớ có hai ràng buộc quan trọng:

1.Một tiến trình có thể chờ một khoảng thời gian bất kỳ giữa hai lệnh cần thực hiện. Giả sử bộ xử lý Pthực hiện một chương trình có một 100 lệnh, bộ xử lý Qthực hiện chương trình có 10 lệnh và cùng bắt đầu thực hiện đồng thời. Thậm chí, tất cả các lệnh có tốc độ thực hiện như nhau cũng không thể nói rằng Q

sẽ kết thúc trước P.

2.Không thể xem các lệnh thực hiện là nguyên tố ở mức các ngôn ngữ lập trình. Ví dụ, một lệnh đơn giản như: a = a + 1sẽ là một dãy bốn lệnh trong ngôn ngữ máy. Mà ta cũng biết rằng, các tiến trình và hệ điều hành chỉ nhận biết được các câu lệnh của ngôn ngữ máy.

203

1. LẬP TRÌNH BỘ NHỚ CHIA SẺ Một vài chú ý (3/4) Một vài chú ý (3/4)

Trong lập trình bộ nhớ chia sẻ:

• Các tác vụ (tasks) sẽ đọc/ghi dữ liệu từ bộ nhớ chia sẻ qua không gian địa chỉ bộ nhớ chung (common address space) • Có những cơ chế khác nhau như (locks/semaphores) để điều

khiển việc truy nhập đến bộ nhớ chia sẻ

• Người lập trình không cần mô tả việc truyền thông dữ liệu, do đó việc viết chương trình sẽ đơn giản.

• Khó quản lý dữ liệu vì không can thiệp trực tiếp quá trình truyền dữ liệu.

204

1.1 LẬP TRÌNH BỘ NHỚ CHIA SẺ DỰA VÀO TIẾN TRÌNHTạo lập tiến trình Tạo lập tiến trình

Cú pháp: id = create_process(N);

Mục đích: tạo ra N tiến trình và một tiến trình cha để thực hiện câu lệnh đó. để thực hiện câu lệnh đó. (adsbygoogle = window.adsbygoogle || []).push({});

Như thế, có N+1tiến trình như nhau được tạo ra và mỗi giá trị của idđƣợc gán tƣơng ứng cho và mỗi giá trị của idđƣợc gán tƣơng ứng cho một tiến trình.

Một phần của tài liệu Parallel processing (Trang 34)