1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài tiểu luận Java lập trình mạng và mô phỏng thuật toán lamport

16 1,4K 4

Đ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

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 39,42 KB

Nội dung

Java là công nghệ cho phép tạo ra các phần mềm phân tán (distributed software). Đây là những phần mềm đặt trên máy chủ (server), được nạp về qua kết nối mạng và thực hiện trên máy khách (client). Sự ra đời của Java cho phép Web tiến xa hơn nữa, biến các trang Web tĩnh thành các ứng dụng sống động, có thể tương tác với người sử dụng.

Trang 1

TRƯỜNG ĐẠI HỌC QUẢNG NAM

Khoa Toán –Tin

BÀI TIỂU LUẬN

Đề Tài:Java lập trình mạng và mô phỏng thuật toán

Lamport

Môn: Nguyên lý Hệ Điều Hành

GVHD:Nguyễn Văn Khương

Thành viên nhóm:

Nguyễn Văn Tiền

Trần Ngọc Toàn

Nguyễn Viết Hiếu

Nguyễn Duy Khánh

Phan Văn Hà

Trang 2

I.Giới thiệu chung về Java lập trình mạng 3

1.Java là gì? 3

2.Cấu trúc của Java 3

3.Các trình tiện ích của JDK bao gồm: 4

4.Các đặc tính chính của Java : 7

II.Khái niệm về hệ tin học phân tán 9

1.Nguyên tắc xây dựng hệ phân tán 10

III.Đồng bộ hóa và xây dựng thuật toán Lamport 12

1.Cung cấp phân tán 12

2.Sắp xếp kiểu đóng dấu 13

3.Thuật toán Lamport 13

4.Ứng dụng thuật toán trong hệ phân tán 14

IV.Kết luận: 16

Trang 3

Nội dung nghiên cứu:

I.Gi i thi u chung v Java l p trình m ng ới thiệu chung về Java lập trình mạng ệu chung về Java lập trình mạng ề Java lập trình mạng ập trình mạng ạng

1.Java là gì?

Java là công nghệ cho phép tạo ra các phần mềm phân tán (distributed software) Đây là những phần mềm đặt trên máy chủ (server), được nạp

về qua kết nối mạng và thực hiện trên máy khách (client)

Mặc dù được tạo ra từ những năm 70, Internet chỉ thực sự quyến rũ các doanh nghiệp vào những năm 90 nhờ có sự ra đời của World Wide Web Web cho phép người sử dụng truy cập trực tiếp các thông tin trên Internet mà không cần phải học các lệnh phức tạp, cung cấp thông tin trực tuyến về nhiều lĩnh vực với hình ảnh, âm thanh,

Sự ra đời của Java cho phép Web tiến xa hơn nữa, biến các trang Web tĩnh thành các ứng dụng sống động, có thể tương tác với người sử dụng

Những lý do căn bản để mọi người chú ý đến Java là:

Cho phép viết các chương trình mạnh và tin cậy.

Xây dựng ứng dụng chạy được trên hầu hết các phần cứng và hệ điều hành khác nhau.

Phân phối các ứng dụng trên mạng với độ bảo mật và an toàn cao.

2.C u trúc c a Java ấu trúc của Java ủa Java

Sức mạnh Java có được chính là nhờ cấu trúc của nó Java được thiết kế nhằm mục đích trước hết là đơn giản hoá công việc của người lập trình

Kế đến, do nhu cầu chạy trên mạng, Java phải thật sự an toàn và ổn định, cũng như có khả năng làm việc được với nhiều kiểu phần cứng, phần mềm khác nhau

Trang 4

Cấu trúc ngôn ngữ Java thực sự đã đảm bảo được tất cả các tính năng trên

Cũng như các ngôn ngữ lập trình khác, Java cần một trình biên dịch để chuyển đổi mã lệnh cho người đọc (mã nguồn) sang ứng dụng thực thi được

Trình biên dịch Java chuyển chương trình nguồn Java thành các bytecode Các bytecode này chỉ có thể chạy được trên máy ảo Java (Java Virtual Machine -JVM)

Bộ Java Developers Kit (JDK) do Sun cung cấp bao gồm một số chương trình tiện ích cho phép bạn biên dịch, bắt lỗi và tạo tài liệu cho một ứng dụng Java

Hiện nay trên thị trường đang có rất nhiều môi trường phát triển Java của hãng thứ ba rất tiện lợi (như Visual J++, Symantec Cafe, ), nhưng tất cả các chương trình này đều dựa trên nền JDK

3.Các trình ti n ích c a JDK bao g m: ệu chung về Java lập trình mạng ủa Java ồm:

Javac (Bộ biên dịch Java): Làm nhiệm vụ chuyển mã nguồn Java sang bytecode.

Java (Bộ thông dịch Java): Thực thi các ứng dụng Java trực tiếp từ tập tin lớp (class).

appletviewer: Một trình thông dịch Java thực thi các Java applet từ tập tin HTML.

javadoc: Tạo tài liệu dạng HTML từ mã nguồn cùng với các chú thích bên trong.

Các trình tiện ích của JDK bao gồm:

Javac (Bộ biên dịch Java): Làm nhiệm vụ chuyển mã nguồn Java sang bytecode.

Trang 5

Java (Bộ thông dịch Java): Thực thi các ứng dụng Java trực tiếp từ tập tin lớp (class).

appletviewer: Một trình thông dịch Java thực thi các Java applet từ tập tin HTML.

javadoc: Tạo tài liệu dạng HTML từ mã nguồn cùng với các chú thích bên trong.

Jdb (Java debuger): Cho phép bạn thực hiện từng dòng trong chương trình, đặt các điểm dừng (breakpoint), xem giá trị các biến.

javah: Tạo ra tập tin header của C cho phép C gọi hàm Java hoặc ngược lại.

Javap (Trình dịch ngược java): Hiển thị các hàm và dữ liệu truy cập được bên trong một tập tin lớp đã dịch Nó cũng cho phép hiển thị nghĩa của bytecode

Quá trình biên dịch Java như sau: mã nguồn trong các tập tin *.java,

qua trình biên dịch javac được chuyển thành các bytecode Bytecode nằm trong tập tin *.class, được gọi là tập tin lớp (bởi mỗi tập tin chứa một lớp riêng biệt của Java) Các ứng dụng Java có thể bao gồm nhiều lớp khác nhau

Chú ý: Một lớp (class) của Java cũng giống hệt như một lớp trong C++.

Lớp chính là các biến dữ liệu và thủ tục kết hợp với nhau thành một khối

Khi thực hiện chương trình Java, máy ảo Java sử dụng trình nạp lớp (class loader) để đọc các bytecode từ đĩa hoặc kết nối mạng Các lớp được nạp sẽ phải đi qua trình kiểm tra lớp (class verifier) để chắc chắn rằng chúng sẽ không sinh ra các lỗi ảnh hưởng đến hệ thống khi thực thi

Trang 6

Quá trình kiểm tra này làm tăng thời gian nạp một lớp, tuy nhiên nó chỉ phải thực hiện có một lần mà thôi

Phần thực hiện (execution unit) trong máy ảo Java sẽ thực thi các lệnh quy định trong từng bytecode

Bộ phận thực thi đơn giản nhất là một trình thông dịch, chuyển đổi từng bytecode sang các thủ tục cần làm trên từng hệ thống Cách này rất chậm

vì trình thông dịch phải luôn tra nghĩa của bytecode mà nó thực thi

Để khắc phục nhược điểm này, người ta đưa ra trình biên dịch Just-in-time (JIT): Quá trình chuyển đổi từ bytecode sang mã lệnh riêng của từng hệ thống sẽ được làm luôn một lần ngay khi nạp chương trình, do

đó tăng được tốc độ đáng kể

Chương trình viết bằng Java có thể là ứng dụng riêng biệt (stand-alone application), hay là ứng dụng nhúng trên Web (applet) hoặc đồng thời cả hai

Applet là chương trình được nhúng trong trang Web, được đọc và thực hiện bởi trình duyệt hỗ trợ Java (Java-enabled Web browser)

Khi trình duyệt đọc tới trang Web này, applet sẽ được thực thi

Trái lại, một ứng dụng Java riêng biệt được chạy bằng dòng lệnh thì không cần thông qua trình duyệt Web

Một trình duyệt Web hỗ trợ Java (Java-enabled browser) có máy ảo Java riêng Hiện nay, các trình duyệt hỗ trợ Java như vậy khá nhiều: Netscape 2.0 trở lên, HotJava, Microsoft Internet Explorer 3.0 (bản beta 2 trở lên)

Các trang Web nhúng Java applet có chứa đường dẫn kiểu URL tới tập tin lớp chính của applet đó Trình duyệt chỉ việc khởi động máy ảo Java

và cung cấp cho trình nạp lớp đường dẫn này Chú ý rằng mỗi lớp đều

Trang 7

đưa ra tên của các lớp phụ nó cần, do đó trình nạp lớp phải nạp một số lớp phụ khác trước khi thực hiện chương trình

4.Các đ c tính chính c a Java : ặc tính chính của Java : ủa Java

Trong phần này, chúng ta sẽ điểm qua bảy đặc tính quan trọng khiến Java trở thành một công cụ phát triển mạnh, tin cậy

An ninh

An ninh là một vấn đề khó khăn hàng đầu mà người lập trình mạng gặp phải: Người sử dụng luôn e ngại 2 điều: Thứ nhất, thông tin họ gửi đi trên mạng có thể bị đọc lén và thứ hai hệ thống của họ có thể bị xâm nhập và phá hoại Cấu trúc an ninh của Java nhằm vào giải quyết đồng thời hai vấn đề trên.

Cấu trúc an ninh của Java dựa vào ba thành phần: Trình nạp lớp, trình kiểm tra lớp và trình quản lý an ninh (SecurityManager) Chúng ta đã biết rằng trình kiểm tra lớp làm nhiệm vụ đảm bảo chắc chắn chương trình Java được biên dịch đúng đắn, khi thực hiện sẽ không gây lỗi ảnh hưởng đến hệ thống cũng như không đụng chạm đến những dữ liệu

"riêng tư" trên máy khách hàng.

Bên cạnh đó, trình nạp lớp phân biệt rõ lớp nào đến từ mạng, lớp nào nằm ngay trên máy khách hàng Điều này ngăn lớp tới từ mạng "giả dạng" một lớp trên máy khách hàng để thực hiện các tác vụ bị cấm đối với lớp này Ngoài ra nó còn giúp tách biệt hoạt động của các lớp khác nhau tới từ các máy chủ khác nhau.

Giao diện lập trình ứng dụng chuẩn - Core API

Java cung cấp cho người lập trình một thư viện các hàm chuẩn, đó là Core API Các hàm chuẩn này được đặt trong các gói (package) - là tập hợp của các lớp có mối quan hệ với nhau (ví dụ như gói java.awt chứa

Trang 8

các lớp Abstract Windowing Toolkit, giúp người lập trình xây dựng ứng dụng với giao diện GUI trên các platform khác nhau).

Tương thích với nhiều kiểu phần cứng

Mã bytecode của Java có thể chạy trên hầu như mọi loại phần cứng và

hệ điều hành hiện nay như: PC, Macintosh cũng như các máy khác có chạy máy ảo Java

Một điểm nữa là thư viện các thủ tục chuẩn Java có chứa đầy đủ các hàm có thể dùng chung cho các platform khác nhau.

Đặc tính động và phân tán

Hệ điều hành Windows cho phép các chương trình sử dụng chung và nạp tự động các thư viện liên kết động DLL

Chia sẻ tập tin DLL làm giảm dung lượng bộ nhớ cũng như đĩa cần dùng và tăng tính cấu trúc của chương trình.

Java cũng có đặc tính này: các lớp được nạp tự động khi cần và nhiều chương trình có thể dùng chung một lớp Nó còn hỗ trợ đặc tính phân tán, tức là các phần của chương trình có thể nằm trên máy chủ lẫn trên máy khách hàng

Hướng đối tượng

Lập trình hướng đối tượng (OOP) là phương thức viết các ứng dụng dễ bảo trì, dễ nâng cấp và đặc biệt là có thể tái sử dụng các mã lệnh Java

là một ngôn ngữ hướng đối tượng, do đó nó có đầy đủ các đặc tính trên Ngoài ra, thư viện lớp Java cung cấp khá đầy đủ cho người lập trình để bắt đầu một dự án mới.

Đa luồng (multi-threads)

Trang 9

Các ứng dụng viết bằng Java có thể có nhiều tiến trình được xử lý cùng một lúc

Một ứng dụng đơn luồng chỉ có thể thực hiện một tác vụ tại một thời điểm: Giả sử ứng dụng đang bận lấy từ trên mạng xuống một tập tin mất vài phút, trong thời gian này ứng dụng không thể làm các việc khác như vẽ lại màn hình

Với ứng dụng viết bằng Java, bạn có thể tạo hai tiến trình song song làm việc: một tiến trình nạp tập tin, một tiến trình khác làm nhiệm vụ cập nhật màn hình.

Quản lý bộ nhớ và quá trình thu dọn “rác”

Quản lý bộ nhớ là một vấn đề khá phức tạp đối với C và C++ Trong thời gian thực hiện chương trình, người lập trình chịu trách nhiệm khởi tạo các vùng nhớ, sau khi dùng xong lại giải phóng chúng Chỉ cần một lỗi nhỏ trong đó cũng có thể làm cạn kiệt tài nguyên hay dẫn đến treo hệ thống.

Java đã loại bỏ gánh nặng này cho người lập trình Các vùng nhớ được

tự động giải phóng nếu như nó không tham chiếu đến bất kỳ đối tượng nào đang hoạt động.

II.Khái ni m v h tin h c phân tán ệu chung về Java lập trình mạng ề Java lập trình mạng ệu chung về Java lập trình mạng ọc phân tán

Hệ tin học phân tán là hệ thống xử lý thông tin bao gồm nhiều bộ xử lý hoặc các bộ xử lý nằm ở xa 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ự thống nhất của hệ điều hành

Hệ tin học phân tán là hệ thống không chia sẽ bộ nhớ và đồng hồ

Trang 10

Trong hệ tin học phân tán, các tính toán có thể được tính trên nhiều bộ vi

xử lý của hệ thống đa bộ xử lý Như vậy hệ thống tin học phân tán đòi hỏi hệ thống của mình phải trang bị bộ nhớ cục bộ

Các bộ xử lý trao đổi thông tin qua các hệ thống đường truyền khác nhau như là cáp chuyên dụng, bus trao đổi, đường điện thoại, cáp quang………

1.Nguyên t c xây d ng h phân tán ắc xây dựng hệ phân tán ựng hệ phân tán ệu chung về Java lập trình mạng

Chia sẻ tài nguyên: thực tế phát triển mạng máy tính đặt ra một vấn đề

là cần phải dùng chung tài nguyên Một tiến trình trên một trạm nào đó

có thể cung cấp tài nguyên dùng chung ở một trạm khác.

Liên lạc: khi các hệ thống đã được mắc nối với nhau, các thực thể trong

hệ có thể trao đổi thông tin với nhau.

Tin cậy: một trạm trong hệ bị sự cố không làm cho toàn hệ ảnh hưởng,

mà ngược lại công việc đó được phân cho các trạm khác đảm nhận Ngoài ra, trạm bị sự cố có thể tự động phục hồi lại trạng thái ban đầu trước khi có sự cố hay trạng thái ban đầu của nó.

Tăng tốc: đây là khái niệm mới về phân tán tải Một tính toán lớn nào

đó, nếu sử dụng một trạm thì thời gian cho kết quả lâu Tính toán này được chia nhỏ và thực hiện song song trên các trạm Điều này cũng cần thiết đối với các trạm quá tải.

Một trong những tư tưởng lớn của các hệ phân tán là phân tán hóa các quá trình xử lý thông tin và thực hiện các công việc đó trên các trạm xa nhau Đó là cơ sở để xây dựng các hệ ứng dụng lớn như thương mại điện

tử, giáo dục điện tử……

Liên lạc là thuật ngữ được sử dụng chỉ những tác vụ trao đổi thông tin giữa các thực thể thuộc hệ thống, trong đó có một thực thể gửi (trạm

Trang 11

phát) và một thực thể nhận (trạm nhận) Thông tin trong quá trình nhận

và gửi gọi là thông điệp

Khi một người sử dụng muốn liên hệ với các người khác trong mạng thì người ấy phải có địa chỉ mạng của những người cần liên hệ Địa chỉ mạng là hệ thống tên quy ước theo nguyên tắc xây dựng nhất định và không trùng nhau Trong mạng, một người sử dụng có thể sử dụng một trạm bất kỳ để liên lạc với người sử dụng khác mà họ muốn

Khi người sử dụng gửi thông điệp cho người khác ở xa, máy chủ nguồn nơi thông điệp xuất phát phải tra cứu vào đây để xác định hướng của luồng thông tin đến máy chủ đích, máy của thông điệp đến

Hệ thống hoạt động như vậy gọi là hệ phân tán Nhược điểm lớn nhất của hệ này là khi máy chủ bị sự cố dẫn đến không thể tra cứu thông tin cho các người sử dụng gắn liền với nó

Để khắc phục điều này người ta phân tán các hệ thống tra cứu trên máy chủ

Trong hệ phân tán, thời hạn truyền một thông điệp là hiệu số giữa thời điểm nhận và thời điểm truyền

Ta giả sử rằng: thời hạn này đủ lớn để so sánh với hệ tập trung, là một đại lượng biến thiên, và thời hạn đó ở cặp máy này khác với cặp máy khác

Từ đó ta có các hệ quả như sau:

Hệ quả 1: Ở một thời điểm cho trước, một xử lý đang thực hiện trên một

máy chỉ có thể biết trạng thái gần đúng của các máy khác Hệ quả này cho ta biết trong mạng không tồn tại đồng hồ chung.

Hệ quả 2: Trật tự nhận các thông điệp trên máy nhận có thể không

Trang 12

sự cố và các thông điệp có thể mất Giải pháp cho vấn đề này là đánh số cho tất cả các gói tin gửi đi kèm theo số đó cho máy nhận

Hệ quả 3: 2 máy giống nhau chứa thông tin hoàn toàn giống nhau lại

không bao giờ giống nhau về trạng thái

III.Đ ng b hóa và mô ph ng thu t toán Lamport ồm: ộ hóa và mô phỏng thuật toán Lamport ỏng thuật toán Lamport ập trình mạng

1.Cung c p phân tán ấu trúc của Java

Vì lý do ổn định và hiệu quả mà ta phải phân tán chức năng cung cấp 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

Thuật toán cung cấp cho hệ phân tán

Một sự hoạt động 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

Quy tắc

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 các chương trình cung cấp.

Quy tắc sau cùng nhấn mạnh đến sự thiết yếu phải có một trật tự duy nhất trên tập hợp các thông điệp của hệ Trật tự này có thể được thực hiện thông qua việc hợp lực giữa các tiến trình cung cấp giữa các tiến trình phát thông điệp

Trang 13

2.S p x p ki u đóng d u ắc xây dựng hệ phân tán ếp kiểu đóng dấu ểu đóng dấu ấu trúc của Java

Đóng dấu là hành vi gán giá trị nguyên cho một thông điệp nhằm ghi nhận thời điểm truyền trên cơ sở tham chiếu đồng hồ logic

Nội dung cơ bản của phương pháp này là trạm phát được gắn một giá trị gọi là dấu Giá trị này có tính chất thời điểm cho trạm phát thông tin và dựa vào đồng hồ logic cục bộ của chính trạm

Các đồng hồ này được lấy lại thông qua hội thoại giữa các trạm

3.Thu t toán Lamport ập trình mạng

Mỗi trạm s đều có trang bị công tơ với các giá trị nguyên gọi là Hs Đó chính là đồng hồ logic tăng lên giữa hai sự kiện kế tiếp Trạm e phát thông điệp ghi dấu E của mình dựa trên giá trị hiện hành của He Khi nhận được thông điệp, trạm nhận r cập nhật đồng hồ Hr riêng của mình

bằng giải thuật sau đây:

Nếu Hr, thì

Hr:=E+1

Chấm dứt

Sự kiện “Nhận thông điệp” lúc này được ghi nhận bằng giá trị của Hr.

Thuật toán này đảm bảo rằng thời gian nhận thông điệp là sau thời gian phát nó đi

Với thời gian này cho phép xác định một quan hệ trật tự toàn bộ mà ta

đã ký hiệu → và cho phép kiểm tra được các điều kiện trong C1 và C2

của phần trước

Một sự kiện a sinh ra trong trạm i và được đánh dấu bởi đồng hồ cục bộ gọi là Hi(a) Nếu a và b đều là hai sự kiện trên hai trạm i và j, ta luôn

luôn có qua hệ xác định như sau:

Ngày đăng: 24/11/2014, 10:09

TỪ KHÓA LIÊN QUAN

w