You are on page 1of 11

CHƯƠNG 5: HỆ ĐIỀU HÀNH THỜI GIAN THỰC (RTOS)

5.1. Yêu cầu chung cho các hệ điều hành thời gian thực
Hệ điều hành thời gian thực (Real Time Operating System)
Định nghĩa thời gian thực:
+ Thời gian thực là thời gian liên tục gia tăng đều đặn sau khi khởi động hệ thống và
thời gian cho tất cả các hoạt động tại sự các thời điểm khác biệt, sử dụng thời gian đó
như một tham khảo trong hệ thống.
Định nghĩa RTOS:
+ Hệ điều hành thời gian thực (RTOS) là hệ thống hoạt động đa nhiệm cho các ứng dụng
với các ràng buộc thời gian thực cứng hoặc mềm.
+ Ràng buộc thời gian thực có nghĩa là (ràng buộc) hạn chế sự xuất hiện của một sự kiện
và dự kiến phản ứng của hệ thống và độ trễ đến sự kiện này.
5.2. Các chức năng chính trong hệ điều hành thời gian thực
Chức năng cơ bản hệ điều hành:
+ Quản lý quy trình,
+ Quản lý tài nguyên,
+ Quản lý thiết bị,
+ Hệ thống con thiết bị I / O
+ Thiết bị mạng và quản lý các hệ thống con
Phân bổ các ưu tiên quá trình
+ Người dùng được phân bổ Cấp độ ưu tiên, được gọi là phân bổ ưu tiên tĩnh hoặc cho
phép phân bổ ưu tiên thời gian thực.
+ Các ưu tiên thời gian thực cao hơn cấp phát động ưu tiên cho hệ điều hành chức năng
và các ưu tiên nhàn rỗi được phân bổ cho chủ đề (thread) ưu tiên thấp.
+ Các chủ đề hoặc tác vụ (task) ưu tiên nhàn rỗi được thực thi khi không có những ưu
tiên cao khác đang chạy.
Quản lý tiến trình (process) bởi quyền ưu tiên (Preemption)
+ Nhân (kernel) của RTOS cấp quyền ưu tiên thấp hơn của tiến trình khi có tin nhắn
hoặc sự kiện cho rằng đang đợi thu được cho tiến trình ưu tiên cao hơn.
+ kernel RTOS có những điểm quyền ưu tiên ở phần cuối của mã quan trọng và do đó
RTOS có thể được cấp quyền ưu tiên tại các điểm bằng một tác vụ thời gian thực ưu tiên
cao.
+ Chỉ có phần nhỏ trong các chức năng RTOS là không có quyền ưu tiên.
Quản lý ưu tiên tiến trình bằng thừa kế ưu tiên
+ Kế thừa quyền ưu tiên cho phép một chia sẻ nguồn tài nguyên phần cứng trong tác vụ
ưu tiên thấp, ví dụ, màn hình hiển thị LCD, được sử dụng bởi các nhiệm vụ ưu tiên cao
nhất.
+ Một tác vụ ưu tiên trung gian sẽ không được quyền ưu tiên các nhiệm vụ ưu tiên thấp
khi nó bị khóa để chạy các tài nguyên chia sẻ quan trọng hoặc mã cho các nhiệm vụ ưu
tiên cao.
+ Sự bịt kín sự ưu tiên ở mục tùy chọn kế thừa ưu tiên cũng có thể được sử dụng cho
một hệ thống cụ thể.
Dự báo tiến trình
+ Một hành vi dự đoán được khoãng thời gian của hệ thống và dự đoán được đồng bộ
tác vụ với jitter tối thiểu (sự khác biệt giữa trường hợp độ trễ tốt nhất và xấu nhất)
Quản lý bộ nhớ bằng cách bảo vệ
+ Trong RTOS, Threads có thể chạy trong không gian hạt nhân.
+ Việc chất lượng thời gian thực trở thành cao. Tuy nhiên, sau đó một thread có thể truy
cập mã hạt nhân, ngăn xếp và bộ nhớ dữ liệu không gian, và điều này có thể dẫn đến mã
hạt nhân không được bảo vệ
Quản lý bộ nhớ: Vô hiệu hóa MMU
+ Vô hiệu hóa sử dụng của MMU và bộ nhớ ảo hoặc sử dụng các khóa bộ nhớ.
+ Khóa Memory: dừng (stop) trao đổi trang giữa bộ nhớ vật lý và disabled Disk. Điều
này làm cho RTOS dự đoán độ trễ tác vụ và làm giảm jitter (thời gian giữa độ trễ trường
hợp xấu nhất và độ trễ trường hợp tốt nhất cho một task hoặc thread).
Memory Allocation
+ Trong RTOS, phân bổ bộ nhớ thì rất nhanh và vì thế, phân bố khối bộ nhớ có chiều
dài cố định và hệ thống lấy được dự đoán thời gian cho việc phân bổ.
Lập kế hoạch và các tính năng kiểm soát độ trễ Interrupt
+ Lập kế hoạch tác vụ thời gian thực và kiểm soát độ trễ Interrupt, và sử dụng các bộ
đếm và xung clock hệ thống
Chức năng bộ đếm và quản lý thời gian
+ Cung cấp cho các chức năng Timers. Có sự phân bổ và hủy phân bổ thời gian để đạt
được hiệu quả sử dụng tốt nhất trong các ràng buộc thời gian nhất định.
Chức năng Không đồng bộ IO
+ Cho phép IOs không đồng bộ, nghĩa là IOs mà không ngăn chặn (blocking) một tác
vụ
IPC-Interprocess Communication Synchronization
+ Đồng bộ hóa các tác vụ với IPCs (Semaphore, hộp thư, hàng đợi thông điệp, pipes, Socket
và RPC)
+ Spin Locks (hiểu là busy waiting for a short time): Spin Locks cho phần xử lý quan trọng
+ Hoạt động thời gian thực cứng và mềm
+ Time Slicing của các tiến trình thực hiện các tiến trình mà có ưu tiên bằng nhau
5.3. Giới thiệu các hệ điều hành thời gian thực
5.3.1. Đặc điểm WINDOWS CE
5.3.1.1. Windows CE
o Một hệ điều hành cho các thiết bị máy tính cầm tay và hệ thống điện thoại di động,
được phát triển bởi Microsoft
o Microsoft perception─ nhỏ gọn, khả năng kết nối, tương thích, đồng hành, và hiệu
quả
o Cũng có thể được coi là Windows cho hệ thống thiết bị điện tử tiêu dùng
o Các ứng dụng không giới hạn đến người tiêu dùng hệ thống thiết bị điện tử
o Một trong các hệ điều hành phổ biến nhất cho các hệ thống thiết bị cầm tay
o Một nền tảng Windows cho hệ thống, trong đó có những hạn chế của tài nguyên
năng lượng, bộ nhớ, màn hình cảm ứng hoặc kích thước màn hình hiển thị và tốc độ xử lý.
5.3.1.2. Windows CE.NET
o .NET framework cung cấp quản lý cho biên dịch code.
o Quản lý một code─ được biên dịch trong CIL (Common Intermediate Language)
o Common Intermediate Language (CIL) cho nền tảng CPU độc lập biên dịch trung
tính như các byte code.
o Một môi trường runtime chuyển đổi câu lệnh byte mã lệnh thành các máy bản địa
và câu lệnh nền tảng
o Bytes code─ có thể chạy trên các nền tảng khác nhau và được phân phối.
o .NET tại thời gian chạy kiểm chứng thực môi trường tự nhiên, kiểu dữ liệu nguồn
(source) và đích (destination), trong phạm vi mảng chỉ số và các chức năng khác.
o Mã code trở nên mạnh mẽ, phổ biến.
5.3.1.3. Tính năng Windows CE
Hình 5.1. Windows CE tính năng cơ bản

+ Nền tảng Windows CE


o Cho phép một người sử dụng để cảm nhận, nhìn và tương tác với các hệ thống sử
dụng giao diện đồ họa (GUI) trong một cách tương tự như một PC chạy trên Windows
o Ký tự Unicode 16-bit cho ký tự quốc tế và các ngôn ngữ
o Các chức năng cho lập kế hoạch thời gian thực cứng
+ Windows CE Chủ đề (Thread)
o Hỗ trợ đến 256 mức độ ưu tiên của thread
o Cung cấp khả năng điều chỉnh định lượng thời gian cho các chủ đề
o Cung cấp cho slice thời gian bằng nhau cho các chủ đề có độ ưu tiên bằng nhau
+ Sử dụng ISRs và ISTs
o ISTs (dịch vụ ngắt chủ đề) được thêm vào ngoài ISRs.
o ISTs─ được đưa vào hàng đợi ưu tiên của chủ đề chờ đợi để thực hiện.

o IST ─ dịch vụ ngắt thread mức độ chậm của một ISR mức độ nhanh
o Hỗ trợ các ISRs lồng vào nhau
+ Độ trễ ngắt
o Độ trễ ngắt thấp cho ISRs và ISTs
o Kiểm soát độ trễ ngắt
+ Quản lý Điện năng
o Phần mềm để làm giảm tiêu tán năng lượng bằng cách giảm tốc độ xung clock hay
chạy câu lệnh Wait hoặc Stop hoặc tối ưu hóa việc sử dụng bộ nhớ đệm hoặc dừng màn
hình hiển thị hoặc giảm cường độ hiển thị sau khi giới hạn chờ đợi cho người dùng nhập
vào.
+ Bộ nhớ ảo
o Địa chỉ bộ nhớ ảo phân bổ cho lưu trữ các chương trình trong đó kích cỡ có thể hơn
kích thước bộ nhớ vật lý.
+ Registry dựa trên tập tin và một số hệ thống tập tin
o Bộ nhớ flash dựa trên hệ thống tập tin
o UDF 2.5 và hệ thống tập tin exFAT
+ Chia sẻ nguồn và truy cập mã nguồn
o Componentization─ hai lớp phần mềm.
o Một lớp con gồm mã nguồn Microsoft phát triển của lõi WCE và được chia sẻ với
các hệ thống hoặc nhà sản xuất thiết bị. Sau đó, các nhà sản xuất cho biết thêm phần còn
lại của lõi tùy theo hệ thống phần cứng.
o Phần còn lại là lớp trừu tượng phần cứng.
+ Các điều chỉnh đối tượng Cấp hạt nhân (kernel)
o Tự do sửa đổi mà không chia sẻ chúng với Microsoft
5.3.1.4. Windows CE 6.0, Windows Mobile 6 và Automotive 5,0
Phiên bản mới nhất CE 6.0
o Đối với gia đình cũng như hệ thống văn phòng
o Kết nối mạng di động.
5.3.2. Lập trình Windows và Windows CE
5.3.2.1. Lập trình Windows
+ Window Class: một ví dụ của định nghĩa một Window (đối tượng).
o Tọa độ cơ bản x và y, và z -parameter.
o z ─ quy định cụ thể rằng Window là trên và dưới các Window khác
o Quy định đối với khả năng hiển thị (hiển thị hoặc ẩn hoặc không kích hoạt).
o Đặc điểm kỹ thuật cho hệ thống cấp bậc parent-child.
+ Các thủ tục Window
o Chia sẻ các thuộc tính, ví dụ, Commandshow.
o Đáp ứng với các yêu cầu
+ Window Controls
o Chức năng Windows Controls─ câu lệnh, menu, thanh công cụ
+ Thông báo cho Windows
o Chương trình ứng dụng dựa trên Windows (API) được viết để đáp ứng hoặc kích
hoạt về sự thay đổi từ trạng thái hiện hành về đẩy lên các thông báo (s) từ OS.
o Hệ điều hành quản lý tất cả các nguồn đầu vào (cho Ví dụ, stylus tap, ảo (trên cảm
ứng màn hình) hoặc nhấn phím vật lý).
o Các thông báo xuất hiện trên một sự kiện
o Tất cả các thông báo được gửi đến Window
o Một thông báo sẽ gửi thông điệp đến một API
o Thông điệp sẽ được xếp trong hàng đợi trong Windows API
+ Ví dụ về các hệ điều hành thông báo đến Window
o Hệ điều hành thông báo rằng một phím đã được nhấn hoặc một nút đã được bấm
hay câu lệnh đã được nhận cho việc vẽ lại màn hình Windows. Các chương trình ứng dụng
yêu cầu đầu vào (s) từ hệ điều hành cho một ký tự hoặc các câu lệnh hoặc các ngõ vào từ
bàn phím.
+ Lập trình Window
o Win32 API
o Windows sử dụng cách xử lý ở nhiều thủ tục (chức năng)
o Handle (xử lý)─ một tham chiếu đến một giao diện, ví dụ cho một Window, tập tin
hay chủ đề hay cổng. [Một giao diện là một thủ tục chưa thực hiện (chức năng hoặc phương
pháp) các mã được định nghĩa trong lớp, trong đó sử dụng giao diện.]
+ Window Handle
o Ví dụ Handle là INSTANCE của Window.
o INSTANCE là một đối tượng, được sử dụng như một Handle
o Handle cũng được sử dụng như một con trỏ, gọi là tùy chọn con trỏ.
o Các tùy chọn con trỏ là con trỏ mà điểm cho một con trỏ của một trong những một
số bộ của mã số, mà chạy trên cách chọn tùy chọn
Note:
Một kiểu thường xuyên dùng là kiểu HANDLE là một số nguyên 32-bit được sử dụng như
một kiểu định danh. Có nhiều kiểu định danh nhưng nhất thiết tất cả phải có cùng kích
thước với HANDLE.
+ Window Handle Inheritance
o Windows hỗ trợ (WCE không có) thừa kế Handle
o Handle inheritance─ Handle có thể được mở rộng để tạo một Handle mới, mà kế
thừa các biến, tính chất và thủ tục của parent handle, ghi đè và quá tải mới biến, tính chất
và thủ tục
5.3.2.2. Lập trình Windows CE
o Chỉ sử dụng tập con của Win32 API [Ví dụ, không có môi trường liên quan các chức
năng và môi trường các khối, không có thông tin thư mục hiện tại trong tập con]
o Hỗ trợ hệ thống màn hình nhỏ của Windows
o Hệ thống hỗ trợ màn hình cảm ứng của Windows
o Hỗ trợ không có ổ cứng, RAM thấp, bộ nhớ và sử dụng các ROM và flash bộ nhớ
trong hệ thống
o Hệ thống hỗ trợ -processor─ x86 hoặc ARM hoặc SuperH, hoặc bất kỳ khác
o Hỗ trợ ký tự Unicode 16-bit unsigned short
+ Điều khiển Windows CE
o Ít hơn số lượng điều khiển Windows so với máy tính bàn cá nhân
o Điều khiển Windows định dạng mới (các chức năng của câu lệnh, menu, thanh công
cụ cung cấp trong một dòng do màn hình nhỏ),
o Điều khiển mới (ví dụ: điều khiển bảng chọn ngày và thời gian, chọn lịch trình kiểm
soát, chỉnh sửa điều khiển tự động viết hoa ký tự đầu tiên của một từ khi keying trong và
bàn phím ảo) và một tổ chức (ví dụ, task-to-do)
+ Lập trình Windows CE
o Trình điều khiển thiết bị WCE nhập vào như DLLs trong thời gian chạy
o WCE không hỗ trợ kế thừa Handle và các thuộc tính bảo mật nhất định
o Hỗ trợ để cấu thành (Componentization)
Note: What Do We Mean By Componentization?
ƒ Componentization is the process of atomizing (breaking down) resources into
separate reusable packages that can be easily recombined.
ƒ Componentization is the most important feature of (open) knowledge development
as well as the one which is, at present, least advanced. If you look at the way software has
evolved it now highly componentized into packages/libraries. Doing this allows one to
‘divide and conquer’ the organizational and conceptual problems of highly complex
systems. Even more importantly it allows for greatly increased levels of reuse.
ƒ The power and significance of componentization really comes home to one when
using a package manager (e.g. apt-get for debian) on a modern operating system. A request
to install a single given package can result in the automatic discovery and installation of
all packages on which that one depends. The result may be a list of tens — or even hundreds
— of packages in a graphic demonstration of the way in which computer programs have
been broken down into interdependent components.
Windows CE.NET Lập trình ...
o Một môi trường runtime chuyển đổi byte mã lệnh thành các máy bản địa và nền tảng
câu lệnh
o Bytes code─ có thể chạy trên nền tảng khác nhau và được phân phối phổ biến.
5.3.3. Real Time Linux
5.3.3.1. Thời gian thực Linux
+ Linux 2.6.x
o Linux là sau Linus Torvalds, cha đẻ của Hệ điều hành Linux
o Linux 2.6.24 phiên bản mới nhất của thời gian thực Linux (tháng 1 năm 2008)
o Linux 2.6.x cung cấp các chức năng cho lập lịch trình quyền ưu tiên
o Các bộ định thời độ phân giải cao
o Handle gián đoạn dịch vụ chu đề quyền ưu tiên
o Tất cả các chức năng lập lịch như O(1), có nghĩa là kích thước của đầu vào cho một
chức năng là tuyến tính tương quan với chức năng runtime
o Lịch trình tiến trình hỗ trợ spin lock
o 230 tiến trình ID
o 4.095 loại thiết bị
+ Linux cho hệ thống nhúng
o Chức năng quản lý tiến trình.
o Chức năng quản lý bộ nhớ. [Ví dụ, phân bổ, hủy phân bổ, con trỏ, tạo và xóa các
tác vụ.
o File System Functions.
o Chức năng bộ nhớ chia sẻ
o Chức năng kết nối mạng hệ thống
o Chức năng kiểm soát thiết bị cho bất kỳ ngoại vi hiện tại vào trong hệ thống (máy
tính bàn)
o Chức năng gọi hệ thống cũng giống như một thiết bị IO: open (), close (), write ()
và read () chức năng.
5.3.3.2. Các tiến trình trong Linux
o Linux sử dụng các tiến trình và threads POSIX
o Tập tin tiêu đề Linux Linux / types.h và Linux / shm.h, nếu bao gồm hỗ trợ lập trình
hệ thống cho chia nhánh tiến trình và chia sẻ chức năng bộ nhớ trong kernel.
o Đối với các chức năng bộ nhớ chia sẻ, POSIX map được sử dụng trong Linux.
o Một tiến trình luôn luôn tạo ra như tiến trình child trong tiến trình sử dụng chức
năng fork ().
o Một child tạo ra các bản sao của parent với một tiến trình ID mới
o Fork () trả về một tiến trình khác nhau cấu trúc pid của parent và pid có số child trở
thành = 0.
o Các tiến trình child được thực hiện chức năng khác nhau hơn so với parent bằng
cách chức năng ghi chồng lắp (overloading function) của tiến trình parent sử dụng chức
năng execv ().
o Execv() có hai tham số, function_name cho hàm child và function_arguments cho
các tính năng child.
o Mỗi tiến trình có bộ nhớ riêng của nó và có thể không trực tiếp gọi một tiến trình
khác.
o Không có tiến trình nhẹ (lightweight) như trong UNIX
Note: A light-weight process (LWP) is a means of achieving multitasking. In the traditional
meaning of the term, as used in Unix System V and Solaris, a LWP runs in user space on
top of a single kernel thread and shares its address space and system resources with other
LWPs within the same process. Multiple user level threads, managed by a thread library,
can be placed on top of one or many LWPs - allowing multitasking to be done at the user
level, which can have some performance benefits.
5.3.3.3. Thiết bị Linux
+ Thiết bị char
o Ký tự và khối thiết bị.
o Char device─ cổng song song, màn hình LCD
o Hiển thị ma trận, hoặc cổng nối tiếp hoặc bàn phím hoặc chuột.
o Truy cập ký tự ─ byte-by-byte và tương tự như việc truy cập từ và cho một thiết bị
máy in.
+ Khối thiết bị
o Khối device─ một hệ thống tập tin (đĩa).
o Linux cho phép một khối thiết bị để đọc và ghi byte-by-byte như một thiết bị char
hoặc đọc và ghi khối giống như một khối thiết bị. Một phần của khối có thể được truy cập
+ Thiết bị mạng
o Một thiết bị mạng là một thiết bị Handle thiết bị giao diện mạng (Card hoặc adapter)
sử dụng một giao thức line, Ví dụ TTY hoặc PPP hoặc SLIP. Một giao diện mạng nhận
được hoặc gửi các gói dữ liệu bằng cách sử dụng một giao thức và Socket, và hạt nhân sử
dụng các module liên quan để truyền tải gói.
Note: The Serial Line Internet Protocol (also SLIP) is an encapsulation of the Internet
Protocol designed to work over serial ports and modem connections. It is documented in
RFC 1055. On personal computers, SLIP has been largely replaced by the Point-to-Point
Protocol (PPP).
Đầu vào, và các thiết bị phương tiện truyền thông
o Một thiết bị đầu vào là một thiết bị Handle đầu vào từ một thiết bị, ví dụ như bàn
phím. Một điều khiển thiết bị đầu vào có nhiều chức năng cho các các thiết bị đầu vào tiêu
chuẩn.
o Các trình điều khiển thiết bị phương tiện truyền thông có chức năng các thiết bị âm
thanh và video đầu vào. Ví dụ là thiết bị grabber video-frame, teletext thiết bị vô tuyến,
thiết bị radio (thực sự là streaming voice, âm nhạc hay thiết bị Speech).
Thiết bị video
o Một thiết bị video là một thiết bị Handle bộ đệm khung hình từ hệ thống khác hệ
thống như một thiết bị char hoặc thiết bị gửi gói dữ liệu mạng UDP
o Các trình điều khiển video cho chuẩn video các ngõ ra. Một điều khiển thiết bị âm
thanh có chức năng cho các chuẩn âm. Một thiết bị âm thanh là một thiết bị Handle âm
thanh ở định dạng tiêu chuẩn.
5.3.4 RT Linux
5.3.4.1. RT Linux
o Đối với nhiệm vụ thời gian thực và khó dự đoán được hành vi thời gian thực, một
phần mở rộng của Linux là một khó khăn môi trường thời gian thực POSIX sử dụng một
lõi thời gian thực.
o Các lõi được gọi là RTLinuxFree và RTLinuxPro, phần mềm miễn phí và thương
mại phần mềm tương ứng. V. Yodaiken phát triển RTLinux, sau FSM Labs thương mại
hóa RTLinuxPro và bây giờ Wind River đã mua lại nó
o Sửa đổi tương đối đơn giản, mà chuyển đổi các Linux hạt nhân hiện có vào một môi
trường thời gian thực cứng.
o Xác định độ trễ ngắt ISRs thực hiện tại RTLinux lõi và xác định xử lý các tác vụ
khác được chuyển sang Linux.
o Các chức năng chuyển tiếp Linux được đặt trong FIFO với chia sẻ bộ nhớ giữa các
chủ đề RTLinux ưu tiên cao nhất và chức năng Linux chạy ưu tiên thấp.
Hình 5.2. RT Linux tính năng cơ bản

+ Chạy tác vụ cho chất lượng thời gian thực cứng


o Chạy các tác vụ nguyên thủy với chỉ phân bổ tĩnh bộ nhớ.
o Việc cấp phát bộ nhớ động hoặc giới thiệu phân bổ bộ nhớ ảo không thể đoán trước
thời điểm sự phân bổ và tải
o Chạy tác vụ thời gian thực mà không có địa chỉ bảo vệ không gian.
o Việc bảo vệ bộ nhớ địa chỉ liên quan đến các bổ sung kiểm tra, mà thời điểm phân
bổ và tải cũng không thể đoán trước được.
o Chạy với việc vô hiệu hóa các ngắt để ngắt khác không tạo ra không thể biết trước
được.
o Chạy một lịch trình cố định ưu tiên đơn giản.
+ Chạy tác vụ cho chất lượng thời gian thực mềm
o Ứng dụng có thể được cấu hình để chạy cách khác nhau.
o RTLinux cho phép sự linh hoạt trong việc xác định gian thực hành vi tác vụ thời
gian, đồng bộ hóa và giao tiếp
o RTLinux hạt nhân được thiết kế với các mô-đun, mà có thể được thay thế để thực
hiện hành vi linh hoạt bất cứ nơi nào có thể

+ Chạy nhiệm vụ cho các nhiệm vụ phi thời gian thực


o Các ứng dụng chạy như tiến trình Linux.

You might also like