1. Trang chủ
  2. » Thể loại khác

Lập trình thời gian thực trong Java Mở đầu .Mục đích về kỹ thuật Hiểu potx

44 581 2

Đ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 đề Lập trình thời gian thực trong Java Mở đầu
Tác giả Vũ Quang Dũng
Định dạng
Số trang 44
Dung lượng 539,7 KB

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

Nội dung

Các vấn đề nâng cao trong Java „ Thời gian thực trong Java là nâng cao của Java trong các vấn đề sau: Quản lý bộ nhớ Thời gian và đồng hồ Đối tượng lịch và lập lịch Luồng thời gi

Trang 1

Lập trình thời gian thực trong Java

Mở đầu

Trang 2

Mục đích về kỹ thuật

„ Hiểu những yêu cầu cơ bản của hệ thống thời gian thực

„ Hiểu những yêu cầu trong thiết kế Java và

hệ thống thời gian thực trong Java

„ Có thể lập trình nâng cao trong hệ thời

gian thực Java

Trang 3

Thuật ngữ

„ Hard real-time — hệ thống hoàn toàn cưỡng chế sự trả lời trong khoảng thời gian deadline cho phép Ví dụ như hệ thống điều khiển bay.

„ Soft real-time — deadline là quan trọng đối với hệ thống, nhưng cũng tồn tại chức năng để sửa lỗi hệ thống khi deadline không được đáp ứng kịp thời Ví dụ như hệ thống nhận dữ liệu.

„ Firm real-time — là hệ thống soft real-time trong trường hợp không có sự ràng buộc gì trong giới hạn cần thiết.

Trang 4

Đặc trưng hệ thống nhúng

Thuật toán trong điều khiển

Trang 5

Kiến trúc Java

Real-time Operating System

JVM JBC

Standalone JVM

JBC

Hardware JVM

JBC

Trang 6

Đặc điểm kỹ thuật của hệ thời gian thực trong Java

„ Đặc điểm kỹ thuật của RTSJ (The

Real-Time Specification for Java) và hệ thống

chuẩn theo NIST (US National Institute of

Standards and Technology)

„ Cung cấp các đặc điểm về

… Quản lý bộ nhớ

… Giá trị thời gian và đồng hồ

Trang 7

Yêu cầu NIST

„ NIST là tổ chức của Mỹ về tiêu chuẩn và kỹ thuật, hướng dẫn những nguyên tắc cơ bản và cài đặt những yêu cầu cho hệ thời gian thực phát triển trên nền Java

„ Hệ thời gian thực Java (Real-time Java) sẽ ứng dụng thời gian thực vào giải quyết các vấn đề kỹ thuật trong thực thi các hệ thống thời gian thực

Trang 8

Các vấn đề nâng cao trong Java

„ Thời gian thực trong Java là nâng cao của Java trong các vấn đề sau:

… Quản lý bộ nhớ

… Thời gian và đồng hồ

… Đối tượng lịch và lập lịch

… Luồng thời gian thực

… Thiếu đồng bộ của nắm bắt sự kiện và đồng hồ

… Thiếu đồng bộ trong truyền điều khiển

… Sự đồng bộ hóa và chia xẻ tài nguyên

Trang 9

„ Để hệ thống nhúng làm việc có hiệu quả, điều cần thiết đầu tiên là

sự phâ chia và quản lý có hiệu quả của bộ nhớ

„ Khi tồn tại nhiều kiểu của bộ nhớ (với những đặc trung truy cập khác nhau) thì có thể cần thiết để có những chỉ dẫn biên dịch đối với các kiểu dữ

„ Hệ thống sẽ nâng cao khả năng thực thi và khả năng dự đoán của

hệ thống nhúng

Trang 10

Bộ nhớ động

„ Máy ảo Java chịu trách nhiệm về quản lý bộ nhớ động

„ Chìa khóa chính là quyết định được độ lớn bộ nhớ cần thiết là bao

nhiêu và tính toán được phần bộ nhớ không sử dụng tới (lớp sizeEstimator)

„ Quản lý bộ nhớ gồm:

1 Đòi hỏi người lập trình phải trả lại bộ nhớ một cách chính xác

2 Đòi hỏi máy ảo Java điều khiển bộ nhớ và quyết định khi nào thi không được phép truy cập

3 Đòi hỏi máy ảo Java điều khiển bộ nhớ và khoanh vùng bộ nhớ không còn truy nhập khi thực thi chương trình và giải phóng bộ nhớ (garbage

collection)

Trang 11

Real-Time Garbage Collection

„ Trong hệ thống thời gian thực, sự tiếp cận làm tăng khả năng ảnhhưởng tới quá trình phân tích thời gian của hệ thống

„ Garbage collection có thể thi hành khi tràn bộ nhớ động hoặc tăngcường sự hoạt động

„ Sự hoạt động của GC có thể ảnh hưởng tới khả năng đáp ứng cácluồng thời gian

„ Tất cả các đối tượng chuẩn của Java được ghi trong bộ nhớ động

và cần thiết sự thực thi có hiệu quả của GC

„ GC là một phần của máy ảo Java

„ Mặc dù tính chất hoạt động của GC trong toàn bộ quá trình thực thi

hệ thống, nhưng vẫn còn tồn tịa những sự miễn cưỡng trong hệthống thời gian nhằm đáp ứng vấn đề giới hạn thời gian

Trang 12

„ RTSJ đò hỏi GC cần có quyền ưu tiên bởi các luồng thời gian thực

và và sẽ tồn tại giới hạn của quyền ưu tiên

„ Lớp MemoryArea là một lớp trừu tượng dành cho tất cả các vùng

phân chia của RTSJ

„ Khi truy cập vào một vùng nhớ, tất cả các đối tượng được thực hiệnbên trong vùng đó

Trang 13

Phân lớp của MemoryArea

„ HeapMemory cho phép các đối tượng được đưa vào trong bộ nhớ động của Java

„ ImmortalMemory chia xẻ trong số các luồng, đối tượng được khởi tạo tại đây không phụ thuộc vào GC và được giải phóng chỉ khi dừng chương trình

„ ScopedMemory là vùng bộ nhớ cho các đối tượng đã được định nghĩa rõ ràng, liên hệ với từng phạm vi của bộ nhớ là một sự liên kết để theo dõi có bao nhiêu tiến trình thời gian thực được sử dụng tại vùng nhớ đó

… Khi sự liên kết tính từ 1 tới 0, tất cả các đối tượng trong phạm vi bộ nhớ sẽ thực thi phương thức cuối cùng của nó và bộ nhớ được giải phóng

„ Lớp ScopedMemory là lớp trừu tượng bao gồm một số phân lớp sau

… VTMemory: là nơi phân phối bộ nhớ tùy biến theo thời gian (Variable Time)

… LTMemory: là nơi phân phối bộ nhớ xảy ra trong thời gian tuyến tính (Linear Time) (liên quan tới kích thước của đối tượng)

Trang 14

Đặc trưng của bộ nhớ

„ Có thể được cấp phát khi các luồng thời gian thực và những bộ xử lý, chỉ rõ

… Số lượng cực đại của bộ nhớ trong một vùng bộ nhớ

… Số lượng cực đại của bộ nhớ có thể được sử dụng trong bộ nhớ

Trang 15

RTSJ class RTSJ abstract class

Trang 16

Giá trị thời gian

„ HighResolutionTime đóng gói những giá trị thời gian với mức độnanosecond

„ Giá trị được biểu diễn bởi thành phần 64 bit millisecond và 32 bit nanosecond

„ Lớp là lớp trừu tượng có 3 phân lớp sau:

… AbsoluteTime: thể hiện như là quan hệ thời gian tuyệt đối

… RelativeTime : thể hiện quan hệ thời gian

… RationalTime là kiểu quan hệ thời gian có tần số quan hệ, sử dụng

để thể hiện tốc độ sự kiện xảy ra

„ Giá trị thời gian quan hệ chặt chẽ với đồng hồ

Trang 17

Đồng hồ

„ Lớp Clock của RTSJ xác định lớp trừu tượng từ đó tất

cả các đồng hồ được dẫn xuất tới

„ Tồn tại nhiều kiểu đồng hồ khác nhau, ví dụ như đồng

hồ tính toán thời gian của CPU

„ Luôn tồn tại một đồng hồ thời gian thực

„ Phương thức tĩnh getRealtimeClock cho phép lấy

giá trị hiện tại thực của đồng hồ

Trang 18

Sơ đồ giá trị thời gian và đồng hồ

standard Java interface

Trang 19

Lập lịch trong Java

„ Java không đưa ra những đảm bảo luồng với quyền ưu tiên cao

nhất sẽ luôn được thực thi

„ JVM có thể tin cậy vào một hệ điều hành chủ hỗ trợ những luồngcủa nó, một số những hệ thống này có thể không hỗ trợ sự lập lịch trên nền quyền ưu tiên

„ Java duy nhất định nghĩa 10 mức độ ưu tiên và sự thực thi nó là sựgiải phóng trong kết hợp của các mức độ quyền ưu tiên này lên trênmột phạm vi quyền ưu tiên của hệ điều hành để hạn chế nếu cầnthiết

„ Sự yếu kém trong định nghĩa lập lịch và vùng phân bố hẹp nghĩa làchương trình Java thiếu sự dự đoán trước, và từ đó sử dụng Java cho các hệ thống thời gian thực bị hạn chế

Trang 20

Đối tượng lập lịch

„ RTSJ khái quát hóa những thực thể mà có thể được lập lịch từ những luồng đến khái niệm của đối tượng lập lịch ( schedulable objects)

„ Mỗi đối tượng lập lịch là một sự thực thi giao diện

Schedulable

„ Mỗi đối tượng lập lịch phải có chỉ dẫn riêng biệt

… Giải phóng yêu cầu, khi nó trở nên khả thi,

… Yêu cầu bộ nhớ (nhịp độ đối tượng truy xuất bộ nhớ động)

… Yêu cầu lập lịch (quyền ưu tiên sẽ phải được hoạch định)

Trang 21

Giải phóng yêu cầu

„ Những thuyết về lập lịch thường xác định 3 kiểu:

… Theo chu kỳ (trên cơ sở thông thường),

… Không tuần hoàn (ngẫu nhiên) và

… Rời rạc (bất thường nhưng với khoảng thời gian cực tiểu giữa chúng)

„ Mọi tham số giải phóng có giá trị và deadline liên hệ với giá trị thời gian

… Giá trị tính theo thời gian CPU cần thiết cho mỗi giải phóng

… deadline là thời gian cần thiết đối với mỗi yêu cầu

„ PeriodicParameters bao gồm cả thời gian bắt đầu cho lần thứ nhất và khoảng thời gian giữa các lần.

„ SporadicParameter bao gồm khoảng thời gian nhỏ nhất giữa các lần yêu cầu

„ Đối với đối tượng lập lịch không tuần hoàn có thể tới hạn của số lượng thời gian mà lập lịch dành cho nó trong chu kỳ đặc thù sử dụng

ProcessingGroupParameters

Trang 22

Đặc trưng của lập lịch

„ Đặc trưng của lập lịch được sử dụng bởi bộ lập lịch, để xách định tại thời điểm hiện tại đối tượng nào xứng đáng được thi hành

„ Lớp trừu tượng SchedulingParameters cung cấp lớp gốc trong phạm vi tiêu chuẩn lập lịch có thể biểu thị

„ RTSJ định nghĩa một tiêu chuẩn dựa vào quyền ưu tiên

„ Những giá trị số lớn cho sự thể hiện quyền ưu tiên cao

„ ImportanceParameters cho phép lập lịch bổ sung, và được gán cho phân lớp PriorityParameters

Trang 23

Bộ lập lịch

„ Bộ lập lịch chịu trách nhiệm về lập lịch những đối tượng chươngtrình liên quan của nó

„ RTSJ hỗ trợ sự lập lịch dựa trên nền quyền ưu tiên thông qua

PriorityScheduler (sự lập lịch trên nền ưu tiên cố định với 28 mức ưu tiên duy nhất)

„ Scheduler là một lớp trừu tượng với phân lớpPriorityScheduler

„ Cho phép thực thi theo hướng Sớm nhất – Hạn cuối cùng – Bộ lậplịch đầu tiên

„ Bất kỳ sự cố gắng nào để cài đặt bộ lập lịch cho luồng phải đảm bảorằng nó nằm trong sự đảm bảo cho phép (security permissions)

Trang 24

RealtimeSecurity checks

Trang 25

„ Hệ thời gian thực cần

… Dự đoán liệu có phải đối tượng chương trình đã gặp deadline

… Thông báo về sự bỏ lỡ deadline, tràn giá trị, hoặc xâm phạm khoảng thời gian tối thiểu

„ Đối với một số hệ thống dự đoán liệu đối tượng đã gặp deadline hay chưa

„ Với những hệ thống khác, yêu cầu một số mẫu phân tích trực tiếp

„ RTSJ cung cấp phương pháp phân tích trực tiếp

„ Không kể tới làm sao dự đoán đã được lập, sự cần thiết là thông báo về sự tràn giá trị

„ RTSJ cung cấp cơ chế xử lý sự kiện không đồng bộ cho mục đích trên

Trang 26

Luồng thời gian thực

„ Đối tượng lập lịch

„ Cung cấp gói java.lang.thread

„ Không có bộ nhớ động, không có sự truy cập tới bộ nhớ động và riêng biệt đối với GC

Trang 27

Sơ đồ luồng thời gian thực

Thread Runnable

Schedulable

RealtimeThread

SchedulingParameters

ReleaseParameters Scheduler

has

has

has has

imp lem ents

Trang 28

„ Từ hệ thời gian thực, sự kiện có thể đòi hỏi sự xử lý trong khoảng deadline

„ RTSJ khái quát hóa những bộ xử lý sự kiện Java thành những thực thể lập lịch

Trang 29

Sơ đồ xử lý sự kiện không đồng bộ

has

hasimplements

Trang 30

Sự xử lý luồng thời gian thực

„ Trong thực tế, thời gian thực JVM thường được kết hợp động với xử lý sự kiện thời gian thực

„ Để tránh sự tràn, cần phải xác định rõ luồng thời gian thực cần xử lý

„ Mỗi lớp AsyncEvent có thể có một hoặc nhiều sự xử lý

và cùng một xử lý có thể diễn ra đối với một hoặc nhiều

sự kiện khác nhau

„ Khi một sự kiện xuất hiện, tất cả các xử lý tới sự kiện đó

SchedulingParameters

Trang 31

Sự kiện không đồng bộ

„ Sự kiện không đồng bộ có thể phụ thuộc vào các hàm ngắt hoặc tín hiệu POSIX (Portable Operating System Interface for Computer Environment) signals

„ Thời gian sẽ là nguyên nhân để sự kiện bị loại bỏ

„ Sự loại bỏ này có thể là ngay lập tức hoặc tuần hoàn

Trang 32

Sơ đồ lớp sự kiện không đồng bộ

Clock

AsyncEvent AsyncEventHandler

Timer BoundAsyncEventHandler

Trang 33

Chuyển quyền điều khiển không

„ Asynchronous Transfer of Control (ATC)

„ Sự kiện không đồng bộ cho phép chương trình trả lời trong thời giantới điều kiện được kiểm tra bởi chương trình hoặc môi trường

„ Không cho phép đối tượng lịch đặc biệt được cung cấp trực tiếp

„ Trong nhiều chương trình, chỉ có một mẫu của chuyển quyền điềukhiển mà luồng thời gian thực cần để yêu cầu tự thực thi

„ Ngôn ngữ và hệ điều hành cung cấp tiến trình hủy bỏ tiến trình xử lý

„ Đối với hệ thời gian thực, cần thiết đòi hỏi các đối tượng lập lịch đểkết thúc những gì đang thực thi

Trang 34

ATC I

„ Trong Java chuẩn, cơ chế ngắt là sự cố gắng tạo mẫu của sự chuyển quyền điều khiển không đồng bộ

„ Cơ chế không cung cấp thời gian trả lời tới hàm ngắt

„ Phải có sự thông báo về thực thi của luồng

„ Sự trì hoãn này là sự không chấp nhận được cho những

hệ thống thời gian thực

„ Với nhưng lý do đo, RTSJ cung cấp một cách tiếp cân thay thế cho sự ngắt đối tượng lập lịch, sử dụng sự chuyển quyền điều khiển không đồng bộ - asynchronous transfer of control (ATC)

Trang 35

ATC II

Mô hình ATC được xây dựng trên những nguyên tắc sau

„ Đối tượng lập lịch phải rõ ràng, sẵn sàng cho cho phép ATC sẽ được chuyển

„ Theo mặc định, đối tượng lập lịch sẽ có sự hoãn ATC

„ Sự thực thi của phương pháp đồng bộ luôn làm trì hoãn ATC

„ ATC là sự chuyển quyền điều khiển không có giá trị trả về

Trang 36

„ Giao diện Interruptible cung cấp liên kết giữa lớp AIE và đối tượng thực thi phương thức ngắt

Trang 37

Lớp và giao diện ATC

Interruptible

InterruptedException

AsynchronouslyInterruptedException uses

doInterruptible fire

RTSJ class

RTSJ interface Java interface

Timed

Trang 39

Các lớp RTSJ cho thừa kế quyền ưu tiên

MonitorControl

PriorityInheritance PriorityCeilingEmulation

Trang 40

Thừa kế quyền ưu tiên và GC

„ Nếu những luồng thời gian thực muốn giao tiếp với những luồng không phải thời gian thực thì sự tương tác với GC phải được xem xét

„ Cần thiết thử để tránh trường hợp nơi một luồng không phải thời gian thực đã đưa vào vùng loại trừ lẫn nhau dùng chung với một luồng thời gian thực

„ Những hoạt động của luồng không phải thời gian thực là kết quảdẫn tới hình thành GC

„ Luồng thời gian thực giành quyền ưu tiên của GC, nhưng khôngđược đưa vào vùng loại trừ lẫn nhau

„ Phải đợi cho đến khi GC kết thúc và luồng thời không phải thời gianthực rời khỏi vùng

Trang 41

Đợi liên kết tự do

„ Một cách tránh những sự tương tác không thể đoán trước với GC là

sẽ cung cấp một cơ chế liên kết không chặn kết nối giữa những luồng không phải thời gian thực và những luồng thời gian thực

„ RTSJ cung cấp 3 lớp đợi liên kết tự do không chặn kết nối:

… WaitFreeWriteQueue : bộ đệm, quá trình đọc được đồng bộ, quá trình ghi không đồng bộ

… WaitFreeReadQueue : bộ đệm, quá trình ghi được đồng bộ, quá trình ghi có thể đòi hỏi không được thông báo khi có dữ liệu thông qua sự kiện không đồng bộ

… WaitFreeDequeue : bộ đệm, cho phép cùng ngăn và không ngăn quá trình đọc và ghi

Trang 42

Các lớp đợi tự do

WaitFreeDequeue WaitFreeWriteQueue WaitFreeReadQueue

uses uses

AsyncEventHandler

uses

Trang 43

Các lớp bộ nhớ vật lý và bộ nhớ

„ Cơ chế cho phép đối tượng được đưa vào trong vùng nhớ có yêu cầu truy cập

… RTSJ cung cấp khả năng mở rộng của MemoryArea tới bộ nhớvật lý

„ Cơ chế cho phép người lập trình truy cập vào bộ nhớ thô sơ, sử dụng giao diện, liên kết bộ nhớ thông qua các thanh ghi input/output của thiết bị

… RTSJ cung cấp các lớp mà có thể truy xuất bộ nhớ thô sơ đểđọc và ghi giá trị Java hoặc các mảng giá trị nguyên thủy (int, long, float etc.)

„ Thực thi của cả bộ nhớ vật lý và bộ nhớ thô sơ có thể thông qua lớp

PhysicalMemory-Manager và giao diện PhysicalMemoryTypeFilter

Trang 44

Sơ đồ lớp bộ nhớ vật lý và bộ nhớ thô sơ

Implementation-defined

uses

MemoryArea

Ngày đăng: 02/08/2014, 10:21

HÌNH ẢNH LIÊN QUAN

Sơ đồ lớp quản lý bộ nhớ - Lập trình thời gian thực trong Java Mở đầu .Mục đích về kỹ thuật Hiểu potx
Sơ đồ l ớp quản lý bộ nhớ (Trang 15)
Sơ đồ giá trị thời gian và đồng hồ - Lập trình thời gian thực trong Java Mở đầu .Mục đích về kỹ thuật Hiểu potx
Sơ đồ gi á trị thời gian và đồng hồ (Trang 18)
Sơ đồ quan hệ các lớp lập lịch - Lập trình thời gian thực trong Java Mở đầu .Mục đích về kỹ thuật Hiểu potx
Sơ đồ quan hệ các lớp lập lịch (Trang 24)
Sơ đồ luồng thời gian thực - Lập trình thời gian thực trong Java Mở đầu .Mục đích về kỹ thuật Hiểu potx
Sơ đồ lu ồng thời gian thực (Trang 27)
Sơ đồ xử lý sự kiện không đồng bộ - Lập trình thời gian thực trong Java Mở đầu .Mục đích về kỹ thuật Hiểu potx
Sơ đồ x ử lý sự kiện không đồng bộ (Trang 29)
Sơ đồ lớp sự kiện không đồng bộ - Lập trình thời gian thực trong Java Mở đầu .Mục đích về kỹ thuật Hiểu potx
Sơ đồ l ớp sự kiện không đồng bộ (Trang 32)
Sơ đồ lớp bộ nhớ vật lý và bộ nhớ thô sơ - Lập trình thời gian thực trong Java Mở đầu .Mục đích về kỹ thuật Hiểu potx
Sơ đồ l ớp bộ nhớ vật lý và bộ nhớ thô sơ (Trang 44)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN