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ụ

27 662 1
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ụ

Đ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

ĐẠ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 NÂNG CAO Đề tài: LẬP TRÌNH BÀI TOÁN NGƯỜI SẢN XUẤT - NGƯỜI TIÊU THỤ GVHD: PGS. TS. Lê Văn Sơn HVTH: Trương Thị Minh Hậu LỚP : Khoa học máy tính-K24 (T9/2011) Đà Nẵng, tháng 05/2012 LTMNC: Bài toán người sản xuất – người tiêu thụ GVHD: PGS.TS Lê Văn Sơn PHỤ LỤC HVTH: Trương Thị Minh Hậu Trang 2 LTMNC: Bài toán người sản xuất – người tiêu thụ GVHD: PGS.TS Lê Văn Sơn LỜI MỞ ĐẦU Ngày nay, với tốc độ phát triển vượt bậc của ngành công nghệ thông tin, việc viết ra một ứng dụng để chạy trên các máy đơn cục bộ không còn được ưa chuộng và thích hợp nữa. Các chương trình và ứng dụng hiện đại phải được tích hợp và triệu gọi lẫn nhau trên mạng cục bộ và mạng Internet. Ngôn ngữ lập trình Java là một trong những lựa chọn tốt nhất để làm việc này. Java là một ngôn ngữ lập trình phổ biến hiện nay, ngoài những ứng dụng về lập trình cơ bản, nền tảng của Java còn hướng đến các ứng dụng về mạng máy tính như: giao tiếp trên mạng theo mô hình khách/chủ (client/sever), lập trình phân tán đối tượng, Đến với môn học lập trình mạng máy tính nâng cao, để tìm hiểu rõ hơn về vấn đề đồng bộ giữa các tiến trình trong hệ phân tán trên cơ sở trật tự hóa từng phần giữa các sự kiện, Tôi đã làm bài tiểu luận về lập trình bài toán người sản xuất - người tiêu thụ. Bài tiểu luận gồm những nội như sau: [1] Tìm hiểu về các đặc điểm của 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] Giải quyết bài toán người sản xuất - người tiêu thụ. [4] Chương trình ứng dụng và Demo. Qua đây, Tôi xin chân thành cám ơn thầy giáo PGS.TS. Lê Văn Sơn và thầy giáo Th.S Đặng Hùng Vĩ đã tận tình giảng dạy, hướng dẫn và cung cấp tài liệu để Tôi nắm được kiến thức và hoàn thành bài tiểu luận này. Đà nẵng, tháng 05/2012 Học viên thực hiện: Trương Thị Minh Hậu HVTH: Trương Thị Minh Hậu Trang 3 LTMNC: Bài toán người sản xuất – người tiêu thụ GVHD: PGS.TS Lê Văn Sơn CHƯƠNG I: ĐẶC ĐIỂM CƠ BẢN CỦA HỆ TIN HỌC PHÂN TÁN I.1. KHÁI NIỆM VÀ ĐẶC TRƯNG CỦA HỆ TIN HỌC PHÂN TÁN Hệ tin học phân tán là hệ thống không chia sẻ bộ nhớ và đồng hồ, khác với xu hướng phân tán các tính toán trên nhiều bộ xử lý của hệ thống đa xử lý. Như vậy, hệ tin học phân tán đòi hỏi hệ thống phần cứng của mình phải trang bị bộ nhớ cục bộ, các bộ xứ lý trao đổi thông tin với nhau thông qua hệ thống đường truyền như cáp chuyên dụng, đường điện thoại, cáp quang…. Một tư tưởng lớn của hệ tin học phân tán là phân tán hoá các quá trình xử lý thông tin và thực hiện công việc đó trên các trạm khác nhau. Đó là cơ sở căn bản cho việc xây dựng các ứng dụng lớn như thương mại điện tử, giáo dục điện tử, chính phủ điện tử, thư viện điện tử,…. Hiện nay, đứng trên những phương diện khác nhau, có thể có các định nghĩa khác nhau về hệ tin học phân tán, nhưng phổ biến hơn cả là định nghĩa sau: Hệ tin học phân tán (hệ phân tán) là hệ thống xử lý thông tin bao gồm nhiều bộ xử lý hay vi xử lý nằm tại các vị trí khác nhau và được liên kết với nhau thông qua phương tiện viễn thông dưới sự điều khiển thống nhất của một hệ điều hành. I.2 CUNG CẤP PHÂN TÁN Vì lý do ổn định và hiệu quả, chức năng cung cấp phải được phân tán trên nhiều trạm khác nhau. Sự hoạt động gắn bó với nhau giữa các chương trình cung cấp là rất cần thiết để đảm bảo cho hoạt động cung cấp được hoàn toàn chính xác. Một sự gắn bó của các chương trình cung cấp phân tán quản lý trên cùng một tập hợp các tài nguyên chỉ đạt được nếu tuân thủ các quy tắc sau, ở đây các thông điệp được hiểu là các yêu cầu hay khuyến nghị giải phóng tài nguyên. - Các bộ cung cấp bắt buộc phải thực hiện cùng một giải thuật. - Các bộ cung cấp đều nhận tất cả các thông điệp phát đi từ các tiến trình. - Các thông điệp phải được xử lý cùng một trật tự như nhau trong một chương trình cung cấp. I.3 HOẠT ĐỘNG TRONG CẤU TRÚC PHÂN TÁN Đối với hệ phân tán, các cấu trúc này cần phải: 1. Các hàm nguyên thuỷ liên lạc 2. Một số lượng nào đó hoạt động tiền xác định trên mỗi trạm. a. Tiến trình (Process): Toàn bộ hoạt động tuần tự được cung cấp xử lý. Đó chính là chương trình hoặc đoạn chương trình đang hoạt động. HVTH: Trương Thị Minh Hậu Trang 4 LTMNC: Bài toán người sản xuất – người tiêu thụ GVHD: PGS.TS Lê Văn Sơn b. Khái niệm thông điệp Thông điệp bao gồm tập hợp thông tin gắn bó với nhau theo 1 logic nào đó như bản ghi, tập tin … Hay nói cách khác Thông điệp là thực thể trao đổi trong các liên lạc. Trao đổi Thông tin. Truyền một thông điệp từ một trạm phát đến một trạm nhận. I.3.1 QUẢN LÝ CÁC HOẠT ĐỘNG PHÁT SINH TỪ XA Trên mỗi trạm có ít nhất một tiến trình gọi là tiến trình đánh thức đang chờ các thông điệp. Mỗi thông điệp đòi hỏi có sự ném ra hoạt động cần phải chứa các lai lịch của chương trình ần thực hiện, các giá trị tham số và tất cả các thông tin cần thiết cho trường hợp sử dụng liên hệ điều khiển trở về, tiếp tục. I.3.1.1 Tiến trình tạo ra khi yêu cầu: Khi có yêu cầu từ một trạm, thì tiến trình đánh thức được thành lập từ Server để đáp ứng yêu cầu truy vấn. I.3.1.2 Số lượng tiến trình theo kiểu tĩnh: Để tránh trường hợp phải điều khiển một lượng tiến trình biến thiên thì ta cần phải cố định số lượng tiến trình theo kiểu tĩnh. I.3.1.3 So sánh hai chiến lược: Số lượng cố định các tiến trình server có hai đặc điểm sau -Bộ nhớ có thể quản lý tĩnh vì số lượng bản sao chép của biến cục bộ được biết rất rõ. -Việc nạp vào bộ nhớ bị hạn chế cho số lượng các server kết hợp với mỗi loại hoạt động. Trường hợp tiến trình tạo ra theo kiểu động, các đặc tính này được mô tả như sau: 1.Các thông điệp được tiếp nhận nhanh nhất có thể vì nguyên nhân phân luồng các tiến trình trên các bộ xử lý. Một tiến trình không phải ở lâu trong trình trạng không được sử dụng khi mà các thông điệp đến, khi ta có nhiều bộ xử lý ta có thể thực hiện song song với các hoạt động khác. I.3.2 HỢP TÁC VÀ LIÊN LẠC 1.Việc đồng bộ giữa các thực thể trao đổi 2.Bản chất của các thông điệp 3.Lai lịch của đối phương 4.Các khả năng xử lý lỗi trong khi truyền thông. HVTH: Trương Thị Minh Hậu Trang 5 LTMNC: Bài toán người sản xuất – người tiêu thụ GVHD: PGS.TS Lê Văn Sơn I.3.2.1 Đồng bộ hoá giữa các thực thể trao đổi Có ít nhất hai hàm nguyên thuỷ cần thiết cho quá trình gởi và nhận một thông điệp. Việc gởi và nhận thông điệp được thể hiện dưới hai dạng sau: STT Dạng Giải thích 1 Không treo Tiến trình gửi thông điệp tiếp tục thực hiện các công việc của nó. 2 Treo Tiến trình gửi thông điệp chờ nhận lời khẳng định phía nhận đang ở trạng thái sẵn sàng nhận. I.3.2.2 Bản chất của thông điệp Một thông điệp nào đó sử dụng có hiệu quả trong quá trình xử lý truyền thông được xem như một dãy các ký tự có cấu trúc thống nhất được trạm phát ném ra và trạm nhận cũng có thể hiểu được. Xét trên giác độ ngôn ngữ lập trình, việc cải tiến các hàm nguyên thuỷ chính là gắn kiểu dữ liệu cho mỗi loại thông điệp, nhờ đó mà ta có thể kiểm tra tính tương thích giữa thông điệp gởi và thông điệp nhận. Nhằm đảm bảo một cuộc trao đổi gắn bó giữa các tiến trình với nhau, bên nhận cần phải có khả năng phân loại và lựa chọn các thông điệp gởi đến, trong hộp thư của mình, các thông điệp cần được xử lý theo đúng từng chức năng riêng biệt của nó. Ta sẽ thể hiện việc chờ đợi một thông điệp và khả năng lựa chọn này theo dạng sau: Lựa chọn Kiểu 1: V1:=cho_thong_diep Xử lý 1 Hoặc Kiểu 2: V2:=cho_thong_diep Xứ lý 2 Hoặc ………. Kiểu n: Vn:=cho_thong_diep Xử lý n Kết thúc chọn lựa Nếu có một thông điệp nào đó được chuyển đến mà nội dung thuộc về kiểu 1 thì việc xử lý được tiến hành theo Xử lý 1. Tương tự như vậy, ta có kiểu2, kiểu 3…, kiểu n. HVTH: Trương Thị Minh Hậu Trang 6 LTMNC: Bài toán người sản xuất – người tiêu thụ GVHD: PGS.TS Lê Văn Sơn I.3.2.3 Lai lịch của đối tác Các dạng hàm nguyên thuỷ liên lạc và khả năng của chúng sẽ thay đổi dựa vào việc xác định lai lịch của đối tác có chính xác hay không. I.3.2.4 Khả năng có lỗi trong quá trình liên lạc STT Tên gọi Giải thích 1 Ẩn NSD không hề biết các lỗi phát sinh trong quá trình khai thác. Các lỗi này thường được khắc phục ở mức trong 2 Điều khiển tường minh Các lỗi được điều khiển tường minh bởi người lập trình. Trong trường trường hợp này các tham số của chương trình (hàm nguyên thuỷ) cần phải chỉ ra lỗi, thời hạn cần thiết cho việc khắc phục và tên thủ tục bị lỗi khi gọi HVTH: Trương Thị Minh Hậu Trang 7 LTMNC: Bài toán người sản xuất – người tiêu thụ GVHD: PGS.TS Lê Văn Sơn CHƯƠNG II: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH JAVA VÀ KỸ THUẬT LẬP TRÌNH PHÂN TÁN RMI II.1 GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH JAVA Java được hãng Sun Microsystems công bố chính thức vào năm 1995 như là một công cụ mạnh mẽ để phát triển các ứng dụng trên Internet. Bộ công cụ phát triển Java (Java Development Kit – JDK) là một thư viện chuẩn, trong đó chứa các trình biên dịch, thông dịch, giúp đỡ, soạn thảo Từ phiên bản đầu tiên JDK 1.0, Java được cải tiến liên tục lên các phiên bản 1.1, 1.1.2, 1.1.5, 1.1.6, Bộ JDK 1.1.6 là lõi cho việc viết nên các IDE nổi tiếng như JBuilder 2.0, Symantec Cafe 3.0, Visual J ++ 6.0. Đến năm 1998, JDK 1.2 xuất hiện là một bước ngoặc với tên nền Java thứ 2 (Java 2 nd Platform), chứa đựng rất nhiều thay đổi so với JDK 1.1 (khả năng bảo mật cao hơn, tốc độ thực thi nhanh hơn, kết nối với các CSDL dễ dàng hơn ). Tháng 10/2003 phiên bản JDK 1.3 xuất hiện, và các phiên bản mới JDK 1.4, 1.5 tiếp tục ra đời. Các nhà sáng tạo Java đã tóm gọn các đặc điểm của Java trong câu: "Java là một ngôn ngữ đơn giản, hướng đối tượng, phân tán, thông dịch, mạnh mẽ, bảo mật, cấu trúc độc lập, khả chuyển, hiệu quả cao và linh động" Có nhiều IDE mạnh mẽ và tiện lợi cho việc lập trình Java như Java Workshop, JBuider, Visual J ++, trong đó JBuilder là một trình IDE mạnh, dễ dùng nên được chọn làm môi trường phát triển để xây dựng ứng dụng khai thác các tài liệu patent. II.2 TÌM HIỂU NGÔN NGỮ LẬP TRÌNH JAVA Java được thiết kế cho mục đích đa nền (viết chương trình không phụ thuộc vào bất kỳ hệ điều hành nào), 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. 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 HVTH: Trương Thị Minh Hậu Trang 8 LTMNC: Bài toán người sản xuất – người tiêu thụ GVHD: PGS.TS Lê Văn Sơn Trình soạn thảo Hình 3.1 Sơ đồ hoạt động của các trình Java HVTH: Trương Thị Minh Hậu Trang 9 LTMNC: Bài toán người sản xuất – người tiêu thụ GVHD: PGS.TS Lê Văn Sơn 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. II.3 KỸ THUẬT LẬP TRÌNH PHÂN TÁN RMI II.3.1 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. A2 A1 B1 B1_Stub B1_Skel Máy tính 1: máy khách Máy tính 2: máy chủ HVTH: Trương Thị Minh Hậu Trang 10 [...]... 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 ra nhiều sản phẩm mà người tiêu thụ tiêu thụ chưa hết 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 Trong bài toán ứng dụng này, người tiêu thụ sẽ lấy... trong bộ đệ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 HVTH: Trương Thị Minh Hậu Trang 16 LTMNC: Bài toán người sản xuất – người tiêu thụ GVHD: PGS.TS Lê Văn Sơn CHƯƠNG III: BÀI TOÁN NGƯỜI SẢN XUẤT - NGƯỜI TIÊU THỤ III.1 PHÁT BIỂU BÀI TOÁN Trong mô hình người sản xuất -người tiêu thụ, khả năng tiêu thụ là nguyên... JBuilder - Chạy ứng dụng Server - Chạy ứng dụng Client II.3.2.3 Liên hệ các đặc điểm phân tán đối với bài toán người sản xuất -người tiêu thụ: 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... số lượng hàng hoá sản xuất ra để nó không vượt quá số lượng tiêu thụ một giá trị lớn hơn 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 và NC là số lượng sản xuất ra và số lượng tiêu thụ tại thời điểm khởi tạo C chỉ tiêu thụ được sản phẩm, nếu sản xuất sản phẩm đó diễn ra, nghĩa là nếu NP-NC>0 Tương tự, P chỉ sản xuất một sản phẩm, nếu NP-NC . 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. 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 ra nhiều sản phẩm mà người tiêu thụ tiêu thụ chưa hết thì người sản xuất phải dừng.  BÀI TIỂU LUẬN Môn: LẬP TRÌNH MẠNG NÂNG CAO Đề tài: LẬP TRÌNH BÀI TOÁN NGƯỜI SẢN XUẤT - NGƯỜI TIÊU THỤ GVHD: PGS. TS. Lê Văn Sơn HVTH: Trương Thị Minh Hậu LỚP : Khoa học máy tính-K24

Ngày đăng: 31/01/2015, 22:53

Từ khóa liên quan

Mục lục

  • LỜI MỞ ĐẦU

  • CHƯƠNG II: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH JAVA VÀ KỸ THUẬT LẬP TRÌNH PHÂN TÁN RMI

    • II.1 GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH JAVA

    • II.2 TÌM HIỂU NGÔN NGỮ LẬP TRÌNH JAVA

    • II.3 KỸ THUẬT LẬP TRÌNH PHÂN TÁN RMI

      • II.3.1 KHÁI NIỆM LẬP TRÌNH PHÂN TÁN RMI (REMOTE METHOD INVOCATION)

      • II.3.2 KỸ THUẬT LẬP TRÌNH PHÂN TÁN RMI

      • CHƯƠNG IV: CHƯƠNG TRÌNH ỨNG DỤNG VÀ DEMO

      • KẾT LUẬN

      • TÀI LIỆU THAM KHẢO

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

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

Tài liệu liên quan