Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
539,7 KB
Nội dung
Lập trình thời gian thực Java Mở đầu Mục đích kỹ thuật Hiểu yêu cầu hệ thống thời gian thực Hiểu yêu cầu thiết kế Java hệ thống thời gian thực Java Có thể lập trình nâng cao hệ thời gian thực Java Vũ Quang Dũng Thuật ngữ Hard real-time — hệ thống hoàn toàn cưỡng chế trả lời khoảng thời gian deadline cho phép Ví dụ hệ thống điều khiển bay Soft real-time — deadline quan trọng hệ thống, tồn chức để sửa lỗi hệ thống deadline khơng đáp ứng kịp thời Ví dụ hệ thống nhận liệu Firm real-time — hệ thống soft real-time trường hợp khơng có ràng buộc giới hạn cần thiết Vũ Quang Dũng Đặc trưng hệ thống nhúng Đồng hồ thời gian thực Thuật toán điều khiển Giao diện Hệ thống kỹ thuật Ghi liệu Quá trình truy cập hệ thống từ xa Nhân liệu hiển thị Thiết bị hiển thị Database Lệnh điều khiển Vũ Quang Dũng Điều khiển giao diện Máy tính thời gian thực Kiến trúc Java JBC JBC JBC Hardware JVM Standalone JVM Real-time Operating System JVM Vũ Quang Dũng Đặc điểm kỹ thuật hệ thời gian thực Java Đặc điểm kỹ thuật RTSJ (The RealTime Specification for Java) hệ thống chuẩn theo NIST (US National Institute of Standards and Technology) Cung cấp đặc điểm Quản lý nhớ Giá trị thời gian đồng hồ Đối tượng lịch lập lịch Vũ Quang Dũng Yêu cầu NIST NIST tổ chức Mỹ tiêu chuẩn kỹ thuật, hướng dẫn nguyên tắc cài đặt yêu cầu cho hệ thời gian thực phát triển Java Hệ thời gian thực Java (Real-time Java) ứng dụng thời gian thực vào giải vấn đề kỹ thuật thực thi hệ thống thời gian thực Vũ Quang Dũng Các vấn đề nâng cao Java hệ thời gian thực Thời gian thực Java nâng cao Java vấn đề sau: Quản lý nhớ Thời gian đồng hồ Đối tượng lịch lập lịch Luồng thời gian thực Thiếu đồng nắm bắt kiện đồng hồ Thiếu đồng truyền điều khiển Sự đồng hóa chia xẻ tài nguyên Truy cập nhớ vật lý Vũ Quang Dũng Quản lý nhớ Nhiều hệ thống thời gian thực giới hạn cho phép nhớ Giá Những vấn đề liên quan tới hệ thống độ lớn, chuyên môn hóa hệ thống Để hệ thống nhúng làm việc có hiệu quả, điều cần thiết phâ chia quản lý có hiệu nhớ Khi tồn nhiều kiểu nhớ (với đặc trung truy cập khác nhau) cần thiết để có dẫn biên dịch kiểu Hệ thống nâng cao khả thực thi khả dự đoán hệ thống nhúng Vũ Quang Dũng Bộ nhớ động Máy ảo Java chịu trách nhiệm quản lý nhớ động Chìa khóa định độ lớn nhớ cần thiết tính tốn phần nhớ khơng sử dụng tới (lớp sizeEstimator) Quản lý nhớ gồm: Đòi hỏi người lập trình phải trả lại nhớ cách xác Địi hỏi máy ảo Java điều khiển nhớ định thi không phép truy cập Đòi hỏi máy ảo Java điều khiển nhớ khoanh vùng nhớ khơng cịn truy nhập thực thi chương trình giải phóng nhớ (garbage collection) Vũ Quang Dũng 10 Sự xử lý luồng thời gian thực Trong thực tế, thời gian thực JVM thường kết hợp động với xử lý kiện thời gian thực Để tránh 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ó nhiều xử lý xử lý diễn nhiều kiện khác Khi kiện xuất hiện, tất xử lý tới kiện giải phóng thơng qua lớp SchedulingParameters Vũ Quang Dũng 30 Sự kiện không đồng Sự kiện khơng đồng phụ thuộc vào hàm ngắt tín hiệu POSIX (Portable Operating System Interface for Computer Environment) signals Thời gian nguyên nhân để kiện bị loại bỏ Sự loại bỏ tuần hoàn Vũ Quang Dũng 31 Sơ đồ lớp kiện không đồng POSIXSignalHandler associate with AsyncEventHandler * * handles uses fire AsyncEvent interrupt Timer BoundAsyncEventHandler PeriodicTimer Vũ Quang Dũng uses Clock OneShotTimer 32 Chuyển quyền điều khiển không đồng Asynchronous Transfer of Control (ATC) Sự kiện không đồng cho phép chương trình trả lời thời gian tới điều kiện kiểm tra chương trình môi trường Không cho phép đối tượng lịch đặc biệt cung cấp trực tiếp Trong nhiều chương trình, có mẫu chuyển quyền điều khiển mà luồng thời gian thực cần để yêu cầu tự thực thi Ngơn ngữ 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 đối tượng lập lịch để kết thúc thực thi Vũ Quang Dũng 33 ATC I Trong Java chuẩn, chế ngắt cố gắng tạo mẫu chuyển quyền điều khiển không đồng Cơ chế không cung cấp thời gian trả lời tới hàm ngắt Phải có thơng báo thực thi luồng Sự trì hỗn khơng chấp nhận cho hệ thống thời gian thực Với lý đo, RTSJ cung cấp cách tiếp cân thay cho ngắt đối tượng lập lịch, sử dụng chuyển quyền điều khiển không đồng - asynchronous transfer of control (ATC) Vũ Quang Dũng 34 ATC II Mơ hình ATC xây dự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 chuyển Theo mặc định, đối tượng lập lịch có hỗn ATC Sự thực thi phương pháp đồng ln làm trì hỗn ATC ATC chuyển quyền điều khiển khơng có giá trị trả Vũ Quang Dũng 35 ATC III Mẫu RTSJ ATC tích hợp với xử lý ngoại lệ Java Lớp AsynchronouslyInterruptedException (AIE) xác định kiện ATC Ném phương thức AsynchronouslyInterruptedException để xác đưa ngoại lệ ngắt không đồng Giao diện Interruptible cung cấp liên kết lớp AIE đối tượng thực thi phương thức ngắt Vũ Quang Dũng 36 Lớp giao diện ATC InterruptedException fire Interruptible uses AsynchronouslyInterruptedException doInterruptible R class TSJ R interface TSJ Timed Java interface Vũ Quang Dũng 37 Đồng hóa Chìa khóa để dự đốn hành vi chương trình đa luồng hiểu luồng liên kết đồng hóa Java cung cấp truy cập tới liệu dùng chung qua cấu loại trừ lẫn Mọi chế đồng hóa mà dựa vào loại trừ lẫn từ đảo ngược quyền ưu tiên (priority inversion) Vấn đề đảo ngược quyền ưu tiên thừa kế quyền ưu tiên phạm vi nghiên cứu hệ thống thời gian thực (priority inheritance) Sự đa dạng thuật toán thừa kế quyền ưu tiên RTSJ hỗ trợ: simple priority inheritance (thừa kế quyền ưu tiên đơn giản) priority ceiling emulation inheritance (thừa kế mô quyền ưu tiên) Vũ Quang Dũng 38 Các lớp RTSJ cho thừa kế quyền ưu tiên MonitorControl PriorityInheritance Vũ Quang Dũng PriorityCeilingEmulation 39 Thừa kế quyền ưu tiên GC Nếu luồng thời gian thực muốn giao tiếp với luồng khơng phải thời gian thực tương tác với GC phải xem xét Cần thiết thử để tránh trường hợp nơi luồng thời gian thực đưa vào vùng loại trừ lẫn dùng chung với luồng thời gian thực Những hoạt động luồng thời gian thực kết dẫn tới hình thành GC Luồng thời gian thực giành quyền ưu tiên GC, không đưa vào vùng loại trừ lẫn Phải đợi GC kết thúc luồng thời thời gian thực rời khỏi vùng Vũ Quang Dũng 40 Đợi liên kết tự Một cách tránh tương tác khơng thể đốn trước với GC cung cấp chế liên kết không chặn kết nối luồng thời gian thực luồng thời gian thực RTSJ cung cấp lớp đợi liên kết tự không chặn kết nối: WaitFreeWriteQueue: đệm, trình đọc đồng bộ, trình ghi khơng đồng WaitFreeReadQueue: đệm, q trình ghi đồng bộ, q trình ghi địi hỏi khơng thơng báo có liệu thơng qua kiện không đồng WaitFreeDequeue: đệm, cho phép ngăn khơng ngăn q trình đọc ghi Vũ Quang Dũng 41 Các lớp đợi tự uses uses WaitFreeWriteQueue WaitFreeDequeue WaitFreeReadQueue uses AsyncEventHandler Vũ Quang Dũng 42 Các lớp nhớ vật lý nhớ thô sơ Cơ chế cho phép đối tượng đưa vào vùng nhớ có yêu cầu truy cập RTSJ cung cấp khả mở rộng MemoryArea tới nhớ vật lý Cơ chế cho phép người lập trình truy cập vào nhớ thô sơ, sử dụng giao diện, liên kết nhớ thông qua ghi input/output thiết bị RTSJ cung cấp lớp mà truy xuất nhớ thơ sơ để đọc ghi giá trị Java mảng giá trị nguyên thủy (int, long, float etc.) Thực thi nhớ vật lý nhớ thơ sơ thông qua lớp PhysicalMemory-Manager giao diện PhysicalMemoryTypeFilter Vũ Quang Dũng 43 Sơ đồ lớp nhớ vật lý nhớ thô sơ ScopedMemory LTPhysicalMemory VTPhysicalMemory uses AsyncEventHandler registers MemoryArea ImmortalPhysicalMemory uses uses uses PhysicalMemoryManager uses uses Implementation-defined uses RawMemoryAccess RealtimeSecurity uses RawMemoryFloatAccess implements PhysicalMemoryTypeFilter Vũ Quang Dũng 44 . ..Mục đích kỹ thuật Hiểu yêu cầu hệ thống thời gian thực Hiểu yêu cầu thiết kế Java hệ thống thời gian thực Java Có thể lập trình nâng cao hệ thời gian thực Java Vũ Quang Dũng Thuật ngữ Hard... thống thời gian thực Vũ Quang Dũng Các vấn đề nâng cao Java hệ thời gian thực Thời gian thực Java nâng cao Java vấn đề sau: Quản lý nhớ Thời gian đồng hồ Đối tượng lịch lập lịch Luồng thời gian thực. .. tiêu chuẩn kỹ thuật, hướng dẫn nguyên tắc cài đặt yêu cầu cho hệ thời gian thực phát triển Java Hệ thời gian thực Java (Real-time Java) ứng dụng thời gian thực vào giải vấn đề kỹ thuật thực thi