1. Trang chủ
  2. » Luận Văn - Báo Cáo

xây dựng trình biên dịch cho ngôn ngữ wave

93 273 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Xây dựng trình biên dịch cho ngôn ngữ wave
Trường học Trường …………………. Khoa……………………….
Thể loại Báo cáo tốt nghiệp
Định dạng
Số trang 93
Dung lượng 4,29 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nhiều người sử dụng có thể độc lập phát triển các chương trình Wave hoặc liên kết trong cùng một hệ thống không gian, chia sẻ biến cục bộ biến này được liên kết với Node với các biến khá

Trang 2

- 2 -

Mục lục hình vẽ 5 

Khái niệm và cụm từ viết tắt 8 

CHƯƠNG 1.  GIỚI THIỆU 9 

1 1  Wave 9 

1 2  Các ứng dụng của Wave 10 

1 3  Nội dung khóa luận 11 

CHƯƠNG 2.  NGÔN NGỮ WAVE 12 

2 1  Giới thiệu về Ngôn ngữ Wave 12 

2 2  Node, Link và Không gian phân tán : Knowledge Network (KN) 12 

2 3  Tổ chức chung của ngôn ngữ Wave 13 

2 4  Cấu trúc dữ liệu cơ bản của Wave 14 

2 5  Biến Spatial và kiểu 14 

2 5 1  Task variables 15 

2 5 2  Environment variables 15 

2 6  Các hành động - ACTS 15 

2 6 1  Control acts 15 

2 6 2  Fusion acts: Các phép toán hợp nhất 17 

2 7  Rules – Các luật trong Wave 17 

2 8  Wave và mô hình lập trình truyền thống 19 

2 8 1  Sơ đồ luồng (SD) 19 

2 8 2  Wave và mô hình lập trình song song 20 

2 8 3  Wave và mô hình lập trình tuần tự 22 

CHƯƠNG 3.  XÂY DỰNG BỘ INTERPRETER 28 

3 1  Wave không có Rule 28 

3 1 1  Chi tiết ví dụ về các bước của Wave 28 

3 1 2  Thuật toán tổng quát cho Wave không có Rule 30 

Trang 3

- 3 -

3 2  Wave có Rule 31 

3 2 1  Ví dụ về Wave có Rule 31 

3 2 2  Thuật toán tổng quát cho Wave có Rule 33 

3 3  Hệ thống Track 36 

3 3 1  Rule dựa trên bộ điều khiển Track 36 

3 3 2  Thuật toán cho Bộ xử lý track 39 

3 3 3  Sự lan tỏa Track 40 

3 4  Tổng quan và kiến trúc của Wave Interpreter 41 

3 5  Các thành phần trong Wave Interpreter 42 

3 5 1  Wave và Wave Queue 42 

3 5 2  Knowledge Network 42 

3 5 3  Track Forest 43 

3 5 4  Parsing Unit 44 

3 5 5  Excution Processor 51 

3 5 6  TrackProcessor 52 

3 5 7  Communication Processor 56 

3 6  Quan hệ giữa các thành phần trong Wave Interpreter 57 

3 6 1  Luồng xử lý Wave 60 

3 6 2  Luồng xử lý các echo và điều khiển các rule 64 

3 6 3  Xây dựng trình biên dịch Wave trên ngôn ngữ Java 67 

CHƯƠNG 4.  THỰC HIỆN VÀ KẾT QUẢ 69 

4 1  Cài đặt 69 

4 1 1  Các yêu cầu về phần cứng 69 

4 1 2  Các yêu cầu về phần mềm 69 

4 2  Thử nghiệm 70 

4 2 1  Sử dụng chương trình 70 

4 2 2  Tạo lưới thực địa 71 

Trang 4

- 4 -

4 3  Di chuyển tự do 72 

4 3 1  Di chuyển tránh chướng ngại vật 75 

4 3 2  Di chuyển vòng quanh chướng ngại vật 77 

4 4  Di chuyển cùng nhau kiểu tịnh tiến 80 

4 4 1  Hiển thị hình ảnh 3D động bằng GnuPlot 80 

4 4 2  Hiển thị hình ảnh 3D của tệp tin VRML 81 

4 4 3  Hiển thị hình ảnh 3D với các góc nhìn khác nhau 82 

4 4 4  Hiển thị hình ảnh 3D VRML trên nhiều máy 83 

CHƯƠNG 5.  PHỤ LỤC 86 

5 1  JJTree 86 

5 1 1  Giới thiệu 86 

5 1 2  Các kiểu cấu trúc cây 86 

5 2  Thực thi trên ngôn ngữ simpleLang 87 

5 3  Xây dựng bộ parser cho ngôn ngữ Wave 89 

CHƯƠNG 6.  TÀI LIỆU THAM KHẢO 92 

Trang 5

- 5 -

Mục lục hình vẽ

Hình 1-1: Mô hình Wave 10 

Hình 2-1: Knowledge Network 13 

Hình 2-2: Thành phần của Spread Diagrams 20 

Hình 2-3: Tự động tách trong chuỗi Wave 21 

Hình 2-4: Một số trường hợp xử lý song song 21 

Hình 2-5: Wave xử lý song song có kèm theo Rule 22 

Hình 2-6: Xử lý tuần tự không Rule và có Rule 23 

Hình 2-7: Wave xử lý tuần tự có Rule 23 

Hình 2-8: một số trường hợp với mệnh đề If – else 24 

Hình 2-9: Một số trường hợp với mệnh đề If – else 24 

Hình 2-10: else – if với filter 25 

Hình 2-11: Else – if parallel 25 

Hình 2-12: Else – if với Rule 26 

Hình 2-13: Switch 26 

Hình 2-14: Câu lệnh lặp sử dụng Repetition 27 

Hình 2-15: Câu lệnh lặp sử dụng Recursion 27 

Hình 3-1: Wave có Rule 31 

Hình 3-2: Tạo track trong quá trình Wave thực thi và lan tỏa 1 

Hình 3-3: Trạng thái và biến frontal 1 

Hình 3-4: Gửi echo và tổng hợp các kết quả trạng thái, sau đó loại các Track Link, Track Node thừa 1 

Hình 3-5: Truyền Tail tới các Track Node ngoài cùng (Node lá) 1 

Hình 3-6: Kích hoạt Tail trong các Node lá 1 

Hình 3-7 Các thành phần của Wave Interpreter 41 

Hình 3-8: Wave và Wave Queue 1 

Hình 3-9: Knowledge Network 1 

Hình 3-10: Track Forest 1 

Trang 6

- 6 -

Hình 3-11: Excution Processor 52 

Hình 3-12: Sau khi nhận và xử lý CREATE 1 

Hình 3-13: Sau khi nhận và xử lý EXPANDH 1 

Hình 3-14: Sau khi nhận và xử lý ACTIVATE 1 

Hình 3-15: Sau khi nhận ECHO từ các nhánh con 1 

Hình 3-16: Sau khi xử lý ECHO nhận được 1 

Hình 3-17: Communication Processor 1 

Hình 3-18: Quan hệ giữa các thành phần trong Wave Interpreter 1 

Hình 3-19: Luồng xử lý giữa các thành phần trong Wave Interpreter 60 

Hình 3-20: Lan truyền echo lên trên 1 

Hình 3-21: Gửi tail cho các track con 1 

Hình 4-1 Chương trình hiển thị khi mới được chạy 70 

Hình 4-2 Chương trình WAVE khi bắt đầu chạy 71 

Hình 4-3 Lưới 5x5 71 

Hình 4-4 Cửa sổ output của Netbeans 72 

Hình 4-5 Vị trí đầu tiên 1-1 72 

Hình 4-6 Chạy ngẫu nhiên tới vị trí tiếp theo 73 

Hình 4-7 Các bước chạy ngẫu nhiên tiếp theo 1 

Hình 4-9 Dừng khi chạy tới đích 75 

Hình 4-8 Tiếp tục chạy ngẫu nhiên 1 

Hình 4-10 Di chuyển qua chướng ngại vật 1 

Hình 4-11 Vượt qua chướng ngại vật và về đến đích 1 

Hình 4-12 Di chuyển vòng quanh chướng ngại vật 1 

Hình 4-13 Vòng quanh chướng ngại vật 1 vòng thì dừng 1 

Hình 4-14 Di chuyển tịnh tiến cùng nhau 1 

Hình 4-15 Hình ảnh 3D trên máy thứ nhất sử dụng GnuPlot 81 

Hình 4-16 Hình ảnh 3D trên máy thứ hai sử dụng GnuPlot 81 

Hình 4-17 Tệp tin VRML được hiển thị sau khi được tạo bởi KN 82 

Trang 7

- 7 -

Hình 4-18 Các đối tượng hiển thị theo cách khác thi thay đổi Transform 83 

Hình 4-19 Một cách nhìn khác thi thay đổi Transform 83 

Hình 4-20 Hiển thị đối tượng đầu tiên trên máy 1 84 

Hình 4-21 Hiển thị đối tượng thứ hai trên máy 2 85 

Trang 9

- 9 -

CHƯƠNG 1 GIỚI THIỆU

Ở chương này chúng tôi trình bày tổng quan về công nghệ Wave nhằm trả lời các câu hỏi sau: Wave là gì? Nó khác và ưu điểm hơn so với các hệ thống bình thường ở chỗ nào? Các ứng dụng viết trên Wave sử dụng trong lĩnh vực gì?

1 1 Wave

Ngày nay, các hệ thống mở và mạng máy tính đang phát triển rất nhanh và được

cả thế giới quan tâm Hệ thống mạng máy tính kết nối công việc từ khắp nơi trên thế giới, mạng máy tính cũng giữ một khối lượng khổng lồ dữ liệu dịch vụ và thông tin Những công cụ tương tác không chỉ để tìm kiếm thông tin, dịch vụ hoặc file ngay trên máy tính mà còn được mở rộng về địa lý, không gian… và hoàn toàn mở trên Internet Một ví dụ điển hình ở đây chính là World Wide Web Tuy nhiên, hầu hết các mô hình

và công cụ lập trình phân tán thiếu đi khả năng linh hoạt để khai thác thông tin về cấu trúc mở một cách tự động

Những mô hình lập trình và hệ thống phân tán truyền thống thường dựa trên dữ liệu đóng Công việc được xử lý trong các ứng dụng phân tán thường phải được định nghĩa trước hoặc được gọi thông qua việc kích hoạt thủ tục, phương thức Phần lớn việc xử lý và tương tác thông qua việc trao đổi thông điệp chứa dữ liệu Ngoài ra hệ thống phân tán có thể cung cấp dữ liệu và dịch vụ chia sẻ Trong mạng máy tính, dịch

vụ và thông tin chỉ nằm ở các máy chủ ứng dụng (ví dụ như việc sử dụng của các tổ chức kinh doanh…) Tuy nhiên, phương pháp tiếp cận này vẫn chưa tối ưu Do đó, chúng ta sẽ cần phải tích hợp linh hoạt các máy chủ ứng dụng trong một hệ thống tổng thể và có cơ sở hạ tầng mở hơn nữa

WAVE không chỉ là một mô hình Wave còn là công nghệ dựa trên sự liên kết và điều khiển của các hệ thông lớn được hỗ trợ bởi mạng máy tính và viễn thông Wave cho phép linh động tạo các cấu trúc điều khiển và việc xử lý mạng tri thức (phân tán và song song) thông minh Các cấu trúc này có thể cung cấp khả năng tự tổ chức, phục hồi, tạo khuôn mẫu để kết nôai tới các hệ thống khác Công nghệ này dựa trên việc cài đặt nhiều tác nhân thông minh trên hệ thống phân tán để tối ưu hóa việc xử lý dữ liệu cục bộ thông qua việc lan tỏa thông tin ở các hệ thống nhỏ với nhau hoặc ở hai hệ thống nhỏ khác nhau Tất cả công việc trên đều được thông dịch qua ngôn ngữ Wave

Mã đệ quy được viết từ ngôn ngữ này có khả năng tự lan tỏa trong không gian hệ thống Không giống các hệ thống truyền thống, nó là một hệ thống dựa trên sự linh động của chương trình có thể tùy ý mở rộng về mặt địa lý và hỗ trợ nhiều máy tính trên mạng Trong Wave, chương trình có thể cho vào trong hệ thống bất kỳ chỗ nào Khi đó các chương trình này có khả năng lan tỏa qua mạng như virus Nhiều người sử dụng có thể độc lập phát triển các chương trình Wave hoặc liên kết trong cùng một hệ thống không gian, chia sẻ biến cục bộ (biến này được liên kết với Node) với các biến khác (được kèm theo sự duy chuyển của mã Wave) Nói cách khác:

• Wave là một ngôn ngữ, model đặc biệt và là công nghệ mới cho hệ thống song song, phân tán hay kết hợp các hệ thống đó với nhau

Trang 10

hệ thống quản lý truyền thống với công nghệ Wave Một vài ứng dụng như: xử lý máy móc, mô hình và kiểm soát trong mạng di động, tích hợp cơ sở dữ liệu phân tán Wave cũng có thể được gọi là “Điện thoại thông minh” với hàng loạt ứng dụng:

• Mô hình giao tiếp mạng di động

• Tích hợp hệ thống cơ sở dữ liệu phân tán

• Mô phỏng mạng lưới giao thông, phân tích và điều khiển

• Điều khiển phân tán mạng lưới hàng không một cách tự động giữa các vùng, miền

• Ứng dụng vào việc đo đạc địa lý một cách tự động

• Quản lý thông minh trong hệ thống viễn thông và mạng máy tính mở

• Điều khiển trong robot

Các ứng dụng trên Wave còn được thể hiện chi tiết và rõ ràng trong khóa luận tốt nghiệp của các bạn:

‐ Vũ Đức Tiệp và Đỗ Thế Chuẩn hai bạn đã đưa ra vấn đề cụ thể: Xây dựng

hệ thống mô phỏng và thực tại ảo bằng ngôn ngữ Wave

‐ Phí Hồng Thái và Phạm Minh Ngọc: Hệ thống phân tích mạng xã hội Yahoo!360 dựa trên nền tảng công nghệ Wave

Trang 11

- 11 -

1 3 Nội dung khóa luận

Trong các chương ở khóa luận này, chúng tôi đề cập những vấn đề sau:

Chương 1: Giới thiệu và trình bày tổng quan cũng như các ứng dụng của Wave Chương 2: Trình bày về cú pháp, ngữ nghĩa cách tổ chức chung của ngôn ngữ Wave Ngoài ra chúng tôi còn đưa ra một vấn đề nữa là: Wave và các mô hình lập trình truyền thống (tuần tự hoặc song song)

Chương 3: Trình bày về cách xây dựng hệ thống Interpreter cho Wave bằng cách tiếp cận từ lý thuyết tới việc tìm hiểu kiến trúc chung của hệ thống, các thành phần và quan hệ giữa các thành phần đó

Chương 4: Đưa ra các bài toán thực tế và kết quả đạt được

Chương 5: Phụ lục về JJTree

Chương 6: Tài liệu tham khảo

Trang 12

- 12 -

CHƯƠNG 2 NGÔN NGỮ WAVE

Trong phần này chúng tôi trình bày về cú pháp và ngữ nghĩa của ngôn ngữ Wave Đây là một ngôn ngữ đặc biệt cho phép tạo và xử lý thông tin trong không gian mạng theo hướng Chương trình viết bằng ngôn ngữ này có thể được coi như những thành phần linh hoạt, có khả năng di động và kết hợp với các thành phần riêng lẻ, phân tán khác Trong quá trình “di chuyển”, chương trình có thể mang theo dữ liệu đồng thời cập nhật vào dữ liệu lưu tại mạng KN Các chương trình mặc dù được xử lý song song nhưng vẫn có những cơ chế cho phép chúng phối hợp đồng bộ với nhau thông qua hệ thống các luật

Ở phần cuối chương này chúng tôi còn đề cập tới một vấn đề nữa: Wave và các phương pháp lập trình truyền thống (lập trình tuần tự và lập trình song song)

2 1 Giới thiệu về Ngôn ngữ Wave

Wave là một ngôn ngữ đặc biệt cung cấp khả năng thực thi mềm dẻo, đa người dùng trên hệ thống phân tán Quá trình thực thi của ngôn ngữ Wave giống như virus, tức là có khả năng nhân bản và lan tỏa qua mạng, thực thi phân tán mà không cần bất

kỳ sự điều khiển tập trung nào

Kiến trúc Wave mô tả quá trình xử lý phân tán qua việc tự định hướng luồng chương trình qua không gian dữ liệu phân tán có cấu trúc như một đồ thị hay được gọi

là Knowledge Network Các node trên mạng phân tán thuộc về một Wave Interpreter

nào đấy WI là thành phần có trách nhiệm thực thi trên từng bộ phận riêng lẻ của mạng, thao tác lên dữ liệu được lưu trữ trong các node.Trong khi di chuyển, những thành phần của mã Wave có thể tự nhân bản, phân chia hay được chỉnh sửa trong khi

vẫn duy trì sự trao đổi dữ liệu qua lại lẫn nhau

2 2 Node, Link và Không gian phân tán : Knowledge Network (KN)

Tất cả các node đều có địa chỉ duy nhất trong không gian phân tán bao gồm 2 thành phần: thành phần thứ nhất để phân biệt các node trong cùng một máy, và thứ hai

là để phân biệt các node giữa các máy khác nhau trong không gian mạng Node có thể

Trang 13

- 13 -

được truy cập qua các node khác một cách trực tiếp bằng Content hay bằng Address

của chúng hoặc qua quá trình mở rộng qua các link của KN, việc đặt tên cho link và

node nhằm phục vụ điều này Có hai kiểu nhảy qua lại giữa các node đó là direct hop

và surface hop để thực hiện việc nhảy tới 1 node hay có thể nhảy đến tất cả các node

khác – được dùng cho việc gửi quảng bá

Không giống với node, link của KN không thể truy xuất trực tiếp qua tên Dữ liệu lưu trữ trong link chỉ có thể nhận được hoặc thay đổi một cách cục bộ, trong quá trình di chuyển qua link hay khi đứng trực tiếp tại một node cụ thể nào đó Từ một node, cả nội dung và hướng của link có thể truy xuất trực tiếp

Ví dụ:

Hình 2-1: Knowledge Network

2 3 Tổ chức chung của ngôn ngữ Wave

Ngôn ngữ Wave đặc trưng cho quá trình lan tỏa song song trong không gian dữ liệu phân tán được biết là KN Do vậy cú pháp của ngôn ngữ miêu tả rõ quá trình hoạt động này:

trong đó các phần nằm trong [] là tùy chọn

Trang 14

- 14 -

Một chương trình Wave hay gọi đơn giản là Wave bao gồm sự kết hợp các tác

động lên KN gọi là các move – thành phần có thể thực hiện xử lý dữ liệu cục bộ tại

các Node của KN và mở rộng tới các Node khác Quá trình thực thi song song hay thực thi không theo thứ tự được tách biệt bởi dấu phẩy (,) phát triển một cách độc lập

từ cùng một Node trong KN Tập các moves độc lập gọi là zone, được tách biệt nhau

bởi dấu chấm câu (.), các thành phần này sẽ được thực thi một cách tuần tự

Ví dụ:

Ft={Fa=1;2;3} Fa+1 ^Ft.T=Fa

Các Rule trong Wave cung cấp cho Wave khả năng mở rộng trong không gian mạng, kết hợp cùng với các Wave khác Một ví dụ, các luật có thể tự động tách Wave

ra thành nhiều nhánh riêng biệt rồi sau đó phát triển chúng song song hoặc tuần tự trong KN, chúng có thể tạo ra hoặc mở rộng KN trong khi di chuyển Các Rule sẽ được làm rõ hơn trong phần sau

Một cách tổng quát, việc thực thi phần đầu của Wave (Wave’s Head) tại một vài Node có thể là nguyên nhân dẫn tới quá trình lan tỏa của Tail của chuỗi Wave (Wave’s Tail) tới 0 hay nhiều các Node khác– chúng ta sẽ gọi chúng là tập các Node tới được

(SNR)

Ví dụ:

• w1.w2.w3.w4 : cấu trúc của một chương trình Wave - sự nối tiếp của các

zones

• w1,w2,w3: zone đơn lẻ với tập các move độc lập, tất cả đều được thực thi

tại cùng một Node bắt đầu

• w1,w2.w3,w4: sự kết hợp của 2 kiểu trên

2 4 Cấu trúc dữ liệu cơ bản của Wave

Wave là ngôn ngữ được dùng cho quá trình xử lý trên mạng, nhưng không giống các ngôn ngữ khác, kiểu dữ liệu cơ sở không phản ánh việc đó Wave sử dụng kiểu dữ liệu cơ sở là Vector: là tập các string được phân tách nhau bới dấu chấm phẩy (;) Tất

cả các hoạt động của ngôn ngữ đều thực thi trên Vector Truy cập tới thành phần của Vector có thể thông qua chỉ số hay chính nội dung của các thành phần trong Vector – indexing và contenting Dữ liệu lưu trữ trong Vector là động, tức có thể thay đổi khi có

sự thêm bớt dữ liệu một cách tự động

Ví dụ:

• Vector chứa 1 phần tử: 3

• Chứa 6 phần tử: 1;2;3;4;5;6

• Chứa nhiều kiểu dữ liệu khác nhau: 34;NONE;25;;a;;;b

2 5 Biến Spatial và kiểu

Wave thao tác trên kiểu biến được gọi là spatial variable, chúng nằm phân tán và thường liên quan tới dữ liệu cục bộ tại các Node của KN hay có thể thuộc về một

Trang 15

9 Biến Nodal: các biến loại này được khai báo bắt đầu bằng ký tự N

9 Biến Frontal: các biến loại này được khai báo bắt đầu bằng ký tự F

2 5 2 Environment variables

Biến môi trường có những định danh và ý nghĩa khác nhau:

9 CONTENT (C): chứa content của Node hiện thời Giá trị của C luôn là string, việc thay đổi nội dung của C có thể được gán trực tiếp bằng giá trị nào đó hoặc NONE – xóa Node cùng với các Link liên kết với nó

9 ADDRESS (A): địa chỉ của Node hiện thời Luôn trả lại địa chỉ đầy đủ của Node nơi Wave đang đứng gồm định danh của Node trong máy và định danh của Node trong mạng Đây là biến chỉ đọc

9 PREDECESSOR (P): biến lưu địa chỉ của Node trước đó Wave đã đi qua

Nó chỉ thay đổi khi có sự di chuyển của Wave sang Node khác

9 LINK (L): chứa content của Link vừa mới đi qua

9 TERMINAL (T): một loại biến đặc biệt dùng để in ra giá trị tương ứng tại một đầu cuối nào đó

Ví dụ:

‐ Biến Nodal: N, Nhieu, Ntue

‐ Biến Frontal: Fpath, Ftemp…

‐ Biến môi trường: TERMINAL, LINK, L…

2 6 Các hành động - ACTS

2 6 1 Control acts

Các Act thực hiện các phép toán cơ bản bên trong move, dùng để thay đổi giá trị

các biến, thay đổi trạng thái hoạt động của wave Giá trị trả về gồm 3 loại chính sau:

‐ TRUE (2): thành công và cho phép Wave tiếp sau đó thực thi tại Node hiện thời

‐ DONE (1): thành công nhưng không cho phép Wave thực thi tiếp tại Node hiện thời

‐ FALSE (0): thất bại, loại bỏ Wave tại Node hiện thời

Control acts được phân loại như hop, filters, assignment, state genertator và code injection

Hop Được thực thi bằng toán hạng # Ta sẽ hiểu rõ hơn cách thực thi của Hop qua các Ví dụ sau:

Trang 16

- 16 -

• DIRECT # ANY, cách viết khác @#: nhảy tới tất cả các node khác trong

KN trên cùng máy tính từ một node nào đó

• -p#b: nhảy từ node hiện thời theo cung đi ra (-)p tới node b

• ANY#ANY hay #: nhảy qua tất cả các link tới tất cả hàng xóm của một node

• Và một số kiểu nhảy khác: x#ANY, ANY#x

• Để nhảy sang 1 node ở máy khác ta có cấu trúc: a#b$$`IP, trong đó IP là địa chỉ IP của máy đích

Filter Các filter gồm các phép toán sau đây: ~ (thuộc về), /~ (không thuộc về),

== (so sánh bằng), /= (so sánh không bằng), < (so sánh nhỏ hơn), <= (so sánh nhỏ hơn hoặc bằng), > (so sánh lớn hơn), >= (so sánh lớn hơn hoặc bằng) Giá trị trả về sẽ là TRUE hoặc FALSE Nếu giá trị trả về là TRUE, node hiện thời sẽ trở thành một SNR

và Wave tail sẽ tiếp tục phát triển từ node này

‐ Filter ~:

o Cú pháp: vector1 ~ vector2

o Chức năng: kiểm tra các phần tử của vector 1 có nằm trong vector 2 hay không

‐ Ví dụ: a;b ~ p;q;b;a sẽ trả về TRUE

‐ Filter /~: ngược lại toán tử ~

‐ Filter ==:

o Cú pháp: v1 == v2

o Chức năng: kiểm tra 2 vector có bằng nhau hay không

o Ví dụ: 2;3 == 2;3 sẽ trả lại TRUE

‐ Filter /=: ngược lại với ==

‐ Các filter còn lại: >,>=,<,<= có ý nghĩa toán học thông thường nhưng được thực hiện trên vector

Nếu 1 filter trả lại giá trị TRUE, node hiện tại sẽ trở thành SNR, ngược lại SNR

sẽ rỗng và chuỗi Wave sẽ dừng quá trình thực thi

Assignment

Toán tử gán = sẽ gán giá trị của toán hạng bên phải vào toán hạng bên trái Dữ liệu bên phải có thể là giá trị số, string, biến, vector Phép gán luôn trả lại kết quả là TRUE

Ví dụ: Na=1, Na=1;2;3, Na=Nb;2;3;Fc

State Generator

Các trạng thái trả về ở trên đều xảy ra sau một quá trình thực thi nào đó Đôi khi

ta muốn trực tiếp xác định trạng thái kết quả trả về để điều khiển luồng chương trình,

có một cách khác để thực hiện đó là dùng State Generator gồm 4 trạng thái: TRUE, DONE, FALSE, ABORT Cú pháp gồm tên trạng thái, theo sau là dấu !

Ví dụ:

w1.TRUE!.w2

Trong Ví dụ này w2 sẽ tiếp tục thực hiện

Trang 17

Ví dụ:

Ft={Fa=1;2;3} Fa+1 ^Ft.T=Fa

2 6 2 Fusion acts: Các phép toán hợp nhất

Các phép toán số học Bao gồm các phép toán +, -, *, / Nếu thực hiện chia cho

Các phép toán trên Vector đặc biệt Gồm 1 số phép toán sau:

‐ &: append, nối 1 Vector vào sau 1 Vector khác

o Ví dụ: v1 & v2 – v1, v2 là 2 Vector

‐ Toán tử hai chấm (:) : lấy giá trị tại 1 vị trí của Vector

o Ví dụ: Fa=3;2;3 Fa:1 sẽ trả lại 3

‐ Toán tử (::):

o Ví dụ: Fa=3;2;3 Fa::3 = 10 Kết quả Fa = 10;2;10

‐ |: splits, chia string ở toán hạng bên trái thành 1 Vector các string con bởi dấu phân cách ở toán hạng bên phải

o Ví dụ: `a+b+c’ | `+’ sẽ trả lại a;b;c

‐ %: join, ngược lại với | tức nó sẽ hợp các Vector con lại thành 1 string với phân cách là toán hạng bên phải

o Ví dụ: a;b;c % `+’ sẽ trả lại a+b+c

Gọi hàm bên ngoài (External calls) Thực hiện qua toán tử ?, gọi một hàm nào

đó của hệ thống với đầu vào là các tham số từ Wave truyền vào

2 7 Rules – Các luật trong Wave

Wave có thể phát triển độc lập, dị bộ và được xử lý song song trong không gian phân tán Tuy nhiên điểm mạnh của Wave là nó có hệ thống các RULE để quản lý và đồng bộ các các hành động RULE thiết lập các ràng buộc trong việc lan tỏa chuỗi Wave Thông qua RULE, hệ thống có thể thực thi nhiều lần một Wave, hay tiếp tục lan tỏa Wave nếu thỏa mãn một điều kiện nào đó, hoặc có thể chấm dứt toàn bộ wave

Trang 18

Ví dụ: SQ(Fa=1, Fa+1).T=Fa sẽ tạo ra 2 nhánh Fa=1 và Fa+1, thực hiện

tuần tự 2 nhánh này Kết quả cuối là 2

• OS_SEQUENCE: kích hoạt tất cả các nhánh tuần tự cho tới khi nó nhận được kết quả TRUE hoặc DONE trả về từ một nhánh nào đó

Ví dụ: OS(Fa=5.Fa>1, T=Fa) tạo ra 2 nhánh Fa=5.Fa>1 và T=Fa và thực

hiện tuần tự Nhưng do nhánh thứ nhất trả về TRUE nên không thực hiện tiếp nhánh thứ 2

• AND_SEQUENCE(AS): tương tự SQ nếu tất cả các nhánh đều trả về TRUE hoặc DONE, nếu 1 nhánh FALSE, trạng thái toàn bộ AS sẽ là FALSE

Ví dụ: AS(TRUE!, FALSE!) sẽ trả lại FALSE

• OR_PARALLEL(OP): kích hoạt các nhánh và thực thi chúng song song, nếu 1 nhánh trả về TRUE hoặc DONE, OP sẽ nhận TRUE Nếu không nhánh nào trả về TRUE hoặc DONE, OP sẽ FALSE

Ví dụ: OP(FALSE!, FALSE!, TRUE!) sẽ trả lại TRUE

• AND_PARALLEL(AP): như AS nhưng các nhánh thực thi song song

Ví dụ: AP(TRUE!, TRUE!, FALSE!) sẽ trả lại FALSE

• RANDOM(RN): chọn một nhánh ngẫu nhiên để phát triển tiếp

Nếu kết quả trạng thái trả về là DONE (SNR không rỗng) thì Tail của Wave sẽ bị loại

Trang 19

- 19 -

Luật CREATE(CR) cho phép Wave có khả năng mở rộng chính mạng KN trong khi lan tỏa trong không gian Chuỗi Wave chứa luật này vẫn phát triển như thông thường, chỉ có các bước nhảy là bị ảnh hưởng - có thể thay đổi chế độ của chúng từ chế độ lan tỏa (navigation) sang chế độ tạo mới (creation) Khi đó các node và link nếu chưa có sẽ được tạo ra

Có rất nhiều chi tiết quan trọng trong ngữ nghĩa của luật CR Nếu node của 1 bước nhảy tương ứng bằng địa chỉ của nó – điều này có nghĩa node đó đã tồn tại, tức các thành phần trong luật CR nếu chưa có sẽ được tạo ra, còn nếu đã tồn tại thì quá trình

CR sẽ không tạo ra node hoặc link mới

Ví dụ:

CR(@#a.+p#b.+q$$c`192.168.1.10’)

luật CR nên node a sẽ được tạo ra, sau đó tạo ra link có hướng +p tới node b, tạo node c và link +q nối từ a đến c trên máy 192.168.1.10

Release

Luật RL sẽ khởi tạo một Wave mới độc lập với chuỗi Wave ban đầu, mã của Wave mới này là phần nằm trong dấu ngoặc của RL, WE của Wave mới chính là WE của Wave ban đầu Wave mới được tạo ra được đưa vào Wave Queue để chờ xử lý Phần remainder của Wave ban đầu sẽ tiếp tục được thực hiện như bình thường

Ví dụ:

w1.RL(w2).w3

với biến môi trường thành Wave mới cho vào hàng đợi xử lý, chuỗi Wave tiếp tục thực thi là w3 cùng với biến môi trường của nó

2 8 Wave và mô hình lập trình truyền thống

2 8 1 Sơ đồ luồng (SD)

Wave là ngôn ngữ có khả năng xử lý cấu trúc dữ liệu không gian phân tán lớn Một thuộc tính quan trọng của Wave là các chương trình điều khiển luôn được liên kết với vị trí nào đó trong không gian dữ liệu (trong khi dữ liệu giữa các Node lan tỏa, hay giữa các SNR lan tỏa) Dữ liệu của cùng một Node có thể xuất hiện ở những nơi khác nhau trong cùng một SNR ở cùng một không gian cục bộ

Trang 20

- 20 -

Hình 2-2: Thành phần của Spread Diagrams

Các kiểu module của Spread Diagram là

2 8 2 Wave và mô hình lập trình song song

Wave biểu diễn theo SD trong mạng dữ liệu có thể được điều khiển hoàn toàn bởi Rule Các thành phần của chuỗi Wave tự tách thành các nhánh trước và trong quá trình thực thi

Ví dụ: Tách chuỗi Wave

m1, m2 , m3 m4, m5 Æ

(m1 m4, m5), (m2 m4, m5 ), (m3 m4, m5)

Trang 21

- 21 -

Hình 2-3: Tự động tách trong chuỗi Wave Ngoài ra, trong quá trình Wave thực thi, các thành phần của nó có thể được sao chép và thay thế mà dữ liệu không bị thay đổi (Như trong Hình 2-4: m2 được sao chép

và thay thế mà dữ liệu vẫn được giữ nguyên)

m1 m2 m3 Æ

m1 m2, m2, m2 m3 Æ

m1.(m2 (m3, m3, m3)), (m2 (m3, m3, m3)), (m2 (m3, m3, m3))

Hình 2-4: Một số trường hợp xử lý song song

Ở một ví dụ khác ta thấy rõ hơn Rule điều khiển chuỗi Wave như thế nào (Hình 2-5)

Trang 22

2 8 3 Wave và mô hình lập trình tuần tự

Việc cho phép phát triển không gian, xử lý song song và tự động trong môi trường phân tán, Wave có thể dễ dàng mô hình hóa một số chương trình xử lý tuần tự Giống các chương trình bình thương, truyền thống ở cùng một máy tính, Wave phải ở cùng một điểm trong không gian và chỉ có duy nhất một luồng được xử lý Chúng ta sẽ bàn về vấn đề này thông qua các ví dụ ở dưới đây

Trang 23

Mệnh đề s1 thực hiện và trả về kết quả đúng thì mệnh đề s2 sẽ được thực thi

Ở Hình 2-8: một số trường hợp với mệnh đề If – else: OR_SEQUENTIAL (( e s1),

s2)

Trang 24

- 24 -

và OR_ SEQUENTIAL (AND_SEQUENTIAL ( (e DONE

! ) , s1) s2)

Hình 2-8: một số trường hợp với mệnh đề If – else

Hình 2-9: Một số trường hợp với mệnh đề If – else

• Lựa chọn nhiều nhánh

o If – else với filter

Trang 27

- 27 - Hình 2-14: Câu lệnh lặp sử dụng Repetition

Hình 2-15: Câu lệnh lặp sử dụng Recursion

Trang 28

- 28 -

CHƯƠNG 3 XÂY DỰNG BỘ INTERPRETER

Trong chương này chúng ta bàn tới thuật toán và kỹ thuật trong việc xử lý tuần tự hoặc song song của Wave trong hệ thống mạng máy tính Sau đó chúng ta sẽ trình bày tiếp về cấu trúc chính trong bộ biên dịch và các hàm đơn vị điều khiển trên cấu trúc

đó, cũng như việc thực hiện chúng ở từng giai đoạn khác nhau Tất cả các thông tin được trình bày trong chương này coi như việc mô tả một khuôn mẫu của hệ thống Wave ảo, một kiểu điều khiển tự động trong không gian như: xử lý, mô phỏng hay điểu khiển trong những hệ thống lớn và mở

3 1 Wave không có Rule

Các chuỗi Wave được thông dịch từng bước lần lượt từ trái qua phải, ở các giai đoạn khác nhau Trong tất cả các giai đoạn thực thi, Wave luôn được gắn kết với Node nằm ở KN Sau khi việc xử lý của Head, Tail của Wave vẫn tiếp tục được hoạt động trong cùng một Node hoặc Node khác Những lúc như thế, Head cũng được sao chép chương trình điều khiển kèm theo ở cùng Node đó hoặc Node khác

3 1 1 Chi tiết ví dụ về các bước của Wave

Chú ý: Simple move: là 1 Head mà Head này không thể tách được thành Head

đơn giản hơn (không có dấu phảy trong Simple move)

Để hiểu rõ hơn về các thực hiện của Wave không đi kèm với Rule , ta xét một ví dụ

đơn giản khi thực hiện ở Node b hiện tại:

F = 3 r # a, (s # ANY T # z ), STAY N+F TERMINAL = CONTENT

Hay viết ngắn gọn: F = 3 r # a, (s # ANY T # z ), N+F.T = C

Ở các bước thực hiện khác nhau trong ví dụ trên, nếu Head của Wave không phải

là Simple move thì các Head này sẽ được tách ra thành các Simple move (các Simple

move cách nhau bởi các dấu phảy) Sau khi Head được xử lý thành các thành phần nhỏ

hơn (cách nhau bởi dấu phẩy), Tail của Wave sẽ được gửi tới Node tương ứng trong

trường hợp thành phần đó là Simple move hoặc Tail được sao chép và gắn với Wave

mà Head của Wave này là kết quả của một thành phần được chia ở Head trong Wave trước Do đó Wave mới luôn được xử lý độc lập

Trong trường hợp rất nhiều Wave được xử lý cùng một lúc, chúng sẽ được cho

vào trong Wave Queue để chờ xử lý

Ta phân tích lần lượt các bước thực hiện ở ví dụ trên

Trang 29

Với việc tách biến Frontal đi rồi, Head của Wave mới không thể thực thi

1 cách trực tiếp mà là sự kết hợp lại từ 3 nhánh (mà mỗi nhánh cách nhau bởi 1 dấu phẩy) Do đó chuỗi Wave ban đầu sẽ được tách thành 3 Wave con là

9 Wave 1: r # a N+F.TERMINAL = CONTENT

9 Wave 2: s # ANY T # z N+F.TERMINAL = CONTENT

9 Wave 3: N+F.TERMINAL = CONTENT Sau đó, biến Frontal F sẽ được ghép và xuất hiện ở 3 chuỗi Wave con, chúng sẽ được để vào trong hàng đợi Wave Queue

và Tail: N+F.TERMINAL = CONTENT

với biến Frontal đang được tách ra Nhìn vào Head của Wave sau khi

được tách ta thấy Head lúc này đã là 1 simple move và có thể được thực

thi 1 cách trực tiếp (mà không qua vòng lặp tách Head cho tới khi là

simple move) Hop thực thi từ Node hiện tại b qua Link r tới Node a

(Node a được chứa trên máy tính khác) Tail cùng với biến Frontal F được gửi tới Node a và cho vào hàng đợi Wave Queue của máy tính đang chứa Node a này Ở Node b tiếp tục thực thi chuỗi Wave 2

biến Frontal được tách ra Hop trong Head sẽ được thực thi và gửi tới tất

cả các Node liền kề qua Link s (trong lúc gửi, Tail cũng được gửi cùng)

Tất cả các Wave mới đều được kích hoạt trong hàng đợi ở máy tính chứa

Node của Wave đó Wave Queue chỉ lưu lại các simple move

6 Bước 6

Trang 30

- 30 -

N+F.TERMINAL = CONTENT

ở đây biến N=7 (cho trước) và F = 3 và CONTENT là b, lúc này ta có

TERMINAL là: b

3 1 2 Thuật toán tổng quát cho Wave không có Rule

Như trong ví dự ở trên, công việc của trình biên dịch Wave trong mỗi máy có thể được miêu tả bằng thuật toán tổng quát

Vòng lặp:

1 Lấy Wave từ Wave Queue và tách biến môi trường ra

2 Bỏ tất các dấu ngoặc đơn ở toàn bộ chuỗi Wave

3 Phân tích chuỗi Wave thành 2 thành phần: Head và Tail

4 Bỏ tất cả dấu ngoặc đơn ở toàn bộ phần Head

5 Nếu Head là Simple move

a Dừng Tail tạm thời

b Tất cả các công việc thực hiện trên move này sử dụng Frontal, Nodal

và biến môi trường Các trường hợp có thể xảy ra:

i Biến mới Nodal hoặc Frontal được tạo nếu thành phần chưa

có biến

ii Nếu trong chuỗi Wave có câu lệnh CREATE ở ngoài, một trong số act có thể được nhảy tới Node khác Trong trường hợp này Hop sẽ trả lại Link mới hoặc Node mới

iii Head có thể xóa Node hiện tại hoặc Link tới Node hiện tại bới việc gán CONTENT và LINK bằng NONE Xóa bỏ tất cả các Node hiện tại bằng cách xóa các Link liên kết tới Node đó

c Gửi các Tail của Wave, kèm theo biến Frontal tới Wave Queue ở trên

tất cả các SNR

Trong trường hợp khác

d Phân tích Head của Wave thành các thành phần riêng (các thành phần này cách nhau bởi dấu phẩy) Nếu mỗi thành phần riêng này vẫn còn các thành phần trong nó nhỏ hơn và cách nhau bởi dấu phẩy, thì công việc tách được tiếp tục cho tới khi các thành phần nhỏ trở thành Simple move

e Thay thế và gắn Tail vào mỗi thành phần được chia ở trên Do đó Wave mới sẽ nhận được các Tail này

f Đưa các chuỗi Wave thu được, kèm theo biến Frontal, tới hàng đợi Wave Queue của máy tính hiện tại

Trang 31

Hình 3-1: Wave có Rule

Trang 32

- 32 -

SNR thể hiện bởi các đường kẻ ngang Tuy nhiên ở hình vẽ này thì việc duy

chuyển của các biến Frontal chúng tôi không đưa ra

Việc xử lý ở chi tiết các bước như sau:

1 Bước 1

Luật AND_PARALLEL ở ngoài cùng thực thi, Head của Wave ban đầu tách

thành:

OR_SEQUENTIAL (w1, w2)

Và (OR_PARALLEL (w3, w4, w5) w6) cho vào hàng đợi Wave Queue.

Tail của Wave là w7 nằm ở máy tính hiện tại và vẫn kết nối với Rule

AND_PARALEEL Biến Frontal của Wave được tách ra

2 Bước 2

Hai thành phần nằm trong Wave Queue ở bước 1 là: OR_SEQUENTIAL (w1,

w2) và (OR_PARALLEL (w3, w4, w5) w6 được lấy ra, xử lý Dấu mở, đóng

ngoặc trong mỗi Rule bị loại bỏ

‐ Đầu tiên ta xử lý OR_SEQUENTIAL (w1, w2), luật này có 2 thành phần

là w1 và w2 Ở máy tính hiện tại, w1 sẽ được kích hoạt và cho vào Wave

Queue Biến Frontal sau khi được tách từ Wave sẽ được ghép vào

Thành phần thứ 2- w2 tạm dừng lại trong máy hiện tại

‐ Đến lượt (OR_PARALLEL (w3, w4, w5) w6, luật này có Tail là w6 W6

tạm dừng lại trong máy hiện tại nhưng vẫn tiếp tục kết nối với luật

OR_PARALLEL W3, w4, w5 là ba thành phần song song, sau khi được

tách riêng và kèm theo biến Frontal sẽ được kích hoạt rồi cho vào Wave Queue

3 Bước 3

W1, w3, w4 và w5 sau khi được kích hoạt sẽ phát triển song song và độc lập

trong KN Giả thuyết rằng, trong kết quả của w3, w4 và w5 có ít nhất một kết quả trả về là TRUE Khi đó kết quả của SNR1 sẽ trả lại TRUE, vì thế w6 sẽ được gửi tới SNR1 và được kích hoạt sau đó cho vào trong hàng đợi trên máy tính có chứa các Node SNR1 Tất nhiên, chúng có gắn các biến Frontal đi cùng Sau khi gửi w6 tới SNR1, luật OP sẽ không rằng buộc nó với tất cả các Wave được sao chép từ w6 Trong khi đó, Wave w1 có thể đã hoàn thành hoặc có thể

tiếp tục công việc của mình

4 Bước 4

Sau khi được lấy ra từ Wave Queue tương ứng ,w6 phát triển độc lập trên tất cả các Node ở SNR1, lúc này w1 vẫn đang làm việc song song với các Wave bản sao của w6 Sau khi w1 kết thúc (giả thiết w1 kết thúc, w2 sẽ được giữ lại bởi luật OS vì coi như w1 trả lại kết quả TRUE) và các Wave bản sao của w6 cũng

kết thúc (nếu không giả thiết, trên thực tế nó có thể kết thúc hoặc không) Lúc

này, SNR2 được thành lập

Trang 33

- 33 -

Từ tất cả các Node ở SNR2, w7 mà đã kết hợp với các luật AP được kích hoạt

và chỉ định sẽ cho vào Wave Queue trên máy tính hiện tại Sau đó nó ghép với

các biến Frontal mang tới từ Node trên SNR2 bởi thành phần 1 và thành phần 2

ban đầu của luật AP Ứng dụng của w7, khả năng cung cấp sự đồng bộ hóa cục

bộ của rất nhiều hệ xử lý phân tán được liên kết với nhau từ nhiều Rule khác

nhau (OS, OP…) Luật AP, sau khi gửi Tail của w7 tới SNR2 không rằng buộc của nó với các Wave được sao chép từ w7 Sau đó chúng kết thúc quá trình hoạt

động

5 Bước 5

Wave w7 không phụ thuộc vào các Node của SNR2, sau đó được đặt tại các

Node của SNR3

Vì vậy ta thấy Wave w1,w2…w7 có thể được đặt ở các vị trí khác nhau trong

cấu trúc và có thể được duy trì chúng cùng với Rule như đã miêu tả ở trên

3 2 2 Thuật toán tổng quát cho Wave có Rule

Phần trên chúng ta lấy một ví dụ về Wave có Rule nhưng chưa tách biệt và chi tiết Trong phần này chúng ta sẽ đi sâu hơn về các thuật toán của những Rule khác nhau

Branching Rules

Nếu các Head của Wave có nhiều nhánh (branching rule):

1 Phân tích Head Wave thành nhiều nhánh con, sau đó gắn các biến Frontal và Tail vào các thành phần đó

a Kích hoạt các nhánh nhận được (tuần tự hoặc song song, phụ thuộc vào kiểu của Rule) bằng việc đưa chúng vào Wave Queue

b Đợi kết quả trả về từ các nhánh và đưa ra quyết định xử lý

c Kết hợp và xử lý các kết quả cuối cùng của các nhánh để đưa ra trạng thái kết quả của mỗi Rule, và tổng hợp các kết quả ở các nhánh khác nhau trên

SNR, để suy ra được kết quả SNR trên Rule đó

2 Nếu kết quả trả về của Rule là TRUE:

a Gửi Tail của chương trình tới tất cả các Node trên SNR (đã ghép thêm tất

cả các biến Frontal của Node đó) bằng các nhánh của Wave, vì thế ta sẽ nhận được các Wave mới

b Kích hoạt các Wave mới độc lập này trong tất cả các Node SNR (bằng việc

đưa chúng vào Wave Queue)

c Kết quả cuối cùng được kích hoạt trong khi quyền điều khiển của nó được lan tỏa trên khắp các Tail của Wave Quyền điều khiển này được gửi tới

SNR Node

Trong trường hợp kết quả là DONE hoặc FALSE

d Kết quả trả về cuối cùng của Rule có thể DONE hoặc FALSE

Trang 34

- 34 -

Repetition:

Nếu Head của Wave được dùng bởi luật REPEAT:

1 Tạm dừng chuỗi Wave

2 Tách biến Frontal từ Wave

3 Với luật khác nhau ta tách được các chuỗi Wave từ Head của Wave ban đầu

4 Ghép các biến Frontal được lấy ra từ Wave, từ đó nhận được Wave mới

5 Kích hoạt Wave mới và cho vào hàng đợi trong máy tính hiện tại và đợi kết quả cuối cùng trả về (nơi mà Wave có thể lan rộng ra các máy khác)

6 Nếu kết quả cuối cùng trả về có trạng thái là TRUE:

a Sao chép và gửi tất cả các chuỗi Wave (mà bị trì hoãn ở bước 1) tới tất

cả các Node SNR (có thể trong cùng máy hoặc khác máy)

b Ghép chuỗi Wave này trong SRN Node với các biến Frontal được lấy ra

từ Node tương ứng

c Kích hoặc các Wave mới nhận được trong mỗi SNR Node bằng việc đưa chúng vào hàng đợi của máy tính đang chứa Node này

d Đưa quyền điều khiển vào các Wave đã được kích hoạt và kết quả cuối

cùng của Rule trả về từ Node hiện tại

Nếu Head của Wave được dùng bởi luật WAIT:

1 Tách các biến Frontal từ Wave

2 Lây chuỗi Wave từ Head và tạm dừng Tail

3 Ghép các biến Frontal vào Wave (Wave này lấy từ Head) Æ ta nhận được

Wave mới)

4 Kích hoạt Wave mới bằng cách cho chúng vào hàng đợi trong máy tính hiện tại và đợi kết quả trả về

5 Nếu một số nhánh của Wave trả về với trạng thái kết quả là ABORT:

a Kích hoạt ngay kết quả trả về từ các thành Tail của Rule-controlled

b Cài đặt trạng thái trả về trên Rule là FALSE

c Nếu kết quả trả về có trạng thái là TRUE:

Trang 35

g Đưa quyền điều khiển vào các Wave đã được kích hoạt và kết quả cuối

cùng của Rule trong Node hiện tại

h Trạng thái trả về của Rule là DONE hoặc FALSE nếu Tail của Wave bị

mất

Indivisible

Nếu Head của Wave được sử dụng bởi luật INDIVISIBLE:

1 Tách biến Frontal từ Wave

2 Lấy Wave từ Head và tạm dừng Tail của Wave

3 Khóa Node hiện tại từ 1 Node khác

4 Gắn biến Frontal, và đợi kết quả trả về

5 Mở khóa cho Node hiện tại để sử dụng bới Wave khác

6 Gửi Wave tới SNR Node, và gắn biến Frontal bởi Head của Wave

7 Kích hoạt các Wave nhận được trong tất cả SNR Node bằng cách cho chúng vào hàng đợi

8 Đưa quyền điều khiển tới Wave trong SNR

Create

Nếu Head của Wave được sử dụng bởi luật CREATE:

1 Tách biền Frontal từ Wave

2 Lấy Wave từ Head và cho tạm dừng phần Tail của Wave

3 Cung cấp trạng thái lan tỏa “Create”

4 Kích hoạt Head của Wave bằng cách cho vào trong hàng đợi ở máy tính hiện tại

Ở đây Head có thể tạo ra Node mới, Link mới và đợi kết quả trả về

5 Phân chia Tail của Wave thành các trạng thái như: create, navigation…

6 Gửi Tail của Wave tới tất cả các SNR Node Sau đó gắn thêm các biến Frontal

(được lấy từ các Node này) Kích hoạt Wave mới bằng cách cho vào hàng đợi

Trang 36

- 36 -

3 3 Hệ thống Track

Hệ thống điều khiển của Track có thể tự nhân bản, sao chép hoặc được tạo trong suốt quá trình Wave thực thi và di chuyển Tín hiệu echo sẽ được trả lại cho các Track này Hệ thống Track này được coi như là hệ thống cốt lõi trong việc điều khiển của ngôn ngữ Wave Nó có khả năng tự tạo ra các “cây Track” tương ứng mỗi lần Wave được lan tỏa và thực thi

Track tổng hợp kết quả và trả lại trạng thái cuối cùng trong KN Track cũng được xem như là “cây cấu trúc” tự động và lan tỏa trong KN hay giữa các máy tính Track không tự động xuất hiện khi Wave trả về kết quả cuối cùng Track chỉ phản ánh sự kiện quan trọng duy nhất khi mà nó cần cho việc điều khiển phân phối

Track Node luôn liên kết với mỗi KN Node Một hoặc nhiều Track Node có thể liên kết tới cùng một KN Node Mỗi một Track Link tương ứng với một KN Link;

chúng có thể phản ánh “direct hop” giữa các KN Node hoặc nhảy tới các nhánh điều

khiển khác nhau được chia ra bởi Rule

3 3 1 Rule dựa trên bộ điều khiển Track

Bây giờ chúng ta bàn đến vai trò của Track trong Wave (Wave này được bao bọc bởi Rule) Rule luôn luôn liên kết chặt chẽ với Track Node Tail (remaider) của Wave cũng liên kết với Node này Wave (có Rule) lan truyền qua KN KN lúc này chứa các biến Frontal của Wave và được cấu tạo từ các Hop hoặc các nhánh khác nhau (các nhánh này được tạo bảo Wave mới, Wave này lại có sự gắn kết với các Wave bố mẹ nó) Trong suốt quá trình phát triển của Wave, biến Nodal mới có thể được tạo và sẽ được gắn kết với Track Node hiện tại Việc tạo Track luôn kèm theo sự di chuyển, định hướng của Wave trong không gian mạng phân tán được thể hiện ở Hình 3-2: Tạo track trong quá trình Wave thực thi và lan tỏa

Trang 37

- 37 -

Khi sự lan tỏa của Wave kết thúc, hoặc ngừng lại, phần cuối của Track Node sẽ được giữ trong trạng thái tương ứng và kết nối với biến Frontal (Hình 3-3: Trạng thái

và biến frontal)

Từ các Node cuối (fringe - lá) của Track Node, những tin nhắn “Echo” được tạo

ra bởi kết quả trạng thái cuối cùng tương ứng sẽ được truyền lại thông qua Track Echo khác nhau sẽ mang các biến trạng thái khác nhau Kết quả cuối cùng trong mỗi Track Node chính là kết quả lớn nhất được trả về từ các Node con của nó Biến kết quả này

sẽ được gửi tới các Node cha của Node hiện tại trong “cây Track“

Rule Rest of wave

2

2 1

2 0

Merging states

in track Nodes

Echoes with states

Removing tracks

Hình 3-4: Gửi echo và tổng hợp các kết quả trạng thái, sau đó loại các Track

Link, Track Node thừa

Trang 38

- 38 -

Sau khi kết quả echo trả về Node cha Nếu kết quả trả về trong Track Node là 0 hoặc 1 (FALSE hoặc DONE) thì Track Node này và Link liên kết tới Node cha của nó

sẽ bị xóa Tuy nhiên, trong trường hợp Track Node được liên kết với biến Nodal thì nó

sẽ không bị ảnh hưởng gì (vẫn được giữ nguyên)

Các Track Node khác mà có kết quả trả về là TRUE và có liên kết với biến Nodal

sẽ tiếp tục giữ các biến Nodal và phân phối Wave (thể hiện ở Hình 3-4: Gửi echo và tổng hợp các kết quả trạng thái, sau đó loại các Track Link, Track Node thừa) Tail trong “Cây Track” bây giờ sẽ phục vụ như là một cơ sở hạ tầng phân tán đặc biệt Tail

sẽ được gửi tới các Track Node ngoài cùng (Node lá) Trên thực tế SNR sẽ được nhận

do Rule liên kết với cây Track Node

Sau khi tất cả các Track Node con nhận được Tail của Wave, Rule sẽ tự kết thúc

ở Node Tiếp theo Rule sẽ được chuyển tiếp tới các Node con của Node nó vừa kết thúc (Hình 3-5: Truyền Tail tới các Track Node ngoài cùng (Node lá))

Tail của Wave sẽ được chuyển tới các Node lá, nó sẽ phát triển độc lập và tự

động ở tất cả SNR Node Ví dụ như: Wave3, Wave4 trong Hình 3-6: Kích hoạt Tail trong các Node lá

Wave routing tracks

Variables binding tracks

FV

S N

R

Hình 3-5: Truyền Tail tới các Track Node ngoài cùng (Node lá)

Trang 39

- 39 -

3 3 2 Thuật toán cho Bộ xử lý track

Thuật toán xử lý Track chủ yếu gồm:

• Lan tỏa Exploratory Wave

• Quảng bá Echoes

• Phân bổ Tail tới Node qua Track

Quảng bá các chuỗi Wave

Việc liên kết trong những bước phát triển của wave kèm theo Track được miêu tả

bằng thuật toán sau:

Nếu Wave có trong hệ thống phân tán và có trạng thái Track, hoặcWave này nhảy từ một Node ở máy hiện tại sang một máy tính khác

1 Tạo Track Node mới

2 Kết nối Track Node mới vừa tạo với KN Node

3 Tăng biến đếm (vì có thêm Track Node con) trong Track Node cha

4 Liên kết Wave hiện và biền Frontal với Track Node mới

Quảng bá Echo thông qua Tracks

1 Nếu Echo có kết quả là ABORT

a Gửi Echo này tới tất cả các Node liền kề với Node hiện tại (cả Node con lẫn Node cha)

b Sau khi kết thúc thì loại bỏ các Wave, xóa hết các biến Frontal và Nodal lẫn biến đếm liên quan tới Track Node này

c Loại bỏ Track Node hiện tại và các Link liên kết với nó

N

N

Wave4

Development of new exploratory wave in the SNR

Wave3

Hình 3-6: Kích hoạt Tail trong các Node lá

Trang 40

- 40 -

2 Nếu Echo có kết quả trả về từ Track Node con lớn hơn một kết quả đang lưu trong Track Node này:

a Thay thế trạng thái mới ở các Node

3 Giảm biến đếm các Node con trong Node

4 Nếu biến đếm bằng 0

a Gửi trạng thái kết quả cuối cùng trong Track Node hiện tại tới Track Node cha

b Nếu kết quả trạng thái trong Node là TRUE

i Kết thúc công việc bằng cách rời các Node này và các Link (Node và Link vẫn được giữ nguyên)

c Nếu kết quả trả về trong Node là DONE hoặc FALSE, và Node được kết nối với biến Nodal:

i Xóa bỏ tất cả các biến frontal, chuỗi wave liên quan tới track node này Xóa bỏ track node hiện tại và các link liên kết với

Quảng bá Tail thông qua Tracks

1 Nhận Tail của Wave từ Track Node cha

2 Nếu Track Node là Node lá (nằm ngoài cùng trong cây Track)

a Ghép biến Frontal (biến Frontal này được liên kết với Track Node hiện tại) với Tail của Wave Do đó ta nhận được một Wave hoàn toàn độc lập

b Kích hoạt chuỗi Wave mới bằng cách cho nó vào hàng đợi của trình biên dịch hiện, trong khi vẫn liên kết với SNR Node hiện tại

c Sao chép Tail của Wave và gửi nó tới tất cả các Track Node con, trong khi đó vẫn tăng biến đếm các Track Node con ở Track Node hiện tại (khi mỗi lần Tail gửi)

3 3 3 Sự lan tỏa Track

Nếu luật RELEASE được sử dụng thì sự lan tỏa của Wave trở nên uyển chuyển hơn Tuy nhiên, Track sẽ tự chuyển đổi cho phù hợp nếu nó không xác định được đường đi, khi có một Rule khác ở trong Wave Track nhận ra việc chia nhánh của Wave, tổng hợp các kết quả trả về và phân kênh cho Tail của Wave tới SNR Sau khi Rule thực hiện xong, cây Track sẽ bị vứt bỏ, Tail của Wave sẽ chuyển tới các Node của SNR

Biến Nodal tự động xuất hiện trong KN Node sau khi Wave kết thúc và di chuyển tới Node khác trong Track model Trên thực tế, duy nhất Track Node (không phải Link) được tạo trong Track mode, khi Wave ở trong KN Chúng không xuất hiện khi Wave di chuyển tới Node khác, loại bỏ các biến Nodal (biến này đã được liên kết với chúng)

Ngày đăng: 18/02/2014, 00:16

HÌNH ẢNH LIÊN QUAN

Hình 2-1: Knowledge Network - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 2 1: Knowledge Network (Trang 13)
Hình 2-2: Thành phần của Spread Diagrams  Các  kiểu module của Spread Diagram là - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 2 2: Thành phần của Spread Diagrams Các kiểu module của Spread Diagram là (Trang 20)
Hình 2-4: Một số trường hợp xử lý song song - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 2 4: Một số trường hợp xử lý song song (Trang 21)
Hình 2-5: Wave xử lý song song có kèm theo Rule - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 2 5: Wave xử lý song song có kèm theo Rule (Trang 22)
Hình 2-12: Else – if với Rule o Switch - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 2 12: Else – if với Rule o Switch (Trang 26)
Hình 2-13: Switch • Vòng lặp - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 2 13: Switch • Vòng lặp (Trang 26)
Hình 2-14: Câu lệnh lặp sử dụng Repetition - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 2 14: Câu lệnh lặp sử dụng Repetition (Trang 27)
được giữ trong trạng thái tương ứng và kết nối với biến Frontal (Hình 3-3: Trạng thái - xây dựng trình biên dịch cho ngôn ngữ wave
c giữ trong trạng thái tương ứng và kết nối với biến Frontal (Hình 3-3: Trạng thái (Trang 37)
Hình 3-4: Gửi echo và tổng hợp các kết quả trạng thái, sau đó loại các Track Link, Track Node thừa - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 3 4: Gửi echo và tổng hợp các kết quả trạng thái, sau đó loại các Track Link, Track Node thừa (Trang 37)
Như trên hình vẽ ta có: nod ea có LINK TABLE gồ m2 phần tử là +p và r, trong khi đó node c có LINK TABLE chứa 1 phần tử là -p - xây dựng trình biên dịch cho ngôn ngữ wave
h ư trên hình vẽ ta có: nod ea có LINK TABLE gồ m2 phần tử là +p và r, trong khi đó node c có LINK TABLE chứa 1 phần tử là -p (Trang 43)
Hình 3-10: Track Forest - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 3 10: Track Forest (Trang 44)
Hình 3-13: Sau khi nhận và xử lý EXPANDH - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 3 13: Sau khi nhận và xử lý EXPANDH (Trang 53)
Hình 3-14: Sau khi nhận và xử lý ACTIVATE - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 3 14: Sau khi nhận và xử lý ACTIVATE (Trang 54)
Hình 3-15: Sau khi nhận ECHO từ các nhánh con - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 3 15: Sau khi nhận ECHO từ các nhánh con (Trang 55)
Hình 3-16: Sau khi xử lý ECHO nhận được - xây dựng trình biên dịch cho ngôn ngữ wave
Hình 3 16: Sau khi xử lý ECHO nhận được (Trang 56)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w