Nếu như hầu hết các hệ thống máy tính truyền thống được xây dựng để sử dụng cho các mục đích chung, nghĩa là các hệ thống này thực hiện một vài ứng dụng trong cùng một khoảng thời gian
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2MỤC LỤC
LỜI CAM ĐOAN 2
MỤC LỤC 3
DANH MỤC CÁC TỪ VIẾT TẮT 5
DANH MỤC CÁC BẢNG BIỂU 6
DANH MỤC CÁC HÌNH VẼ 8
MỞ ĐẦU 12
CHƯƠNG 1 - HỆ THỐNG THỜI GIAN THỰC 14
1.1 Hệ thống thời gian thực 14
1.1.1 Khái niệm 14
1.2.2 Phân loại 15
1.1.3 Đặc trưng 17
1.1.4 Xử lý thời gian thực 19
1.1.5 Ứng dụng 20
1.2 Hệ điều hành thời gian thực 21
1.2.1 Định nghĩa về hệ điều hành thời gian thực 21
1.2.2 Một số đặc tính hiệu năng của hệ điều hành thời gian thực 22
1.2.3 Các dịch vụ và chức năng thời gian thực 23
1.2.4 Một số vấn đề cần quan tâm trong thiết kế hệ điều hành thời gian thực 24
1.2.5 Một số tiêu chuẩn liên quan đến hệ điều hành thời gian thực 28
1.2.6 Phân loại hệ điều hành thời gian thực 28
1.2.7 Một số hệ điều hành thời gian thực tiêu biểu 29
1.3 Nền tảng phần cứng 30
1.4 Ngôn ngữ lập trình cho hệ thống thời gian thực 31
1.4.1 Tổng quan về ngôn ngữ lập trình cho hệ thống thời gian thực 31
1.4.2 Các đặc điểm của ngôn ngữ lập trình thời gian thực 31
1.5 Truyền thông thời gian thực 32
1.5.1 Giới thiệu 32
1.5.2 Xử lý lời gọi RTC 32
1.5.3 Giao thức khởi tạo phiên SIP 33
1.5.4 Giao thức mô tả phiên SDP 45
1.5.5 Giao thức truyền thông thời gian thực 46
1.6 Cơ sở dữ liệu thời gian thực 52
1.6.1 Tổng quan 52
1.6.2 Duy trì tính nhất quán 52
Trang 31.6.3 Ràng buộc thời gian 53
1.6.4 Hệ quản trị cơ sở dữ liệu thời gian thực 53
1.7 Kết luận 54
CHƯƠNG 2 - NGÔN NGỮ MÔ HÌNH HOÁ UML 56
2.1 Giới thiệu 56
2.2 Kiến trúc của UML 58
2.3 Mô hình khái niệm của UML 59
2.3.1 Các khối xây dựng (building blocks 59
2.3.2 Các quy tắc của UML 67
2.3.3 Các kỹ thuật chung của UML 67
2.4 Kết luận 69
CHƯƠNG 3 - TIẾN TRÌNH ROPES 70
3.1 Giới thiệu 70
3.2 Các pha 73
3.2.1 Phân tích 73
3.2.2 Thiết kế 79
3.2.3 Cài đặt và kiểm thử đơn vị 82
3.2.4 Kiểm thử hệ thống 83
3.3 Kết luận 84
CHƯƠNG 4 - PHÂN TÍCH THIẾT KẾ HỆ THỐNG KIỂM SOÁT KHÔNG LƯU 85
4.1 Giới thiệu 85
4.1.1 Tại sao chọn hệ thống kiểm soát không lưu? 85
4.1.2 Mô tả hoạt động của hệ thống kiểm soát không lưu 85
4.2 Phân tích hệ thống 95
4.2.1 Các thuật ngữ 95
4.2.2 Phân tích yêu cầu 97
4.2.3 Phân tích cấu trúc 111
4.2.4 Phân tích hành vi 118
4.3 Thiết kế 119
4.4 Kết luận 123
KẾT LUẬN 124
TÀI LIỆU THAM KHẢO 125
Trang 4DANH MỤC CÁC TỪ VIẾT TẮT
ARTCC Air Route Traffic Control Centers
ATCSCC Air Traffic Control System
Command Center
ATCT Air Traffic Tontrol Tower Tháp điều khiển không lưu
FSS Flight Service Station Trạm dịch vụ bay
ROPES
Rapid Object-Oriented Process
for Embedded Systems
Tiến trình phát triển hướng đối tượng cho các hệ thống nhúng RTC Real–Time Communication Truyền thông thời gian thực
RTCP Real-Time Transport Control
Protocol
Giao thức điều khiển truyền thông thời gian thực
RTP Real-Time Transport Protocol
Giao thức truyền thông thời gian thực
SDP Session Description Protocol Giao thức mô tả phiên
SIP Session Initiation Protocol Giao thức khởi tạo phiên SIP TCP Transmition Control Protocol Giao thức điều khiển
TRACON Terminal Radar Approach Control
UDP User Datagram Protocol
UML Unified Modeling Language Ngôn ngữ mô hình hoá hợp nhất
Trang 5DANH MỤC CÁC BẢNG BIỂU
Bảng 1.5 Các phương thức SIP và chức năng của chúng 39
Bảng 3.1 Các vật phẩm thu được của phân tích yêu cầu 76
Bảng 3.2 Các vật phẩm thu được của phân tích hệ thống 77
Bảng 3.3 Các vật phẩm thu được của phân tích đối tượng 79
Bảng 3.4 Các vật phẩm thu được của thiết kế kiến trúc 81
Bảng 4.1 Các thuật ngữ của hệ thống kiểm soát không lưu 96
Trang 6Bảng 4.5 Luồng sự kiện chính của ca sử dụng ―locate track‖ 102
Bảng 4.6 Luồng sự kiện chính của ca sử dụng ―identify aircraft‖ 105
Bảng 4.7 Luồng sự kiện chính của ca sử dụng ―create the flight plan‖ 108
Bảng 4.8 Luồng sự kiện chính ca sử dụng ―create flight progress trip‖ 110
Trang 7Hình 1.6 Sự đoạt quyền: (a) không hỗ trợ; (b) có hỗ trợ 26
Hình 1.8 Hệ điều hành thời gian thực mở rộng từ các hệ điều hành khác 29
Hình 1.10 Luồng sự kiện một phiên SIP trực tiếp giữa các user agent 35 Hình 1.11 Luồng sự kiện một phiên SIP có Proxy Server 35 Hình 1.12 Luồng sự kiện một phiên SIP với Registrar Server 36 Hình 1.13 Luồng sự kiện một phiên SIP với Redirect Server 36
Trang 9Hình 3.1 Các pha và luồng công việc trong ROPES 71 Hình 3.2 Các vật phẩm được tạo ra trong tiến trình ROPES 72
Hình 3.5 Pha biên dịch và kiểm thử đơn vị trong ROPES 82
Hình 4.1 Kiểm soát viên không lưu trong một tháp sân bay 86
Hình 4.3 Mô tả sơ lược hành trình của một chuyến bay thương mại 89 Hình 4.4 Một máy bay chạy trượt trên đường băng theo hướng dẫn từ
kiểm soát viên mặt đất
90
Hình 4.5 Các hành lang khởi hành và tiếp cận giao thông phía Tây của
không gian TRACON khu vực cảng San Francisco
91
Hình 4.7 Phối hợp viên trung tâm xem xét các hiển thị của TMA 93 Hình 4.8 Hàng lang khởi hành và tiếp cận trong không gian TRACON
khu vực phía Đông sân bay
94
Hình 4.9 Các kiểm soát viên không lưu trong tháp điều khiển điều khiển
việc cất cánh, hạ cánh và giao thông trên mặt đất bằng radar và các công cụ trực quan
Trang 10Hình 4.15 Biểu đồ tuần tự đối tượng ca sử dụng ―Identify Aircraft‖ 107 Hình 4.16 Biểu đồ tuần tự hệ thống ca sử dụng ―create the flight plan‖ 108 Hình 4.17 Biểu đồ lớp phân tích thực thi ca sử dụng ―Create Flight Plan‖ 109 Hình 4.18 Biểu đồ tuần tự đối tượng ca sử dụng ―Create Flight Plan‖ 109 Hình 4.19 Biểu đồ tuần tự hệ thống ca sử dụng ―create flight progress trip‖ 110 Hình 4.20 Biểu đồ tuần tự đối tượng ca sử dụng ―create flight progress trip‖ 111 Hình 4.21 Biểu đồ lớp nhóm ca sử dụng liên quan đến quản lý bay 115
Hình 4.23 Miền quản lý máy bay và Miền giám sát máy bay 117 Hình 4.24 Miền quản lý máy bay và Miền hiển thị (Display Domain) 118 Hình 4.25 Biểu đồ cộng tác phát hiện vi phạm khoảng cách 118 Hình 4.26 Biểu đồ hoạt động ca sử dụng ――identify aircraft‖ 119 Hình 4.27 Giao diện ca sử dụng ―create flight plan‖ 120
Trang 11MỞ ĐẦU
Xã hội càng phát triển, công nghệ thông tin càng giữa vị trí quan trọng trong đời sống và kỹ thuật Cùng với xu hướng phát triển của công nghệ thông tin, việc xây dựng các hệ thống thời gian thực, đặc biệt là các hệ thống điều khiển trở thành một vấn đề tất yếu, một nhu cầu cấp thiết
Không có hệ thống điều khiển nào có thể hoạt động bình thường nếu như nó không đáp ứng được các yêu cầu về thời gian, bất kể là hệ thống điều khiển nhiệt độ, điều khiển áp suất, điều khiển lưu lượng hay điều khiển chuyển động Tất cả các hệ thống điều khiển đều là các hệ thống thời gian thực
Hệ thống thời gian thực được ứng dụng phổ biến trong rất nhiều lĩnh vực, như thương mại, quân đội, y tế, giáo dục, cơ sở hạ tầng,… và hiện nay đang phát triển rất mạnh mẽ
Hệ thống kiểm soát không lưu (Air Traffic Control System) là một ví dụ tiêu biểu cho hệ thống thời gian thực bởi rất nhiều lý do Trước hết, hệ thống kiểm soát không lưu là một ứng dụng quan trọng, phức tạp, phổ biến và có mặt ở hầu hết các nước trên thế giới Hơn nữa, hệ thống này mang đầy đủ các đặc trưng của một hệ thống thời gian thực Và cuối cùng, các bộ phận của hệ thống này có thể tách ra để minh họa cho các ý tưởng kỹ thuật khác nhau
Giao thông phát triển, số lượng máy bay tăng, số lượng các chuyến bay trong không phân một nước và giữa các nước tăng nhanh, do đó yêu cầu có hệ thống kiểm soát không lưu hoạt động để điều khiển giao thông hàng không trở thành nhu cầu không của riêng quốc gia nào
Mục tiêu của luận văn này là tìm hiểu các vấn đề về hệ thống thời gian thực, ngôn ngữ mô hình hoá UML, tiến trình phát triển phần mềm cho các hệ thống thời gian thực ROPES và sử dụng tiến trình này để phân tích thiết kế hệ thống kiểm soát không lưu
Luận văn được trình bày trong bốn chương với nội dung mỗi chương như sau: Chương 1 giới thiệu hệ thống thời gian thực: khái niệm, phân loại, đặc trưng, ứng dụng và các vấn đề thời gian thực liên quan như hệ điều phần thời gian thực, cơ sở dữ
Trang 12liệu thời gian thực, truyền thông thời gian thực, ngôn ngữ lập trình thời gian thực, yêu cầu phần cứng cho một hệ thống thời gian thực
Tiếp theo, Chương 2 trình bày những vấn đề cơ bản của ngôn ngữ mô hình hoá hợp nhất UML gồm các ký hiệu, các đặc trưng, các mô hình
Trong Chương 3, sẽ giới thiệu tiến trình phát triển các phần mềm ROPES, một tiến trình được sử dụng khá hiệu quả để phát triển hệ thống thời gian thực sử dụng các
ký hiệu UML, sẽ trình bày mô hình tiến trình, các pha, các hoạt động và các vật phẩm thu được trong từng pha
Chương 4 tìm hiểu hệ thống kiểm soát không lưu, tầm quan trọng, hoạt động và
mô hình của một hệ thống kiểm soát không lưu, phân tích và thiết kế một hệ thống kiểm soát không lưu đơn giản sử dụng tiến trình phát triển ROPES
Chắc chắn, luận văn còn có những thiếu sót trong nội dung cũng như trong trình bày Tác giả của luận văn rất mong nhận được sự đóng góp ý kiến của các thầy cô giáo
và của các anh/chị học viên
Trang 13CHƯƠNG 1 - HỆ THỐNG THỜI GIAN THỰC
1.1 Hệ thống thời gian thực
1.1.1 Khái niệm
Trong các tài liệu cũng như trong thực tế, khái niệm thời gian thực và hệ thống thời gian thực không phải lúc nào cũng được hiểu một cách thống nhất Nhiều người cho rằng, hệ thống thời gian thực là một hệ thống phải làm việc với yêu cầu thời gian rất nhanh (trong phạm vi một vài micro-giây gì đó), ví dụ các hệ thống điều khiển tay máy, điều khiển động cơ, Không ít ý kiến cho rằng, khái niệm thời gian thực luôn gắn với các hệ nhúng và điều khiển thời gian thực là một vấn đề của riêng điều khiển nhúng, tức là các giải pháp sử dụng vi điều khiển, Lại cũng có quan niệm cho rằng thời gian thực là thời gian tuyệt đối, hệ thống thời gian thực là một hệ thống có khả năng làm việc với thời gian tuyệt đối theo giờ-phút-giây của ngày tháng Vậy chúng ta nên hiểu như thế nào đây?
Một quan điểm được ủng hộ và trích dẫn nhiều nhất là của Stankovic [Sta96]:
“Hệ thống thời gian thực là hệ thống mà tính đúng đắn của nó không chỉ phụ thuộc vào các kết quả logic nó tạo ra mà còn phụ thuộc vào thời điểm các kết quả đó được tạo ra”
Như vậy, hệ thống thời gian thực là một hệ thống mà sự hoạt động tin cậy của
nó không chỉ phụ thuộc vào sự chính xác của kết quả, mà còn phụ thuộc vào thời điểm
đưa ra kết quả, hệ thống có lỗi khi yêu cầu về thời gian không được thoả mãn
Trong một bài báo nổi tiếng khác [Sta88], Stankovic cũng đã chỉ ra một số quan niệm sai lầm về khái niệm thời gian thực Ví dụ, khái niệm hệ thống thời gian thực không đồng nghĩa với khái niệm hệ xử lý tốc độ cao, xử lý nhanh Nếu ta cho rằng, phải là các ứng dụng điều khiển có yêu cầu thời gian tính toán rất nhanh mới gọi là điều khiển thời gian thực, thì một câu hỏi sẽ được đặt ra là: như thế nào mới được gọi
là nhanh? Ta có thể thống nhất là, cỡ một vài micro-giây là rất nhanh, tuy nhiên nếu một vài chục micro-giây thì sao, một trăm micro-giây thì sao? Nếu một trăm micro-giây mới gọi là nhanh, thì 101, 102, có nhanh không? Các hệ thống điều khiển với chu kỳ trích mẫu 5ms, 6 ms, 7ms có được gọi là hệ thống thời gian thực hay không?
Trang 141.2.2 Phân loại
Về cơ bản, chương trình có tính thời gian thực phải có khả năng phản ứng lại các
sự kiện trong môi trường mà hệ thống làm việc trong khoảng thời gian nhất định cho trước Những hệ thống như vậy được gọi là hệ thống "điều khiển sự kiện" và có thể được mô tả bằng thời gian trễ tính từ khi sự kiện xảy ra tới khi hệ thống có hoạt động phản ứng lại sự kiện đó
Thời gian thực, mặt khác, đòi hỏi một giới hạn cao hơn về thời gian trễ, được gọi
là " thời hạn lập lịch " (scheduling deadline) hoặc gọi tắt là thời hạn Hệ thống thời gian
thực thường được phân thành hai loại: hệ thống thời gian thực cứng (hard real-time system) và hệ thống thời gian thực mềm (soft real- time system)
Hệ thống thời gian thực cứng là hệ thống mà các hành động của nó phải không
bao giờ được vi phạm các ràng buộc thời gian trong đó có thời hạn lập lịch, hệ thống phải tiếp nhận và nắm bắt được thời hạn lập lịch của nó tại mọi thời điểm Hệ thống có lỗi hoặc sai sót trong việc tiếp nhận thời hạn sẽ gây ra các hậu quả rất nghiêm trọng, thiệt hại về vật chất, gây ảnh hưởng xấu đến sức khoẻ, đời sống của con người, thậm chí chết người Với hệ thống thời gian thực cứng, dữ liệu trễ là dữ liệu tồi Một ví dụ
về hệ thống thời gian thực cứng là hệ thống kiểm soát không lưu Trong hệ thống này, một phân phối đường bay, thời gian cất cánh, thời gian hạ cánh không hợp lý, không đúng lúc có thể gây ra tai nạn máy bay mà hậu quả của nó khó mà lường trước được Một ví dụ khác, máy hỗ trợ nhịp tim cho bệnh nhân khi phẫu thuật Thuật toán điều khiển phụ thuộc vào thời gian nhịp tim của người bệnh, nếu thời gian này bị trễ, tính mạng của người bệnh sẽ bị ảnh hưởng
Ngược lại, hệ thống thời gian thực mềm là hệ thống có các ràng buộc về thời
gian, tuy nhiên, trong trường hợp các ràng buộc này bị vi phạm, tức là thời gian trả lời của hệ thống vượt quá thời hạn đặt ra, hệ thống vẫn hoạt động được tiếp và kết quả nó tạo ra bị giảm ―giá trị‖ theo một nghĩa nào đó Nói cách khác, những kết quả tạo ra không đúng hạn tuy không hữu ích/không làm hài lòng người sử dụng bằng khi nó được tạo ra đúng hạn nhưng vẫn được chấp nhận Chúng ta mong muốn hệ thống phản ứng lại các sự kiện trong thời gian cho phép nhưng không có gì thực sự nghiêm trọng xảy ra nếu hệ thống thỉnh thoảng bị trễ Lỗi về mặt thời gian có thể chỉ đơn giản là dẫn đến hậu quả giảm độ tin cậy của đối tượng đối với hệ thống mà không có hậu quả thê thảm nào khác xảy ra Mạng lưới thu ngân tự động của ngân hàng là ví dụ rõ nhất cho
hệ thống thời gian thực mềm Mạng rút tiền tự động ATM là hệ thống thời gian thực? Chẳng ai dám đánh cược cả Khi bạn đưa thẻ ATM vào máy, bạn mong là máy sẽ phản
Trang 15ứng lại trong vòng 1 hay 2 giây Nhưng nếu nó lâu hơn thế, điều tồi tệ nhất có thể xảy
ra là bạn sốt ruột và thấy khó chịu vì cái máy đó
Hình 1.1 Hệ thống thời gian thực cứng và mềm
Trên thực tế có rất nhiều hệ thống phối hợp cả hai loại trên, trong đó, một phần nào đó của hệ thống làm việc dựa trên hệ thống thời gian thực cứng, một số phần khác lại dựa trên hệ thống thời gian thực mềm
Ta có thể quan niệm hệ thống thời gian thực cứng là hệ thống phải thỏa mãn các ràng buộc cứng về thời gian - ràng buộc thời gian không được phép vi phạm Tương
tự, hệ thống thời gian thực mềm là hệ thống phải thỏa các ràng buộc mềm về thời gian
- ràng buộc thời gian được phép vi phạm, nhưng các vi phạm sẽ làm giảm giá trị của kết quả Một hệ thống có thể có cả các ràng buộc cứng lẫn ràng buộc mềm về thời gian
Hình 1.2 Hệ thống phi thời gian thực, hệ thống thời gian thực cứng và hệ thống
Phi thời
gian thực
Thời gian thực cứng
Mô phỏng
máy tính
Giao diện người sử dụng
Internet video
Điều khiển mạch
Viễn thông
Điều khiển bay
Động cơ điện
Trang 16hơn, phần mềm thời gian thực phải thỏa mãn các khẳng định (assertion) thời gian,
khẳng định này bao gồm cả quan hệ đối với thời gian tuyệt đối và thời gian tương đối Cách xác nhận đơn giản nhất và phổ biến nhất là một mốc tới hạn (thời hạn) - giới hạn
về thời gian tương đối hoặc tuyệt đối mà một tính toán phải hoàn thành Ví dụ, trong
hệ thống điều khiển robot, có thể có một thời hạn hoặc một giới hạn giữa thời gian một robot đang di chuyển cảm thấy một vật cản trên đường đi và thời gian actuator, chẳng hạn bộ điều khiển chuyển hướng, được kích hoạt để di chuyển robot theo hướng an toàn hơn
Đặc trưng thứ hai của hệ thống thời gian thực là tính đồng thời (concurrency) Hệ
thống phải có khả năng phản ứng và xử lý đồng thời nhiều sự kiện diễn ra Có thể, cùng một lúc một bộ điều khiển được yêu cầu thực hiện nhiều vòng điều chỉnh, giám sát ngưỡng giá trị nhiều đầu vào, cảnh giới trạng thái làm việc của một số động cơ Đa
số các hệ thống thời gian thực thực hiện một hoặc một tập nhỏ các nhiệm vụ mức cao
Sự thực thi các nhiệm vụ mức cao này yêu cầu đồng thời nhiều hoạt động mức thấp hơn Và đây được gọi là tính đồng thời, các hệ thống máy tính sử dụng tính đồng thời
để cải thiện thực thi và điều này hoàn toàn có thể thực hiện được trong cả các hệ thống đơn và đa bộ xử lý Các hệ thống gồm một bộ xử lý chỉ có thể thực hiện được một công việc tại một thời điểm, chúng thực hiện chiến lược lập lịch để điều khiển khi các nhiệm vụ thực thi Còn trong các hệ thống đa bộ xử lý, các bộ xử lý thực thi không đồng bộ, từng bộ xử lý riêng lẻ tạo lập một số luồng giả trùng hợp, chỉ một luồng đơn
có thể được thực hiện tại một thời điểm bất kỳ đã cho, nhưng các luồng hoạt động thay đổi theo một số chiến lược lập lịch Nhiều hệ thống cũng sử dụng tính đồng thời như một mô hình để mô tả các hoạt động song song về mặt logic, ngay cả khi các hoạt động này được thực thi bằng cách xen kẽ từng hành động trên một bộ xử lý đơn Hơn nữa, các hệ thống thời gian thực cũng phải giải quyết tính đồng thời về vật lý vốn có
và các trùng hợp này là một bộ phận của thế giới thực mà hệ thống được kết nối Các tín hiệu đến từ môi trường có thể đến đồng thời; tách rời theo quy luật tự nhiên và các hành động đồng thời có thể được giám sát và điều khiển bởi một hệ thống máy tính
Trang 17đơn; cần thiết phải biết thời điểm tín hiệu được nhận; và các tín hiệu ra có thể phải được phát tại thời điểm xấp xỉ với ràng buộc thời gian
Thiết kế hệ thống trở nên đặc biệt khó khăn khi hệ thống là tổ hợp của các vấn đề trùng hợp về thời gian Trong một bài báo minh họa các chương trình thời gian thực, Wirth77 đã định nghĩa một cách không hình thức mô hình độ phức tạp chương trình: mức đầu tiên hay mức thấp nhất của độ phức tạp phần mềm (mức có độ phức tạp nhỏ nhất) là các chương trình tuần tự, mức tiếp theo là các đa chương trình tạo cảm giác song song bởi các nhân tố thời gian (khử tính liên tục tai mức cao hơn), thực thi các chương trình song song, mức cao nhất và có độ phức tạp lớn nhất là các chương trình thời gian thực
Đặc trưng thứ ba của các hệ thống thời gian thực là tầm quan trọng và ý nghĩa
của độ tin cậy (reliability) và dung thứ lỗi (fault tolerance) Độ tin cậy là độ đo mức độ
xảy ra lỗi của một hệ thống Hay nói một cách khác, độ tin cậy là xác suất hệ thống thực thi hiệu quả trong một chu kỳ thời gian Khoảng chấp nhận lỗi liên quan đến việc nhận ra và xử lý lỗi Lỗi xảy ra có thể phải trả giá rất đắt và nguy hiểm, ví dụ, chết người, mất tiền… Tuy nhiên, không có một hệ thống nào là tuyệt đối đáng tin cậy và lỗi luôn luôn là một phần của hệ thống Vì vậy, vấn đề quan trọng là tránh xảy ra lỗi nếu có thể được bằng các kỹ thuật đáng tin cậy, thích hợp, …, với chi phí thấp hơn rất nhiều so với chi phí cần đến khi lỗi xảy ra
Đặc trưng thứ tư của hệ thống thời gian thực là tính chuyên biệt Nếu như hầu hết
các hệ thống máy tính truyền thống được xây dựng để sử dụng cho các mục đích chung, nghĩa là các hệ thống này thực hiện một vài ứng dụng trong cùng một khoảng thời gian và các ứng dụng này thường không được biết trước đối với các nhà thiết kế
hệ thống; thì các hệ thống thời gian thực thường là các ứng dụng đặc thù (application)
và độc lập, đơn lẻ (stand-alone), nghĩa là tất cả các phần mềm, kể cả hệ điều hành,
hoàn toàn phù hợp với ứng dụng cụ thể
Với các hệ thống thời gian thực, nhiều ứng dụng và cấu hình do một hoặc nhiều người trực tiếp điều khiển và giám sát các hành vi của hệ thống, do đó, giao diện người máy phải được thiết kế rất cẩn thận để tránh các lỗi do con người tạo ra
Đặc trưng cuối cùng của hệ thống thời gian thực liên quan đến kiểm thử (testing)
và xác thực (certification) Vì chi phí liên quan đến lỗi cao, thật sự không khả thi khi
kiểm thử và gỡ lỗi các hệ thống trong các môi trường thực tế Thay vào đó, người ta phải sử dụng mô phỏng, kiểm thử các hệ thống con, đặc tả cẩn thận, phân tích toàn diện các thiết kế, …, để phát hiện và xử lý lỗi
Trang 181.1.4 Xử lý thời gian thực
Xử lý thời gian thực là hình thức xử lý thông tin trong một hệ thống để đảm bảo
tính năng thời gian thực của nó Như vậy, xử lý thời gian thực cũng có các đặc điểm tiêu biểu nêu trên như tính bị động, tính nhanh nhạy, tính đồng thời và tính tiền định
Để có thể phản ứng với nhiều sự kiện diễn ra cùng một lúc, một hệ thống xử lý thời gian thực sử dụng các quá trình tính toán đồng thời
Quá trình tính toán là một tiến trình thực hiện một hoặc một phần chương trình tuần tự do hệ điều hành quản lý trên một máy tính, có thể tồn tại đồng thời với các quá trình khác kể cả trong thời gian thực hiện lệnh và thời gian xếp hàng chờ đợi thực hiện
Các hình thức tổ chức các quá trình tính toán đồng thời:
- Xử lý tương tranh: Nhiều quá trình tính toán chia sẻ thời gian xử lý thông tin của
một bộ xử lý
- Xử lý song song: Các quá trình tính toán được phân chia thực hiện song song trên
nhiều bộ xử lý của hệ thống máy tính
- Xử lý phân tán: Mỗi quá trình tính toán được thực hiện riêng trên một máy tính
Trong các hình thức trên đây thì hình thức xử lý tương tranh có vai trò chủ chốt Mặc dù hệ thống điều khiển có thể có nhiều trạm, và mỗi trạm có thể là một hệ đa vi
xử lý, số lượng các quá trình tính toán cần thực hiện thường bao giờ cũng lớn hơn số lượng vi xử lý Trong khi một vi xử lý không thể thực hiện song song nhiều lệnh, nó phải phân chia thời gian để thực hiện xen kẽ nhiều nhiệm vụ khác nhau theo thứ tự tùy theo mức ưu tiên và phương pháp lập lịch
Trong các hệ thống điều khiển, khái niệm tác vụ (task) cũng hay được sử dụng
bên cạnh quá trình tính toán Có thể nói, tác vụ là một nhiệm vụ xử lý thông tin trong
hệ thống có thể thực hiện theo cơ chế tuần hoàn (periodic task) hoặc theo sự kiện (event task) Các dạng tác vụ qui định trong chuẩn IEC 61131-3 (Programmable Controllers – Part3: Programming Languages) Ví dụ, một tác vụ thực hiện nhiệm vụ điều khiển cho một hoặc nhiều mạch vòng kín có chu kỳ trích mẫu giống nhau Hoặc, một tác vụ có thể thực hiện nhiệm vụ điều khiển logic, điều khiển trình tự theo các sự kiện xảy ra Tác vụ có thể thực hiện dưới dạng một quá trình tính toán duy nhất, hoặc một dãy các quá trình tính toán khác nhau
Trang 191.1.5 Ứng dụng
Có thể nói, tất các các hệ thống điều khiển là hệ thời gian thực Ngược lại, một số lớn các hệ thống thời gian thực là các hệ thống điều khiển Không có hệ thống điều khiển nào có thể hoạt động bình thường nếu như nó không đáp ứng được các yêu cầu
về thời gian, bất kể là hệ thống điều khiển nhiệt độ, điều khiển áp suất, điều khiển lưu lượng hay điều khiển chuyển động Một bộ điều khiển phải đưa ra được tín hiệu điều khiển kịp thời sau một thời gian nhận được tín hiệu đo để đưa quá trình kỹ thuật về trạng thái mong muốn Một mạng truyền thông trong một hệ thống điều khiển có tính năng thời gian thực phải có khả năng truyền tin một cách tin cậy và kịp thời đối với các yêu cầu của các bộ điều khiển, các thiết bị vào/ra, các thiết bị đo và thiết bị chấp hành Tính năng thời gian thực của một hệ thống điều khiển phân tán không chỉ phụ thuộc vào tính năng thời gian thực của từng thành phần trong hệ thống, mà còn phụ thuộc vào sự phối hợp hoạt động giữa các thành phần đó
Hệ thống thời gian thực được ứng dụng phổ biến trong rất nhiều lĩnh vực, như thương mại, quân đội, y tế, giáo dục, cơ sở hạ tầng,… và hiện nay đang phát triển rất mạnh mẽ Ta có thể kể ra một số lĩnh vực ứng dụng tiêu biểu:
- Các hệ thống phương tiện như: xe ô tô, xe điện ngầm, máy bay, tàu hỏa, tàu thủy, …
- Hệ thống điều khiển giao thông trên đường cao tốc, không phận, đường ray, đường dành riêng cho tàu biển, …, ví dụ, hệ thống kiểm soát không lưu
- Hệ thống điều khiển trong các nhà máy: như nhà máy năng lượng, nhà máy hóa chất và các nhà máy sản xuất bia và nước uống có ga, …
- Hệ thống y tế như hệ thống chữa bệnh bằng bức xạ, giám sát bệnh nhân, phục hồi nhịp đập bình thường của tim
- Hệ thống vũ khí quân sự sử dụng trong quân đội tạo các vũ khí cháy nổ, hiệu chỉnh tín hiệu, …
- Hệ thống chế tạo sử dụng robot
- Hệ thống xử lý các luồng Video và Audio
Trang 20
1.2 Hệ điều hành thời gian thực
Các hệ thống thông thường thường nhằm các mục tiêu: tính chính xác, tính hiệu
quả, năng lực thực hiện trung bình ở mức có thể chấp nhận được; trong khi đó các hệ
thống thời gian thực, một số tiêu chí được đề cao: tính chính xác, tính kịp thời, hoạt
động phải có tính nhất quán
Hệ điều hành trong các hệ thống thời gian thực cũng có các chức năng giống như các chức năng của hệ điều hành thông thường, điểm khác là các hệ điều hành thời gian thực phải có các đặc điểm thoả mãn các tiêu chí của các hệ thống thời gian thực
Yêu cầu đầu tiên đối với một hệ điều hành thời gian thực là khả năng dự đoán
trước (predictibility) Yêu cầu thứ hai là có thể nhận biết và điều khiển tất cả các thành phần hệ thống; trong các hệ điều hành truyền thống, phần lớn phần cứng và hệ
thống là ẩn hoặc khá trừu tượng đối với người sử dụng hoặc các nhà thiết kế ứng dụng; tuy nhiên người sử dụng các hệ điều hành thời gian thực phải truy cập và điều khiển được các hành vi của các thành phần hệ thống để bảo đảm tính tiên đoán được Yêu
cầu thứ ba nên đạt được đó là hệ điều hành thời gian thực nên là hệ thống mở, nghĩa là
hệ thống định nghĩa một tập các cơ chế mềm dẻo, phù hợp chứ không tập trung vào các chiến lược cụ thể
Trước đây các ứng dụng thời gian thực thường đơn giản, được thiết kế và thực hiện trên các phần cứng đặc thù, ngày nay, các ứng dụng thời gian thực được sử dụng rộng rãi hơn và cũng phức tạp hơn rất nhiều Để có thể cung cấp được các hàm chức năng phức tạp, sự linh hoạt cao và độ tin cậy cho các ứng dụng thời gian thực thì các ứng dụng này không thể chạy trên các phần cứng đặc thù nữa, một hệ điều hành thời gian thực là một đòi hỏi cần thiết để có thể thoả mãn được các yêu cầu đó
1.2.1 Định nghĩa về hệ điều hành thời gian thực
Chuẩn POSIX 1003.1 định nghĩa: ―tính thời gian thực trong các hệ điều hành thời gian thực: là khả năng của hệ điều hành có thể cung cấp cho các dịch vụ đòi hỏi các đáp ứng có yêu cầu ràng buộc về thời gian‖
Các ràng buộc về thời gian khác nhau trong các hệ thống tính toán khác nhau có thể từ vài giây đến mức s Để có thể thoả mãn các đòi hỏi của các hệ thống thời gian
thực, một hệ điều hành thời gian thực cần phải: đơn giản, nhỏ gọn, tiên đoán được và
dự đoán được trường hợp xấu nhất Hệ điều hành cũng phân loại thành hệ điều hành thời gian thực cứng và hệ điều hành thời gian thực mềm tương ứng với sự phân loại các hệ thống thời gian thực
Trang 211.2.2 Một số đặc tính hiệu năng của hệ điều hành thời gian thực
Tính chất sống còn của một hệ điều hành thời gian thực là hệ điều hành sẽ đáp ứng thế nào đối với các sự kiện bên trong và bên ngoài để đáp ứng tính kịp thời và tính
tiên đoán được được phản ánh ra ngoài thông qua 2 thông số của hệ điều hành là: độ
trễ đáp ứng sự kiện (event latency) và độ lệch chu kỳ (periodic jitter), đây cũng là các
thông số cơ bản để đánh giá hệ điều hành là có tính thời gian thực Độ trễ đáp ứng sự
kiện là khoảng thời gian được tính từ khi sự kiện xảy ra đến khi sự kiện được xử lý bởi
những mã lệnh phục vụ đầu tiên Các sự kiện có thể sinh ra do các ngắt cứng hoặc từ các ngắt mềm tạo ra bởi chính hệ điều hành Độ trễ đáp ứng sự kiện được biểu diễn
trong Hình 1.3 Trong trường hợp do ngắt từ phần cứng, độ trễ là khoảng thời gian từ khi bị ngắt đến thời gian mà mã lệnh phục vụ ngắt đầu tiên được xử lý Trong trường hợp hệ điều hành phát sinh ra các sự kiện thông qua các ngắt mềm, độ trễ là khoảng thời gian từ khi tín hiệu được phát ra đến khi mã lệnh đầu tiên của trình phục vụ ngắt mềm đó được xử lý
Hình 1.3 Trễ đáp ứng sự kiện
Độ lệch chu kỳ là sự thay đổi của chu kỳ đáp ứng đối với các sự kiện xảy ra có
chu kỳ cố định Độ lệch chu kỳ được chỉ ra như trong Hình 1.4 Công việc xử lý lặp có chu kỳ cố định (fixed cycle) này có trong hầu hết các thiết bị điều khiển có tích hợp chức năng lấy mẫu theo thời gian Các thuật toán điều khiển đưa ra các quyết định phụ thuộc vào các mẫu này, nếu có sự xê dịch của các xử lý này thì các quyết định đưa ra
có thể tác động đến hệ thống không như yêu cầu mong muốn
Tính kịp thời và tính tiên đoán được là hai yêu cầu quan trọng nhất mà mỗi hệ
điều hành thời gian thực cần thoả mãn Tính kịp thời của hệ điều hành thường bị ảnh hưởng trực tiếp của phân hệ lập lịch, tính tiên đoán được lại bị ảnh hưởng của các yếu tố: Các hoạt động ngắt, vào/ra, đồng bộ, truyền thông nội bộ (IPC), quản lý bộ nhớ và
Trang 22Hình 1.4 Độ lệch chu kỳ 1.2.3 Các dịch vụ và chức năng thời gian thực
Chức năng quan trọng nhất là các chức năng truy cập và điều khiển thời gian
tương đối và tuyệt đối, ví dụ các thao tác độc lập và thiết lập đồng hồ, hoặc làm trễ
thời gian
Tập dịch vụ thứ hai là quản lý luồng và tiến trình, bao gồm các thao tác tạo và
khởi tạo, kích hoạt, và kết thúc các tác vụ thời gian thực
Tập dịch vụ thứ ba là các dịch vụ giải quyết ngoại lệ, các dịch vụ này cung cấp
các thao tác để tạo và thiết kế ngoại lệ, định nghĩa các phương thức giải quyết ngoại lệ thích hợp
Các tiêu chuẩn quản lý thiết bị phần cứng thường không được chấp nhận đối với các ứng dụng Tuy nhiên, các tiêu chuẩn này là cần đối với các hệ thống thời gian thực
để điều khiển và truy cập tới các bộ cảm biển (sensor), bộ điều khiển (controller), đồng
hồ (timer) và các thiết bị vào – ra truyền thống
Các dịch vụ mạng thời gian thực là các phần mềm thực hiện truyền thông Các cơ
chế và giao thức truyền thông có các ràng buộc dự đoán được và đáng tin cậy hơn trong các hệ điều hành truyền thống – các thông báo phải được nhận đúng thời gian, kể
cả khi có lỗi phần cứng
Các dịch vụ tệp cũng cần được quan tâm Các tệp thời gian thực có thể được lưu
trũ trong bộ nhớ chính để tránh các vấn đề về truy cập và lỗi có thể có
Độ lệch chu kỳ Độ lệch chu kỳ
Thời gian cố định
Thời gian cố định
Trang 231.2.4 Một số vấn đề cần quan tâm trong thiết kế hệ điều hành thời gian thực
1 Lập lịch (scheduling)
Việc lập lịch xảy ra dưới tác động của các ngắt cứng, các ngắt mềm hay do một
số sự kiện khác được quy định trước Nói chung, việc lập lịch trong một hệ điều hành
hướng tới một số mục tiêu: Tính công bằng trong chia sẻ tài nguyên, tính hiệu quả,
khả năng đáp ứng, giảm thiểu thời gian chờ xử lý, thông lượng cực đại, Tuy nhiên
không có bộ lập lịch nào thoả mãn đồng thời được các đòi hỏi trên, tuỳ theo mô trường ứng dụng mà bộ lập lịch sẽ ưu tiên mục tiêu nào đó Chẳng hạn mục tiêu một hệ điều
hành thông thường hướng tới là tính hiệu quả, sự chia sẻ tài nguyên công bằng và đạt
được thông lượng cao nhất Một hệ điều hành hướng đến các mục tiêu thời gian thực
lại coi tính hiệu quả, tính khả năng dự đoán trước (Predictability) và tính kịp thời (Timeliness) đóng vai trò quan trọng Với các hệ nhúng thì lại hướng đến mục tiêu gọn
nhẹ, tiêu thụ ít năng lượng Có rất nhiều thuật toán đánh lịch thời gian thực nhưng chỉ
một số trong số chúng được hỗ trợ bởi các hệ điều hành thời gian thực
Để tổ chức việc thực hiện các tác vụ được hiệu quả, một hệ điều hành thời gian thực cần các phương pháp lập lịch Trước hết, cơ chế lập lịch thực hiện cho các tác vụ
có thể được thực hiện theo hai cách:
- Lập lịch tĩnh: thứ tự thực hiện các tác vụ không thay đổi và được xác định trước
khi hệ thống đi vào hoạt động
- Lập lịch động: hệ điều hành xác định lịch sau khi hệ thống đã đi vào hoạt động
Sau khi xác định được cơ chế lập lịch, hệ điều hành cần sử dụng một chiến lược lập lịch để áp dụng đối với từng tình huống cụ thể Có thể chọn một trong những cách sau:
- FIFO (First In First Out): một tác vụ đến trước sẽ được thực hiện trước
- Mức ưu tiên cố định/động: tại cùng một thời điểm, các tác vụ được đặt các mức
ưu tiên cố định hoặc có thể thay đổi nếu cần
- Chen hàng (Preemptive): chọn một tác vụ để thực hiện trước các tác vụ khác
- Không chen hàng (Non-preemptive): các tiến trình được thực hiện bình thường
dựa trên mức ưu tiên của chúng
Việc tính mức ưu tiên của mỗi tiến trình được thực hiện theo một trong số các thuật toán sau:
Trang 24- Ưu tiên theo tỷ xuất (Rate monotonic): tác vụ nào càng diễn ra thường xuyên
càng được ưu tiên
- Ưu tiên theo thời hạn: tác vụ nào càng gấp, có thời hạn cuối càng sớm càng
được ưu tiên
- Ưu tiên thời hạn cuối (Least laxity): tác vụ nào có tỷ lệ thời gian tính toán/thời
hạn cuối cùng (thời hạn) càng lớn càng được ưu tiên
Bên cạnh phương pháp lập lịch, cơ chế xử lý thời còn đặt ra nhiều vấn đề khác nữa như quản lý và đồng bộ hóa việc sử dụng tài nguyên, giao tiếp liên quá trình,
2 Ƣu tiên (priority)
Tác vụ nào sẽ được chọn để chạy tiếp theo? Đây là vấn đề bộ lập lịch cần giải quyết căn cứ trên chính sách do người thiết kế hệ điều hành đặt ra Trong các hệ thống đơn nhiệm đầu tiên, các công việc được xếp hàng xử lý tuần tự Trong các hệ thống chia sẻ thời gian tiếp theo, thời gian được chia sẻ giữa các ứng dụng, mỗi ứng dụng sẽ chiếm quyền điều khiển CPU trong một khoảng thời gian nhất định (timeslice) Trong thời gian dành cho mình, tác vụ có thể nhường quyền điều khiển cho tác vụ khác do phải đợi các truy xuất vào/ra chậm Ở đây, việc xếp lịch xử lý không có cơ chế ưu tiên, các công việc được đối xử như nhau
Khi việc lập lịch có tính đến sự ưu tiên nghĩa là công việc tiếp theo được chọn phụ thuộc vào tính chất của công việc đó Sự ưu tiên cũng dựa trên các nguyên tắc
khác nhau như: tác vụ đến trước sẽ được phục vụ trước; việc ngắn nhất được phục vụ
trước; việc có ưu tiên cao được phục vụ trước; việc có thời hạn gần nhất sẽ được phục
vụ trước Việc gán mức ưu tiên có thể tĩnh hoặc động
3 Đảo ƣu tiên (priority inversion)
Một tác vụ có mức ưu tiên cao có thể bị chặn lại khi nó đang chạy hoặc sẵn sàng chạy nhưng phải đợi việc sử dụng tài nguyên do các tác vụ có ưu tiên thấp khác đang kiểm soát (Hình 1.5), đây gọi là hiện tượng đảo ưu tiên
Để giải quyết trường hợp này, một số kỹ thuật được đưa vào như PIP (Priority Inheritance Protocol) và PCP (Priority Ceiling Protocol)
Trang 25Hình 1.5 Ví dụ về đảo ƣu tiên
4 Sự đoạt quyền (preemtion)
Sự đoạt quyền được biểu diễn trong hình dưới Với các HĐH được thiết kế không hỗ trợ khả năng đoạt quyền (hay non-preemptive nhân), khi một tác vụ đang chạy ở chế độ nhân sẽ không thể bị dừng bởi các tác vụ nhân hay các tác vụ user khác, Sau ISR, tác vụ cũ tiếp tục chạy (Hình 1.6)
Hình 1.6 Sự đoạt quyền: (a) không hỗ trợ
Tác vụ ưu tiên thấp
Tác vụ ưu tiên cao
ISR đặt trạng thái cho tác
vụ ưu tiên cao là Ready
Tác vụ ưu tiên thấp giải phóng CPU
Trang 26Hình 1.6 Sự đoạt quyền: (b) có hỗ trợ
Quá trình này diễn ra như sau: (1) Tác vụ có ưu tiên tháp đang xử lý thì có một ngắt tới, (2) Nếu ngắt được phép, CPU dựa vào vector ngắt nhảy đến trình phục vụ ngắt ISR, (3) ISR xử lý sự kiện và chuyển tác vụ ưu tiên cao(sở hữu ngắt) sang trạng thái sẵn sàng chạy bằng cách xếp tác vụ vào run queue, (4) Sau phần xử lý của ISR, lệnh RTI (return from intertupt) được gọi và CPU tiếp tục công việc đang làm trước khi xảy ra ngắt, (5) Các mã lệnh của tác vụ ban đầu tiếp tục được xử lý, (6) Khi tác vụ này kết thúc (hoặc hết time slice dành cho nó), bộ lập lịch sẽ chuyển quyền điều khiển cho tác vụ tiếp theo đang đợi, giả sử có ưu tiên thì tác vụ ưu tiên cao nhất sẽ được gọi
để xử lý, (7) Tác vụ mới có mức ưu tiên cao vừa được gọi sẽ xử lý các sự kiện được báo bởi ISR trên đây Trong preemptive nhân, thủ tục lập lịch được gọi ngay sau ISR nên sẽ có cơ hội ưu tiên các tác vụ thời gian thực (Hình 1.6(b)) Cơ chế đánh lịch ở đây là kết hợp của Round-Robin và Preemption và là cơ chế phổ biến trong các hệ điều hành hiện nay Quá trình xử lý diễn ra như sau: (1) Tác vụ đang xử lý thì có một ngắt tới, (2) Nếu ngắt được phép, CPU dựa vào vector ngắt nhảy đến trình phục vụ ngắt ISR, (3) ISR xử lý sự kiện và chuyển tác vụ ưu tiên cao sang trạng thái sẵn sàng chạy bằng cách xếp tác vụ vào run queue, (4) Sau phần xử lý của ISR, thủ tục đánh lịch của nhân được gọi, (5) Vì tác vụ sở hữu ngắt có ưu tiên cao nên tác vụ này sẽ được chạy (thay vì việc thực hiện lệnh RTI), (6) Khi tác vụ có ưu tiên cao này hoàn thành công việc, nó sẽ gọi một hàm hệ thống để chuyển vào trạng thái đợi sự kiện tiếp theo, (7) Nhân nhận thấy rằng đang còn tác vụ ưu tiên thấp đang đợi xử lý, nó sẽ phục hồi trạng thái các thanh ghi của tác vụ này và chuyển quyền cho nó tiếp tục chạy
Tác vụ ưu tiên thấp
Tác vụ ưu tiên cao
Thời gian ISR đặt tác vụ ưu tiên cao
vào trạng thái sẵn sàng
Trang 271.2.5 Một số tiêu chuẩn liên quan đến hệ điều hành thời gian thực
Hệ điều hành thời gian thực rất đa dạng và thường gắn với các ứng dụng tương đối cụ thể, chính vì vậy mà chúng được thiết kế theo các đòi hỏi có tính đặc thù theo từng ứng dụng hơn là tuân theo các chuẩn công khai IEEE và WSTAWG là hai trong
số các tổ chức chuẩn hoá liên quan đến thời gian thực Trong số hơn 30 chuẩn của POSIX, có một số chuẩn liên quan đến sự phát triển của các hệ thời gian thực:
IEEE1003.1b (realtime extenssion), 1003.1d (addition realtime extension), 1003.1j (advanced realtime extension) và 1003.21 (distributed realtime) Bên cạnh POSIX thì
các chuẩn của Bộ Quốc phòng Mỹ STAWG cũng đề cập đến
1.2.6 Phân loại hệ điều hành thời gian thực
1 Hệ điều hành thời gian thực thuần tuý
Đây là các hệ điều hành thời gian thực được thiết kế từ đầu mà không phải là sự sửa chữa hay mở rộng từ mộthệ điều hành thời gian thực khác (Hình 1.7)
Hình 1.7 Hệ điều hành thời gian thực thuần tuý
Các hệ điều hành thời gian thực này được thiết kế cho các đòi hỏi có tính đặc thù
và hướng đến đáp ứng thời gian thực một cách triệt để, cấu trúc bên trong hệ điều hành thời gian thực này thường đơn giản nên giảm được overhead trong các phân chức năng của nhân nhưng các hệ điều hành thời gian thực này thường chức năng nghèo nàn, khó phát triển các ứng dụng và kém tương thích Các hệ điều hành thời gian thực thuộc loại này như: eCos [40], Nucleus [41], pSOS [42], VxWork [25], QNX [27], OSE [43], Lyra Những bản thương mại của các hệ điều hành thời gian thực loại này có giá thành rất cao
Ứng dụng thời gian thực
Hệ điều hành thời gian thực
Phần cứng
Trang 282 Hệ điều hành thời gian thực mở rộng từ các hệ điều hành khác
Đây không phải là một hệ điều hành thời gian thực được thiết kế hoàn chỉnh mà
nó là sự cải tiến từ các hệ điều hành khác để có tính đáp ứng thời gian thực Phần cải tiến được thêm vào hệ điều hành và coi như một bộ phận của hệ điều hành (Hình 1.8)
Hình 1.8 Hệ điều hành thời gian thực là mở rộng của các hệ điều hành khác
Các hệ điều hành thời gian thực dạng này thường cho phép các ứng dụng thời gian thực và không thời gian thực hoạt động đồng thời nên thường phong phú về chức năng và có tính tương thích cao Tuy nhiên chức năng đáp ứng thời gian thực không hoàn toàn triệt để, đòi hỏi nhiều tài nguyên CPU và bộ nhớ, overhead lớn Ví dụ về các hệ điều hành thời gian thực loại này là RT-Linux [23], RTAI [10], Solaris, Windows NT
Sự cải thiện các đặc tính của các hệ điều hành đa dụng theo hướng cải tiến các tác vụ có thể làm trễ và làm giảm tải của một số tác vụ của nhân
1.2.7 Một số hệ điều hành thời gian thực tiêu biểu
Có khá nhiều hệ điều hành thời gian thực trên thị trường, một số trong số chúng
là hệ điều hành thời gian thực thuần tuý, một số khác thuộc loại kia Hệ điều hành thời gian thực được xem xét trên quan điểm khác nhau về năng lực, khả năng tương thích,
hỗ trợ người dùng Một số hệ điều hành thời gian thực nổi tiếng theo đánh giá của tạp chí Real-Time Magazine: VxWorks của Windriver; Windows CE.NET của Microsoft; QNX Neutrino RTOS; RTLinux, RTAI, Hệ điều thời gian thực có thể thực hiện được theo hướng thiết kế từ đầu hoặc cải tiến từ các hệ điều hành đa dụng nhưng dù thiết kế theo phương án nào thì hệ điều hành thời gian thực cũng vẫn phải đáp ứng các yêu cầu đặt ra ban đầu cho một hệ điều hành thời gian thực Các nghiên cứu nhằm tối
ưu trong thiết kế hệ điều hành thời gian thực rất phong phú
Phần cứng Các ứng dụng Các ứng dụng thời gian thực
Trang 291.3 Nền tảng phần cứng
Hệ thống thời gian thực có những đặc tính khác với hệ thống thông thường, bởi vậy, phần cứng máy tính thời gian thực cũng cần có những đặc tính khác với phần cứng của máy tính thông thường Yêu cầu thứ nhất đối với phần cứng máy tính thời
gian thực là hoạt động của nó có thể dự đoán trước Phần cứng máy tính thời gian thực phải tin cậy và dung thứ lỗi (fault-tolerant) để nó có thể dự đoán và tránh được các lỗi
hoặc chủ động khắc phục lỗi một cách có dự báo trước Với lý do tương tự, các tài nguyên máy tính như bộ nhớ, vùng đệm, bộ xử lý, thiết bị vào-ra, các thành phần truyền thông phải có thể truy cập và điều khiển được Thêm nữa, để đáp ứng các ràng buộc thời gian, các thành phần cần có tốc độ xử lý/truy cập cao
Từ góc nhìn logic, cấu hình phần cứng máy tính thời gian thực không khác cấu hình phần cứng máy tính thông thường, bao gồm nhiều nút (node) được kết nối với nhau qua một mạng truyền thông Cấu hình này có thể bao gồm nhiều bộ cảm ứng (sensors), bộ khởi động (actuators), và thiết bị hiển thị (displays), cũng như các đồng
hồ (clocks) hay bộ định thời gian (timers)
Để thỏa mãn các yêu cầu thời gian thực, một số vấn đề cần được quan tâm trong
sử dụng kiến trúc phần cứng Thứ nhất, các bộ nhớ ảo phải có thể điều khiển và mở rộng bởi ứng dụng thời gian thực Cụ thể, một phần bộ nhớ ảo cần được khóa (locked) hay định cư cố định trên bộ nhớ chính, để những lỗi trang hoặc lỗi đoạn không thể đoán trước cùng thời gian quản lỗi không xảy ra Tương tự, các bộ đệm dữ liệu và bộ đệm lệnh phải được nạp trước Ở mức thấp hơn, những yếu tố nâng nhằm cao hiệu suất hoạt động như dẫn ống (pipelining) và dự đoán nhánh (branch prediction) làm cho
dự đoán thời gian trở nên khó hơn
Các hệ thống vào-ra có thể rất đơn giản như thiết bị có trình điều khiển nhưng có thể rất phức tạp như các kênh kết nối vào-ra Tuy nhiên, thông thường hệ thống cung cấp cả hai loại ngắt là ngắt ưu tiên (priority interrupt) và ngắt bỏ phiếu (polling interrupt) cho các bộ cảm ứng, bộ khởi động thời gian thực cũng như các thiết bị vào-
ra khác.Các thiết bị vào-ra và bộ xử lý có thể truy cập cùng bộ nhớ một cách đồng thời hoặc dùng chung các bus Việc dùng chung và đồng thời các tài nguyên này có thể gây
ra các thực hiện không đoán trước được Các giải pháp phần cứng và phần mềm được
đề xuất nhằm tránh và di trú những vấn đề này Ví dụ, sử dụng các bus vào-ra riêng;
và chương trình được tổ chức sao cho các bộ xử lý và thiết bị vào-ra không truy cập cùng bộ nhớ một cách đồng thời
Trang 30Trong môi trường mạng, việc dự đoán thời gian đơn định càng trở nên khó khăn, phụ thuộc vào cấu trúc và phương thức truyền thông Nếu tồn tại nhiều đường đi từ một nút đến một nút khác trong mạng, hoặc nhiều phương tiện truyền thông, hoặc mạng được dùng chung thì thời gian truyền một thông báo không thể dự đoán trước được Giải pháp về phần cứng yêu cầu sử dụng các đường truyền riêng và cấp phát trước các đường truyền cũng như các khe thời gian (time slot) trên mỗi đường truyền
1.4 Ngôn ngữ lập trình cho hệ thống thời gian thực
1.4.1 Tổng quan về ngôn ngữ lập trình cho hệ thống thời gian thực
Phần lớn các ứng dụng thời gian thực không thể viết bằng các ngôn ngữ lập trình (NNLT) truyền thống với các hệ điều hành truyền thống vì các ngôn ngữ này không hỗ trợ các xử lý có ràng buộc khắt khe về thời gian thực thi
Ngày nay có nhiều ngôn ngữ lập trình được thiết kế hoặc sửa đổi hỗ trợ viết các chương trình xử lý thời gian thực, ví dụ Ada[Ada95] chuyên dùng để viết các ứng dụng trong lĩnh vực quân sự; Ada được công nhận là chuẩn quốc tế năm 1987 Java được thiết kế để viết các ứng dụng nhúng trong các thiết bị dân dụng và truyền thông; Java có cơ chế hỗ trợ đa nhiệm riêng không phụ thuộc vào hệ điều hành; và Java chính
là ngôn ngữ hướng đối tượng phổ biến nhất những năm cuối thế kỷ 20, đầu thế kỷ 21 C/C++ có các thư viện hàm hỗ trợ cơ chế xử lý thời gian thực phù hợp với nhiều hệ điều hành thời gian thực khác nhau
1.4.2 Các đặc điểm của ngôn ngữ lập trình thời gian thực
Một ngôn ngữ lập trình được sử dụng để viết ứng dụng thời gian thực nếu nó có bốn đặc điểm sau:
1 Điều khiển và truy cập theo thời gian (time access and control): Nhằm theo
dõi và điều khiển thời gian, ngôn ngữ lập trình phải cung cấp cơ chế làm việc với cả thời gian tuyệt đối và thời gian tương đối Các thao tác cơ sở là những thao tác nhằm cài đặt phục vụ đồng hồ (clock server) để thiết lập đồng hồ (clock) và bộ định thời gian (timer), và đọc giá trị các đối tượng định thời gian Các lệnh ở mức cao dùng để hoãn (delay) một tác vụ, đưa tác vụ về chế độ ngủ (sleep), hoặc sinh ra tín hiệu timeout
để hủy bỏ một tác vụ hết hạn Ở mức thấp nhất, ngôn ngữ lập trình phải cho truy nhập đến các nhịp (stick) sung đồng hồ
Trang 312 Điều khiển tương tranh (concurrency control): Các ứng dụng thời gian thực
thường phải thực hiện xử lý song song nhiều tác vụ, bởi vậy ngôn ngữ lập trình cần phải cung cấp cơ chế điều khiển tương tranh
3 Xử lý bắt ngoại lệ (exception hanling): Ngoại lệ là vấn đề hay gặp ở bất kỳ
ứng dụng nào, kể cả các ứng dụng thông thường Các ngôn ngữ thường cung cấp phương thức nắm bắt và xử lý ngoại lệ bằng cơ chế try-catch
4 Khả năng dự đoán trước (predictability): Ứng dụng thời gian thực phải có
thể dự đoán trước thời gian Dự đoán trước thời gian yêu cầu các lệnh phải được xác định cụ thể các đặc tính thời gian Bởi vậy, ngôn ngữ lập trình thời gian thực phải cung cấp cơ chế xác định và xử lý các đặc tính thời gian
1.5 Truyền thông thời gian thực
1.5.1 Giới thiệu
Trong phần này, sẽ trình bày một tập giao thức truyền thông thời gian thực, viết tắt là RTC (Real–Time Communication), của Microsoft Tập giao thức này hoạt động trên một mạng chuyển gói (packet-switching) hoặc chuyển mạch (circuit-switching) với sự hỗ trợ của các giao thức truyền thông chuẩn như TCP (Transmition Control Protocol), UDP (User Datagram Protocol), và IP (Internet Protocol)
1.5.2 Xử lý lời gọi RTC
Trong tiến trình truyền thông thời gian thực từ một điểm đến một điểm khác, nhiều bước được thực hiện và nhiều giao thức được sử dụng kết hợp Đầu tiên, một số kiểu báo hiệu (signaling) và điều khiển lời gọi được sử dụng để thiết lập, sửa đổi, và kết thúc lời gọi Với mạng chuyển mạch, Signaling System 7 (SS7) được sử dụng để thiết lập và kết thúc lời gọi Trong các mạng chuyển gói, SIP (Session Initiation Protocol) được sử dụng để điều khiển lời gọi SIP sẽ được trình bày trong các phần tiếp theo
Sau khi phiên gọi được thiết lập, dữ liệu cần truyền sau khi đã số hóa được đóng gói trong các gói RTP (Real-Time Transport Protocol) RTP được thiết kế chủ yếu cho truyền thông thời gian thực trên mạng chuyển gói
Gói PTP sau đó được đóng gói theo một giao thức truyền thông mạng như TCP hoặc UDP Nếu dữ liệu cần truyền là âm thanh hoặc hình ảnh, UDP hay được sử dụng
vì UDP không cần truyền lại các gói Nếu dữ liệu là văn bản thì TCP được sử dụng vì
Trang 32TCP là giao thức không mất mát thông tin Giao thức điều khiển thời gian thực RTCP (Real-Time Control Protocol) được sử dụng để theo dõi chất lượng của phiên RTP RTP và RTCP được trình bày trong các mục tiếp theo
Tiếp theo, gói UDP hoặc TCP được đóng gói trong gói IP rồi được đóng gói lần cuối trong giao thức tầng liên kết, ví dụ Ethernet Sau đó, gói giao thức tầng liên kết được chuyển đến đích Hình 1.9 mô tả việc đóng gói gói tin thời gian thực
Hình 1.9 Đóng gói RTCP
1.5.3 Giao thức khởi tạo phiên SIP
Giao thức khởi tạo phiên SIP (Session Initiation Protocol), tương tự HTTP (HyperText Transfer Protocol) , là một giao thức điều khiển lời gọi và báo hiệu tầng ứng dụng dựa trên văn bản SIP được sử dụng để tạo, sửa đổi, và kết thúc các phiên SIP Giao thức này hỗ trợ cả truyền thông đơn phát (unicast) và đa phát (multicast) Vì SIP dựa trên văn bản nên dễ cài đặt, triển khai
Trang 33Bảng 1.1 SIP Servers
SIP Server Chức năng
Proxy server Hoạt động trung gian giữa một SIP user agent client và một
SIP user agent server Proxy server thực hiện các chức năng của SIP user agent client hoặc của SIP user agent server, tùy thuộc vào hướng của truyền thông giữa client và server Một proxy server có thể sửa SIP request trước khi chuyển tiếp nó hoặc đơn giản chỉ chuyển tiếp SIP request
Registrar server Nhận các yêu cầu REGISTER, mỗi yêu cầu chứa cả địa chỉ IP
và địa chỉ SIP — hay URL — của user agent Điều này cho phép registrar server biết được vị trí của các user agents
Redirect server Chấp nhận khởi tạo, dưới dạng một yêu cầu SIP INVITE, của
một phiên SIP từ một user agent gọi, nhận địa chỉ SIP đúng của user agent được gọi, và trả lời user agent gọi với địa chỉ đúng Sau đó, user agent gọi sẽ sử dụng địa chỉ SIP đúng để khởi tạo phiên SIP với user agent được gọi
SIP servers — proxy, registrar, and redirect — có thể được phát triển như các ứng dụng riêng biệt hoặc một ứng dụng duy nhất tích hợp các chức năng của cả ba servers
SIP User Agents
Bảng 1.2 đưa ra các dạng SIP user agents và chức năng của chúng
Bảng 1.2 SIP User Agents
SIP User Agent Chức năng
User agent client Khởi tạo SIP requests
User agent server Nhận SIP requests
2 Luồng sự kiện cuộc gọi SIP
Luồng sự kiện cho các phiên SIP phụ thuộc vào liệu phiên được thiết lập trực tiếp giữa các SIP user agents hay có một SIP server (proxy, registrar, or redirect) nằm giữa các SIP user agents
Trang 34Hình 1.10 thể hiện luồng sự kiện của một phiên gọi trực tiếp giữa hai user agents, với thứ tự sự kiện được để trong ngoặc đơn Đầu tiên, user agent A gửi một thông điệp INVITE nhằm khởi tạo lời gọi User agent B trả lời bằng thông báo Trying (100), thể hiện rằng yêu cầu lời gọi đang được xử lý Tiếp đó, user agent B trả lời bằng thông báo OK (200), thể hiện rằng yêu cầu lời gọi đã được chấp nhận User agent A gửi thông báo ACK tới user agent B, thể hiện rằng nó đã nhận được OK của user agent
B Các thông báo trên được sử dụng để thiết lập cuộc gọi Sau khi cuộc gọi được thiết lập, dữ liệu thời gian thực được đóng gói trong các gói RTP và gửi giữa agent A và user agent B Một trong hai user agent có thể kết thúc truyền thông thời gian thực bằng cách gửi thông báo BYE đến user agent kia, thể hiện rằng nó muốn kết thúc cuộc gọi Khi nhận được thông báo BYE, user agent gửi thông báo OK đến đối tác rồi kết thúc phiên giao dịch
Hình 1.10 Luồng sự kiện một phiên SIP trực tiếp giữa các user agent
Hình 1.11 thể hiện luồng sự kiện của một phiên SIP có proxy server trên đường
đi giữa hai user agents Proxy server hoạt động như điểm truyền thông trung gian, đóng vai trò cả user server và user agent Khi đóng vai trò user server, proxy nhận các yêu cầu SIP và chuyển tiếp nó đến user agent đích Khi đóng vai trò user agent, proxy nhận các trả lời SIP và chuyển tiếp chúng đến user agent đích
Hình 1.11 Luồng sự kiện một phiên SIP có Proxy Server
Trang 35Hình 1.12 mô tả luồng sự kiện của một phiên SIP giữa một user agent và một registrar server Registrar server chấp nhận yêu cầu REGISTER từ user agent, thể hiện địa chỉ mà user agent có thể đến được Một registrar server thường được đặt với một proxy server hoặc một redirect server
Hình 1.12 Luồng sự kiện một phiên SIP với Registrar Server
Hình 1.13 mô tả luồng sự kiện của một phiên SIP với một redirect server giữa hai user agents User agent A gửi INVITE để khởi tạo cuộc gọi Redirect server trả lời với thông báo Moved (302), thể hiện rằng user agent B hiện thời đã duy chuyển đến địa chỉ mới User agent A trả lời bằng thông báo ACK Sau đó, user agent A gửi INVITE trực tiếp đến user agent B
Hình 1.13 Luồng sự kiện một phiên SIP với Redirect Server
Trang 364 Giao thức SIP
Thông báo SIP dựa trên định dạng của thông báo Internet chuẩn Thông báo SIP
có thể là request hay response Mỗi thông báo SIP có ba phần, như trong Bảng 1.3
Trang 37Bảng 1.3 Các phần của thông báo SIP
Phần thông báo
Start line Nội dung tùy thuộc vào thông báo là request hay response
Trong cả hai loại thông báo, start line chứa Phiên bản SIP Start line của thông báo request chứa Phương thức SIP và Địa chỉ SIP hoặc URI đích Start line của thông báo response chứa Mã trạng thái SIP Response và Nội dung trả lời xác định response của request
Headers Chứa kiểu header và các biến tương ứng
Message body Chứa thông tin được cung cấp bởi Giao thức Miêu tả Phiên –
SDP (Session Description Protocol), như miêu tả dung lượng
đa phương tiện cho phiên SIP
SIP xác định các giá trị của start line và các headers Giao thức Miêu tả Phiên (SDP) xác định giá trị nội dung thông báo
Request Phương thức SIP, URI đích, Phiên bản SIP
Response Phiên bản SIP, Mã trạng thái SIP response, Nội dung
trả lời
Phương thức SIP
Mục đầu tiên trong start line của thông báo request là Phương thức SIP, một lệnh
Trang 38Bảng 1.5 Các phương thức SIP và chức năng của chúng
Phương thức
INVITE Yêu cầu khởi tạo phiên SIP INVITE được gửi từ user agent gửi
tới user agent nhận
ACK User agent nhận đã chấp nhận cuộc phiên giao dịch ACK được
gửi từ user agent gửi tới user agent nhận
OPTIONS User agent gửi yêu cầu user agent nhận thông báo các dung lượng
của nó
BYE Yêu cầu kết thúc phiên BYE có thể được gửi bởi user agent gửi
hoặc user agent nhận Khi nhận được BYE, user agent không cần thiết phải trả lời
CANCEL Hủy bỏ các yêu cầu treo
REGISTER User agent gửi đăng ký vị trí hiện tại của nó với registrar server
SUBSCRIBE User agent gửi yêu cầu cập nhật thông tin hiện tại của user agent
nhận
NOTIFY Thông báo trạng thái cho đối tác
MESSAGE Được sử dụng để gửi thông báo
URI đích
Mục thứ hai trong start line của thông báo request là URI đích, chứa URL của user agent nhận Thông thường, URL là SIP URL Một SIP URL có thể có nhiều định dạng khác nhau Một số định dạng được cho trong Bảng 1.6
Trang 39Bảng 1.6 Một số định dạng của SIP URL
giao thức truyền thông được
sử dụng là UDP
sip:user@reskit.com;transport=TCP SIP URL cơ bản với giao
thức truyền thông là TCP
sip:+1-425-707-9796@reskit.com;user=phone SIP URL với một số điện
thoại toàn cầu
sip:marketing@reskit.com;maddr=225.0.2.1;ttl=64 SIP URL với một địa chỉ đa
phát (multicast address) Giá trị TTL (time-to-live) được đặt về 64 (0-255) Giá trị TTL phải được thiết lập khi
sử dụng địa chỉ đa phát và giao thức truyền thông UDP
Phiên bản SIP
Mục cuối cùng trong start line của thông báo request và mục đầu tiên trong start line của thông báo response là Phiên bản SIP, hiện tại chúng có giá trị là 2.0
Mã trạng thái SIP Response
Có sáu loại mã trạng thái khác nhau: informational, success, redirection, client error, server error, and global failures Số bên trái nhất của mã biểu thị loại mã trạng thái như được thể hiện trong Bảng 1.7
Trang 40Bảng 1.7 Các mã trạng thái SIP Response
1xx Informational Đã nhận được yêu cầu và đang xử lý
2xx Success Yêu cầu đã được hiểu và được chấp nhận
3xx Redirection Cần thực hiện những hành động khác nữa để hoàn thành
Nội dung trả lời
Mọi SIP response đều có phiên bản SIP là 2.0 Các mã trạng thái và nội dung của
nó được thể hiện trong Bảng 1.8
Bảng 1.8 Nội dung SIP Response
Mã trạng
100 Informational Đang kết nối
181 Informational Cuộc gọi được chuyển