Tải bản đầy đủ (.pdf) (44 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (539.7 KB, 44 trang )

Lập trình thời gian
thực trong Java
Mở đầu
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
2


Quang Dũng
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.
3



Quang Dũng
Đặc trưng hệ

thống nhúng
4


Quang Dũng
Thuật toán
trong điều khiển
Ghi dữ

liệu
Nhân dữ

liệu


hiển thị
Điều
khiển giao
diện
Giao diện
Hệ

thống
kỹ

thuật
Quá


trình truy cập
hệ

thống từ

xa
Đồng hồ
thời gian thực
Database
Lệnh điều khiển
Thiết bị
hiển thị
Máy tính thời gian thực
Kiến trúc Java
5


Quang Dũng
Real-time Operating System
JVM
JBC
Standalone
JVM
JBC
Hardware JVM
JBC
Đặ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ồ
 Đối tượng lịch và lập lịch
6


Quang Dũng
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
7


Quang Dũng
Các vấn đề nâng cao trong Java
đối với hệ

thời gian thực

 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
 Truy cập bộ nhớ vật lý
8


Quang Dũng
Quản lý bộ

nhớ
 Nhiều hệ thống thời gian thực giới hạn sự cho phép của bộ nhớ vì
 Giá cả
 Những vấn đề liên quan tới hệ thống như độ lớn, chuyên môn hóa của
hệ thống
 Để 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
9



Quang Dũng
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ớ



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ớ



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)
10


Quang Dũng
Real-Time Garbage Collection
 Trong hệ thống thờigianthực, sự tiếpcậnlàmtăng khả năng ảnh
hưởng tới quá trình phân tích thờigiancủahệ thống
 Garbage collection có thể thi hành khi tràn bộ nhớđộng hoặctăng
cường sự hoạt động
 Sự hoạt động củaGC cóthểảnh hưởng tớikhả năng đáp ứng các

luồng thờigian
 Tấtcả các đốitượng chuẩncủa Java được ghi trong bộ nhớđộng
và cầnthiếtsự thực thi có hiệuquả củaGC
 GC là mộtphầncủamáyảoJava
 Mặc dù tính chấthoạt động của GC trong toàn bộ quá trình thựcthi
hệ thống, nhưng vẫncòntồntịanhững sự miễncưỡng trong hệ
thống thờigiannhằm đáp ứng vấn đề giớihạnthờigian
11


Quang

Dũng
Vùng

bộ

nhớ
 RTSJ cung cấpsự quảnlýbộ nhớ mà không ảnh hưởng tớihoạt
động của garbage collection
 Nó xác định vùng nhớ, mộtsố trong đótồntại bên ngoài bộ nhớ
Java thông thường và không chịutácđộng củaGC
 RTSJ đòhỏiGC cần có quyền ưutiênbởicácluồng thờigianthực
và và sẽ tồntạigiớihạncủa quyền ưutiên
 Lớp MemoryArea là mộtlớptrừutượng dành cho tấtcả các vùng
phân chia củaRTSJ
 Khi truy cậpvàomộtvùngnhớ, tấtcả các đốitượng đượcthựchiện
bên trong vùng đó
12



Quang

Dũng
Phân

lớpcủa

MemoryArea
 HeapMemory chophépcácđốitượng được đưa vào trong bộ nhớđộng
củaJava
 ImmortalMemory chia xẻ trong số các luồng, đốitượng đượckhởitạotại
đây không phụ thuộc vào GC và đượcgiải phóng chỉ khi dừng chương trình
 ScopedMemory là vùng bộ nhớ cho các đốitượng đã được định nghĩarõ
ràng, liên hệ vớitừng phạmvi củabộ nhớ là mộtsự liên kết để theo dõi có
bao nhiêu tiếntrìnhthờigianthực đượcsử dụng tại vùng nhớđó
 Khi sự liên kết tính từ 1 tới0, tấtcả các đốitượng trong phạmvi bộ nhớ sẽ thực
thi phương thứccuốicùngcủanóvàbộ nhớđượcgiải phóng
 Lớp ScopedMemory là lớptrừutượng bao gồmmộtsố phân lớpsau
 VTMemory: là nơi phân phốibộ nhớ tùy biếntheothời gian (Variable Time)
 LTMemory: là nơi phân phốibộ nhớ xảy ra trong thờigiantuyếntính(Linear
Time) (liên quan tớikíchthướccủa đốitượng)
13


Quang

Dũng
Đặctrưng


củabộ

nhớ
 Có thểđượccấp phát khi các luồng thờigianthựcvà
những bộ xử lý, chỉ rõ
 Số lượng cực đạicủabộ nhớ trong một vùng bộ nhớ
 Số lượng cực đạicủabộ nhớ có thểđượcsử dụng trong bộ nhớ
vô hạn
 Khoảng giớihạntốc độ đượccấp phát củabộ nhớđộng (bytes
per second),
 Có thểđượcsử dụng bởibộ lậplịch trong điềukhiểnthu
nạpvà/hoặc dành cho mục đích củaviệc đảmbảoGC
tương thích
14


Quang

Dũng
Sơđồlớpquảnlýbộ

nhớ
15


Quang

Dũng
MemoryArea
HeapMemory

ImmortalMemory
ScopedMemory
LTMemory VTMemory
SizeEstimator
MemoryParameters
GarbageCollector
RTSJ class
RTSJ abstract class
Giá

trị

thờigian
 HighResolutionTime đóng gói những giá trị thờigianvớimức độ
nanosecond
 Giá trịđượcbiểudiễnbởi thành phần 64 bit millisecond và 32 bit
nanosecond
 Lớplàlớptrừutượng có 3 phân lớp sau:
 AbsoluteTime: thể hiệnnhư là quan hệ thờigiantuyệt đối
 RelativeTime : thể hiện quan hệ thờigian
 RationalTime là kiểu quan hệ thờigiancótầnsố quan hệ, sử dụng
để thể hiệntốc độ sự kiệnxảyra
 Giá trị thời gian quan hệ chặtchẽ với đồng hồ
16


Quang

Dũng
Đồng


hồ
 Lớp Clock của RTSJ xác định lớptrừutượng từđótất
cả các đồng hồđượcdẫnxuấttới
 Tồntạinhiềukiểu đồng hồ khác nhau, ví dụ nhưđồng
hồ tính toán thờigiancủa CPU
 Luôn tồntạimột đồng hồ thờigianthực
 Phương thứctĩnh getRealtimeClock cho phép lấy
giá trị hiệntạithựccủa đồng hồ
17


Quang

Dũng
Sơđồgiá

trị

thờigianvàđồng

hồ
18


Quang

Dũng
HighResolutionTime
RationalTime

AbsoluteTime
RelativeTime
Clock
relativeTo
relativeTo
relativeTo
standard Java interface
RTSJ class
RTSJ abstract class
Lậplịch

trong

Java
 Java không đưaranhững đảmbảoluồng với quyền ưutiêncao
nhấtsẽ luôn đượcthựcthi
 JVM có thể tin cậyvàomộthệđiều hành chủ hỗ trợ những luồng
củ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 độ ưutiênvàsự thực thi nó là sự
giải phóng trong kếthợpcủacácmức độ quyền ưu tiên này lên trên
mộtphạm vi quyền ưutiêncủahệđiều hành để hạnchế nếucần
thiết
 Sự yếu kém trong định nghĩalậplịch và vùng phân bố hẹp nghĩalà
chương trình Java thiếusự dựđoán trước, và từđósử dụng Java
cho các hệ thống thờigianthựcbị hạnchế.
19


Quang


Dũng
Đốitượng

lậplịch
 RTSJ khái quát hóa những thựcthể mà có thểđượclập
lịch từ những luồng đếnkháiniệmcủa đốitượng lậplịch
(schedulable objects)
 Mỗi đốitượng lậplịch là mộtsự thực thi giao diện
Schedulable
 Mỗi đốitượng lậplịch phảicó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ầubộ nhớ (nhịp độ đốitượng truy xuấtbộ nhớđộng)
 Yêu cầulậplịch (quyền ưutiênsẽ phải đượchoạch định)
20


Quang

Dũng
Giải

phóng

yêu

cầu
 Những thuyếtvề lậplị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ờirạc(bấtthường nhưng vớikhoảng thờigiancựctiểugiữa chúng)
 Mọithamsố giải phóng có giá trị và deadline liên hệ vớigiátrị thờigian
 Giá trị tính theo thờigianCPU cầnthiếtchomỗigiải phóng
 deadline là thờigiancầnthiết đốivớimỗiyêucầu
 PeriodicParameters bao gồmcả thờigianbắt đầucholầnthứ nhấtvà
khoảng thờigiangiữacáclần.
 SporadicParameter bao gồmkhoảng thờigiannhỏ nhấtgiữacáclần
yêu cầu
 Đốivới đốitượng lậplịch không tuần hoàn có thể tớihạncủasố lượng thời
gian mà lậplịch dành cho nó trong chu kỳđặcthùsử dụng
ProcessingGroupParameters
21


Quang

Dũng
Đặctrưng

củalậplịch
 Đặctrưng củalậplịch đượcsử dụng bởibộ lậplịch, để
xách định tạithời điểmhiệntại đốitượng nào xứng đáng
được thi hành
 Lớptrừutượng SchedulingParameters cung cấplớp
gốc trong phạm vi tiêu chuẩnlậplịch có thể biểuthị
 RTSJ định nghĩamộttiêuchuẩndựa vào quyền ưutiên
 Những giá trị số lớnchosự thể hiệnquyền ưutiêncao
 ImportanceParameters cho phép lậplịch bổ sung, và
được gán cho phân lớp PriorityParameters
22



Quang

Dũng
Bộ

lậplịch
 Bộ lậplịch chịu trách nhiệmvề lậplịch những đốitượng chương
trình liên quan củanó
 RTSJ hỗ trợ sự lậplịch dựatrênnền quyền ưu tiên thông qua
PriorityScheduler (sự lậplịch trên nền ưutiêncốđịnh với28
mức ưu tiên duy nhất)
 Scheduler là mộtlớptrừutượng với phân lớp
PriorityScheduler
 Cho phép thực thi theo hướng Sớmnhất–Hạncuốicùng–Bộ lập
lịch đầutiên
 Bấtkỳ sự cố gắng nào để cài đặtbộ lậplịch cho luồng phải đảmbảo
rằng nó nằm trong sựđảmbảo cho phép (security permissions)
23


Quang

Dũng
Sơđồquan

hệ

các


lớplậplịch
24


Quang

Dũng
ReleaseParameters
PeriodicParameters
AperiodicParameters
SporadicParameters
SchedulingParameters
ProcessingGroupParameters
MemoryParameters
ImportanceParameters
Scheduler
PriorityParameters
PriorityScheduler
uses
uses
uses
uses
RealtimeSecurity
checks
Deadlines
 Hệ thờigianthựccần
 Dựđoán liệucóphải đốitượ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ạmkhoảng thờigiantối
thiểu

 Đốivớimộtsố hệ thống dựđoán liệu đốitượng đãgặp deadline hay chưa
 Vớinhững hệ thống khác, yêu cầumộtsố mẫuphântíchtrựctiếp
 RTSJ cung cấpphương pháp phân tích trựctiếp
 Không kể tớilàmsaodựđoán đã đượclập, sự cầnthiết là thông báo về sự
tràn giá trị
 RTSJ cung cấpcơ chế xử lý sự kiện không đồng bộ cho mục đích trên
25


Quang

Dũng

×