Tải bản đầy đủ (.pptx) (17 trang)

báo cáo tiểu luận môn lập trình mạng nâng cao lập trình bài toán người sản xuất - người tiêu thụ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (227.51 KB, 17 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TIỂU LUẬN
MÔN LẬP TRÌNH MẠNG
Đề tài:
Lập trình bài toán Người sản xuất - Người tiêu thụ

Giáo viên hướng dẫn: PGS.TS LÊ VĂN SƠN

Học viên thực hiện : TRƯƠNG THỊ MINH HẬU

Lớp : KHMT K24 (T9/2011)
ĐÀ NẴNG, THÁNG 05/2012
NỘI DUNG TRÌNH BÀY
Bài toán Người sản xuất - Người tiêu thụ
1
Liên hệ bài toán với các đặc điểm hệ phân tán
2
Tìm hiểu về ngôn ngữ lập trình Java
và kỹ thuật lập trình phân tán RMI
3
Demo chương trình
4
1
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
2/17
BÀI TOÁN NGƯỜI SẢN XUẤT - NGƯỜI TIÊU THỤ

Phát biểu bài toán:
- Trong mô hình người sản xuất - người tiêu thụ, số lượng


hàng hoá sản xuất ra hạn chế bởi khả năng tiêu thụ, không vượt
quá số lượng tiêu thụ một giá trị N.
- Người sản xuất P và người tiêu thụ C là hai người nằm trên
hai trạm cách xa nhau.
- Giả sử NP: thể hiện số lượng sản xuất ra và NC : số lượng
tiêu thụ tại thời điểm khởi tạo.
- C chỉ tiêu thụ sản phẩm, nếu sản phẩm sản xuất diễn ra khi
NP-NC>0
- Tương tự, P chỉ sản xuất sản phẩm, khi NP-NC<N
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ 3/17
Trong hệ thống tin học phân tán, có thể vận dụng hợp
lực theo kiểu sau:
Trên trạm P:
Đưa biến NP : thể hiện số lượng chính xác sản xuất đã có và biến NC’
ảnh của NC mà P gia tăng mỗi lần nhận thông điệp từ C báo tiêu thụ mới
đã diễn ra.
(nghĩa NC’ là số lượng tiêu thụ mà sản xuất đã biết)
Trên trạm C:
Đưa biến NC : thể hiện số lượng chính xác tiêu thụ đã có và biến
NP’ ảnh của NP mà C gia tăng mỗi lần nhận thông điệp từ P báo sản
xuất mới đã diễn ra.
(nghĩa NP’ là số lượng sản xuất mà tiêu thụ đã biết)
Vậy trên trạm C, điều kiện để tiêu thụ xảy ra là: NP’-NC >0
Vậy trên trạm P, điều kiện để sản xuất xảy ra là: NP-NC’<N
BÀI TOÁN NGƯỜI SẢN XUẤT - NGƯỜI TIÊU THỤ
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
4/17
Thực tế, có thể biểu diễn
NP=NP’+np, với np >=0, np là lượng sản phẩm đã sản xuất
bởi P mà C không biết.

NC=NC’+nc, với nc >=0, nc là lượng sản phẩm đã tiêu thụ bởi
C mà P không biết.
Ta có thể khái quát phương pháp này theo kiểu đồng bộ hoá
bằng công thức:

>
i
ii
KXC
Trong đó Ci và K là các hằng số.
Tức là đã sử dụng các biến trạng thái nguyên không lùi cho
phép sử dụng các bản sao gần đúng của các biến loại này.
Cơ chế đồng bộ gọi là các công tơ sự kiện thích hợp của các
vấn đề đặt ra.
BÀI TOÁN NGƯỜI SẢN XUẤT - NGƯỜI TIÊU THỤ
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ 5/17
Mỗi công tơ sự kiện được kết hợp với một nhóm đặc biệt các
sự
kiện E, xác định ba hàm nguyên thuỷ sau:
 Tang (E): Tăng nội dung công tơ lên một đơn vị, có nghĩa là một sự
kiện nhóm E đến.
 Truy_van(E): Cung cấp giá trị hiện hành của công tơ phối hợp với E.
 Cho(E,n): treo tiến trình gọi chừng nào giá trị công tơ còn nhỏ hơn n.
Với bài toán người sản xuất - người tiêu thụ, cần định nghĩa:
 Hai công tơ sự kiện NP’ và NC’, được khởi tạo = 0.
 Biến nguyên i, khởi sự là 0, là cục bộ đối với tiến trình người sản xuất
P và người tiêu thụ C.
BÀI TOÁN NGƯỜI SẢN XUẤT - NGƯỜI TIÊU THỤ
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
6/17

SƠ ĐỒ THUẬT TOÁN
True
Server
NC’ < (NP-N+1)
NP=0
NC’=0
Start
san_xuat
tang(NP’)
Stop
Client
NP’ < NC+1)
NC=0
NP’=0
Start
Tieu_thu
tang(NC’)
Stop
False
True
False
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
7/17
LIÊN HỆ CÁC ĐẶC ĐIỂM PHÂN TÁN
ĐỐI VỚI BÀI TOÁN
Các đối tượng sản xuất (P) và đối tượng tiêu thụ (C)
được phân tán trên các trạm máy tính khác nhau. Việc
quản lý các hoạt động được mô tả bởi 2 tiến trình mà
các tiến trình được mô phỏng ở đây là người sản xuất
và người tiêu thụ.

Người sản xuất sản xuất ra sản phẩm gởi người tiêu
thụ, ngược lại người tiêu thụ phải nhận sản phẩm sản
xuất từ người sản xuất. Nếu người sản xuất mà chưa
sản xuất thì người tiêu thụ phải chờ. Nếu người sản
xuất sản xuất ra nhiều sản phẩm mà người tiêu thụ
chưa tiêu thụ chưa hết sản phẩm thì người sản xuất
phải dừng lại và chờ người tiêu thụ tiêu thụ hết sản
phẩm rồi mới thực hiện sản xuất sản phẩm thứ N+1.
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
8/17
LIÊN HỆ CÁC ĐẶC ĐIỂM PHÂN TÁN
ĐỐI VỚI BÀI TOÁN
Trong bài toán ứng dụng này, người tiêu thụ
sẽ lấy hàng trong bộ nhớ đệm mà người sản
xuất đã sản xuất ra ở bộ đệm. Nếu trong bộ
đệm rỗng thì người sản xuất tiếp tục sản
xuất ra sản phẩm để bỏ trong bộ đệm.
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
9/17
TÌM HIỂU VỀ NGÔN NGỮ LẬP TRÌNH
Java được thiết kế cho mục đích đa nền, mã
của chương trình Java (tập tin .java) sau khi biên
dịch là một file nhị phân gọi là byte-code (tập tin
.class) và được triệu gọi thực thi trong máy ảo Java
(JVM – Java Virtual Machine). Việc dịch chương
trình Java sang bytecode có thể làm cho chương
trình chạy được trên nhiều môi trường hơn vì chỉ
cần có mỗi trình thông dịch JVM cho mỗi môi
trường.
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ

10/17
TÌM HIỂU VỀ NGÔN NGỮ LẬP TRÌNH
Hình 3.1: Sơ đồ hoạt động của các trình Java
Trình soạn
thảo
Các tập tin
nguồn .Java
Các tập
tin .class
Kết quả chương
trình
Trình
biên dịch
Trình thông
dịch
Tập tin nguồn Java là một tập tin văn bản thuần (text file),
tuân theo hệ thống cú pháp chặt chẽ của Java, gồm các chú
thích, khai báo lớp, biến, phương thức
Java là một ngôn ngữ thiên về lập trình mạng và Internet,
tích hợp khả năng đa luồng trong ngôn ngữ, và có thể dùng để
viết các chương trình ứng dụng không thua gì các ngôn ngữ
lập trình khác.
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
11/17
KHÁI NIỆM LẬP TRÌNH PHÂN TÁN

Khái niệm lập trình phân tán RMI
(REMOTE METHOD INVOCATION)
Lập trình phân tán là kỹ thuật lập trình sử dụng nguồn tài
nguyên phân tán trên mạng

Kỹ thuật RMI của Java cho phép cài đặt, sử dụng các đối
tượng phân tán trên mạng. RMI là cách thức giao tiếp giữa
các đối tượng Java có mã lệnh (phương thức, thuộc tính)
nằm trên các máy khác nhau có thể triệu gọi lẫn nhau. Hệ
thống Java RMI cho phép một đối tượng chạy trên máy ảo
Java gọi phương thức của một đối tượng đang chạy trên
máy ảo Java khác.
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
12/17
- Trên máy tính 1, các đối tượng A1, A2 gọi phương thức của
nhau, đó là gọi phương thức cục bộ của lập trình hướng đối
tượng. Đối tượng A1 gọi phương thức từ xa của đối tượng B1
trong lập trình phân tán.
-
Ứng dụng RMI gồm hai chương trình phân biệt liên lạc với
nhau: -Chương trình Server tạo các đối tượng từ xa, và đợi
Client gọi đến
-
Chương trình Client gọi các hàm của đối tượng từ xa đó.
Để các đối tượng trên 2 máy khác nhau gọi hàm của nhau thì
phải thông qua lớp trung gian ở 2 phía khách và chủ.
- Ở máy khách: Lớp trung gian gọi là Stub(lớp móc), có nhiệm
vụ đóng gói tham đối, chuyển tham đối qua mạng đến máy chủ.
-Ở máy chủ: Lớp trung gian gọi là Skeletion (lớp nối), nhận
tham đối và gọi hàm tương ứng. Kết quả hàm trả về nếu có,
được Skeletion trả về Stub
KHÁI NIỆM LẬP TRÌNH PHÂN TÁN
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
13/17
KỸ THUẬT LẬP TRÌNH PHÂN TÁN RMI

I. Xây dựng chương trình nguồn (code)

Đối với Server:
1. Tạo RMI Server: RMI Server bao gồm giao diện
(Interface) đưa ra định nghĩa các phương thức cho
phép Client gọi và các lớp thực hiện giao diện cần
thiết.
2. Tạo chương trình ứng dụng Server

Đối với Client:
Tạo chương trình ứng dụng Client

05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
14/17
II. Dịch chương trình (dùng lệnh Javac)
- Dịch Interface
- Dịch Server
- Tạo File.jar có chứa File.class cần cho ứng dụng
- Sử dụng trình rmic.exe trong thư mục Jdk\Bin để tạo 2 lớp
trung gian Stub.class và Skel.class
- Thiết lập biến môi trường Classpath chỉ đến thư mục chứa class cần
cho ứng dụng
III. Chạy chương trình
1. Khởi động bộ quản lý RMI
2. Chạy ứng dụng Server
3. Chạy ứng dụng Client

KỸ THUẬT LẬP TRÌNH PHÂN TÁN RMI
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
15/17

DEMO CHƯƠNG TRÌNH
Kết quả của bbProcducer
Kết quả của bbconsumer
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
16/17
17/20
Chân thành cảm ơn!
05/2012 Lập trình bài toán Người sản xuất - Người tiêu thụ
17/17

×