Chương 1: Các khái niệm cơ sở Chương này trình bày những khái niệm cơ sở liên quan đến hệ thống thời gian thực, phân loại lập lịch, các kỹ thuật lập lịch trong các hệ điều hành truyền thống. Chương 2: Lập lịch tác vụ độc lập Chương này trình bày những gải thuật cơ bản để lập lịch tập tác vụ có chu kỳ và tập tác vụ kết hợp có và không có chu kỳ. Chương 3: Lập lịch tác vụ phụ thuộc Chương này trình bày những gải thuật cơ bản để lập lịch tập tác vụ có mối quan hệ phụ thuộc nhau về trình tự thời gian thực hiện hoặc tài nguyên sử dụng chung. Chương 4: Thiết kế và xây dựng chương trình Chương này trình bày thiết kế và xây dựng chương trình và đánh giá thực nghiệm của các giải thuật lập lịch.
CÁC KHÁI NIỆM CƠ SỞ Chương này giới thiệu bài toán lập lịch trong các hệ thống thời gian thực, các khái niệm cơ sở liên quan như hệ thống thời gian thực, các ứng dụng, đặc điểm của các tác vụ trong hệ thống thời gian thực.1 Các ứng dụng thời gian thực 1.1 Các vấn đề liên quan đến ứng dụng thời gian thực Trong các ứng dụng thời gian thực, các yêu cầu về thời gian là những ràng buộc chính và việc kiểm soát chúng là nhân tố nổi bật cho việc đánh giá chất lượng của dịch vụ. Những ràng buộc thời gian trải rộng trên nhiều lĩnh vực như nhà máy công nghiệp tự động hóa, các hệ thống nhúng, điều khiển xe cộ, giám sát nhà máy hạt nhân hướng dẫn thử nghiệm khoa học, robot học, giám sát ca phẫu thuật. Các ứng dụng phát sinh các sự kiện theo chu kỳ hoặc ngẫu nhiên và yêu cầu hệ thống máy tính liên đới phản ứng trước một khoảng thời gian cố định hay khoảng thời gian trễ cho trước. Khoảng thời gian để phản ứng bị giới hạn vì dữ liệu nhất thời phải được bắt lấy, các hành động có một ràng buộc về thời gian bắt đầu và kết thúc và các hồi đáp hay mệnh lệnh phải được gửi đúng lúc.
Khoảng thời gian này có thể khác biệt rất lớn, giá trị của nó có thể là micro giây trong một ra đa, một giây trong giao tiếp người-máy, một phút trong một đường dây kết hợp, hay một giờ trong phản ứng hóa học. Ràng buộc thời gian được phân loại thành chặt chẽ hay mềm dẻo dựa trên nguồn gốc của nó. Một hệ thống thời gian thực có ràng buộc thời gian chặt 13 chẽ khi một lỗi thời gian (trễ hạn, phát thông điệp quá muộn, lấy mẫu dữ liệu một cách bất thường) có thể dẫn đến thảm họa về con người, xã hội hay sinh thái học. Một hệ thống thời gian thực có ràng buộc thời gian mềm dẻo khi các lỗi thời gian có thể được xử lí với một mức độ nhất định.
Một hệ thống thời gian thực là một hệ thống máy tính có hành vi được cố định bởi các chức năng của ứng dụng. Như vậy, một ứng dụng thời gian thực bao gồm hai phần kết nối với nhau: hệ thống điều khiển máy tính thời gian thực và các tiến trình được điều khiển.1) Việc kiểm soát thời gian là một thách thức khó khăn cho các hệ thống thời gian thực và nó thường bị hiểu nhầm. Sự đúng đắn trong phản ứng của hệ thống phụ thuộc vào không chỉ các kết quả logic của việc tính toán mà còn vào thời gian mà kết quả được tạo ra. Dữ liệu chính xác mà xuất hiện quá muộn thì cũng vô dụng; đây là lỗi thời gian ( (Burns and Wellings, 1997; Lelann, 1990; Stankovic, 1988).
Mô hình ứng dụng thời gian thực 14 Hệ thống điều khiển thời gian thực có thể được xây dựng như là: • Một bộ sinh theo chu kỳ: theo chu kỳ lấy mẫu trạng thái của tiến trình bị quản lí, tính dữ liệu đều đặn và gửi các yêu cầu tới các đầu từ (việc này còn được gọi là quản lí đồng bộ); • Một hệ thống có khả năng phản ứng: hệ thống này phản hồi ngay lập tức những kích thích bắt nguồn từ các tiến trình bị quản lí; • Một hệ thống không đồng bộ, kết hợp của các bộ phận mà lập lịch các nhiệm vụ theo chu kỳ và không theo chu kỳ. Kiến trúc vật lý và kiến trúc logic, các hệ điều hành 1. Thiết kế phần mềm của một ứng dụng thời gian thực Thông thường, có một số bước xác định được dùng để phân tích và thi hành những ứng dụng thời gian thực: Phân tích các yêu cầu và các đặc tả về mặt chức năng và thời gian đưa tới một sự hình dung về mặt chức năng ( hệ thống cần phải làm những gì). Thiết kế sơ bộ: thực hiện một sự phân tích hoạt động và dẫn tới sự lựa chọn của những thành phần lôgic của một kiến trúc lôgíc.
Phát triển của các phần mềm và phần cứng chuyên biệt. Chúng thường được phát triển liên tục với qui trình thiết kế giống nhau. Sự phân tích phần cứng đưa ra một kiến trúc vật lý, đưa ra sự lựa chọn của các thành phần phần cứng hay phần mềm đã được tạo ra và sẵn sàng để bán ra thị trường và đưa ra thiết kế chi tiết và sự phát triển của các phần cứng đặc biệt. Sự phân tích mang tính khái niệm dẫn tới một kiến trúc phần mềm, cho sự lựa chọn của các thành phần phần mềm chuẩn và cho việc thực thi của các thành phần phần mềm do người dùng chọn lựa.
Những bước đạt được và nhận ra này kết thúc với việc kiểm thủ đơn vị. 15 Kiểm thử tích hợp: liên quan đến kết hợp tất cả các thành phần phần mềm và phần cứng, các thành phần chuẩn cung như là các thành phần chuyên biệt và thực hiện việc kiểm thử tổng thể. Sự kiểm chứng của người sử dụng: được thực hiện bởi các phép đo, đôi lúc kết hợp với các phương pháp thông dụng và được làm chủ yếu để có sự chấp nhận của hệ thống. Các bước này được tóm tắt trong hình 1.
Sự phát triển kết hợp phần mềm và phần cứng. Một khi kiến trúc logic và phần cứng đã được xác định, một chính sách phân phối sẽ gắn kết các mô đun phần mềm với các đơn vị phần cứng. Trong các hệ thống chịu lỗi phân tán thời gian thực, việc phân phối có thể được thực hiện một cách linh động và các công việc có thể di trú. Việc phân tích hoạt động phải xác 16 định các đơn vị logic cơ bản để ánh xạ các yêu cầu và để thể hiện sự đồng thời trong hệ thống.
Các đơn vị tính toán chính thường được phân loại thành: • Các đối tượng bị động như các tài nguyên vật lý (các thiết bị, cảm biển, các thiết bị truyền động) hay các tài nguyên vật lý (các vòng đệm bộ nhớ, các file, các mô đun phần mềm cơ sở); • Các đối tượng liên lạc như các thông điệp hay các biến, cổng, kênh, kết nối mạng dùng chung; • Các đối tượng đồng bộ hóa như các sự kiện, các semaphore, điều kiện, monitors (như trong Modula) và các đối tượng được bảo vệ (như trong Ada); • Các đối tượng chủ động như các tiến trình, luồng, tác vụ; • Các đối tượng có cấu trúc, nhóm và kết hợp như các mô đun, các gói (như trong Ada), tác nhân (như trong Chorus), tiến trình (như trong Unix, Mach). Trong các hệ thống thời gian thực, từ tác vụ (task) thường được dùng như là đơn vị đại diện các hoạt động đồng thời của kiến trúc logic. Sự song song vật lý trong kiến trúc phần cứng và song song phần mềm trong yêu cầu ứng dụng thường là cơ sở cho phân chia ứng dụng thành các tác vụ tương tranh. Vì vậy, một tác vụ có thể được gắn kết với từng bộ xử lý và với từng thiết bị vào-ra (bộ đọc đĩa, máy in, bàn phím, màn hình,thiết bị truyền động, cảm biến), nhưng cũng tới từng hoạt động chức năng khác biệt (tính toán, giành được, trình diễn, khách, chủ, quản lý đối tượng) hoặc tới từng hoạt động có hành vi khác biệt (có chu kỳ, không chu kỳ, tái kích hoạt, tuần hoàn, theo thời hạn hay mức độ quan trọng).
Kiến trúc vật lý Các kiến trúc của các hệ thống thời gian thực được đặc trưng bởi sự quan trọng của các luồng vào-ra (ví dụ bus VME trong hình 1.3 thể hiện 1 ví dụ của kiến trúc đa xử lý đối xứng với bộ nhớ chia xẻ (Banino et al. Kiến trúc đa xử lý đối xứng với bộ nhớ chia xẻ của Dune 3000 Hình 1. Một kiến trúc phân tán của ứng dụng thời gian thực 18 Các kiến trúc phân tán qua mạng đang được phát triển hơn nữa. Chúng ta sẽ sử dụng thuật ngữ interconnected sites.4 tóm tắt kiến trúc sử dụng mạng cục bộ kết nối với một vài vị trí.Kiến trúc logic và các hệ thống thời gian thực Các hệ điều hành: Để định vị các hệ thống thời gian thực, ta hãy nhớ lại rằng các hệ thống tính toán có thể được phân loại như trong hình 1.5 thành các hệ thống biến đổi, tương tác và tái kích hoạt, bao gồm cả các hệ thống thời gian thực không đồng bộ.
Hệ thống biến đối là hệ thống mà các kết quả được tính toán với các dữ liệu sẵn dùng ngay từ khi chương trình bắt đầu và khả dụng khi được yêu cầu bất kỳ lúc nào. Mối quan hệ giữa các thực thể chương trình liên hệ tới các hệ thống mà dữ liệu được-tạo-môi-trường được yêu cầu bởi các chương trình vừa mới bắt đầu; các kết quả của các chương trình này được nhập vào các chương trình khác. Khía cạnh thời gian liên hệ tới các hệ thống mà các kết quả phải được đưa ra vào thời điểm cố định bởi các qui trình được điều khiển động.5 Các loại hệ thống tính toán Một hệ thống được tập trung hoá khi thông tin đại diện các quyết định, chia sẻ tài nguyên, các thuật toán và toàn vẹn dữ liệu được thực hiện trong bộ nhớ chia sẻ và có thể được truy xuất trực tiếp bởi tất cả các tác vụ của hệ thống. Định nghĩa này độc lập với kiến trúc phần cứng.
Nó liên hệ tới kiến trúc đơn xử lý hay đa xử lý chia sẻ bộ nhớ cũng như tới kiến trúc phân tán mà mọi quyết định chỉ được đưa ra từ một phía. Một hệ thống được phân tán khi các quyết định là kết quả của một sự nhất trí giữa các vị trí trao đổi thông điệp.