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ý.
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
Rapid Object-Oriented Process Tiến trình phát triển hướng đốiROPES
Giao thức truyền thông thời gian
thực
TRACON Terminal Radar Approach Control
Trang 5DANH MỤC CÁC BẢNG BIỂU
Trang 6Bảng 4.7 Luồng sự kiện chính của ca sử dụng ―create the flight plan‖ 108Bảng 4.8 Luồng sự kiện chính ca sử dụng ―create flight progress trip‖ 110
Trang 7Hì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
Trang 9Hình 3.1 Các pha và luồng công việc trong ROPES 71
kiểm soát viên mặt đất
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 91
không gian TRACON khu vực cảng San Francisco
khu vực phía Đông sân bay
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 95
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
Hình 4.10 Biểu đồ ca sử dụng nhóm các ca sử dụng điều khiển trên đường 100
bay
Hình 4.11 Biểu đồ ca sử dụng nhóm các ca sử dụng quản lý cất và hạ cánh 100
Hình 4.14 Biểu đồ tuần tự hệ thống ca sử dụng ―Identify Aircraft‖ 106
Trang 10Hình 4.16 Biểu đồ tuần tự hệ thống ca sử dụng ―create the flight plan‖ 108Hình 4.17 Biểu đồ lớp phân tích thực thi ca sử dụng ―Create Flight Plan‖ 109Hình 4.18 Biểu đồ tuần tự đối tượng ca sử dụng ―Create Flight Plan‖ 109Hình 4.19 Biểu đồ tuần tự hệ thống ca sử dụng ―create flight progress trip‖ 110Hình 4.20 Biểu đồ tuần tự đối tượng ca sử dụng ―create flight progress trip‖ 111
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 đờisố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âydự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ấtmạ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ểucho 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ônglư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ênthế 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 gianthự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 trongkhô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ểmsoát không lưu hoạt động để điều khiển giao thông hàng không trở thành nhu cầukhô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ờigian 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átkhô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, ứngdụ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 12Chươ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ốngkiể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ìnhbà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ốngthờ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ườicho 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 gianrấ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 taymá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ôngắ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ểnnhú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ằngthờ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 tanê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ố quanniệ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ựckhô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ếumộ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ớichu 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 chotrướ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 độngphả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ốngphả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ậmchí 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ềukhiể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ínhmạ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ờicủ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 rakhô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ọngxả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 đó
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ácrà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ủakế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
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ộtrobot đang di chuyển cảm thấy một vật cản trên đường đi và thời gian actuator, chẳnghạn bộ điều khiển chuyển hướng, được kích hoạt để di chuyển robot theo hướng antoà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ámsá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ấphơ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ộtcô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ácnhiệ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ơnnữ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áctí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áchà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ácsong 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ácchươ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ìnhthờ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ốngthự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ệcnhậ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ếtngườ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ỗinế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ấtnhiề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 đíchchung, 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ảngthờ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ềungườ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ệnngườ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 taphả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àndiệ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ểmtiê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ờigian 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ìnhtuầ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ựchiệ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ùytheo 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 (ProgrammableControllers – 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ặcmộ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ềukhiể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ưulượ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ềukhiể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ínhnă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ớicá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ấphà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ấtmạ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 gianthự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àocá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ựchiệ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ụngrộ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ứcnă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ờigian 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ànhthờ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ỏicá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ànhthờ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ạicá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ườnghợ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ảngthờ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ắtmềm đó được xử lý
Độ trễ sự kiện
Độ trễ chu kỳ
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ợpchứ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ị ảnhhưở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ếutố: 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à
cả phân hệ lập lịch
Trang 22Chứ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ó
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 gianthự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ượclậ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áchsau:
- 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ảiquyế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ốngchia 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) Trongthờ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 dophả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ọnphụ 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àngchạ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 đangkiể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 (PriorityInheritance Protocol) và PCP (Priority Ceiling Protocol)
Trang 25Đảo ƣu tiên
Hì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ụ đangchạ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)
Tác vụ ưu tiên thấp
Tác vụ ưu tiên thấp
giải phóng CPU
ISR đặt trạng thái cho tác
vụ ưu tiên cao là ReadyTác vụ ưu tiên cao
Hình 1.6 Sự đoạt quyền: (a) không hỗ trợ
Trang 26Tác vụ ưu tiên thấp
Tác vụ ưu tiên cao
ISR đặt tác vụ ưu tiên cao Thời gianvào trạng thái sẵn sàng
Hì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ộtngắ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ạngthá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ướckhi 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ểncho 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 đượcbáo bởi ISR trên đây Trong preemptive nhân, thủ tục lập lịch được gọi ngay sau ISRnê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ềuhà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ắttớ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ắtISR, (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ạybằ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ủanhâ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ôngviệ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ạngthá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
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ù theotừ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ủaPOSIX, 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ột hệ điều hành thời gian thực khác (Hình 1.7)
Ứng dụng thời gian thực
Hệ điều hành thời gian thực
Phần cứng
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ànhthờ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ăngcủ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ạinà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ànhrất cao
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
Trang 29ưu trong thiết kế hệ điều hành thời gian thực rất phong phú.
Trang 301.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ởivậ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ầncứ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àinguyê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ầntruyề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àngbuộ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ấuhì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ớinhau 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ệusuấ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 cungcấp cả hai loại ngắt là ngắt ưu tiên (priority interrupt) và ngắt bỏ phiếu (pollinginterrupt) 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ờihoặ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 31Trong 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ặcmạ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áttrướ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ácchương trình xử lý thời gian thực, ví dụ Ada[Ada95] chuyên dùng để viết các ứngdụ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ờigian 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 đặtphụ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ộttá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 322 Đ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ảicung 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ươngthứ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ếttắt là RTC (Real–Time Communication), của Microsoft Tập giao thức này hoạt độngtrê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 ControlProtocol), 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 InitiationProtocol) đượ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ếptheo
Sau khi phiên gọi được thiết lập, dữ liệu cần truyền sau khi đã số hóa được đónggói trong các gói RTP (Real-Time Transport Protocol) RTP được thiết kế chủ yếu chotruyề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ư TCPhoặ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 33TCP 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ầncuố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ênSIP 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 34Bảng 1.1 SIP Servers
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ủaSIP user agent client hoặc của SIP user agent server, tùy thuộcvào hướng của truyền thông giữa client và server Một proxyserver có thể sửa SIP request trước khi chuyển tiếp nó hoặc đơngiả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 chophé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ủauser 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ạophiê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ả baservers
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
2 Luồng sự kiện cuộc gọi SIP
Trang 35giữa các SIP user agents hay có một SIP server (proxy, registrar, or redirect) nằm giữacác SIP user agents.
Trang 36Hì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ệpINVITE 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ôngbá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ếtlậ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à useragent 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áchgử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 Khinhậ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êngiao 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ácyêu cầu SIP và chuyển tiếp nó đến user agent đích Khi đóng vai trò user agent, proxynhậ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 37Hì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ộtregistrar 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ộtproxy 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 haiuser agents User agent A gửi INVITE để khởi tạo cuộc gọi Redirect server trả lời vớithông báo Moved (302), thể hiện rằng user agent B hiện thời đã duy chuyển đến địachỉ mới User agent A trả lời bằng thông báo ACK Sau đó, user agent A gửi INVITEtrự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 384 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 39Bảng 1.3 Các phần của thông báo SIP
Phần thông báo
Miêu tảSIP
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 responsechứa Mã trạng thái SIP Response và Nội dung trả lời xácđịnh response của request
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
Response Phiên bản SIP, Mã trạng thái SIP response, Nội dung
trả lời
Trang 40Mục đầu tiên trong start line của thông báo request là Phương thức SIP, một lệnh báo hiệu Các phương thức SIP được liệt kê trong Bảng 1.5.