Sự truyền tải tác tử

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng xử lý mù trong tiền xử lý tiếng việt nói (Trang 30 - 35)

Sự truyền thông (communication)

Tác tử có một khả năng để truyền thông với các tác tử khác cƣ trú trong cùng môi trƣờng thực hiện hoặc với các tác tử cƣ trú ở những vùng khác, tác tử có thể gọi một phƣơng thức của một tác tử khác hoặc gửi cho nó một thông báo nếu đƣợc cho phép. Các tác tử hỗ trợ thông báo peer-to-peer và quảng bá.

1.12. Kết luận chương

Qua chƣơng này chúng ta đã tìm hiểu thế nào là tác tử di động cùng một số khái niệm, các yêu cầu cơ bản và kiến trúc của một hệ tác tử di động, các thuộc tính và hành vi, các chuẩn, các hệ thống liên quan đến công nghệ tác tử di động. Tác tử di động làm việc dƣới vai trò của một thực thể khác, nó có thể di trú ở các nút vật lý bên ngoài hay khả năng cộng tác, tƣơng tác, … Tác tử di động mang lại những lợi ích nhƣ làm giảm tải mạng, khắc phục sự trễ mạng, thích ứng nhanh, khắc phục tình trạng không thuần nhất, … từ đó nó có thể ứng dụng rộng rãi trên nhiều lĩnh vực nhƣ hỗ trợ cá nhân, phổ biến thông tin, thƣơng lƣợng, quan sát và thông báo, quản trị mạng và hệ thống, … Bên cạnh đó chƣơng này còn đề cập đến các vấn đề an toàn, bảo mật và một số thách thức liên quan đến tác tử di động. Tiếp tục sự thực thi Giải chuỗi tác tử Giải mã dữ liệu Nhận dữ liệu Di chuyển dữ liệu Mã hóa dữ liệu Chuỗi hóa tác tử Trì hoãn sự thực thi

Người gửi Người nhận

CHƢƠNG II

TÁC TỬ DI ĐỘNG VỚI JAVA

Hiện nay phần lớn các hệ thống tác tử di động đều đƣợc thực hiện trên Java. Trên thực tế Java là một sự lựa chọn đúng đắn khi xây dựng môi trƣờng hoạt động cho tác tử di động nhờ các đặc điểm của nó.

2.1. Các tính chất tác tử của Java

Java là ngôn ngữ lập trình hƣớng đối tƣợng hỗ trợ lập trình mạng [6]. Một số ngƣời gọi Java tốt hơn C++ vì nó bỏ qua nhiều đặc tính rắc rối và hiếm khi đƣợc sử dụng của C++, một số khác gọi Java là ngôn ngữ của Internet. Java có một số tính chất để trở thành một ngôn ngữ tốt cho lập trình tác tử di động.

Độc lập nền

Java đƣợc thiết kế cho việc vận hành trong những mạng không thuần nhất. Để cho phép một ứng dụng Java thực hiện bất cứ nơi đâu trên mạng, chƣơng trình biên dịch tạo ra mã byte trung lập kiến trúc, ngƣợc với ngôn ngữ máy không linh động, mã này sẽ đƣợc thực hiện trên một máy tính đã cho với sự có mặt hệ thống Runtime Java, ở đây không có những khía cạnh phụ thuộc nền của ngôn ngữ Java. Những kiểu dữ liệu thô đƣợc đặc tả nghiêm ngặt và không phải phụ thuộc vào bộ xử lý cơ bản hay hệ điều hành. Thậm chí những thƣ viện là những phần độc lập nền của hệ thống, nó cho phép chúng ta tạo ra một tác tử di động mà không cần biết kiểu máy tính nó sẽ thi hành trên đó.

Sự thực hiện an toàn

Java đƣợc sử dụng trên Internet và Intranet. Yêu cầu cho tính bảo mật gây một số ảnh hƣởng đến thiết kế, chẳng hạn Java có một mô hình con trỏ khử bỏ khả năng của việc ghi đè lên bộ nhớ và làm hƣ hỏng dữ liệu. Java không cho phép tạo ra một kiểu không hợp lệ hay bất kỳ kiểu số học con trỏ nào. Những chƣơng trình không thể truy cập giả mạo tới dữ liệu riêng tƣ trong những đối tƣợng mà chúng không đƣợc phép truy cập tới, điều này ngăn ngừa đa số các hoạt động của Virut, dù là ngƣời nào đó can thiệp vào với bytecode, hệ thống Runtime Java đảm bảo rằng mã sẽ không có khả năng để xâm phạm ngữ nghĩa học cơ bản của Java. Kiến trúc an toàn của Java làm cho nó trở nên an toàn một

cách hợp lý đối với host có tác tử không đƣợc tin cậy, vì nó không thể lục lọi host hay truy cập thông tin riêng tƣ.

Tải lớp động

Cơ chế này cho phép máy ảo tải và định nghĩa những lớp khi thực hiện. Nó cung cấp một vùng định danh bảo vệ cho mỗi tác tử, nhƣ vậy cho phép các tác tử thực hiện độc lập và an toàn với nhau. Cơ chế tải lớp trong các lớp dễ mở rộng và có khả năng đƣợc tải qua mạng.

Lập trình đa luồng

Các tác tử bằng sự định nghĩa tự trị. Đó là, một tác tử thực thi độc lập với những tác tử khác cƣ trú trong cùng một vùng. Việc cho phép mỗi tác tử thực hiện trong quá trình ít quan trọng cũng đƣợc gọi là một luồng của sự thực thi, là một cách cho phép những tác tử xử sự tự trị. May mắn là Java không chỉ cho phép việc lập trình đa luồng, mà còn hỗ trợ một tập hợp của những nguyên thủy đồng bộ hóa đƣợc xây dựng vào trong ngôn ngữ. Những nguyên thủy này cho phép sự tƣơng tác tác tử.

Sự chuỗi hóa đối tượng

Một đặc tính cơ bản của tác tử di động là chúng có thể đƣợc chuỗi hoá và ngƣợc lại. Tiện lợi của Java là cung cấp một cơ chế chuỗi hóa có thể thể hiện trạng thái của một đối tƣợng trong một chi tiết đầy đủ dạng chuỗi cho một đối tƣợng sẽ đƣợc xây dựng lại sau đó. Dạng chuỗi của một đối tƣợng phải có khả năng để xác định lớp Java từ trạng thái của đối tƣợng đƣợc xử lý và sẽ khôi phục trạng thái trong một thể hiện mới.

Những đối tƣợng thƣờng tham chiếu tới những đối tƣợng khác. Những đối tƣợng khác đó phải đƣợc xử lý và khôi phục tại cùng thời gian để bảo trì cấu trúc đối tƣợng. Khi một đối tƣợng đƣợc xử lý, tất cả những đối tƣợng trong đồ thị có liên quan từ đối tƣợng cũng đƣợc xử lý.

Phản xạ

MãJava có thể khám phá những thông tin về những lĩnh vực, phƣơng pháp, cấu trúc của những lớp đƣợc tải và có thể sử dụng phản xạ những lĩnh vực, những phƣơng pháp và những cấu trúc vận hành trên những bản sao cơ bản của nó trong những đối tƣợng, tất cả ở bên trong những giới hạn an toàn. Phản xạ cung cấp nhu cầu cho những tác tử để linh hoạt cho chính nó và những tác tử khác.

Dù hệ thống ngôn ngữ Java rất thích hợp để tạo ra những tác tử di động, nhƣng nó cũng có một số khuyết điểm quan trọng. Những khuyết điểm có thể xảy ra trong một số lĩnh vực nhỏ nhƣng cũng có một số khuyết điểm nghiêm trọng hơn và có những sự liên quan cho thiết kế nhận thức toàn bộ và sự triển khai của những hệ thống tác tử di động trên nền Java.

Sự hỗ trợ không tương xứng cho việc điều khiển nguồn tài nguyên

Hệ thống ngôn ngữ Java không cho chúng ta kiểm soát những tài nguyên tiêu dùng bởi một đối tƣợng Java. Chẳng hạn, một tác tử có thể bắt đầu vòng lặp và bỏ đi một số chu trình xử lý. Tác tử có thể cũng bắt đầu tiêu thụ những tài nguyên bộ nhớ. Những vấn đề này liên quan đến đặc trƣng của sự tấn công an toàn đƣợc gọi là sự từ chối của dịch vụ. Sự tấn công của những tác tử di động theo kiểu đó là tác tử tụ lại vào trong một máy tính và tiếp quản tất cả những tài nguyên, làm cho chủ nhân của nó không điều khiển máy tính. Đáng tiếc là Java không cung cấp cho host những phƣơng pháp để giới hạn bộ xử lý và những tài nguyên bộ nhớ cấp phát bởi một đối tƣợng đã cho hay luồng. Một vấn đề liên quan đến khả năng của tác tử để cấp phát những tài nguyên ngoài đối với chƣơng trình, chẳng hạn bởi những file mở, những socket và tạo ra những cửa sổ. Sự định vị tác tử của những nguồn tài nguyên này có thể đƣợc điều khiển nhƣng một lần tác tử sẵn sàng đƣợc gửi đi tới host khác, những tài nguyên này đƣợc giải thoát. Tuy nhiên, khó để làm điều này, bởi vì không có cách trói buộc những tài nguyên nhƣ vậy tới một đối tƣợng xác định.

Không có sự bảo vệ nào của những vấn đề tham chiếu đến

Những phƣơng thức dùng chung của một đối tƣợng Java có hiệu lực tới mọi đối tƣợng có một sự tham chiếu tới nó. Từ đó không có khái niệm của sự tham chiếu đƣợc bảo vệ, một số đối tƣợng đƣợc cho phép truy cập tới một tập hợp lớn hơn những phƣơng thức dùng chung trong giao diện đối tƣợng Java so với những cái khác, đây là điều quan trọng cho tác tử. Ở đó nó không thể trực tiếp theo dõi và kiểm soát những tác tử khác đang truy cập những phƣơng thức của nó. Chúng ta thấy rằng một sự thực hiện và giải pháp cho vấn đề này là chèn một đối tƣợng Proxy giữa ngƣời gọi và đối tƣợng đƣợc gọi để điều khiển truy cập. Điều này không chỉ cung cấp sự bảo vệ của những sự tham chiếu, nó cũng đƣa ra một giải pháp tới vấn đề đƣợc đề cập trong mục kế tiếp và cung cấp sự trong suốt định vị nói chung.

Không có quyền sở hữu đối tượng của những sự tham chiếu

Không ai sở hữu những sự tham chiếu tới một đối tƣợng đã cho trong Java. Với một tác tử, điều này có nghĩa rằng chúng ta có thể lấy luồng của sự thực hiện đi từ nó, nhƣng rõ ràng chúng ta không thể làm mất hiệu lực chính tác tử (đối tƣợng). Đây là một nhiệm vụ cho ngƣời thu thập đƣợc tự động hóa. Hiện tại, ngƣời thu thập sẽ không cải tạo bất kỳ đối tƣợng nào cho đến khi tất cả các sự tham chiếu tới đối tƣợng đã đƣợc làm mất hiệu lực, vì thế nếu tác tử khác có một sự tham chiếu tới tác tử của chúng ta, nó sẽ bắt buộc mở một bƣớc nhảy cho tác tử này để giữ cho tác tử sống trở lại. Mọi thứ chúng ta có thể làm là cảnh báo chống lại cho những sự tham chiếu trực tiếp tới tác tử trong Java.

Không có sự hỗ trợ nào cho sự bảo tồn và sự tiếp tục lại của trạng

thái thực hiện

Hiện tại, trong Java không thể khôi phục trạng thái thực hiện đầy đủ của một đối tƣợng. Thông tin nhƣ tình trạng của bộ đếm chƣơng trình và ngăn xếp khung là thƣờng xuyên bị cấm cho các chƣơng trình Java. Bởi vậy, với một tác tử di động để tiếp tục lại đúng cách một sự tính toán trên một host từ xa, nó phải phụ thuộc vào giá trị thuộc tính bên trong và những sự kiện bên ngoài trực tiếp đến nó. Một sự tự động đƣợc nhúng vào có thể theo dõi những hành trình của tác tử và bảo đảm rằng những tính toán đƣợc dừng và tiếp tục đúng cách.

Với những đặc điểm thuận lợi Java giúp xây dựng hệ thống tác tử di động dễ dàng hơn:

- Để các tác tử di động có thể di chuyển đƣợc trong môi trƣờng đa dạng, mã chƣơng trình của tác tử di động phải đƣợc biểu diễn bằng ngôn ngữ độc lập với phần cứng. Đặc tả của JVM (Java Virtual Machine) đƣa ra khái niệm chƣơng trình bytecode không phụ thuộc vào bất cứ kiến trúc phần cứng nào. Do đó sử dụng bytecode để biểu diễn mã chƣơng trình giúp tác tử di động có khả năng di chuyển, một khả năng nền tảng của tác tử di động.

- Cơ chế chuỗi hóa cho phép lƣu giữ trạng thái tính toán của tác tử trƣớc khi tác tử di chuyển tới một môi trƣờng khác và khôi phục lại trạng thái của tác tử để tác tử có thể tiếp tục thực hiện trong môi trƣờng mới.

- Trong các hệ thống tác tử di động, nhiều tác tử và các thành phần dịch vụ có thể hoạt động song song nên hệ thống tác tử di động phải là môi trƣờng đa luồng.

- Tính chất tải lớp động của Java giúp cô lập những lớp giữa các hệ thống tác tử di động cũng nhƣ giữa các tác tử.

2.2. Mô hình Aglet [2]

Aglet Workbench phản chiếu mô hình applet trong Java. Mục đích sẽ mang hƣơng vị của tính di động tới applet. Thuật ngữ Aglet là đƣợc kết hợp bởi từ

Agent và applet.

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng xử lý mù trong tiền xử lý tiếng việt nói (Trang 30 - 35)