Bài thực hành số 4 Lập trình shared memory

3 4 0
Tài liệu đã được kiểm tra trùng lặp
Bài thực hành số 4 Lập trình shared memory

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

Thông tin tài liệu

Bài thực hành số Lập trình shared memory Ghi chú:  Sinh viên nộp trang web: www.cse.hcmut.edu.vn/portal  File nộp đặt tên là: lab4.tar.bz2 (sử dụng lệnh make pack)  Hạn chót nộp bài: 11:59PM 12/08/2010  SV chỉnh sửa source code mẫu thấy cần thiết  Mọi gian lận nhận điểm KHÔNG bị phát Giới thiệu 1.1 Mục tiêu Viết chương trình C Linux để tính tổng thừa số nguyên tố số nguyên sử dụng kỹ thuật lập trình shared memory semaphore 1.2 Kiến thức cần biết  Lập trình C Linux  Lập trình multiprocess  Lập trình semaphore  Lập trình shared memory  Makefile 1.3 Mơ tả chương trình Đầu vào (Input) chương trình:  Các số nguyên Đầu (Output) chương trình:  Tổng tất thừa số nguyên tố tất số ngun Hiện thực chương trình cách sử dụng vùng nhớ chia sẻ (shared memory) để chia sẻ thơng tin q trình sử dụng semaphore để giải vấn đề đụng độ vùng nhớ chia sẻ (2 process khơng thể đồng thời ghi liệu lên vùng nhớ chia sẻ) 1.4 Ý tưởng thực chương trình  Khi chạy, chương trình sử dụng hàm fork để tạo process mới: process cha process  Hai process hoạt động theo mơ hình work pool (minh họa hình vẽ bên dưới) 100 P0 57 14 14 P1 20 96  Các thơng số dịng lệnh lưu vào mảng (2 process cha truy xuất mảng này) Sau process cha sử dụng vùng nhớ chia sẻ để lưu thông tin chia sẻ  Vùng nhớ chia sẻ gồm có số ngun, số mơ tả số mảng xử lý, số ngun thứ hai mơ tả kết tính tốn đến thời điểm  Khi bắt đầu xử lý phần tử, process đọc số nguyên vùng nhớ chia sẻ để lấy số phần tử cần xử lý, sau process tăng số lên lưu giá trị số vào vùng nhớ chia sẻ  Tiếp theo process lấy phần tử cần xử lý từ mảng, xử lý phần tử tính tổng thừa số nguyên tố số nguyên  Sau đó, process cộng dồn tổng vào tổng tồn phần (giá trị số nguyên thứ vùng nhớ chia sẻ)  Process xử lý sau in giá trị tổng tồn phần hình  Để giải tranh chấp vùng nhớ chia sẻ, ta sử dụng biến semaphore để đồng trình đọc ghi vào vùng nhớ 1.5 Một số kỹ thuật lập trình 1.5.1 Xử lý tham số dịng lệnh Khi chạy chương trình người dùng nhập vào nhiều tham số, để lấy xác tham số này, ta xử lý hai tham số argc & argv hàm main: int main(int argc, char* argv[]) Với cách khai báo trên, agrc chứa số tham số mà người dùng nhập dịng lệnh (kể tên chương trình chạy) tham số argv chứa chuỗi tương ứng với tham số Ví dụ ta chạy lệnh: sum để tính tổng số ta truyền vào argv={“sum”,”2”,”5”,”7”,”9”} 1.5.2 Kỹ thuật lập trình shared memory Tham khảo slide lớp 1.5.3 Kỹ thuật lập trình semaphore Tham khảo slide lớp Yêu cầu Cú pháp chương trình: sumprime [số ngun dương]+ từ dịng lệnh, tham số argc=5 Tham số chương trình số ngun dương, chương trình phải có tham số để tính tốn Kết tính tốn in hình Ví dụ $ /sumprime 3 $ /sumprime $ /sumprime $ /sumprime 14 ... thuật lập trình shared memory Tham khảo slide lớp 1.5.3 Kỹ thuật lập trình semaphore Tham khảo slide lớp Yêu cầu Cú pháp chương trình: sumprime [số ngun dương]+ từ dịng lệnh, tham số argc=5 Tham số. .. đồng trình đọc ghi vào vùng nhớ 1.5 Một số kỹ thuật lập trình 1.5.1 Xử lý tham số dịng lệnh Khi chạy chương trình người dùng nhập vào nhiều tham số, để lấy xác tham số này, ta xử lý hai tham số. .. báo trên, agrc chứa số tham số mà người dùng nhập dòng lệnh (kể tên chương trình chạy) tham số argv chứa chuỗi tương ứng với tham số Ví dụ ta chạy lệnh: sum để tính tổng số ta truyền vào argv={“sum”,”2”,”5”,”7”,”9”}

Ngày đăng: 26/11/2022, 16:54

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan