Giáo trình Real time - Chương 5: Các dịch vụ nhân
Vꢀ Duy Thꢁnh
CHƢƠNG 5
CꢀC DꢁCH Vꢂ NHÂN – KERNEL SERVICES
Môt nhân1 (kernel – tư nay vê sau xin đươc giư nguyên ban băng tiêng Anh) đa tac vu đươc
̃
đinh nghia rât rông băng cac dich vu mꢀ nꢁ cung cꢂp. Tâp hơp cac dich vꢃ nꢀy câu thanh
̃
nên Giao diên Lâp trinh Ưng dung (Application Programming Interface – API) cho phꢄp
ngươi sư dꢃng cꢁ thꢅ tꢆn dꢃng cꢇc đăc tinh cꢈa kernel. Khi mô tꢉ cꢇc chꢊc năng cꢈa mꢋt
kernel đa tac vu, ngưꢌi ta thương trinh bay vê API đê chꢍ ra cꢇc khꢇi niꢎm đưꢏc săp xêp ra
sao trong mꢐ nguꢑn thꢒc. Trong cac phân con lai cua tai liêu, chꢓng ta chꢍ xem xꢄt API dưꢔi
dꢕng đơn gian va chꢍ trên cơ sơ ꢖ tưꢗng đꢅ hiꢅu vê cac chưc năng cơ ban. Viêc thưc hiên
trên thưc tê sꢘ khꢇc hơn vꢙ tiꢅu tiꢚt so vꢔi mô hinh đươc trinh bꢀy ꢗ đây. Tuy nhiên, chꢓng
̃
vân thưc hiên cung môt chưc năng như nhau.
́
1. API cho tac vu
̣
Hꢐy xꢄt API cho kernel băng cac dich vu cân thiêt cho viêc quan ly cac tac vu:
task_t *TaskCreate (void (*task)(void *data), void *data, int prior);
status_t TaskStart (task_t *task);
status_t TaskSuspend (task_t *task);
status_t TaskResume (task_t *task);
status_t TaskDelete (task_t *task);
Sꢘ tuyꢎt đꢛi không cꢁ điꢙu gꢜ xꢉy ra cho môt hê thông đa tac vu cho tơi khi chꢓng ta tao ra
môt hoăc mꢋt sꢛ tꢇc vꢃ. Đê tao ra môt tꢇc vꢃ, chꢓng ta sư dung môt ham co tên hoăc co
tên tương tư như TaskCreate. ꢝt nhât, chꢓng ta cꢞng cꢟn phꢉi cung câp cho ham nay
môt sô thông sô như sau:
- Môt con tro, trꢠ tꢔi hꢀm thꢒc thi cꢇc mꢐ lꢎnh cꢈa tꢇc vꢃ (task)
- Môt con trꢠ, trꢠ tꢔi dꢡ liꢎu lꢀ đꢛi sꢛ cꢈa hꢀm khi no đươc goi đên lân đâu tiên
(data).
- Đꢋ ưu tiên cꢈa tꢇc vꢃ (prior).
Dꢢch vꢃ tꢕo tac vu co thê trꢉ vꢙ mꢋt con trꢠ, trꢠ tꢔi Khôi điêu khiên tac vu – Task Control
Block (TCB) mꢀ đưꢏc đꢢnh nghꢣa ꢗ đây lꢀ task_t. Đây la môt câu truc dư liêu chꢊa mꢤi thư
̃
mꢀ kernel cꢟn đꢅ biꢚt vꢙ môt tac vu. Con tro nꢀy sau đo co thê đươc sư dung đê lam đôi sô
tơi cꢇc dꢢch vu quan ly tac vu khac.
Chꢓ ꢖ rꢥng, trong qua trinh thưc thi lênh ꢗ trên, chꢓng ta giꢉ sꢦ rꢥng dich vu tꢕo tꢇc vꢃ sꢘ
tư đông đinh đia chi cho TCB va ngăn xêp stack. Đꢑng thơi chꢓng ta cꢞng gia thiêt răng
kꢧch thươc cua ngăn xêp la cꢛ đꢢnh vꢀ đươc thiêt lâp ơ đâu đo. Trong môt sô trương hơp,
ngươi sư dung phai tư mꢜnh đꢢnh đꢢa chꢍ cho TCB hoăc/vꢀ stack vꢀ kꢧch thưꢔc cꢈa stack.
Ngoꢀi ra, cꢞng cꢁ nhiꢙu đꢛi sô phꢃ cꢁ thꢅ đi kꢨm vꢧ dꢃ như tên cꢈa tꢇc vꢃ băng ma ASCII,
̃
giꢇ trꢢ thꢌi gian lây mâu….
̃
1 Nhân hay Kernel trong mꢀt hꢁ điꢂu hꢃnh lꢃ phꢄn cô
thưc hiên hâu hêt cac nhiêm vu điêu hanh chinh. Vꢆ dꢇ như quꢈn lꢉ cꢊc hoꢋt đôn
nhơ…
́t loi cua chương trinh, cư trꢅ trong bộ nhơ va
̃ ̀ ́ ̀
̉
̣
̣
̀
́
̣
̣
̀
̣ g vao ra, quꢈn lꢉ bꢀ
̀
́
̀
́
́
Tꢁi liꢂu chꢃ mang tꢄnh tham khꢅo
Nguyên văn tiêng nươc ngoai cua Doug Abott
́
1
́
̀
̉
Vꢀ Duy Thꢁnh
Dꢢch vu tao tac vꢃ cꢁ thê hoăc không thê khơi đông tꢇc vꢃ. Nêu la không thê, môt dich vu
khơi đông tꢇc vu riêng biêt đươc cung cꢂp. Môt khi tac vu đươc thưc thi, n
)Khi bi treo, nꢁ sꢘ bꢢ tꢇch khꢠi quꢇ trꢜnh lâp lich hoat đông cho tơi khi
nꢁ đưꢏc hꢑi phꢃc (resume) theo chu ky. Cuôi cung, nêu môt tac vu không con cân thiêt
nưa, nꢁ cꢁ thê bi xoa (delete) khꢠi danh sꢇch cꢇc tꢇc vꢃ đang hoꢕt đꢋng. Nꢁi chung, cꢇc
̃
hꢀm quꢉn lꢖ tꢇc vꢃ ngoꢕi trꢩ TaskCreateđꢙu trꢉ vꢙ kiꢅu status_tđꢅ chꢍ ra rꢥng hꢀm
đo co thꢒc thi thꢀnh công hay không.
̀
2. API cua đinh thơi
̣
̉
void Delay (unsigned int ticks);
void DelayUntil (time_t *time);
void WaitTilNext (void);
Mꢤi kernel đꢙu cꢁ môt hꢀm cꢁ tên goi tương tư như Delayđꢅ khꢁa tꢇc vꢃ đưꢏc gꢤi trong
môt khoang thꢌi gian cꢛ đꢢnh tꢧnh theo sꢛ lꢟn dao đông cua mach thơi gian. Mꢋt sꢛ hê
thông cung co nhưng biên thê cꢈa lꢎnh nꢀy như DelayUntilđꢅ khꢁa tꢇc vꢃ đưꢏc gꢤi cho
̃
̃
tơi môt thơi điêm cô đinh trong ngay. Kiêu dư liêu time_t la kiêu unsigned long int.
̃
WaitTilNextchꢍ cꢁ trong hꢎ thꢛng cꢁ hꢪ trꢏ tꢇc vꢃ theo chu ky. Hꢀm nꢀy khꢁa tꢇc vꢃ
đươc goi cho tơi lân goi lân sau trong lich trinh lâp lich.
Tꢁi liꢂu chꢃ mang tꢄnh tham khꢅo
Nguyên văn tiê
́
ng nươc ngoai cua Doug Abott
2
́
̀
̉
Bạn đang xem tài liệu "Giáo trình Real time - Chương 5: Các dịch vụ nhân", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
giao_trinh_real_time_chuong_5_cac_dich_vu_nhan.pdf

