You are on page 1of 51

Hç thòi gian thµc

1
MJC LJC
Gioi thiêu :
CHUONG 1 : TONG QUAN VE HJ THÒI GIAN THJC
1. Khái niçmhç thông thòi gian thµc :
2. Các loçi hç thông thòi gian thµc:
3. D}c diêm cua các hç thông thòi gian thµc
4. Thòi gian trong hç thông thòi gian thµc:
4.1. Dông hô hç thông:
4.2. Các loçi dông hô hç thông:
4.3. Quan niçm vê sµ ròi rçc thòi gian:
4.4. Ràng buçc vê thòi gian:
5. Xu lý thòi gian thµc
6. Hç thông diêu khiên và hç thòi gian thµc
CHUONG 2 : HJ DIEU HÀNH THÒI GIAN THJC
1. Dçi cuong vê hç diêu hành thòi gian thµc
1.1. Hç diêu hành
1.2. Hç diêu hành thòi gian thµc so vói hç diêu hành trên PC
1.3. D}c diêmcua hç diêu hành thòi gian thµc
1.4. Phân loçi hç diêu hành thòi gian thµc
4.1. Hê diêu hành thoi gian thuc nho voi muc dích thuong mai
4.2. Hê diêu hành thoi gian thuc mo rong toi Unix và các hê diêu hành khác
4.3. Các nhân cho muc dích nghiên cuu
2.Tô chúc và kiên trúc hç diêu hành thòi gian thµc
2.1. Tng quan
2.2. Các kiên trúc hê diêu hành
2.2.1.Vi hat nhân :
2.2.2.Don hat nhân:
2.3. Hçt nhân hç diêu hành thòi gian thµc
2.3.1.Hê thong thoi gian thuc nho:
2.3.2. Công nghê da nhiêm
2.3..3. Các dich vu cung cap boi hat nhân
3. Các d|ch vµ co ban
3.1. Tác vu và các trang thái tác vu
3.2. Bo lap lich
3.3. Tác vu và dù liêu
3.4. Ðèn báo và chia se dù liêu (Semaphore)
4. Các d|ch vµ mo rçng cua RTOS thuong mçi
4.1. Message Queues, Mailboxes và Piles
a. Hàng doi - Queue
b. Mailbox
c. Pipe
d. Su dung queue, mailbox, pipe
Hç thòi gian thµc
2
4.2. Chuc nàng bo dinh thoi (Timer Functions)
4.3. Các su kiên - Event
4.4. Các hàm ngát trong môi truong RTOS
5. Giói thiçu mçt sô hç diêu hành thòi gian thµc
5.1. RTX51-Real Time Operating System
5.2. ARTX-Advanced Real Time Operating System
5.3. µC/OS
5.4. QNX Neutrino
a. Kiên trúc microkernel
b. Giao tiêp liên quá trình dua trên viêc truyên thông diêp
CHUONG 3 : KY THAT LAP TRÌNH THÒI GIAN THJC
1 Tác vµ và quá trình (process)
2. Da nhiçm(Multitasking) và dông thòi (Concurrency)
2 Lçp l|ch (Scheduling)
2.1 Các khái niçm
2.2 Các phuong pháp lçp l|ch phô biên
2.2.1.Lçp l|ch offline/tinh:
2.2.2.Lçp l|ch online/dçng:
2.2.3.Lçp l|ch tçp trung ho}c phân tán:
2.2.4.Lçp l|ch Mono hay Multi-processor:
2.3 Kÿ thuçt lçp l|ch
2.3.1.FCFS
2.3.2.Shortest Job First -SJF
2.3.3.Rate monotonic (RM):
2.3.4.Earliest-deadline-first (EDF)
2.3..5Minimum Laxity first (MLF)
2.3.6.Round Robin
3 Truyên thông và dông bç
3.1 Semaphore
3.2.Các loçi Semaphore
3.3 Monitor
3.4 Xu lý ngàt
CHUONG 4 : THIET KE UNG DJNG THÒI GIAN THJC
1. Bç d|nh thòi gian cua 8051
2.1 Các thanh ghi co so cua bç d|nh thòi.
2.1.1 Các thanh ghi cua bç Timer 0.
2.1.2 Các thanh ghi cua bç Timer 1.
2.1.3 Thanh ghi TMOD (chê dç cua bç d|nh thòi).
a.Các bít M1, M0:
b. C/ T (dong ho/ bo dinh thoi).
c. Bít cong GATE.
2.1.4 Nguôn xung dông hô cho bç d|nh thòi:
Hç thòi gian thµc
3
1.2. Các chê dç cua bç d|nh thòi
1.2.1 Lçp trình cho chê dç Mode1.

1.2.2. Các buóc lçp trình o chê dç Mode 1.
1.2.3 Tìm các giá tr| cân duçc nçp vào bç d|nh thòi.
1.2.4 Chê dç 0.
1.2.5 Lçp trình chê dç 2.
2. Lçp trình xu lý ngàt
Hç thòi gian thµc
4
GIÓI THIJU
Giáo trình này nhám cung câp cho sinh viên các nôi dung chu yêu sau dây
- Tông quan vê hê thông thoi gian thuc và ung dung
- Môi truong chung quanh cua hê thông máy tính thoi gian thuc
- Kiên trúc phân bô cho hê thông thoi gian thuc
- Thoi gian toàn cuc; mô hình cua hê thông thoi gian thuc
- Dai luong thoi gian thuc và khái niêm anh
- Các giao tiêp thoi gian thuc;
- Các giao thuc kích hoat do thoi gian; input/output;
- Các hê diêu hành thoi gian thuc; dinh thoi; validation;
- Thiêt kê hê thông; kiên trúc kích hoat do thoi gian.
Hç thòi gian thµc
5
CHUONG 1 :
TONG QUAN VE HJ THÒI GIAN THJC
REALTIME SYSTEM - RTS

Mµc dích : Giói thiçu tông quan vê mô hình hç thòi gian thµc, các khái niçm
co ban cua hç thòi gian thµc, d}c diêm cua các hç thòi gian thµc, phân biçt các
hç thòi gian thµc . Chuong này cüng dông thòi giói thiçu hç thông diêu khiên
vói thòi gian thµc
Trong nhung nám gân dây, các hê thông diêu khiên theo thoi gian thuc là
môt trong nhung linh vuc thu hút nhiêu su chú ý trong gioi khoa hoc nghiên cuu
vê khoa hoc máy tính. Trong dó, vân dê diêu hành thoi gian thuc và vân dê lâp lich
là dác biêt quan trong. Môt sô ung dung quan trong cua hê thông thoi gian thuc
(RTS) dã và dang duoc ung dung rông rãi hiên nay là các dây chuyên san xuât tu
dông, rôbôt, diêu khiên không luu, diêu khiên các thí nghiêm tu dông, truyên thông,
diêu khiên trong quân su...Thê hê ung dung tiêp theo cua hê thông này së là diêu
khiên rôbôt có hoat dông giông con nguoi, hê thông kiêm soát thông minh trong các
nhà máy công nghiêp, diêu khiên các tram không gian, thám dò dáy dai duong...

1. Khái niçmhç thông thòi gian thµc :
Môt hê thông thoi gian thuc (RTS – Realtime Systems) có thê duoc hiêu nhu
là môt mô hình xu lý mà tính dúng dán cua hê thông không chi phu thuôc vào kêt
qua tính toán lôgic mà còn phu thuôc vào thoi gian mà kêt qua này phát sinh ra.
Hê thông thoi gian thuc duoc thiêt kê nhám cho phép tra loi (response) lai
các yêu tô kích thích phát sinh tu các thiêt bi phân cung trong môt ràng buôc thoi
gian xác dinh. O dây ta có thê hiêu thê nào là môt RTS báng cách hiêu thê nào là
môt tiên trình, môt công viêc thoi gian thuc.
Nhìn chung, trong nhung RTS chi có môt sô công viêc duoc goi là công viêc
thoi gian thuc, các công viêc này có môt muc dô khân câp riêng phai hoàn tât, ví du
môt tiên trình dang cô gáng diêu khiên hoát giám sát môt su kiên dang xay ra trong
thê gioi thuc. Boi vì môi su kiên xuât hiên trong thê gioi thuc nên tiên trình giám
sát su kiên này phai xu lý theo kip voi nhung thây dôi cua su kiên này. Su thay dôi
cua su kiên trong thê gioi thuc xay ra rât nhanh, môi tiên trình giám sát su kiên này
phai thuc hiên viêc xu lý trong môt khoan thoi gian ràng buôc goi là deadline,
khoan thoi gian ràng buôc này duoc xác dinh boi thoi gian bát dâu và thoi gian
hoàn tât công viêc. Trong thuc tê, các yêu tô kích thích xay ra trong thoi gian rât
ngán vào khoang vài mili giây, thoi gian mà hê thông tra loi lai yêu tô kích thích dó
tôt nhât vào khoang duoi môt giây, thuong vào khoang vài chuc mili giây,
khoang thoi gian này bao gôm thoi gian tiêp nhân kích thích, xu lý thông tin và tra
loi lai kích thích. Môt yêu tô khác cân quan tâm trong RTS là nhung công viêc thoi
gian thuc này có tuân hoàn hay không ? Công viêc tuân hoàn thì ràng buôc thoi gian
ân dinh theo tung chu ky xác dinh. Công viêc không tuân hoàn xay ra voi ràng buôc
thoi gian vào lúc bát dâu và lúc kêt thúc công viêc, ràng buôc này chi duoc xác dinh
vào lúc bát dâu công viêc. Các biên cô kích hoat công viêc không tuân hoàn thuong
dua trên kÿ thuât xu lý ngát cua hê thông phân cung.
Hç thòi gian thµc
6
Vê mát câu tao, RTS thuong duoc câu thành tu các thành tô chính sau :
-Dông hô thoi gian thuc : Cung câp thông tin thoi gian thuc.
-Bô diêu khiên ngát : Quan lý các biên cô không theo chu ky.
-Bô dinh biêu : Quan lý các qua trình thuc hiên.
-Bô quan lý tài nguyên : Cung câp các tài nguyên máy tính.
-Bô diêu khiên thuc hiên : Khoi dông các tiên trình.

Các thành tô trên có thê duoc phân dinh là thành phân cung hay mêm tùy
thuôc vào hê thông và ý nghia su dung. Thông thuong, các RTS duoc kêt hop vào
phân cung có kha náng tôt hon so voi hê thông phân mêm có chuc náng tuong ung
và tránh duoc chi phí quá dát cho viêc tôi uu hoá phân mêm. Ngày nay, chi phí
phân cung ngày càng re, chon luu uu tiên phân cung là môt xu huong
chung.

2. Các loçi hç thông thòi gian thµc:
Các RTS thuong duoc phân thành hai loai sau Soft reatime system và
Hard realtime system :
Dôi voi Soft realtime system, thoi gian tra loi cua hê thông cho yêu tô kích
thích là quan trong, tuy nhiên trong truong hop ràng buôc này bi vi pham, tuc là
thoi gian tra loi cua hê thông vuot quá gioi han trê cho phép, hê thông vân cho phép
tiêp tuc hoat dông bình thuong, không quan tâm dên các tác hai do su vi pham này
gây ra (Thuong thì tác hai này là không dáng kê).

Nguoc lai voi Soft realtime system là Hard realtime system, truong hop này
nguoi ta quan tâm khác khe dên các hâu qua do su vi pham gioi han thoi gian dê
cho phép boi vì nhung hâu qua này có thê là rât tôi tê, thiêt hai vê vât chât, có thê
gây ra nhung anh huong xâu dên doi sông con nguoi. Môt ví du cho loai này là hê
thông diêu khiên không luu, môt phân phôi duong bay, thoi gian cât cánh, ha cánh
không hop lý, không dúng lúc có thê gây ra tai nan máy bay mà tham hoa cua nó
khó mà luong truoc duoc.
Trong thuc tê thì có nhiêu RTS bao gôm ca hai loai soft và hard. Trong ca
hai loai này, máy tính thuong can thiêp truc tiêp hoác gián tiêp dên các thiêt bi vât
lý dê kiêm soát cung nhu diêu khiên su hoat dông cua thiêt bi này. Dung trên góc
dô này, nguoi ta thuong chia các RTS ra làm hai loai sau :

(1) Embedded system : Bô vi xu lý diêu khiên là môt phân trong toàn bô thiêt bi, nó
duoc san xuât tron gói tu yêu tô cung dên yêu tô mêm tu nhà máy, nguoi su dung
không biêt vê chi tiêt cua nó và chi su dung thông qua các nút diêu khiên, các bang
sô. Voi hê thông này, ta së không thây duoc nhung thiêt bi nhu trong máy tính bình
thuong nhu bàn phím, màn hình... mà thây vào dó là các nút diêu khiên, các bang
sô, dèn tín hiêu hay các màn hình chuyên dung dác trung cho tung hê thông. Máy
giát là môt ví du. Nguoi su dung chi viêc bâm nút chon chuong trình giát, xem kêt
qua qua hê thông dèn hiêu... Bô vi xu lý trong Embedded system này dã duoc lâp
trình truoc và gán chát vào ngay tu khi san xuât và không thê lâp trình lai. Nhung
chuong trình này chay dôc lâp, không có
Hç thòi gian thµc
7
su giao tiêp voi hê diêu hành (HDH) cung nhu không cho phép nguoi su dung
can thiêp vào.
(2) Loai thu hai là bao gôm nhung hê thông có su can thiêp cua máy tính thông
thuong. Thông qua máy tính ta hoàn toàn có thê kiêm soát cung nhu diêu khiên moi
hoat dông cua thiêt bi phân cung cua hê thông này. Nhung chuong trình diêu khiên
này có rât nhiêu loai, phuc vu cho nhiêu muc dích khác nhau và có thê duoc viêt lai
cho phù hop voi yêu câu thuc tê. Hiên nhiên thì loai hê thông này hoat dông duoc
phai cân môt HDH diêu khiên máy tính. HDH này phai có kha náng nhân biêt duoc
thiêt bi phân cung, có kha náng hoàn tât công viêc trong gioi han thoi gian nghiêm
ngát. HDH này phai là HDH hô tro xu lý thoi gian thuc – Realtime operating
system (RTOS).

3. D}c diêm cua các hç thông thòi gian thµc
Khái niêm hê thoi gian thuc không dông nghia voi khái niêm hê xu lý tôc dô
cao, xu lý nhanh. Nêu ta cho ráng, phai là các ung dung diêu khiên có yêu câu thoi
gian tính toán rât nhanh moi goi là diêu khiên thoi gian thuc, thì môt câu hoi së
duoc dát ra là: nhu thê nào moi duoc goi 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 chuc micro-giây thì sao, môt
trám micro-giây thì sao? Nêu môt trám micro-giây moi goi là nhanh, thì 101, 102,
... có nhanh không? Các hê diêu khiên voi chu ky trích mâu 5ms, 6 ms, 7ms có duoc
goi là hê thoi gian thuc hay không?

Có thê nói môt cách nôm na, tính thoi gian thuc là kha náng dáp kip thoi và
chính xác. Và ta hoàn toàn có thê dinh nghia nhu thê nào là kip thoi theo bôn yêu
câu khác nhau, nhu minh hoa
Môt hê thông thoi gian thuc có các dác diêm tiêu biêu sau:

* Tính bi dông: Hê thông phai phan ung voi các su kiên xuât hiên vào các thoi diêm
thuong không biêt truoc. Ví du, su vuot nguõng cua môt giá tri do, su thay dôi
trang thái cua môt thiêt bi quá trình phai dân dên các phan ung trong bô diêu khiên.

* Tính nhanh nhay: Hê thông phai xu lý thông tin môt cách nhanh chóng dê có thê
Hç thòi gian thµc
8
dua ra kêt qua phan ung môt cách kip thoi. Tuy tính nhanh nhay là môt dác diêm
tiêu biêu, nhung môt hê thông có tính náng thoi gian thuc không nhât thiêt phai có
dáp ung thât nhanh mà quan trong hon là phai có phan ung kip thoi dôi voi các yêu
câu, tác dông bên ngoài.

* Tính dông thoi: Hê thông phai có kha náng phan ung và xu lý dông thoi nhiêu su
kiên diên ra. Có thê, cùng môt lúc môt bô diêu khiên duoc yêu câu thuc hiên nhiêu
vòng diêu chinh, giám sát nguõng giá tri nhiêu dâu vào, canh gioi trang thái làm
viêc cua môt sô dông co.
* Tính tiên dinh: Du doán truoc duoc thoi gian phan ung tiêu biêu, thoi gian phan
ung châm nhât cung nhu trình tu dua ra các phan ung. Nêu môt bô diêu khiên phai
xu lý dông thoi nhiêu nhiêm vu, ta phai tham gia quyêt dinh duoc vê trình tu thuc
hiên các công viêc và dánh giá duoc thoi gian xu lý môi công viêc. Nhu vây nguoi
su dung moi có co so dê dánh giá vê kha náng dáp ung tính thoi gian thuc cua hê
thông.

4. Thòi gian trong hç thông thòi gian thµc:
4.1. Dông hô hç thông:
Thoi gian hê thông duoc báo báng môt dông hô goi là dông hô hê thông.
Trong môi truong có nhiêu vi xu lý có thê tôn tai nhiêu dông hô, thì nhung dông hô
này phai duoc dông bô voi nhau.

Có thê biêu diên muc dô chính xác cua dông hô hê thông qua hàm sô sau: C(t) = t,.
Dông hô duoc goi là chính xác vào thoi diêm ti nêu : C(ti) = ti

4.2. Các loçi dông hô hç thông:
Don gian nhât là hê thông chi có môt dông hô (sever clock), yêu câu dô
chính xác và tin cây rât cao. Loai này giá thành rât dát.
Môt loai khác gôm môt dông hô chính (master clock) dông bô voi nhiêu
dông hô phu (slave clock) theo kiêu “polling”, tât ca các dông có cùng dô chính xác,
nêu dông hô chính bi hong thì môt trong nhung dông hô phu së thay thê.
Dôi voi các hê thông phân tán, dông hô hê thông bao gôm tât ca các dông hô
phân tán và duoc dông bô voi nhau theo cùng môt thuât toán.

4.3. Quan niçm vê sµ ròi rçc thòi gian:
Trong quan niêm cua RTS, thoi gian duoc xem nhu là môt yêu tô roi rac.
Dây là môt khía canh rât phuc tap và lý thú.
(1) Trong các HDH kinh diên, có môt dông hô quan lý thoi gian dông bô
giua các tiên trình. Dông hô này phát sinh ra ngát báo hiêu cho hê thông theo chu
ky. Chu ky này có thê duoc diêu chinh nhung không quá nhanh hay quá châm làm
anh huong dên thoi gian thuc thi các tiên trình, và thuong là vào khoang
vài chuc mili giây. Chính chu ky này dã chia thoi gian ra thành các manh
du nho.
(2) Còn trong các RTOS, hê thông su dung môt dông hô có kha náng lâp
Hç thòi gian thµc
9
trình diêu phôi ngát theo môt chu ky du nho hop lý, chu ky o hê thông này vào
khoang vài micrô giây.
Trong thuc tê thì các RTS thuong dua trên cách tiêp cân kêt hop giua hai
quan niêm trên, thuong thì quan diêm (1) là nên tang có su hô tro cua quan diêm(2).

4.4. Ràng buçc vê thòi gian:
Voi môi yêu tô kích thích, hê thông tiêp nhân vào môt thoi diêm t0, hê thông
tiên hành câp phát tài nguyên, thuc hiên các xu lý tính toán và hoàn tât viêc tra loi
vào thoi diêm tk khác sau dó.
Môt ràng buôc tôi thiêu có thê duoc dinh nghia qua bô ba sau:
(ID, Tbegin(condition1), Tend(condition2))
Trong dó: ID : Chi sô cua tiên trình
Tbegin(condition1) : Thoi gian bát dâu tiên trình
Tend(condition2) : Thoi gian tiên trình hoàn tât xu lý

Phu thuôc vào hê thông và thoi gian xác dinh duoc tài nguyên cân câp phát,
cung nhu quá trình giai phóng tài nguyên sau khi tiên trình su dung… Môt ràng
buôc khác khe hon có thê xác dinh nhu sau:

(ID, Tbegin(condition1), CID, FID, Tend(condition2)) dC(t) dt ti
Trong dó: ID : Chi sô cua tiên trình
Tbegin(condition1) : Thoi gian bát dâu tiên trình
Tend(condition2) : Thoi gian tiên trình hoàn tât xu lý
CID : Thoi gian uoc tính cua tiên trình (sô mâu thoi gian)
FID : Tân sô mâu thoi gian

Môi chi thi co so (Assembly) có môt thoi gian thuc thi cô dinh phu thuôc
vào phân cung, ví du :
Chi thi Thoi gian thuc thi (clock)
MOV reg8, reg8 2 JMP 15 IRET 24 IN 10 OUT 10

Nhu vây, môi tiêu trình thuc hiên môt công viêc duoc viêt báng môt nhóm
các chi thi (hàm) së có thoi gian thuc hiên là cô dinh, thêm vào dó còn có thoi gian
dùng dê khoi tao tiêu trình, kêt thúc tiêu trình dân dên thoi gian thuc hiên công viêc
dó së lon hon thoi gian thuc thu thuc hiên tiêu trình. Câu hoi dát ra là làm thê nào
nhung công viêc có thê thuc thi môt cách hoàn chinh trong thoi gian bi han chê.
Câu tra loi dó là co chê Diêu Phôi Quá Trình duoc xem xét o phân sau.

5. Xu lý thòi gian thµc
Xu lý thoi gian thuc là hình thuc xu lý thông tin trong môt hê thông dê dam
bao tính náng thoi gian thuc cua nó. Nhu vây, xu lý thoi gian thuc cung có các dác
diêm tiêu biêu nêu trên nhu tính bi dông, tính nhanh nhay, tính dông thoi và tính
tiên dinh. Dê có thê phan ung voi nhiêu su kiên diên ra cùng môt lúc, môt hê thông
xu lý thoi gian thuc su dung các quá trình tính toán dông thoi.
Hç thòi gian thµc
10

Quá trình tính toán là môt tiên trình thuc hiên môt hoác môt phân chuong
trình tuân tu do hê diêu hành quan lý trên môt máy tính, có thê tôn tai dông thoi voi
các quá trình khác kê ca trong thoi gian thuc hiên lênh và thoi gian xêp hàng cho
doi thuc hiên.

Các hình thuc tô chuc các quá trình tính toán dông thoi:

* Xu lý canh tranh: Nhiêu quá trình tính toán chia se thoi gian xu lý thông tin cua
môt bô xu lý.

* Xu lý song song: Các quá trình tính toán duoc phân chia thuc hiên song song trên
nhiêu bô xu lý cua môt máy tính.

* Xu lý phân tán: Môi quá trình tính toán duoc thuc hiên riêng trên môt máy tính.

Trong các hình thuc trên dây thì hình thuc xu lý canh tranh có vai trò chu chôt. Mác
dù hê thông diêu khiên có thê có nhiêu tram, và môi tram có thê là môt hê da vi xu
lý, sô luong các quá trình tính toán cân thuc hiên thuong bao gio cung lon hon sô
luong vi xu lý. Trong khi môt vi xu lý không thê thuc hiên song song nhiêu lênh, nó
phai phân chia thoi gian dê thuc hiên xen kë nhiêu nhiêm vu khác nhau theo thu tu
tùy theo muc uu tiên và phuong pháp lâp lich.

Trong các hê thông diêu khiên, khái niêm tác vu (task) cung hay duoc su
dung bên canh quá trình tính toán. Có thê nói, tác vu là môt nhiêm vu xu lý thông
tin trong hê thông, có thê thuc hiên theo co chê tuân hoàn (periodic task) hoác theo
su kiên (event task). Các dang tác vu qui dinh trong chuân IEC 61131-3
(Programmable Controllers – Part3: Programming Languages) duoc minh hoa trên
hình 2. Ví du, môt tác vu thuc hiên nhiêm vu diêu khiên cho môt hoác nhiêu mach
vòng kín có chu ky trích mâu giông nhau. Hoác, môt tác vu có thê thuc hiên nhiêm
vu diêu khiên logic, diêu khiên trình tu theo các su kiên xay ra. Tác vu có thê thuc
hiên duoi dang 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.

6. Hç thông diêu khiên và hç thòi gian thµc
Hç thòi gian thµc
11

Có thê nói, tât các các hê thông diêu khiên là hê thoi gian thuc. Nguoc lai,
môt sô lon các hê thông thoi gian thuc là các hê thông diêu khiên. Không có hê
thông diêu khiên nào có thê hoat dông bình thuong nêu nhu nó không dáp ung duoc
các yêu câu vê thoi gian, bât kê là hê thông diêu khiên nhiêt dô, diêu khiên áp suât,
diêu khiên luu luong hay diêu khiên chuyên dông. Môt bô diêu khiên phai dua ra
duoc tín hiêu diêu khiên kip thoi sau môt thoi gian nhân duoc tín hiêu do dê dua
quá trình kÿ thuât vê trang thái mong muôn. Môt mang truyên thông trong môt hê
thông diêu khiên có tính náng thoi gian thuc phai có kha náng truyên tin môt cách
tin cây và kip thoi dôi voi các yêu câu cua các bô diêu khiên, các thiêt bi vào/ra, các
thiêt bi do và thiêt bi châp hành. Tính náng thoi gian thuc cua môt hê thông diêu
khiên phân tán không chi phu thuôc vào tính náng thoi gian thuc cua tung thành
phân trong hê thông, mà còn phu thuôc vào su phôi hop hoat dông giua các thành
phân dó.

Trong thuc tê, yêu câu vê tính thoi gian thuc dôi voi môi ung dung diêu
khiên cung có các dác thù khác nhau, muc dô ngát nghèo khác nhau. Ví du, các hê
thông diêu khiên nhúng thuong duoc ung dung voi các san phâm chê tao hàng loat,
chi phí phân cung cho tung san phâm cân duoc giam thiêu, vì vây dung luong bô
nho cung nhu hiêu náng vi xu lý thuong thâp. Hon nua, diêu khiên nhúng lai là giai
pháp dác thù trong các ung dung nhanh, tiêu biêu là diêu khiên chuyên dông, dân
dên các yêu câu ngát nghèo hon vê hiêu suât phân mêm. Trong khi dó, các hê diêu
khiên công nghiêp nhu PLC hoác DCS dát ra yêu câu cao vê kha náng lâp trình và
dua vào vân hành thuân tiên cho các bài toán lon. Các hê thông ung dung PLC và
DCS cung thuong châm hon (ví du trong diêu khiên các quá trình công nghê)
Nhung nhu vây không có nghia là các giai pháp PLC hoác DCS không phai là các
hê thoi gian thuc. Diêu gì së xay ra trong môt nhà máy diên nguyên tu hay trong
môt nhà máy loc dâu, nêu thuât toán diêu khiên mác dù rât hiên dai nhung bô diêu
khiên không có kha náng dua ra kêt qua dáp ung kip thoi vào nhung thoi diêm trích
mâu, hay khi không dua ra duoc các quyêt dinh dung khân câp môt cách kip thoi
trong nhung tình huông bât thuong?

Hç thòi gian thµc
12
CHUONG 2 :
HJ DIEU HÀNH THÒI GIAN THJC
REALTIME OPERATING SYSTEM – RTOS

Mµc dích : Giói thiçu vê kiên trúc cua mçt hç diêu hành thòi gian thµc, các
khác biçt cua hç diêu hành thòi gian thµc vói các hç diêu hành PC. D}c diêm
và phân loçi các hç diêu hành thòi gian thµc, vân dê xu lý thòi gian trong hç
diêu hành thòi gian thµc. Chuong này cüng dông thòi giói thiçu mçt sô hç diêu
hành thòi gian thµc phô biên nhu : Window Mobile, Symbyan ….

1. Dçi cuong vê hç diêu hành thòi gian thµc
1.1. Hç diêu hành

Nguôn gôc ra doi cua hê diêu hành là dê dam nhiêm vai trò trung gian dê
tuong tác truc tiêp voi phân cung cua máy tính, phuc vu cho nhiêu ung dung da
dang. Các hê diêu hành cung câp môt tâp các chuc náng cân thiêt dê cho
phép các gói phân mêm diêu khiên phân cung máy tính mà không cân phai
can thiêp truc tiêp sâu. Hê diêu hành cua máy tính có thê thây nó bao gôm các
drivers cho các ngoai vi tích hop voi máy tính nhu card màn hình, card âm thanh...
Các công cu dê quan lý tài nguyên nhu bô nho và các thiêt bi ngoai vi nói chung.
Diêu này tao ra môt giao diên rât thuân loi cho các ung dung và nguoi su dung phát
triên phân mêm trên các nên phân cung dã có. Dông thoi tránh duoc yêu câu và
hiêu biêt sâu sác vê phân cung và có thê phát triên dua trên các ngôn ngu bâc cao.

Hê thông diêu hành ban chât cung là môt loai phân mêm nhung nó khác voi
các loai phân mêm thông thuong. Su khác biêt diên hình là hê thông diêu hành
duoc nap và thuc thi dâu tiên khi hê thông bát dâu khoi dông và duoc thuc hiên truc
tiêp boi bô xu lý cua hê thông. Hê thông diêu hành duoc viêt dê phuc vu diêu khiên
bô xu lý cung nhu các tài nguyên khác trong hê thông boi vì nó së dam nhiêm chuc
náng quan lý và lâp lich các quá trình su dung CPU và cùng chia se tài nguyên

Hç thòi gian thµc
13
1.2. Hç diêu hành thòi gian thµc so vói hç diêu hành trên PC

Hê diêu hành thoi gian thuc (RTOS) cho các hê thông nhúng rât khác so voi
hê diêu hành trên máy tính desktop nhu Windows hay UNIX :

Thu nhât, trên máy tính desktop hê diêu hành së chiêm quyên diêu khiên
ngay sau khi máy duoc bât và sau dó moi cho chúng ta bát dâu ung dung cua mình.
Chúng ta biên dich và liên kêt các ung dung cua mình tách biêt voi hê diêu hành.
Nguoc lai, trong môt hê thông nhúng, ung dung thuong xuyên liên kêt voi RTOS.
Tai lúc khoi dông, ung dung nhân lây quyên diêu khiên dâu tiên và sau dó nó moi
bát dâu RTOS. Boi vây ung dung và RTOS phai có môi quan hê chát chë hon.
Thu hai, rât nhiêu RTOS không bao vê chính ban thân chúng môt cách cân
thân nhu hê diêu hành trên desktop.
Thu ba, dê tiêt kiêm bô nho các RTOS mác dinh chi bao gôm các dich vu
cân thiêt cho ung dung nhúng cua chúng ta. Hâu hêt các RTOS cho phép chúng ta
câu hình bao quát truoc khi chúng ta liên kêt chúng voi ung dung.
Thu tu, hâu hêt các diêu hành trên máy desktop quan tâm dên hiêu náng trung bình
trong khi các hê diêu hành thoi gian thuc lai quan tâm dên các gioi han, thoi gian
dáp ung.
O trong phân này, chúng ta tìm hiêu khái niêm tác vu - Task trong môi
truong RTOS và vân dê chia se du liêu, semaphores, mailbox, queue… Ngoài ra,
chúng ta còn xem xét vân dê truyên thông liên quá trình, dich vu bô dinh thoi, quan
lý bô nho và tuong tác giua các thu tuc ngát.

Các hê diêu hành thoi gian thuc nhân manh dên kha náng du doán và các
ràng buôc vê thoi gian dáp ung. Nói chung, hê diêu hành thoi gian thuc thuong
duoc phân thành ba kiêu lai chính là:

1.3. D}c diêmcua hç diêu hành thòi gian thµc
Hç thòi gian thµc
14

Do các yêu câu khát khe vê thoi gian, vê viêc su dung tài nguyên, và su quan
trong cua viêc lâp lich, các RTOS dóng vai trò rât quan trong trong phát triên hê
nhúng thoi gian thuc. Chúng giông nhu nhung thu viên, chúng ta có thê dùng, thêm
bot các dich vu cho phù hop voi ung dung nhúng thoi gian thuc dê có thê phát triên
ung dung nhúng thoi gian thuc môt cách nhanh hon, tin tuong hon. Vì vây su tôn
tai cua các RTOS là rât cân thiêt và quan trong.
Truoc khi xem xét các dich vu cua hê diêu hành thoi gian thuc xác dinh, ta cân biêt
nhu thê nào dê có thê dánh giá dây là hê diêu hành thoi gian thuc tôt, phù hop voi
các ung dung nhúng thoi gian thuc cua ta. Theo FQA cho comp.realtime:
Môt RTOS tôt chi khi có môt nhân tôt. Môt RTOS tôt së có môt tài liêu tôt và duoc
phân phát cùng các công cu tôt dê phát triên và vân hành ung dung cua chúng ta. Vì
vây, các tính toán vê khoang thoi gian ngát và thoi gian chuyên mach ngu canh là
rât quan trong, cùng voi các thông sô khác làm nên môt RTOS tôt. Cho ví du, môt
RTOS hô tro nhiêu dich vu có nhiêu thuân loi hon môt RTOS don gian.
Thêm vào dó, có nhung dác ta chính xác là rât quan trong dê nhân ra RTOS
tôt. Theo comp.realtime thì các nhà san xuât RTOS nên chi rõ các yêu tô:
1. Khoang thoi gian trê ngát - Interrupt Latency: là khoang thoi gian tu lúc ngát
toi lúc chay tác vu. Khoang thoi gian này phai tuong thích voi các dòi hoi cua ung
dung và phai du doán duoc. Các giá tri này phu thuôc trên sô luong cua các ngát
dông thoi cho doi.

2. Cho môi loi goi hê thông, thoi gian tôi da duoc biêt truoc. Nó së có thê doán
và không phu thuôc vào sô luong các dôi tuong trong hê thông.

3. Thoi gian cuc dai cua RTOS và diêu khiên các mát na ngát.

4. Các muc ngát hê thông.

5. Trình thiêt bi diêu khiên các ngát (IRQ: Interrupt ReQuest), thoi gian cuc dai
cua hê thông mà trình thiêt bi diêu khiên ngát thuc hiên.

Hê diêu hành thoi gian thuc tuong tu nhu môt hê diêu hành da muc dích và cung
câp các chuc náng nhu:
+ Giao tiêp voi phân cung o lop duoi
+ Lâp lich và xu lý uu tiên
+ Quan lý bô nho
+ Các dich vu vào ra
+ Hô tro su lua chon bô vi xu lý
+ Tính kha chuyên toi các bô vi xu lý khác
+ Tính mêm deo dê phù hop voi các yêu câu ung dung khác nhau
+ Hô tro bô da vi xu lý
+ Mo rông các dich vu nhu hô tro mang

Hç thòi gian thµc
15
Theo nhung tiêu chuân POSIX - Môt khuynh huong giúp nhung nhà thiêt kê
di chuyên tu hê diêu hành thoi gian thuc này toi hê diêu hành thoi gian thuc khác.
Dác biêt, bât cu RTOS nào tuân theo chuân POSIX dêu chia se môt chuân API
(giao diên lâp trình ung dung). LynxOS là môt RTOS tuân theo dây du chuân
POSIX

Môt RTOS thuong có tính mêm deo và có tính câu trúc. Nó cho phép tích
hop thêm các dich vu gia táng theo vòng tròn dông tâm. Vòng trong cùng hay nhân
cung câp nhung dác tính quan trong nhât cua hê diêu hành thoi gian thuc. Các dác
diêm khác có thê duoc thêm vào nhu môt vòng ngoài khi cân thiêt. Nhân nho cua
môt RTOS thích hop cho môt ung dung bô xu lý nho, trong khi nhung vòng ngoài
có thê giúp dõ xây dung hê thông thoi gian thuc lon. Các RTOS thuong cung câp
các muc xu lý uu tiên. Các công viêc uu tiên cao hon së duoc thuc hiên truoc.
Các RTOS thích hop voi các yêu câu cua hê thông nhúng. Nó cung câp khoi
dông tu ROM, cho nhung hê thông không có bât cu dia luu tru nào, nhu vây giam
môt cách dáng kê thoi gian khoi dông cua hê thông.
Môt vài ví du cua các hê diêu hành thoi gian thuc là: VxWorks, QNX, LynxOS,
ŒCOS, RTX-51…

1.4. Phân loçi hç diêu hành thòi gian thµc
+ Hê diêu hành thoi gian thuc nho voi muc dích thuong mai.
+ Hê diêu hành thoi gian thuc mo rông toi UNIX và các hê diêu hành khác.
+ Các nhân cho muc dích nghiên cuu.

4.1. Hê diêu hành thoi gian thuc nho voi muc dích thuong mai
Các hê diêu hành này thuong nho và nhanh. Nhu: QNX, PDOS, pSOS,
VxWorks, Nulceus, ERCOS, EMERALDS, Windows CE, chúng có các dác diêm
sau:
+ Có thoi gian chuyên ngu canh và thoi gian dáp ung nhanh.
+ Kích thuoc rât nho.
+ Không có bô nho ao và có thê cô dinh mã, du liêu trong bô nho.
+ Hê thông da tác vu và chuân giao tiêp liên quá trình. Các mailbox, các su kiên,
các tín hiêu và các dèn báo duoc dinh nghia tôt.

Nhung hê diêu hành này thuong có các dác ta tôt và có các công cu tôt dê
phát triên các ung dung nhúng thoi gian thuc. Nó hô tro các ràng buôc thoi gian
thuc voi các dich vu nhu:
+ Các gioi han thoi gian thuc hiên.
+ Dông hô thoi gian thuc.
+ Lâp lich thu tu uu tiên.
+ Canh báo dác biêt và thoi gian quá han (timeout).
+ Hô tro các hàng doi thoi gian thuc.
+ Cung câp viêc xu lý dô trê, treo hay kích hoat viêc thuc hiên.

Hç thòi gian thµc
16
4.2. Hê diêu hành thoi gian thuc mo rong toi Unix và các hê diêu hành khác
Các hê diêu hành này nhu: RT-UNIX, RT-LINUX, RT-MACH, RT-POSIX.
Chúng châm hon và có kha náng du doán ít hon so voi các hê diêu hành thoi gian
thuc thuong mai o trên nhung chúng lai có nhiêu chuc náng và môi truong phát
triên tôt hon dua trên tâp các giao tiêp chuân và thân thiên.

4.3. Các nhân cho muc dích nghiên cuu
Các hê diêu hành này có các dác diêm sau:
+ Hô tro các thuât toán lâp lich thoi gian thuc và viêc phân tích thoi gian.
+ Hô tro các dich vu co ban dê dông bô thoi gian thuc.
+ Nhân manh kha náng du doán hon là hiêu náng trung bình.
+ Hô tro cho kha náng chiu lôi.
Ví du nhu: Spring, MARS, HARTOS, MARUTI, ARTS, CHAOS, DARK.

2.Tô chúc và kiên trúc hç diêu hành thòi gian thµc
2.1. Tng quan
Nhu chúng ta dã duoc biêt dôi voi các hê thông thoi gian thuc, yêu câu thiêt
kê môt hê diêu hành khá dác biêt. Hê nhúng thoi gian thuc lai yêu câu hê
diêu hành phai thuc hiên voi môt nguôn tài nguyên thuong rât han h•p. Mác dù
kích thuoc bô nho tích hop onchip së có thê táng lên trong tuong lai nhung voi su
phát triên hiên nay hê diêu hành cho các hê nhúng chi nên cõ khoang nho hon 32
Kbytes.

Hê thông diêu hành dam nhiêm viêc diêu khiên các chuc náng co ban cua hê
thông bao gôm chu yêu là quan lý bô nho, ngoai vi và vào ra giao tiêp voi hê thông
phân cung. Môt diêm khác biêt co ban nhu chúng ta dã biêt vê hê diêu
hành voi các phân mêm khác là nó thuc hiên chuc náng diêu khiên su kiên thuc
thi trong hê thông. Có nghia là nó thuc hiên các tác vu theo mênh lênh yêu câu tu
các chuong trình ung dung, thiêt bi vào ra và các su kiên ngát.

Hç thòi gian thµc
17
Bôn nhân tô chính tác dông truc tiêp toi quá trình thiêt kê hê diêu hành là :
(1) kha náng thuc hiên,
(2) náng luong tiêu thu
(3) giá thành
(4) kha náng tuong thích.

Hiên nay chúng ta cung có thê bát gáp rât nhiêu hê diêu hành khác
nhau dác biêt cho các hê nhúng cung vì su tác dông cua 4 nhân tô nêu trên. Hâu
hêt chúng dêu có kiêu dang và giao diên khá giông nhau nhung co chê quan lý
và thuc thi các tác vu bên trong rât khác nhau. Môi hê diêu hành duoc thiêt
kê phuc vu truc tiêp các chuc náng dác thù phân cung cua hê nhúng và không
dê dàng so sánh duoc giua chúng voi nhau.

2.2. Các kiên trúc hê diêu hành
Hai thành phân chính trong thiêt kê hê diêu hành là: phân hat nhân
(kernel) và các chuong trình hê thông.
Hat nhân chính là phân lõi cua hê diêu hành. Nó duoc su dung dê phuc vu
cho các bô quan lý quá trình, bô lâp lich bô quan lý tài nguyên và bô quan lý vào
ra. Phân hat nhân dam nhiêm chuc náng lâp lich, dông bô và bao vê hê
thông boi viêc su dung sai, xu lý ngát…Chuc náng diêu khiên chính cua nó là phuc
vu diêu khiên phân cung bao gôm ngát, các thanh ghi diêu khiên, các tu trang thái
và các bô dinh thoi gian. Nó nap các phân mêm diêu khiên thiêt bi dê cung câp các
tiên ích chung và phôi hop voi các hoat dông vào ra voi hê thông. Phân hat nhân có
vai trò diêu khiên rât quan trong dê dam bao tât ca các phân cua hê thông có thê làm
viêc ôn dinh và thông nhât.

Hai kiên trúc thiêt kê phân hat nhân kinh diên nhât là kiên trúc vi hat nhân và
don hat nhân (monolithic).

Vi hçt nhân :
Các vi hat nhân cung câp các chuc náng diêu hành co ban côt lõi (thô) theo
co chê các module tuong dôi dôc lâp dam nhiêm các tác vu cu thê và chuyên roi rât
nhiêu các dich vu diên hình diêu hành hê thông thuc thi trong không gian
nguoi su dung. Nho co chê này mà các dich vu có thê duoc khoi tao hoác câu hình
lai mà không nhât thiêt phai khoi tao lai toàn bô hê thông. Kiên trúc vi hat nhân
cung câp dô an toàn cao boi vì dich vu hê thông chay o tâng nguoi su dung voi han
chê vê truy nhâp vào tài nguyên cua hê thông và có thê duoc giám sát. Kiên trúc vi
hat nhân có thê duoc xây dung môt cách mêm deo dê phù hop voi câu hình phân
cung khác nhau môt cách llinh hoat hon so voi kiêu kiên trúc hat nhân monilithic.
Tuy nhiên do tính dôc lâp tuong dôi giua các modul trong vi hat nhân nên cân thiêt
phai có môt co chê trao dôi thông tin hay truyên thông giua các modul dó vì vây có
thê là lý do làm châm tôc dô và giam tính hiêu qua hoat dông cua hê thông. Dác
diêm nôi bât và côt lõi cua kiên trúc vi hat nhân là kích thuoc nho và dê dàng sua
dôi cung nhu xây dung linh hoat hon. Các dich vu thuc thi o tâng trên cua hat nhân
vì vây dat duoc dô an toàn cao. Kiên trúc vi hat nhân duoc phát triên manh më
trong các hê thông da xu lý ví du nhu Windows 2000, Mach và QNX.
Hç thòi gian thµc
18
Don hçt nhân:
Kiêu kiên trúc monolithic cung câp tât ca chuc náng/dich vu chính yêu thông
qua môt qua trình xu lý don le. Chính vì vây kích thuoc cua chúng thuong lon hon
kiêu kiên trúc vi hat nhân. Loai hình kiên trúc này thuong duoc áp dung chu yêu
cho các phân cung cu thê mà hat nhân monolithic có su tuong tác truc tiêp voi phân
cung nho vây mà kha náng tôi uu cung dê dàng hon so voi áp dung kiêu kiên trúc vi
hat nhân. Chính vì vây cung là lý do tai sao kiên trúc monolithic không thê thay dôi
mêm deo linh hoat nhu kiêu vi hat nhân. Ví du diên hình vê loai hình kiên trúc
hat nhân monolithic bao gôm Linux, MacOS, và DOS.

Vì hê diêu hành cung dòi hoi vê tài nguyên và kiêm ca chuc náng quan lý
chúng vì vây nguoi thiêt kê cân phai nám duoc thông tin vê chúng môt cách dây du.
2.3. Hçt nhân hç diêu hành thòi gian thµc
Hê thông diêu hành voi phân lõi là hat nhân phai dam nhiêm các tác vu chính
nhu sau:
Xu lý ngát
Luu tru ngu canh chuong trình tai thoi diêm xuât hiên ngát
Nhân dang và lua chon dúng bô xu lý và phuc vu dich vu ngát
Diêu khiên quá trình
Tao và kêt thúc quá trình/tác vu
Lâp lich và diêu phôi hoat dông hê thông
Dinh thoi
Diêu khiên ngoai vi
Xu lý ngát
Khoi tao giao tiêp vào ra

Tùy theo co chê thuc hiên và xây dung hoat dông cua hat nhân nguoi ta phân
loai môt sô loai hình

(1)Hê thong thoi gian thuc nho:
Hç thòi gian thµc
19
Voi loai này các phân mêm duoc phát triên mà không cân có hê diêu hành, nguoi
lâp trình phai tu quan lý và xu lý các vân dê vê diêu khiên hê thông bao gôm:
Xu lý ngát
Diêu khiên quá trình/ tác vu
Quan lý bô nho
(2) Công nghê da nhiêm
Môi quá trình có môt không gian bô nho riêng
Các quá trình phai duoc chia nho thành các Thread cùng chia se không gian
bô nho.
(3) Các dich vu cung cap boi hat nhân
Tao và kêt thúc quá trình/ tác vu
Truyên thông giua các quá trình
Các dich vu vê dinh thoi gian
Môt sô các dich vu cung câp hô tro viêc thuc thi liên quan dên diêu khiên hê
hông

Hat nhân diên hình co ban
Loai hat nhân don gian nhât là môt vòng láp vô han thám dò các su kiên xuât
hiên trong hê thông và phan ung lai theo su thay dôi nêu có.
Voi môt bô xu lý câu hình nho nhât, không phai lúc nào nó cung có thê luu
cât ngu canh vì không thê thay dôi con tro ngán xêp hoác vùng ngán xêp rât
han chê.
Thay vì su dung các thanh ghi thiêt bi, vòng láp thám dò có thê giám sát các
biên mà chiu su thay dôi câp nhât boi các bô xu lý ngát.
Hat nhân có thê duoc xây dung sao cho tât ca các tín hiêu logic duoc diêu
khiên boi vòng láp và nhip duoc diêu khiên boi các ngát.
Các tác vu lon cân nhiêu thoi gian thuc hiên có thê duoc chia nho thành các
tác vu nho và duoc thuc hiên tai các thoi diêm khác nhau nho vào co chê
chuyên và su dung bô dêm.

Các hat nhân thuc thi theo co chê ngát rât giông voi loai hat nhân
thuc hiên theo co chê vòng láp thám dò. Nó xu lý tât ca các tác vu thông qua
các dich vu ngát.
Các hat nhân lon và phuc tap hon së bao gôm môt sô các dich vu phu phuc
vu cho viêc truyên thông giua các quá trình. Và nêu duoc bô sung dây du nó
së tro thành môt hê diêu hành dây du.
Các kiêu loai hat nhân co ban
Hat nhân thuc hiên vòng láp thám dò
Hat nhân thuc hiên theo co chê ngát
Hat nhân quá trình vân hành quá trình

Hç thòi gian thµc
20
Viêc lua chon loai hat nhân nào hoàn toàn tùy thuôc vào các bô xu
lý và kích thuoc phân mêm, tuy nhiên riêng loai hat nhân vân hành theo quá trình
không phù hop voi các bô xu lý nho.
Hçt nhân quá trình
Các hat nhân quá trình rõ ràng là phuc tap hon các hat nhân thuc hiên theo
co chê thám dò và diêu khiên ngát. Các duong truyên tín hiêu logic bên trong các
quá trình và các dich vu ngát duoc tích hop và thuc hiên thông qua viêc truyên du
liêu.

Hat nhân së phai dam nhiêm chuc náng lâp lich cho các quá trình theo dúng mô
hình trang thái.
RUN: quá trình duoc thuc hiên
WAIT: các quá trình cho môt su kiên hoác tín hiêu vào ra kích hoat quá trình
READY: các quá trình s•n sàng duoc thuc hiên
Các phân tu thuôc tính cua môt quá trình: Các phân tu này cân thiêt dê phuc vu cho
viêc lâp lich. Ví du dôi voi co chê lâp lich theo muc dô uu tiên së yêu câu thông tin
sau voi môi quá trình:
• Tên (dia chi bô nho cua phân tu quá trình)
• Trang thái: RUN, WAIT, READY
• Muc dô uu tiên
• Ngu canh (dùng con tro dê quan lý luu cât thông tin trong ngán xêp)

3. Các d|ch vµ co ban
3.1. Tác vu và các trang thái tác vu
Xây dung các khôi co ban cua phân mêm duoi RTOS là tác vu - Task. Viêc
tao ra các tác vu duoi RTOS là rât don gian. Môt tác vu don gian chi là môt thu tuc
con. Tai môt sô diêm trong chuong trình, chúng ta thuc hiên môt hoác nhiêu loi goi
toi môt hàm trong RTOS dê bát dâu các tác vu. Môi tác vu trong RTOS luôn luôn o
môt trong ba trang thái chính:
1. Running: Voi ý nghia bô xu lý dang thuc hiên tác vu. Voi môt bô xu lý thì
chúng ta chi chay môt tác vu tai môt thoi diêm nhât dinh.
2. Ready: Voi ý nghia môt sô tác vu khác s•n sàng chay nêu bô xu lý rôi.
3. Blocked: Voi ý nghia tác vu không s•n sàng chay kê ca khi bô xu lý trong
trang thái nghi - Idle. Tác vu o trong trang thái này vì chúng doi môt su kiên bên
ngoài tác dông dê kích hoat nó tro lai trang thái s•n sàng.
Hç thòi gian thµc
21

3.2. Bo lap lich
Môt phân cua RTOS duoc goi là bô lâp lich, luu vêt các trang thái cua môi
tác vu và quyêt dinh môt tác vu duy nhât së di vào trang thái Running. Không giông
nhu bô lâp lich trong Windows hay UNIX, bô lâp lich trong hâu hêt các RTOS là
khá don gian: Chúng nhìn vào muc uu tiên duoc gán toi môi tác vu và giua nhung
tác vu dang s•n sàng môt tác vu có muc uu tiên cao nhât së duoc thuc hiên. Bô lâp
lich së phuc vu tác vu nào có muc uu tiên cao hon trong khi các tác vu uu tiên thâp
hon së doi cho dên khi giai phóng bô xu lý khoi tác vu uu tiên cao hon. Bô lâp lich
giúp chúng ta biêt tác vu nào phai làm truoc khi chúng ta thiêt lâp thu tu uu tiên.
Dê bô lâp lich biêt duoc tác vu nào khoá và s•n sàng thì RTOS cung câp môt
tâp các hàm mà tác vu có thê goi dê bô lâp lich nhân biêt duoc các su kiên mà các
tác vu này dang doi tín hiêu dê su kiên xay ra dó.
Nêu tât ca tác vu dêu bi khoá, không thê cho duoc tín hiêu nào làm cho các
tác vu tro lai trang thái s•n sàng bên trong hay bên ngoài RTOS thì ta nói ráng hê
thông cua chúng ta bi hong, phân mêm chúng ta thiêt kê bi lôi. Nêu hai tác vu cùng
muc uu tiên s•n sàng, thì nó phu thuôc vào cách xu lý cua RTOS mà chúng ta su
dung. Ít nhât môt hê thông giai quyêt vân dê này là viêc không bao gio cho phép hai
tác vu có cùng muc uu tiên, môt sô khác su dung phân chia thoi gian (time-slice)
giua các tác vu dó, môt sô khác lai chay môt tác vu bât ky cho dên khi nó bi khoá.
Nêu môt tác vu dang chay, có môt tác vu khác uu tiên cao hon duoc kích
hoat thì RTOS së dung tác vu dang chay và së chay tác vu uu tiên cao hon kia. Tác
vu có muc uu tiên thâp hon së khoá.

3.3. Tác vu và dù liêu
Môi tác vu có môt ngu canh riêng, bao gôm giá tri thanh ghi, bô dêm chuong
trình và môt stack. Tât ca nhung du liêu khác duoc chia se giua các tác vu.
Khi chúng ta su dung biên chia se du liêu giua các tác vu, diêu dó rât dê dàng dê
chuyên du liêu tu tác vu này toi tác vu khác: hai tác vu cân phai truy nhâp toi cùng
biên. Tuy nhiên, vân dê chia se du liêu rât dê dân toi viêc không nhât quán trong
chuong trình và có thê gây sup dô hê thông cua chúng ta, vì vây cân có các biên
pháp trong RTOS dê giai quyêt vân dê này.

3.4. Ðèn báo và chia se dù liêu (Semaphore)

Semaphore có thê giai quyêt vân dê trong chia se du liêu. Khi dó chi có môt
tác vu có thê nám quyên su dung dèn báo tai môt thoi diêm. Các tác vu khác dù có
uu tiên cao hon vân phai cho dên khi giai phóng dèn báo vì vây mà dèn báo có thê
ngán chán viêc chia se du liêu dân dên lôi. Dèn báo có hai hàm liên quan là take và
release. Hàm take nám lây quyên su dung dèn báo tai thoi gian dó và hàm release là
hàm giai phóng dèn báo sau khi su dung xong.

Chúng ta có thê su dung dèn báo nhu tín hiêu dê giao tiêp giua các tác vu voi
nhau hoác giua hàm ngát và tác vu.
Tuy dèn báo không thê giai quyêt moi vân dê vê chia se du liêu nhung hê
thông cua chúng ta có thê làm viêc tôt hon, ít thoi gian hon khi chúng ta su dung
Hç thòi gian thµc
22
dèn báo. Vân dê o dây là dèn báo chi làm viêc tôt khi chúng ta su dung chúng dúng
dán. Nhung trong thuc tê thì chúng ta gáp phai môt sô vân dê nhu:
- Quên lây quyên su dung dèn báo truoc khi su dung.
- Quên giai phóng dèn báo khi su dung xong, diêu dó có thê gây ra treo chuong
trình cua chúng ta.
- Nám lây quyên su dung dèn báo lôi. Nêu chúng ta dang su dung nhiêu dèn
báo, thì viêc lây quyên su dung dèn báo còn phu thuôc vào các dèn báo khác, dôi
khi chúng ta quên nên gây ra lôi rât lon.
- Giu môt dèn báo trong thoi gian quá lâu. Vân dê này có thê vi pham thoi gian
dáp ung trong hê thông nhúng thoi gian thuc cua chúng ta.
Môt vân dê duoc goi là thu tu uu tiên dao nguoc (Priority Inversion), nêu tác
vu C có muc uu tiên thâp dang giu dèn báo và phai nhuong quyên su dung bô xu lý
cho tác vu B có quyên uu tiên trung bình. Và môt tác vu có quyên uu tiên cao là A
muôn su dung dèn báo mà C dang nám giu, nhung C không thê giai phóng cho dên
khi nó chiêm quyên su dung bô xu lý.
Môt sô RTOS giai quyêt vân dê này báng cách kê thua muc uu tiên, chúng
tam thoi nâng muc uu tiên tác vu C dê chay và giai phóng dèn báo cho tác vu A.

4. Các d|ch vµ mo rçng cua RTOS thuong mçi
4.1. Message Queues, Mailboxes và Piles

a. Hàng doi - Queue
Các tác vu phai có kha náng giao tiêp voi nhau dê kêt hop các hoat dông và
dê chia se du liêu. Hâu hêt RTOS kêt hop cua môt sô dich vu nhu: hàng các doi
thông diêp, các mailboxe, các pipe cho muc dích này. Tính náng xác dinh cua các
dich vu này phu thuôc vào RTOS, chúng ta phai doc huong dân mà RTOS dó dua
ra.
Hâu hêt RTOS yêu câu chúng ta phai khoi tao hàng doi truoc khi chúng ta su
dung chúng báng viêc goi hàm cung câp cho muc dích này. Môt sô hê thông cho
phép chúng ta câp phát bô nho mà RTOS së quan lý nhu môt hàng doi.
Hâu hêt các RTOS cho phép ta su dung nhiêu hàng doi nêu chúng ta muôn.
Chúng ta thêm môt sô thông sô dê dinh danh hàng doi và tu dó chúng ta có thê doc,
ghi vào hàng doi dó.
Nêu chúng ta cô ghi vào hàng doi khi nó dã dây, RTOS së tra lai môt thông
báo lôi dê chúng ta biêt hoat dông dó bi hong hoác là hoat dông dó phai bi khoá cho
dên khi có môt tác vu doc du liêu khoi hàng doi.
Rât nhiêu RTOS su dung môt hàm dê doc tu môt hàng doi nêu có du liêu
trong hàng doi và së tra ra môt lôi nêu hàng doi rông. Và hàm này së o trang thái
khoá (block) nêu hàng doi rông.
Sô byte du liêu mà RTOS ghi vào hàng doi trong môt loi goi có thê không
chính xác voi sô byte du liêu chúng ta muôn ghi. Rât nhiêu RTOS không mêm deo
vê vân dê này nhung có môt sô RTOS cho phép chúng ta ghi lên môt hàng doi trong
môt lân goi sô luong byte mang dên báng môt con tro hàm.

b. Mailbox
Hç thòi gian thµc
23
Nói chung, mailbox là giông hàng doi. Mác dinh RTOS có các hàm dê tao,
doc và ghi vào mailbox và có lë các hàm này së kiêm tra xem mailbox có chua duoc
hay không bât ky môt thông diêp nào. Khi mailbox không cân thiêt nua thì nó së
duoc hu‘ dê giai phóng bô nho. Trong các RTOS thì mailbox có nhung dác diêm
riêng:
+ Môt sô RTOS cho phép chính xác sô luong thông diêp trong môi mailbox, con
sô này chúng ta có thê chon khi tao mailbox, môt sô khác thì chi cho phép môt
thông diêp trong môt mailbox tai môt thoi diêm. Môt thông diêp duoc ghi toi
mailbox, mailbox së dây khi dó các thông diêp khác chi có thê ghi toi mailbox khi
thông diêp dâu duoc doc.
+ Trong môt sô RTOS, sô luong cua thông diêp trong môi mailbox là không bi gioi
han. Chi có môt gioi han là tông sô thông diêp trong tât ca các mailbox trong hê
thông.

+ Trong môt sô RTOS, chúng ta có thê uu tiên các thông diêp trong mailbox. Các
thông diêp uu tiên cao hon së duoc doc truoc các thông diêp có uu tiên thâp hon,
không phu thuôc vào thu tu chúng duoc ghi vào mailbox.

c. Pipe
Các pipe cung rât giông hàng doi. RTOS có thê tao chúng, ghi lên chúng,
doc tu chúng… Nhung trong môi RTOS chúng cung có nhung dác diêm riêng:
+ Môt sô RTOS cho phép chúng ta ghi thông diêp voi dô dài tuy ý lên trên pipe
(không giông nhu mailbox và queue dô dài thông diêp là cô dinh).
+ Pipe trong môt sô RTOS là toàn bô huong byte: Nêu task A ghi 11 byte toi pipe
và sau dó task B ghi 19 byte toi pipe, sau dó nêu task C doc 14 byte tu pipe, nó së
nhân duoc 11 byte cua task A dã ghi công voi 3 byte dâu tiên mà task B dã ghi.
+ Môt sô RTOS su dung hàm thu viên chuân C là fread và fwrite dê doc và ghi
toi pipe.

d. Su dung queue, mailbox, pipe
Mác dù queue, mailbox, pipe có thê làm vân dê chia se du liêu giua các tác
vu tro lên dê dàng hon nhung nó cung rât dê gây ra lôi trong hê thông cua chúng ta.
Dây là môt sô kinh nghiêm khi su dung chúng:
+ Hâu hêt RTOS không gioi han tác vu nào có thê doc, ghi vào queue, mailbox,
pipe vì vây chúng ta phai dam bao ráng các tác vu duoc su dung là chính xác tai
môi thoi diêm.
+ RTOS không dam bao ráng du liêu duoc ghi vào trong queue, mailbox, pipe së
dúng voi tác vu doc nó. Ví du môt tác vu ghi vào môt sô nguyên và tác vu khác doc
và coi nó môt con tro.
+ Chay ra ngoài không gian queue, mailbox hoác pipe së gây ra môt su phá hu‘
trong phân mêm nhúng.
+ Chuyên con tro tu môt tác vu này toi tác vu khác thông qua môt queue, mailbox
hoác pipe là cách dê tao ra chia se du liêu. Chúng ta tránh dùng hàm malloc và free.

4.2. Chuc nàng bo dinh thoi (Timer Functions)

Hç thòi gian thµc
24
Hâu hêt các RTOS dêu duy trì nhip dâp cua bô dinh thoi. Bô dinh thoi này
ngát môt cách dinh ky và duoc su dung cho các dich vu thoi gian cua RTOS.
Khoang thoi gian giua các ngát duoc goi là môt don vi thoi gian cua hê thông
(System Tick). Hâu hêt các RTOS thuong su dung dich vu thoi gian dê:
+ Môt tác vu có thê khoá chính ban thân nó sau môt sô don vi thoi gian xác dinh.
+ Môt tác vu së bi gioi han bao nhiêu don vi thoi gian cua hê thông khi nó doi môt
dèn báo, hàng doi...
+ Chuong trình cua chúng ta có thê diêu khiên RTOS goi môt hàm xác dinh sau
môt sô don vi thoi gian cua hê thông.

4.3. Các su kiên - Event
Môt dich vu khác cua RTOS dua ra là quan lý các su kiên bên trong hê
thông. Môi su kiên co ban là môt co boolean mà các tác vu có thê thiêt lâp, thiêt lâp
lai và có thê có các tác vu khác nhau cùng doi nó. Môt sô dác diêm cua su kiên
trong các RTOS là:
+ Nhiêu hon môt tác vu có thê cùng bi khoá doi cho môt su kiên, RTOS së giai
phóng tât ca chúng và thuc hiên chúng theo thu tu uu tiên khi su kiên xay ra.
+ RTOS mác dinh hình thành môt nhóm các su kiên và các tác vu doi cho bât ky
tâp con nào cua nhóm su kiên xay ra.
+ Các hê diêu hành thoi gian thuc khác nhau dua ra các cách khác nhau dê thiêt
lâp lai môt su kiên sau khi nó dã xay ra và các tác vu doi su kiên dó së duoc giai
phóng. Môt sô RTOS thiêt lâp lai các su kiên môt cách tu dông, môt sô khác dòi hoi
các tác vu phân mêm cua chúng ta phai tu làm.
Chúng ta su dung các queue, mailbox, pipe, semaphore, và các su kiên cho viêc
giao tiêp giua 2 tác vu hoác giua môt ngát và môt tác vu. Nhung chúng có môt sô
dác diêm riêng:
+ Semaphore là phuong thuc nhanh nhât và don gian nhât. Tuy nhiên, không nhiêu
thông tin có thê thông qua môt semaphore. Chi môt bit thông diêp duoc chuyên dê
thông báo semaphore duoc giai phóng.
+ Su kiên là ít phuc tap hon semaphore nhung lai tiêu tôn nhiêu thoi gian bô xu lý
hon semaphore. Su dung các su kiên thuân loi hon semaphore o chô: môt tác vu doi
môt hay nhiêu su kiên trong cùng thoi gian trong khi nó chi doi môt semaphore.
+ Hàng doi cho phép chúng ta gui môt sô luong lon thông tin tu tác vu này toi tác
vu khác. Cho dù tác vu chi doi trên môt hàng doi tai môt thoi diêm nhung su thât là
chúng cho phép chúng ta có thê gui du liêu thông qua môt hàng doi làm nó linh
hoat hon môt su kiên. Su bât loi là khi doc và ghi thông diêp së chiêm nhiêu thoi
gian bô xu lý và rât dê mác phai lôi trong chuong trình cua chúng ta. Mailboxe và
pipe có cùng dác diêm voi queue.

4.4. Các hàm ngát trong môi truong RTOS
Các hàm ngát trong hâu hêt các môi truong RTOS phai tuân theo hai quy tác,
diêu này không áp dung cho mã cua tác vu:
Quy tác 1: Môt hàm ngát không duoc goi bât ky hàm RTOS nào mà nhung
hàm dó có thê khoá loi goi. Boi vây thu tuc ngát không su dung dèn báo, không doc
tu các hàng doi hoác mailbox khi các hàng doi và mailbox rông, không doi các su
Hç thòi gian thµc
25
kiên... Nêu hàm ngát goi môt hàm RTOS và bi khoá, thì tác vu dang chay khi ngát
xay ra së mãi bi khoá, thâm chí tác vu này có quyên uu tiên cao nhât. Ngoài ra, hâu
hêt các hàm ngát phai chay dê hoàn thành viêc thiêt lâp lai phân cung dê s•n sàng
cho ngát tiêp theo.

Quy tác 2: Môt hàm ngát có thê không goi bât ky hàm RTOS nào nhung hàm
có thê gây ra cho RTOS chuyên toi chay các tác vu tru khi RTOS biêt dó là môt
hàm ngát và không là môt tác vu trong lúc dang thuc hiên hàm ngát. Nêu thu tuc
ngát phá võ quy tác này thì RTOS có thê chuyên viêc diêu khiên tu hàm ngát toi
chay môt tác vu khác, và hàm ngát có thê không hoàn thành sau môt thoi gian dài,
vì vây khoá tât ca các ngát có muc uu tiên thâp hon và có thê là tât ca các ngát khác.

5. Giói thiçu mçt sô hç diêu hành thòi gian thµc
5.1. RTX51-Real Time Operating System
RTX51 là môt hê diêu hành thoi gian thuc da tác vu cho ho vi diêu khiên
8051. RTX51 là môt hê thông don gian duoc thiêt kê cho các phân mêm có dô phuc
tap và có gioi han chính xác vê thoi gian dáp ung. RTX51 có các công cu rât manh
dê quan lý các tác vu. Có hai phiên ban cua RTX51:

RTX51 Full cho phép thuc hiên ca chuyên mach xoay vòng và chuyên tác vu
voi 4 muc uu tiên, có thê hoat dông cùng voi các hàm ngát môt cách song song.
RTX51 chuyên các tín hiêu, chuyên các thông diêp su dung môt hê thông mailbox
và các semaphore. Hàm os_wait cua RTX51 có thê doi cho các su kiên: ngát,
timeout, thông diêp tu tác vu hoác ngát, semaphore.

RTX51 Tiny là môt tâp con cua RTX51 Full. RTX51 Tiny dê dàng chay trên
môt chip không có bô nho du liêu ngoài. Tuy nhiên chuong trình su dung RTX51
Tiny có thê truy nhâp su dung bô nho ngoài. RTX51 Tiny cho phép chuyên mach
xoay vòng giua các tác vu, hô tro chuyên các thông diêp và có thê hoat dông cùng
voi các hàm ngát môt cách song song. Hàm os_wait cua RTX51 có thê doi cho các
su kiên: timeout, tín hiêu tu tác vu hoác ngát.

So sánh RTX Full và RTX Tiny
Mô ta RTX51 Full RTX51 Tiny
Sô tác vu 256, cuc dai 19 tác vu hoat
dông
16
RAM yêu câu 40..60 byte DATA
20..200 byte IDATA
cuc tiêu 650 byte XDATA
7 byte DATA
3*(Sô tác vu) IDATA
Mã yêu câu 6KB…8KB 900 byte
Phân cung dòi
hoi
Timer 0 hoác Timer 1 Timer 0
Dông hô hê 1000…40000 chu ky 1000…65535 chu ky
Hç thòi gian thµc
26
thông
Thoi gian trê
ngát
<50 chu ky <20 chu ky
Thoi chuyên tác
vu
70…100 chu ky (tác vu
nhanh)
180…700 chu ky (chuân)
phu thuôc vào viêc nap stack
100…700 chu ky phu
thuôc vào viêc nap stack
Hê thông
mailbox
8 mailboxes Không mailbox
Pool bô nho Lên toi 16 pool bô nho Không có giá tri
Semaphores 8*1 bit Không có giá tri
5.2. ARTX-Advanced Real Time Operating System

ARTX Kernel là môt hê diêu hành thoi gian thuc nó cho phép chúng ta tao
ung dung mà ung dung này có thê dông thoi thuc hiên nhiêu tác vu. Diêu này
thuong xuyên dòi hoi trong các ung dung nhúng thoi gian thuc.
ARTX Kernel su dung lâp lich linh dông các nguôn du liêu cua hê thông nhu
CPU và bô nho dê dua ra môt sô cách giao tiêp giua các tác vu. ARTX Kernel là
môt RTOS tôt, dê dàng dê su dung và làm viêc cùng voi tât ca các vi diêu khiên ho
ARM.
Hê diêu hành ARTX duoc viêt báng viêc su dung các hàm chuân và bô biên
dich C cùng voi bô biên dich Keil™ CARM. Thêm vào dó, ngôn ngu C cho phép
chúng ta khai báo các tác vu dê dàng mà không cân su dung các stack phuc tap và
su da dang trong câu hình.

So sánh ARTX và RTX
Mô ta ARARM Kernel RTX166 Tiny
Sô tác vu Tôi da 256. Tôi da 32.
Sô mailboxe Không gioi han Không hô tro
Sô semaphore Không gioi han Không hô tro
Sô tín hiêu 16 su kiên trên môt tác
vu
Tôi da 32
Sô bô dinh thoi Không gioi han Không hô tro
Yêu câu vê RAM Tôi thiêu 500 Byte 8 + 4 * Sô byte cua các tác
vu
Yêu câu vê mã Ít hon 4 KByte Ít hon 1.5 KByte
Yêu câu phân cung Môt bô dinh thoi trên
chip
Môt bô dinh thoi trên chip
Các muc uu tiên tác vu 1 - 255 Không hô tro
Thoi gian chuyên ngu It hon 25Œsec 40 - 100 Œsec
Hç thòi gian thµc
27
canh @20MHz, 0 ws.
Thoi gian giai phóng
ngát
0.2 Œsec Ít hon 4 Œsec, 0 waitstates
5.3. µC/OS
ŒC/OS là nhân môt hê diêu hành thoi gian thuc do J. Labrosse xây dung. Nó
là nhân hê diêu hành thoi gian thuc có tính kha chuyên cao, mêm deo, có tính náng
uu tiên, thoi gian thuc và da tác vu. ŒC/OS hô tro các tính náng sau:
+ Bô lâp lich
+ Truyên thông diêp
+ Dông bô và chia se du liêu giua các tác vu
+ Quan lý bô nho
+ Các thiêt bi vào ra
+ Hê thông file
+ Mang
ŒC/OS hô tro nhiêu bô vi xu lý và rât gon nh• dê su dung cho nhiêu hê thông
nhúng. Phiên ban ŒC/OS-II táng cuong thêm kha náng dát tên toi môi dôi tuong cua
nhân. Dác biêt voi phiên ban V2.6, chúng ta có thê gán tên toi môt tác vu, dèn báo,
mailbox, hàng doi, môt nhóm su kiên hay môt vùng bô nho. Do dó, bô phât hiên lôi
có thê hiên thi tên cua nhung dôi tuong dó, và cho phép chúng ta nhanh chóng xem
thông tin vê nhung dôi tuong. Ngoài ra, V2.6 cho phép bô sua lôi doc thông tin câu
hình cua môt ung dung và hiêu thi nhung thông tin dó.

5.4. QNX Neutrino
QNX Neutrino là chuân muc cho các ung dung nhúng thoi gian thuc. Nó có
thê co giãn toi môt kích thuoc rât nho và cung câp nhiêu tác vu hoat dông dông
thoi, các tiên trình, diêu khiên lâp lich thu tu uu tiên và chuyên ngu canh nhanh…
tât ca các thành phân co ban cua môt ung dung nhúng thoi gian thuc. Hon nua, nhà
cung câp OS tuong thích voi chuân thoi gian thuc POSIX-standard API.

QNX Neutrino là rât mêm deo. Nguoi phát triên có thê dê dàng tuy biên OS
cho phù hop voi ung dung cua mình. Tu môt câu hình co ban nhât cua môt nhân
nho (microkernel) cùng voi môt vài module nho toi môt hê thông duoc trang bi phát
triên mang diên rông dê phuc vu hàng trám nguoi dùng.

QNX Neutrino dat duoc muc dô chuyên môn hoá vê tính hiêu qua, tính
module hoá và tính don gian voi hai yêu tô co ban sau:
+ Kiên trúc microkernel
+ Giao tiêp liên quá trình dua trên thông diêp
a. Kiên trúc microkernel
Tai tâng thâp nhât, microkernel chua dung môt vài dôi tuong co ban và các hàm dê
thao tác voi chúng. OS là duoc xây dung tu các dôi tuong co ban này.
Môt sô nhà phát triên cho ráng microkernel nên duoc thuc thi hoàn toàn o trong mã
assembly cho lý do kích thuoc và hiêu náng. Nhung, viêc thuc thi cua QNX dua chu
yêu vào mã C. Các muc tiêu kích thuoc và hiêu náng dat duoc thông qua viêc tinh
Hç thòi gian thµc
28
loc các thuât toán và câu trúc du liêu hon là viêc tôi uu thông qua muc viêt mã báng
assembly.
QNX Neutrino microkernel có nhân hô tro các dich vu sau:
1. Các tiên trình
2. Truyên thông diêp
3. Các tín hiêu
4. Các dông hô
5. Các bô dinh thoi
6. Diêu khiên các ngát
7. Các dèn báo
8. Các khoá loai tru lân nhau (mutexes)
Vòng doi cua tiên trình
Sô luong các tiên trình trong môt xu lý có thê rât da dang, cùng voi các tiên
trình là duoc tao và duoc hu‘ môt cách tu dông. Viêc tao tiên trình
(pthread_create()) liên quan toi viêc câp phát và khoi tao nguôn du liêu cân thiêt
bên trong không gian dia chi cua xu lý (ví du: thread stack) và viêc bát dâu thuc
hiên cua tiên trình tai môt sô hàm trong không gian dia chi.
Châm dut tiên trình (pthread_exit(), pthread_cancel()) liên quan toi viêc dung tiên
trình và phuc hôi lai nguôn du liêu cua tiên trình. Khi môt tiên trình thuc hiên, trang
thái cua nó nói chung có thê duoc mô ta nhu là o môt trong hai trang thái "ready"
hoác "blocked."
- CONDVAR: Tiên trình bi khoá trên môt biên diêu kiên (ví du: nó duoc goi boi
hàm pthread_condvar_wait()).
- DEAD: Tiên trình dã châm dut và dang doi duoc ghép cùng môt tiên trình khác.
- INTERRUPT: Tiên trình bi khoá và doi cho môt ngát (ví du: nó duoc goi boi
hàm InterruptWait()).
- JOIN: Tiên trình bi khoá doi dê ghép voi môt tiên trình khác (ví du: nó duoc goi
boi hàm pthread_join()).
- MUTEX: Tiên trình bi khoá trên môt khoá loai tru lân nhau (ví du: nó duoc goi
boi hàm pthread_mutex_lock()).
- NANOSLEEP: Tiên trình dang ngu cho môt khoang thoi gian ngán (ví du: nó
duoc goi boi hàm nanosleep()).
- NET_REPLY: Tiên trình dang doi cho su dáp lai toi viêc phân phát qua mang
(ví du: nó duoc goi boi hàm MsgReply*()).
- NET_SEND: Tiên trình dang doi cho môt xung hoác tín hiêu toi viêc phân phát
qua mang (ví du: nó duoc goi boi hàm MsgSendPulse(), MsgDeliverEvent(), hoác
SignalKill()).
- READY: Tiên trình dang doi cho duoc thuc hiên trong khi bô xu lý thuc hiên
môt tiên trình khác có muc uu tiên cao hon hoác báng tiên trình dó.
- RECEIVE: Tiên trình bi khoá doi nhân duoc môt thông diêp (ví du: nó duoc goi
boi hàm MsgReceive()).
- REPLY: Tiên trình bi khoá doi môt thông diêp dáp lai (ví du: nó duoc goi boi
hàm MsgSend() và server dã nhân duoc thông diêp dó).
- RUNNING: Tiên trình dang duoc thuc hiên boi bô xu lý.
- SEM: Tiên trình dang doi cho môt dèn báo giai phóng (ví du: nó duoc goi boi
hàm SyncSemWait()).
Hç thòi gian thµc
29
- SEND: Tiên trình là bi khoá cho thông diêp gui (ví du: nó duoc goi boi hàm
MsgSend() nhung server chua nhân duoc thông diêp).
- SIGSUSPEND: Tiên trình bi khoá doi cho môt tín hiêu (ví du: nó duoc goi boi
hàm sigsuspend()).
- SIGWAITINFO: Tiên trình bi khoá doi cho môt tín hiêu (ví du: nó duoc goi
boi hàm sigwaitinfo()).
- STACK: Tiên trình dang doi cho môt không gian dia chi ao duoc câp phát cho
stack cua tiên trình dó.
- STOPPED: Tiên trình bi khoá doi cho tín hiêu SIGCONT.
- WAITCTX: Tiên trình dang doi cho không phai môt sô nguyên (ví du: dâu
phây dông) dê tro thành có giá tri cho viêc su dung.
- WAITPAGE: Tiên trình dang doi cho môt không gian bô nho ao duoc câp
phát.
- WAITTHREAD: Tiên trình dang doi cho môt tiên trình con kêt thúc duoc tao
boi chính nó (ví du: nó duoc goi boi hàm ThreadCreate()).

b. Giao tiêp liên quá trình dua trên viêc truyên thông diêp
QNX là hê diêu hành thuong mai dâu tiên su dung truyên thông diêp liên quá
trình. Trong QNX Neutrino, môt thông diêp là môt gói các byte duoc truyên di tu
tiên trình này dên tiên trình khác.
QNX cung câp chuc náng dông bô dê truyên thông diêp tu môt tiên trình toi tiên
trình khác. Tiên trình phai thay dôi trang thái cua nó khi truyên, nhân và dáp lai
thông diêp. Biêt duoc trang thái cua chúng và thu tu uu tiên cua chúng, microkerel
có thê lâp lich tât ca các thông diêp.
Các thuât toán lâp lich: QNX Neutrino cung câp các thuât toán lâp lich sau:
* Vào truoc ra truoc (FIFO)
* Xoay vòng (round-robin)
* Lâp lich roi rac (sporadic)

Hç thòi gian thµc
30
CHUONG 3 : KY THAT LAP TRÌNH THÒI GIAN THJC
Mµc dích : Chuong này giói thiçu các kÿ thuçt xu lý co ban trong hç thòi gian
thµc, d}c biçt tçp trung vào kÿ thuçt lçp l|ch và kÿ thuçt xu lý ngàt trong các
hç thòi gian thµc
1 Tác vµ và quá trình (process)
Tác vu (task) ? Là môt công viêc cân thuc thi tham gia trong hê thông
Quá trình (process) là môt diên biên thuc thi môt tác vu cua hê thông.
Dôi khi nguoi ta vân dùng lân hai khái niêm này và không phân biêt.
Tác vu chu ky (period) và không chu ky (aperiod)

Các tác vu phai thuc hiên láp lai môt cách dêu dán theo nhung khoang thoi
gian p duoc goi là các tác vu có chu ky và p duoc goi là chu ky cua tác vu. Các loai
tác vu khác thì duoc goi là tác vu không chu ky.
2. Da nhiçm(Multitasking) và dông thòi (Concurrency)
Thuong thì các bô vi xu lý chi có thê thuc hiên môt tác vu duy nhât trong
mot thoi diêm nhung voi su chuyên dôi môt cách rât nhanh giua các tác vu cua môt
hê diêu hành da nhiêm làm cho chúng duong nhu duoc chay dông thoi voi nhau.
Diêu này duoc mô ta o so dô duoi dây voi 3 tác vu và gian dô thoi gian cua chúng.
Thuong thì các bô vi xu lý chi có thê thuc hiên môt tác vu duy nhât trong mot thoi
diêm nhung voi su chuyên dôi môt cách rât nhanh giua các tác vu cua môt hê diêu
hành da nhiêm làm cho chúng duong nhu duoc chay dông thoi voi nhau. Diêu này
duoc mô ta o so dô duoi dây voi 3 tác vu và gian dô thoi gian cua chúng.
2 Lçp l|ch (Scheduling)
Tai sao phai lâp lich?
Hç thòi gian thµc
31
Gian do lap lich thuc hiên 2 tác vu
Dê dam bao duoc co chê thuc thi chia se tài nguyên huu han và thoa mãn
yêu câu thoi gian thuc. Lâp lich phai nhám thoa mãn hay dat toi duoc su thoa hiêp
giua các ràng buôc vê tài nguyên, su phu thuôc lân nhau hay thoi gian thuc hiên.
2.1 Các khái niçm
Lâp lich là môt phép thuc hiên phân bô và gán quy trình thuc thi các tác vu
cho bô xu lý sao cho môi tác vu duoc thuc hiên hoàn toàn.
Lâp lich = tìm kiêm môt gian dô phân bô thoi gian thuc hiên da nhiêm hop lý
voi các diêu kiên ràng buôc cho truoc. Hay nói cách khác là bô lâp lich phai xu lý
dê quyêt dinh và diêu phôi quá trình/tác vu thuc hiên.
Có môt sô thông tin vê tác vu luôn phai quan tâm dôi voi bât ky bô lâp lich
thoi gian thuc nào, bao gôm:
• Thoi gian xuât hiên a
i
(arrival time): Khi su kiên xay ra và tác vu tuong ung duoc
kích hoat.
• Thoi diêm bát dâu thuc thi r
i
(release time): Thoi diêm som nhât khi viêc xu lý dã
s•n sàng và có thê bát dâu.
• Thoi diêm bát dâu thuc hiên s
i
(starting time): Là thoi diêm mà tai dó tác vu bát
dâu viêc thuc hiên cua mình.
• Thoi gian tính toán/thuc thi c
i
(Computation time): Là khoang thoi gian cân thiêt
dê bô xu lý thuc hiên xong nhiêm vu cua mình mà không bi ngát.
• Thoi diêm hoàn thành f
i
(finishing time): Là thoi diêm mà tai dó tác vu hoàn thành
viêc thuc hiên cua mình.
• Thoi gian rui ro/ xâu nhât w
i
(worst case time): khoang thoi gian thuc hiên lâu
nhât có thê xay ra
• Thoi diêm kêt thúc d
i
(due time): Thoi diêm mà tác vu phai hoàn thành.

Trên co so dó bô lâp lich së phai thuc hiên bài toán tôi uu vê:
- Thoi gian dáp ung (response time)
- Hiêu suât thuc hiên (sô luong công viêc thuc hiên xong trong môt don vi
thoigian)
- Su công báng và thoi gian cho doi (các tác vu không phai cho doi quá lâu)
Ví du vê môt lich thuc hiên 2 tác vu duoc mô ta nhu sau

Gian do thuc hiên cua mot tác vu Ti
Hç thòi gian thµc
32
Trong truong hop cua ví du này các thông sô vê thoi gian thuc hiên cua các
tác vu tính duoc nhu sau:
Thoi gian tính toán 1 C = 9 và 2 C = 12 .
Thoi gian bát dâu thuc hiên: 1 s = 0 , 2 s = 6 .
Thoi diêm hoàn thành: 1 f = 18 , 2 f = 28 .
Khoang thoi gian chênh lêch thoi diêm kêt thúc và deadline (Lateness) L=f ›d:
1 L = ›4, 2 L =1.
Khoang thoi gian rôi/du thua giua thoi gian cho phép thuc hiên và thoi gian cân
dê thuc hiên tác vu (Laxity) i i i i X =d ›a›C: 1 X = 13, 2 X =11.

2.2 Các phuong pháp lçp l|ch phô biên
Tuy thuôc vào loai hình tác vu, nguoi ta ra hai phuong pháp lâp lich là có
chu ky và không có chu ky.
Lçp l|ch non-preemptive: Phuong pháp này dam bao các tác vu duoc thuc hiên
hoàn thành môi khi thuc thi, vì vây thoi gian dáp ung cho các su kiên khác có thê
lâu.
Lçp l|ch preemptive: Phuong pháp này khác phuc nhuoc diêm cua lâp lich
nonpreemptive khi thoi gian thuc thi các tác vu lâu. Các tác vu së duoc thuc hiên và
có thê bi ngát giua chung dê phuc vu thuc thi các tác vu khác. Co chê lâp lich này
cho phép dam bao thoi gian dáp ung cho các su kiên và tác vu ngán và nhanh hon.
Lçp l|ch offline/tinh: Viêc lâp lich duoc thuc hiên dua trên các hiêu biêt hoác du
báo vê các su kiên tác vu thuc hiên trong hê thông (thoi diêm xuât hiên, thoi gian
thuc hiên,deadline…) và duoc quyêt dinh tai thoi diêm thiêt kê và duoc áp dung cô
dinh trong suôt quá trình hoat dông cua hê thông. Viêc lâp lich truoc có môt sô các
uu diêm sau:
• Tác vu tiêp theo có thê duoc lua chon thuc thi trong khoang thoi gian là háng sô
• Kha náng dáp ung yêu câu thoi gian thuc có thê duoc biêt truoc và duoc dam bao
Nhuoc diêm:
o Không thê thay dôi lich trình thuc hiên cua hê thông trong quá trình thuc hiên
o Dòi hoi phai có thông tin thoi gian chính xác vê các tác vu dê tính toán lâp lich
Hç thòi gian thµc
33
Môt thuât toán lâp lich tinh duoc goi là tôi uu nêu nó luôn luôn có thê tìm
duoc môt lich diêu phôi thoa mãn các ràng buôc dã cho trong khi môt thuât toán
tinh khác cung tìm duoc môt loi giai.

Lçp l|ch online/dçng: Bô xu lý thuc hiên viêc lâp lich trong quá trình thuc thi dua
trên co so các thông tin hoat dông hiên hành cua hê thông. So dô lâp lich là không
xác dinh truoc và thay dôi dông theo quá trình thuc hiên.
Các thuât toán lâp lich tinh tôi uu không phai là tôi uu trong hê thông dông.
Không tôn tai môt loi giai tôi uu cho viêc lâp lich trong hê thông nhiêu bô xu
lý nêu thoi diêm xuât hiên yêu câu thuc thi cua các tác vu không duoc biêt truoc.
Các hat nhân duoc diêu khiên theo co chê ngát thuong thuc thi co chê lâp
lich nonpreemtive dông trong khi loai hat nhân vân hành theo quá trình lai thuc thi
theo co chê preemptive dông.
Môt thuât toán lâp lich dông duoc goi là tôi uu nêu nó có thê tìm ra duoc môt
lich diêu phôi diêu khiên hê thông thoa mãn các ràng buôc thoi gian dã cho bât kê
khi nào mà thuât toán tinh không tìm ra duoc.

Lçp l|ch tçp trung ho}c phân tán: Viêc lâp lich duoc thuc hiên áp dung cho các
tác vu thuc thi boi môt (tâp trung) hoác nhiêu bô xu lý (phân tán).

Lçp l|ch Mono hay Multi-processor: Nhiêm vu lâp lich và thuc thi duoc dam
nhiêm boi môt (mono) hoác nhiêu bô vi xu lý (multi). Tuy thuôc vào dô phuc tap vê
thuât toán cân xu lý khi lâp lich mà nguoi ta quyêt dinh phai su dung phuong pháp
lâp lich mono hay multi-processor.
Tính kha lâp lich: Môt hê thông voi môt tâp các tác vu và các diêu kiên ràng
buôc duoc goi là kha lâp lich nêu tôn tai ít nhât môt co chê lich trình thuc hiên thoa
mãn các tác vu và diêu kiên ràng buôc dó.

Ví du vê lâp lich cho hê thông da nhiêm voi 2 tác vu. Tác vu 1 thuc hiên theo
chu ky và tác vu 2 thuc hiên không theo chu ky voi thoi gian thuc thi lon hon thoi
gian chu ky láp lai cua tác vu 1.

Hç thòi gian thµc
34
2.3 Kÿ thuçt lçp l|ch
FCFS
Trong co chê lâp lich dên truoc duoc phu vu truoc thì các quá tình duoc xu
lý theo thu tu mà nó xuât hiên yêu câu và cho dên khi hoàn thành. Co chê lâp lich
này thuôc loai không ngát duoc và có uu diêm là dê dàng thuc thi. Tuy nhiên, nó
không phù hop cho các hê thông mà hô tro nhiêu nguoi su dung vì có môt su biên
dôi lon vê thoi gian trung bình mà môt quá trình hay tác vu phai cho doi dê duoc xu
lý. Hon nua do viêc xu lý không ngát duoc nên có hiên tuong chiêm huu dôc quyên
bô xu lý trong thoi gian dài và có thê gây ra su trê bât thuong trong quá trình thuc
hiên cua các tác vu phai cho doi khác.

Shortest Job First -SJF
Trong co chê lâp lich này tác vu có thoi gian thuc thi ngán nhât së có quyên
uu tiên cao nhât và së duoc phuc vu truoc. Vân dê chính gáp phai trong co chê lâp
lich này là không biêt truoc duoc thoi gian thuc thi cua các tác vu tham gia trong
chuong trình và thông thuong phai áp dung co chê tiên doán và dánh giá dua vào
kinh nghiêm vê các tác vu thuc thi trong hê thông. Diêu này chác chán rât khó dê
luôn dam bao duoc dô chính xác. Co chê lâp lich này có thê áp dung cho ca loai
ngát duoc và không ngát duoc.

Rate monotonic (RM):
Phuong pháp lâp lich RM có lë hiên này là thuât toán duoc biêt toi nhiêu
nhât áp dung cho các tác vu hay quá trình dôc lâp. Phuong pháp này dua trên môt sô
gia thiêt sau:
(1) Tât ca các tác vu tham gia hê thông phai có deadline kiêu chu ky
(2) Tât ca các tác vu dôc lâp voi nhau
(3) Thoi gian thuc hiên cua các tác vu biêt truoc và không dôi
(4) Thoi gian chuyên dôi ngu canh thuc hiên là rât nho và có thê bo qua
Thuât toán RM duoc thuc thi theo nguyên lý gán muc uu tiên cho các tác vu
dua trên chu ky cua chúng. Tác vu nào có chu ky nho thì së có duoc gán muc uu
tiên cao. Theo nguyên lý này voi các tác vu chu ky không thay dôi thì RM së là
phuong pháp lâp lich cho phép ngát và muc uu tiên cô dinh. Tuy nhiên RM hô tro
yêu câu hê thông không tôt.

Earliest-deadline-first (EDF)
Nhu dúng tên goi cua phuong pháp, thuât toán lâp lich theo phuong pháp
này su dung deadline cua tác vu hay nhu diêu kiên uu tiên dê xu lý diêu phôi hoat
dông. Tác vu có deadline gân nhât së có muc uu tiên cao nhât và các tác vu có
deadline xa nhât së nhân muc uu tiên thâp nhât. œu diêm nôi bât cua phuong pháp
này là gioi han có thê lâp lich dáp ung duoc 100% cho tât ca các tâp tác vu. Hon
nua muc uu tiên gán cho môi tác vu trong quá trình hoat dông là dông vì vây chu ky
cua tác vu có thê thay dôi bât ky lúc nào theo thoi gian.

EDF có thê duoc áp dung cho các tâp tác vu chu ky và cung có thê mo rông
dê dáp ung cho các truong hop các deadline thay dôi khác nhau theo chu ky.
Hç thòi gian thµc
35
Vân dê chính cua thuât toán lâp lich EDF là không thê dam bao duoc tác vu
nào trong hê thông có thê không duoc thuc thi trong tình huông quá dô hê thông bi
quá tai. Trong nhiêu truong hop mác dù muc dô su dung trung bình nho hon 100%
nhung vân có thê trong môt tình huông nào dó vân vuot qua kha náng dáp ung cua
hê thông tuc là së có tác vu không duoc dam bao thuc thi dúng. Trong nhung
truong hop nhu vây cân phai diêu khiên dê biêt tác vu nào bi lôi không thuc hiên
thành công hoác tác vu nào duoc thuc hiên thành công trong quá trình quá dô.
Minimum Laxity first (MLF)
Co chê lâp lich này së uu tiên tác vu nào còn ít thoi gian còn lai dê thuc hiên
nhât truoc khi nó phai kêt thúc dê dam bao yêu câu thuc thi dúng. Dây duoc xem là
co chê lâp lich gán quyên uu tiên dông và dê dat duoc su tôi uu vê hiêu suât thuc
hiên và su công báng trong hê thông.

Round Robin
Dây là môt co chê lâp lich phân bô dêu dán, ngát duoc và don gian. Môi môt
tác vu duoc xu lý/phuc vu trong môt khoang thoi gian nhât dinh và láp lai theo môt
chu trình xuyên suôt toàn bô các tác vu tham gia trong hê thông. Khoang thoi gian
phuc vu cho môi tác vu trong quá trình là môt su thoa hiêp giua thoi gian thuc hiên
cua các tác vu và thoi gian thuc hiên môt chu trình. Có thê chon khoang thoi gian
dó rât nho và dôi lúc chúng ta không nhân duoc ra ráng dang có su phân bô thuc
hiên trong hê thông.
Tuy nhiên nêu thoi gian dó quá nho có thê làm mât tính hiêu qua thuc hiên
toàn hê thông vì cân nhiêu thoi gian trong viêc chuyên dôi ngu canh cho môi tác vu
sau môi chu trình thuc hiên.

3 Truyên thông và dông bç
3.1 Semaphore

Hç thòi gian thµc
36
Semaphores là môt câu trúc du liêu duoc dinh nghia dê loai tru kha náng
xung dôt trong quá trình chia se tài nguyên cua các tác vu trong hoat dông cua hê
thông.

Semaphores hô tro hai hoat dông chính nhu sau:
wait(semaphore): giam và khoá cho toi khi semaphore duoc mo
signal(semaphore): táng và cho phép thêm môt luông moi duoc tham gia
hoat dông.

Trong hoat dông phôi hop cùng voi semaphore có môt hàng doi gôm các tác vu cân
duoc thuc thi së có môt sô tình huông hoat dông co ban nhu sau:
Khi môt luông (thread) goi wait():
Nêu semaphore duoc mo thì luông dó së duoc gia nhâp và tiêp
tuc thuc thi
Nêu semaphore dang bi dóng thì nhánh dó së bi khoá và phai
nám cho trong hàng doi cho toi khi nào semaphore duoc mo
signal() së mo semaphore:
nêu môt luông dang nám trong hàng doi và không bi khoá
nêu không có luông nào trong hàng doi và tín hiêu signal së
duoc nho và dành cho luông tiêp theo

Các loçi Semaphore
Mutex semaphore
o Cho phép diêu khiên hoat dông truy nhâp don le vào tài nguyên chia
se cua hê thông
o Dam bao loai tru xung dôt trong hoat dông truy nhâp dông thoi cua
nhiêu tác vu, và chi có môt tác vu duoc thuc thi tai môi thoi diêm.
Counting semaphore
o Diêu khiên tài nguyên mà có thê phuc vu cùng môt lúc nhiêu tác vu
hoác môt nguôn tài nguyên cho phép phuc vu môt sô nhât dinh các tác
vu không dông bô và hoat dông dông thoi.
o Nhiêu luông có thê truyên Semaphore
o Sô luong luông duoc quyêt dinh boi biên dêm N cua Semaphore
Thuc chât mutex semaphore là môt dang dác biêt cua counting semaphore voi biên
dêm N=1.
Thuc thi Semaphore

Hç thòi gian thµc
37
Su dung Semaphore trong viêc dông bô hai quá trình tao và su dung hang muc
thông qua bô dêm trung gian.

Nhçn xét:
Semaphores có thê duoc su dung dê giai quyêt bât ky môt bài toán hay vân
dê dông bô truyên thông nào
Tuy nhiên chúng có môt sô nhuoc diêm
- Chúng chu yêu su dung các biên toàn cuc trong viêc diêu khiên hoat
dông dông bô nên có thê truy nhâp bât ky dâu trong hê thông khó
kiêm soát
- Không có su liên kêt chát chë giua semaphore và du liêu mà duoc nó
diêu khiên.
- Duoc su dung dông thoi cho ca viêc loai tru xung dôt (mutual
exclusion) và hoat dông dông bô cho các tác vu (scheduling)

3.2 Monitor
Monitor là môt ngôn ngu lâp trình duoc xây dung dê diêu khiên viêc truy
nhâp vào vùng du liêu chia se trong hoat dông cua hê thông. Mã chuong trình dông
bô duoc bô sung vào trong bô biên dich và thuc thi khi chay chuong trình.
Monitor là môt modul dóng gói
Các câu trúc du liêu duoc chia se
Các thu tuc hoat dông thao tác trên các câu trúc du liêu chia se
Dông bô các luông thuc thi dông thoi mà có thê kích hoat các thu tuc trong
hoat dông hê thông
Monitor có thê bao vê du liêu khoi su truy nhâp không có câu trúc. Nó dam bao
ráng các luông truy nhâp vào du liêu thông qua các thu tuc tuong tác theo nhung
cách hop pháp và có kiêm soát.

Monitor dam bao loai tru xung dôt
Chi có môt luông có thê thuc thi bât ky thu tuc nào tai môi môt thoi diêm
(luông trong monitor)
Nêu có môt luông dang thuc thi bên trong môt monitor nó së khoá các luông
khác muôn vào, do dó monitor cung phai có môt hàng doi.

Hç thòi gian thµc
38
Chu trình thuc hiên ngát
4 Xu lý ngàt
Tín hiêu diêu khiên bô VXL kích hoat boi môt su kiên tham gia trong quá
trình hoat dông cua hê thông làm hê thông ngung và chuyên huong thuc thi duoc
goi là tín hiêu ngát. Nó së ngát bô VXL khoi hoat dông mà nó dang thuc thi và
chuyên sang thuc hiên môt công viêc khác phuc vu cho su kiên kích hoat ngát
tuong ung. Ví du nhu trong quá trình thu thâp du liêu, VXL luôn phai cho doi thoi
diêm dón nhân du liêu và së kích hoat su kiên ngát CPU môi khi có du liêu xuât
hiên dê kip thoi ghi du liêu vào bô nho. Sau khi hoàn thành, CPU phuc hôi lai trang
thái cua hê thông và tro lai tiêp tuc thuc hiên chuong trình tu thoi diêm mà nó bi
ngát.
Dôi voi bô xu lý ngát, nó së phai thuc hiên hai nhiêm vu chính dó là:
(1) Xác dinh có su kiên ngát
(2) nhân dang su kiên ngát truoc khi tác vu phuc vu ngát tuong ung duoc kích hoat.
Hình 56 mô ta môt chu trình co ban thuc hiên ngát trong các hê VXL/VDK.

Thu tuc kích hoat môt tác vu phuc vu su kiên ngát duoc mô ta nhu trong
hình

Ví du vê phan cung xu lý ngát
Hç thòi gian thµc
39
Thông thuong nguoi ta hay quan tâm nhiêu dên dáp ung cua CPU voi su
kiên ngát và thoi gian thuc hiên tác vu ngát. O dây thoi gian dáp ung phu thuôc và
quyêt dinh boi tôc dô và kha náng xu lý cua phân cung còn thoi gian thuc hiên tác
vu ngát chu yêu quyêt dinh boi tác vu ngát dó dài hay ngán và do chuong trình
quyêt dinh.

Các nguôn ngát ngoài/cung có thê duoc nhân dang theo kiêu tín hiêu ngát
• Theo suon xung (ngát duoc kích hoat khi xuât hiên suon xung duong toi chân
nhân tín hiêu ngát)
• Theo muc (ngát duoc kích hoat khi xuât hiên môt tín hiêu xung muc tích cuc toi
chân nhân tín hiêu ngát)
Môt su kiên ngát cung có thê duoc kích hoat chi boi môt hoat dông doc hoác
viêt vào môt thanh ghi thiêt bi ngoai vi hoác các thanh ghi diêu khiên hoác trang
thái.
Su xung dôt tranh châp giua các nguôn ngát cùng xuât hiên tai môt thoi diêm
có thê duoc giai quyêt báng muc dô uu tiên hoác kêt nôi cung voi bô xu lý. Các
nguôn ngát ngoài có thê duoc tôi gian viêc xu lý báng su kêt hop voi phân mêm và
cùng chia se các duong tín hiêu ngát. Co chê thuc hiên ngát có su tranh châp và giai
quyêt báng muc dô uu tiên duoc mô ta nhu trong hình

Hç thòi gian thµc
40
CHUONG 4 : THIET KE UNG DJNG THÒI GIAN THJC
Mµc dích : Trình bày phuong pháp và kÿ thuçt xây dµng thiêt kê phân cúng
và lçp trình cho mçt hç thòi gian thµc vói vi diêu khiên MCS-51. Tçp trung
vào viçc xây dµng các kÿ nàng lçp trình su dµng Timer và lçp trình xu lý ngàt.
Chuong cüng dông thòi trình bày phuong pháp xây dµng hç thòi gian thµc vói
hç diêu hành don gian RTX51 Tiny

1. Bç d|nh thòi gian cua 8051

8051 có hai bô dinh thoi/ bô dêm là Timer 0 và Timer 1. Chúng có thê duoc
dùng nhu các bô dinh thoi dê tao môt bô trê thoi gian hoác nhu các bô dêm dê dêm
các su kiên xay ra bên ngoài bô vi diêu khiên.

2.1 Các thanh ghi co so cua bç d|nh thòi.
Ca hai bô dinh thoi Timer 0 và Timer 1 dêu có dô dài 16 bít duoc truy câp
nhu hai thanh ghi tách biêt byte thâp và byte cao. Chúng ta së bàn riêng vê tung
thanh ghi.

2.1.1 Các thanh ghi cua bç Timer 0.
Thanh ghi 16 bít cua bô Timer 0 duoc truy câp nhu byte thâp và byte cao.
Thanh ghi byte thâp duoc goi là TL0 (Timer 0 bow byte) và thanh ghi byte cao là
TH0 (Timer 0 High byte). Các thanh ghi này có thê duoc truy câp nhu moi thanh
ghi khác chžng han nhu A, B, R0, R1, R2 v.v... Ví du, lênh “MOV TL0, #4FH” là
chuyên giá tri 4FH vào TL0, byte thâp cua bô dinh thoi 0. Các thanh ghi này cung
có thê duoc doc nhu các thanh ghi khác. Ví du “MOV R5, TH0” là luu byte cao
TH0 cua Timer 0 vào R5.

2.1.2 Các thanh ghi cua bç Timer 1.
Bô dinh thoi gian Timer 1 cung dài 16 bít và thanh ghi 16 bít cua nó duoc
chia ra thành hai byte là TL1 và TH1. Các thanh ghi này duoc truy câp và doc giông
nhu các thanh ghi cua bô Timer 0 o trên.

2.1.3 Thanh ghi TMOD (chê dç cua bç d|nh thòi).
Ca hai bô dinh thoi Timer 0 và Timer 1 dêu dùng chung môt thanh ghi duoc
goi là IMOD dê thiêt lâp các chê dô làm viêc khác nhau cua bô dinh thoi. Thanh ghi
TMOD là thanh ghi 8 bít gôm có 4 bít thâp duoc thiêt lâp dành cho bô Timer 0 và 4
D15 D14 D13 D12 D11 D10 D9 D8
TH0
D7 D6 D5 D4 D3 D2 D1 D0
TL0
D15 D14 D13 D12 D11 D10 D9 D8
TH1
D7 D6 D5 D4 D3 D2 D1 D0
TL1
Hç thòi gian thµc
41
bít cao dành cho Timer 1. Trong dó hai bít thâp cua chúng dùng dê thiêt lâp chê dô
cua bô dinh thoi, còn 2 bít cao dùng dê xác dinh phép toán. Các phép toán này së
duoc bàn duoi dây.

a.Các bít M1, M0:
Là các bít chê dô cua các bô Timer 0 và Timer 1. Chúng chon chê dô cua các
bô dinh thoi: 0, 1, 2 và 3. Chê dô 0 là môt bô dinh thoi 13, chê dô 1 là môt bô dinh
thoi 16 bít và chê dô 2 là bô dinh thoi 8 bít. Chúng ta chi tâp chung vào các chê dô
thuong duoc su dung rông rãi nhât là chê dô 1 và 2. Chúng ta së som khám phá ra
các dác tính cu các chê dô này sau khi khám phân còn lai cua thanh ghi TMOD. Các
chê dô duoc thiêt lâp theo trang thái cua M1 và M0 nhu sau:

M1 M0 Chê dô Chê dô hoat dông
0 0 0 Bô dinh thoi 13 bít gôm 8 bít là bô dinh thoi/ bô dêm 5 bít
dát truoc
0 1 1 Bô dinh thoi 16 bít (không có dát truoc)
1 0 2 Bô dinh thoi 8 bít tu nap lai
1 1 3 Chê dô bô dinh thoi chia tách
b. C/ T (dong ho/ bo dinh thoi).
Bít này trong thanh ghi TMOD duoc dùng dê quyêt dinh xem bô dinh thoi
duoc dùng nhu môt máy tao dô trê hay bô dêm su kiên. Nêu bít C/T = 0 thì nó duoc
dùng nhu môt bô dinh thoi tao dô chê thoi gian. Nguôn dông hô cho chê dô trê thoi
gian là tân sô thach anh cua 8051. o phân này chi bàn vê lua chon này, công dung
cua bô dinh thoi nhu bô dêm su kiên thì së duoc bàn o phân kê tiêp.

Ví du 1: Hãy hiên thi xem chê dô nào và bô dinh thoi nào dôi voi các truong hop
sau:
a) MOV TMOD, #01H b) MOV TMOD, #20H c) MOV TMDO,
#12H
Loi giai: Chúng ta chuyên dôi giá tri tu sô Hex sang nhi phân và dôi chiêu hình 93
ta có:

TMOD = 0000 0001, chê dô 1 cua bô dinh thoi Timer 0 duoc chon.
TMOD = 0010 0000, chê dô 1 cua bô dinh thoi Timer 1 duoc chon.
TMOD = 0001 0010, chê dô 1 cua bô dinh thoi Timer 0 và chê dô 1 cua Timer 1
duoc chon.
c. Bít cong GATE.
Môt bít khác cua thanh ghi TMOD là bít công GATE. Dê ý trên hình 9.3 ta
thây ca hai bô dinh thoi Timer0 và Timer1 dêu có bít GATE. Vây bít GATE dùng
dê làm gì? Môi bô dinh thoi thuc hiên diêm khoi dông và dung. Môt sô bô dinh thoi
(MSB)
GATE C/T M1 M0
Timer1
GATE C/T M1 M0
Timer0
(MSB)
Hç thòi gian thµc
42
thuc hiên diêu này báng phân mêm, môt sô khác báng phân cung và môt sô khác
vua báng phân cung vua báng phân mêm. Các bô dinh thoi tren 8051 có ca hai.
Viêc khoi dông và dung bô dinh thoi duoc khoi dông báng phân mêm boi các bít
khoi dông bô dinh thoi TR là TR0 và TR1. Diêu này có duoc nho các lênh “SETB
TR1” và “CLR TR1” dôi voi bô Timer1 và “SETB TRO” và “CLR TR0” dôi voi bô
Timer0. Lênh SETB khoi dông bô dinh thoi và lênh CLR dùng dê dung nó. Các
lênh này khoi dông và dung các bô dinh thoi khi bít GATE = 0 trong thanh ghi
TMOD. Khoi dông và ngung bô dinh thoi báng phân cung tu nguôn ngoài báng
cách dát bít GATE = 1 trong thanh ghi TMOD. Tuy nhiên, dê tránh su lân lôn ngay
tu bây gio ta dát GATE = 0 có nghia là không cân khoi dông và dung các bô dinh
thoi báng phân cung tu bên ngoài. Dê su dung phân mêm dê khoi dông và dung các
bô dinh thoi phân mêm dê khoi dông và dung các bô dinh thoi khi GATE = 0.
Chúng ta chi cân các lênh “SETB TRx” và “CLR TRx”. Viêc su dung phân cung
ngoài dê khoi dông và dung bô dinh thoi ta së bàn o chuong 11 khi bàn vê các ngát.

Ví du 2:
Tìm giá tri cho TMOD nêu ta muôn lâp trình bô Timer0 o chê dô 2 su dung
thach anh XTAL 8051 làm nguôn dông hô và su dung các lênh dê khoi dông và
dung bô dinh thoi.
Loi giai:
TMOD = 0000 0010: Bô dinh thoi Timer0, chê dô 2 C/T = 0 dùng nguôn
XTAL GATE = 0 dê dùng phân mêm trong dê khoi dông và dung bô dinh thoi.
Nhu vây, bây gio chúng ta dã có hiêu biêt co ban vê vai trò cua thanh ghi
TMOD, chúng ta së xét chê dô cua bô dinh thoi và cách chúng duoc lâp trình nhu
thê nào dê tao ra môt dô trê thoi gian. Do chê dô 1 và chê dô 2 duoc su dung rông
rãi nên ta di xét chi tiêt tung chê dô môt.

2.1.4 Nguôn xung dông hô cho bç d|nh thòi:
Nhu chúng ta biêt, môi bô dinh thoi cân môt xung dông hô dê giu nhip. Vây
nguôn xung dông hô cho các bô dinh thoi trên 8051 lây o dâu? Nêu C/T = 0 thì tân
sô thach anh di liên voi 8051 duoc làm nguôn cho dông hô cua bô dinh thoi. Diêu
dó có nghia là dô lon cua tân sô thach anh di kèm voi 8051 quyêt dinh tôc dô nhip
cua các bô dinh thoi trên 8051. Tân sô cua bô dinh thoi luôn báng 1/12 tân sô cua
thach anh gán voi 8051.
Ví du 3:
Hãy tìm tân sô dông bô và chu ky cua bô dinh thoi cho các hê dua trên 8051
voi các tân sô thach anh sau:

a) 12MHz
b) 16MHz
c) 11,0592MHz

Loi giai:
a)
MHz 1 MHz 12
12
1
= ×

s 1
MHz 1 / 1
1
T µ = =
Hç thòi gian thµc
43
b)
Mz 111 , 1 MHz 16
12
1
= ×

s 75 , 0
MHz 333 , 1
1
T µ = =
c)
kHz 6 , 921 MHz 0592 , 11
12
1
= ×

s 085 , 1
MHz 9216 , 0
1
T µ = =
Mác dù các hê thông dua trên 8051 khác voi tân sô thach anh tu 10 dên
40MHz, song ta chi tâp chung vào tân sô thach anh 11,0592MHz. Lý do dáng sau
môt sô le nhu vây là hai làm viêc voi tân suât bouid dôi voi truyên thông nôi tiêp
cua 8051. Tân sô XTAL = 11,0592MHz cho phép hê 8051 truyên thông voi IBM
PC mà không có lôi, diêu mà ta së biêt o chuong 10.
1.2. Các chê dç cua bç d|nh thòi
1.2.1 Lçp trình cho chê dç Mode1.
Duoi dây là nhung dác tính và nhung phép toán cua chê dô Mode1:
Nó là bô dinh thoi 16 bít, do vây nó cho phép các giá tri 0000 dên FFFFH duoc nap
vào các thanh ghi TL và TH cua bô dinh thoi.
Sau khi TL và TH duoc nap môt giá tri khoi tao 16 bít thì bô dinh thoi phai duoc
khoi dông. Diêu này duoc thuc hiên boi “SETB TR0” dôi voi Timer 0 và “SETB
TR1” dôi voi Timer1.
Sau khi bô dinh thoi duoc khoi dông, nó bát dâu dêm lên. Nó dêm lên cho dên khi
dat duoc gioi han FFFFH cua nó. Khi nó quay qua tu FFFFH vê 0000 thì nó bât lên
bít co TF duoc goi là co bô dinh thoi. Co bô dinh thoi này có thê duoc hiên thi. Khi
co bô dinh thoi này duoc thiêt lâp tu môt trong các phuong án dê dung bô dinh thoi
báng các lênh “CLR TR0” dôi voi Timer0 hoác “CLR TR1” dôi voi Timer1. o dây
cung cân phai nhác lai là dôi voi bô dinh thoi dêu có co TF riêng cua mình: TF6 dôi
voi Timer0 và TF1 dôi voi Timer1.

Sau khi bô dinh thoi dat duoc gioi han cua nó và quay quan giá tri FFFFH, muôn
láp lai quá trình thì các thanh ghi TH và TL phai duoc nap lai voi giá tri ban dâu và
TF phai duoc duy trì vê 0.

1.2.2. Các buóc lçp trình o chê dç Mode 1.
Dê tao ra môt dô trê thoi gian dùng chê dô 1 cua bô dinh thoi thì cân phai
thuc hiên các buoc duoi dây.
Nap giá tri TMOD cho thanh ghi báo dô dinh thoi nào (Timer0 hay Timer1) duoc
su dung và chê dô nào duoc chon.
Nap các thanh ghi TL và TH voi các giáa tri dêm ban dâu.
Khoi dông bô dinh thoi.
XTAL
oscillator
÷12
TH TL TF
TF goes high
when FFFF 0
overflow
flag
TR
0 T / C =
Hç thòi gian thµc
44
Duy trì hiên thi co bô dinh thoi TF báng lênh “JNB TFx, dích” dê xem nó duoc bât
không. Thoát vòng láp khi TF duoc lên cao.
Dung bô dinh thoi.
Xoá co TF cho vòng kê tiêp.
Quay tro lai buoc 2 dê nap lai TL và TH.
Dê tính toàn thoi gian trê chính xác và tân sô sóng vuông duoc tao ra trên chân P1.5
thì ta cân biêt tân sô XTAL (xem ví du 9.5).
Tu ví du 9.6 ta có thê phát triên môt công thuc tính toán dô trê su dung chê dô
Mode1 (16 bít) cua bô dinh thoi dôi voi tân sô thach anh XTAL = 11, 0592MHz
(xem hình 9.4). Máy tính trong thu muc Accessrry cua Microsoft Windows có thê
giúp ta tìm các giá tri TH và TL. Máy tính này hô tro các phép tính theo sô thâp
phân, nhi phân và thâp luc.

a) Tính theo sô Hex b) Tính theo sô thâp phân
(FFFF - YYXX + 1). 1,085µs trong dó
YYXX là các giá tri khoi tao cua TH,
TL tuong ung. Luu ý ráng các giá tri
YYXX là theo sô Hex.
Chuyên dôi các giá tri YYXX cua TH,
TL vê sô thâp phân dê nhân môt sô thâp
phân NNNNN sau dó lây (65536 -
NNNNN).1,085µs.
Ví du 4:
Trong chuong trình duoi dây ta tao ra môt sóng vuông voi dô dây xung 50%
(cùng t‘ lê giua phân cao và phân thâp) trên chân P1.5. Bô dinh thoi Timer0 duoc
dùng dê tao dô trê thoi gian. Hãy phân tích chuong trình này.

MOV TMOD, #01 ; Su dung Timer0 và chê dô 1(16 bít)
HERE: MOV TL0, #0F2H ; TL0 = F2H, byte thâp
MOV TH0, #0FFH ; TH0 = FFH, byte cao
CPL P1.5 ; Su dung chân P1.5
ACALL DELAY
SJMP HERE ; Nap lai TH, TL
; delay using timer0.
DELAY:
SETB TR0 ; Khoi dông bô dinh thoi Timer0
AGAIN:
JNB TF0, AGAIN ; Hiên thi co bô dinh thoi cho dên khi nó
vuot qua FFFFH.
CLR TR0 ; Dung bô Timer
CLR TF0 ; Xoá co bô dinh thoi 0
RET

Loi giai:
Trong chuong trình trên dây chú ý các buoc sau:
TMOD duoc nap.
giá tri FFF2H duoc nap và TH0 - TL0
Chân P1.5 duoc chon dùng cho phân cao thâp cua xung.
Hç thòi gian thµc
45
Chuong trình con DELAY dùng bô dinh thoi duoc goi.
Trong chuong trình con DELAY bô dinh thoi Timer0 duoc khoi dông boi lênh
“SETB TR0”
Bô Timer0 dêm lên voi môi xung dông hô duoc câp boi máy phát thach anh.
Khi bô dinh thoi dêm táng qua các trang thái FFF3, FFF4 ... cho dên khi dat giá tri
FFFFH. Và môt xung nua là nó quay vê không và bât co bô dinh thoi TF0 = 1. Tai
thoi diêm này thì lênh JNB han xuông.
Bô Timer0 duoc dùng boi lênh “CLR TR0”. Chuong trình con DELAY kêt
thúc và quá trình duoc láp lai.
Luu ý ráng dê láp lai quá trình trên ta phai nap lai các thanh ghi TH và TL và
khoi dông lai bô dinh thoi voi gia thiêt tân sô XTAL = 11, 0592MHz.

Ví du 5:
Trong ví du 4 trên hãy tính toán luong thoi gian trê trong chuong trình con
DELAY duoc tao ra boi bô dinh thoi voi giá thiêt tân sô XTAL = 11,0592MHz.
Loi giai:
Bô dinh thoi làm viêc voi tân sô dông hô báng 1/12 tân sô XTAL, do vây ta

MHz 9216 , 0
12
0592 , 11
=
là tân sô cua bô dinh thoi. Kêt qua là môi nhip xung dông
hô có chu ky
s 085 , 1
MHz 9216 , 0
1
T µ = =
. Hay nói cách khác, bô Timer0 dêm táng sau
1,085µs dê tao ra bô trê báng sô dêm ×1,085µs.
Sô dêm báng FFFFH - FFF2H = ODH (13 theo sô thâp phân). Tuy nhiên, ta
phai công 1 vào 13 vì cân thêm môt nhip dông hô dê nó quay tu FFFFH vê 0 và bât
co TF. Do vây, ta có 14 × 1,085µs = 15,19µs cho nua chu ky và ca chu ky là T = 2
× 15,19µs = 30, 38µs là thoi gian trê duoc tao ra boi bô dinh thoi.

Ví du 6:
Trong ví du 5 trên hãy tính toán tân sô cua xung vuông duoc tao ra trên chân
P1.5.
Loi giai:
Trong tính toán dô thoi gian trê cua ví du 9.5 ta không tính dên tông phí cua
các lênh trong vòng láp. Dê tính toán chính xác hon ta cân bô xung thêm các chu ky
thoi gian cua các lênh trong vòng láp. Dê làm diêu dó ta su dung các chu ky máy tu
bang A-1 trong phu luc Appendix A duoc chi duoi dây.

HERE: MOV TL0, #0F2H 2
MOV TH0, #0FFH 2
CPL P1-5 1
ACALL DELAY 2
FFF2
TF = 0
FFF3
TF = 0
FFF4
TF = 0
0000
TF = 1
FFFF
TF = 0
Hç thòi gian thµc
46
SJMP HERE 2
; delay using timer0
DELAY:
SETB TR0 1
AGAIN: JNB TF0, AGAIN 1
CLR TR0 1
CLR TF0 1
RET 1
Total
27

T = (2 × 27 × 1.085µs and F = 17067.75Hz).
Tông sô chu ky dã bô xung là x7 nên chu ky thoi gian trê là T = 2 × 27 ×
1.085µs = 58,59µs và tân sô là F = 17067,75Hz.

Ví du 7:
Hãy tìm ra dô trê duoc tao ra boi Timer0 trong doan mã sau su dung ca hai
phuong pháp cua hình 9.4. Không tính các tông phí cua các lênh.

CLR P2.3 ; Xoá P2.3
MOV TMOD, #01 ; Chon Timer0, chê dô 1 (16 bít)
HERE: MOV TL0, #3EH ; TL0 = 3EH, byte thâp
MOV TH0, #0B8G ; TH0 = B8H, byte cao
SETB P2.3 ; Bât P2.3 lên cao
SETB TR0 ; Khoi dông Timer0
AGAIN: JNB TF0, AGAIN ; Hiên thi co bô dinh thoi TF0
CLR TR0 ; Dung bô dinh thoi.
CLR TF0 ; Xoá co bô dinh thoi cho vòng sau
CLR P2.3
Loi giai:
Dô trê duoc tao ra trong mã trên là:
(FFFF - B83E + 1) = 47C2H = 18370 hê thâp phân 18370 × 1,085µs = 19, 93145µs.
Vì TH - TL = B83EH = 47166 (sô thâp phân) ta có 65536 - 47166 = 18370.
Diêu này có nghia là bô dinh thoi gian dêm tu B83EH dên FFFF. Nó duoc công voi
môt sô dêm dê vê 0 thành môt bô tông là 18370µs. Do vây ta có 18370 × 1,085µs =
19,93145ms là dô rông xung.

Ví du 8:
Sua giá tri cua TH và TL trong ví du 9.7 dê nhân duoc dô trê thoi gian lon
nhât có thê. Hãy tính dô trê theo miligiây. Trong tính toán cân dua vào ca tông phí
cua các lênh.
Dê nhân dô trê thoi gian lon nhât có thê ta dát TH và TL báng 0. Diêu này
làm cho bô dinh thoi dêm tu 0000 dên FFFFH và sau dó quay qua vê 0.

CLR P2.3 ; Xoá P2.3
MOV TMOD, #01 ; Chon Timer0, chê dô 1 (16 bít)
HERE: MOV TL0, #0 ; Dát TL0 = 0, byte thâp
Hç thòi gian thµc
47
MOV TH0, #0 ; Dát TH0 = 0, byte cao
SETB P2.3 ; Bât P2.3 lên cao
SETB TR0 ; Khoi dông bô Timer0
AGAIN: JNB TF0, AGAIN ; Hiên thi co bô dinh thoi TF0
CLR TR0 ; Dung bô dinh thoi.
CLR TF0 ; Xoá co TF0
CLR P2.3
Thuc hiên biên TH và TL báng 0 nghia là bô dinh thoi dêm táng tu 0000 dên
FFFFH và sau dó quay qua vê 0 dê bât co bô dinh thoi TF. Kêt qua là nó di qua
65536 trang thái. Do vây, ta có dô trê = (65536 - 0) × 1.085µs = 71.1065µs.
Trong ví du 9.7 và 9.8 chúng ta dã không nap lai TH và TL vì nó là môt xung
don. Xét ví du 9.9 duoi dây dê xem viêc nap lai làm viêc nhu thê nào o chê dô 1.
Ví du 9.9:
Chuong trình duoi dây tao ra môt sóng vuông trên chân P2.5 liên tuc báng
viêc su dung bô Timer1 dê tao ra dô trê thoi gian. Hãy tìm tân sô cua sóng vuông
nêu tân sô XTAL = 11.0592MHz. Trong tính toán không dua vào tông phí cua các
lênh vòng láp:

MOV TMOD, #01H ; Chon Timer0, chê dô 1 (16 bít)
HERE: MOV TL1, #34H ; Dát byte thâp TL1 = 34H
MOV TH0, #76H ; Dát byte cao TH1 = 76H
; (giá tri bô dinh thoi là 7634H)
SETB TR1 ; Khoi dông bô Timer1
AGAIN: JNB TF1, BACK ; o lai cho dên khi bô dinh thoi dêm qua 0
CLR TR1 ; Dung bô dinh thoi.
CPL P1.5 ; Bù chân P1.5 dê nhân Hi, L0
CLR TF ; Xoá co bô dinh thoi
SJMP AGAIN ; Nap lai bô dinh thoi do chê dô 1 không
tu
dông nap lai .
Loi giai:
Trong chuong trình trên dây ta luu ý dên dích cua SJMP. o chê dô 1 chuong
trình phai nap lai thanh ghi. TH và TL môi lân nêu ta muôn có sóng dang liên tuc.
Duoi dây là kêt qua tính toán:
Vì FFFFH - 7634H = 89CBH + 1 = 89CCH và 90CCH = 35276 là sô lân
dêm xung dông hô, dô trê là 35276 × 1.085µs = 38274ms và tân sô là
. Hz 26127 ) Hz (
38274
1
=
Cung dê ý ráng phân cao và phân thâp cua xung sóng vuông là báng nhau.
Trong tính toán trên dây là chua kê dên tông phí các lênh vòng láp.

1.2.3 Tìm các giá tr| cân duçc nçp vào bç d|nh thòi.
gia su ráng chúng ta biêt luong thoi gian trê mà ta cân thì câu hoi dát ra là
làm thê nào dê tìm ra duoc các giá tri cân thiêt cho các thanh thi TH và TL. Dê tính
toán các giá tri cân duoc nap vào các thanh ghi TH và TL chúng ta hãy nhìn vào ví
du sau voi viêc su dung tân sô dao dông XTAL = 11. 0592MHz dôi voi hê 8051.
Hç thòi gian thµc
48
Tu ví du 9.10 ta có thê su dung nhung buoc sau dê tìm các giá tri cua các
thanh ghi TH và TL.
Chia thoi gian trê cân thiêt cho 1.0592µs
Thuc hiên 65536 - n voi n là giá tri thâp phân nhân duoc tu buoc 1.
Chuyên dôi kêt qua o buoc 2 sang sô Hex voi yyxx là giá tri .hex ban dâu cân phai
nap vào các thanh ghi bô dinh thoi.
Dát TL = xx và TH = yy.

Ví du 10:
gia su tân sô XTAL = 11.0592MHz. Hãy tìm các giá tri cân duoc nap vào
các thanh ghi vào các thanh ghi TH và TL nêu ta muôn dô thoi gian trê là 5µs. Hãy
trình bày chuong trình cho bô Timer0 dê tao ra bô xung voi dô rông 5µs trên chân
P2.3.
Loi giai:
Vì tân sô XTAL = 11.0592MHz nên bô dêm táng sau môi chu ky 1.085µs.
Diêu dó có nghia là phai mât rât nhiêu khoang thoi gian 1,085µs dê có duoc môt
xung 5µs. Dê có duoc ta chia 5ms cho 1.085µs và nhân duoc sô n = 4608 nhip. Dê
nhân duoc giá tri cân duoc nap vào TL và TH thì ta tiên hành lây 65536 tru di 4608
báng 60928. Ta dôi sô này ra sô hex thành EE00H. Do vây, giá tri nap vào TH là
EE Và TL là 00.

CLR P2.3 ; Xoá bít P2.3
MOV TMOD, #01 ; Chon Timer0, chê dô 1 (16 bít)
HERE: MOV TL0, #0 ; Nap TL = 00
MOV TH0, #EEH ; Nap TH = EEH
SETB P2.3 ; Bât P2.3 lên cao
SETB TR0 ; Khoi dông bô dinh thoi Timer0
AGAIN: JNB TF0, AGAIN ;Hiên thi co TF0 cho dên khi bô dêm quay
vê 0
CLR TR0 ; Dung bô dinh thoi.
CLR TF0 ; Xoá co TF0 cho vòng sau.

Ví du 11:
gia su ta có tân sô XTAL là 11,0592MHz hãy viêt chuong trình tao ra môt
sóng vuông tân sô 2kHz trên chân P2.5.
Dây là truong hop giông voi ví du 9.10 ngoài tru môt viêc là ta phai chon bít
dê tao ra sóng vuông. Xét các buoc sau:
a)
s 500
kHz 2
1
f
1
T µ = = =
là chu ky cua sóng vuông.
b) Khoang thoi gian cao và phân thâp là
T
2
1
báng 250µs.
Sô nhip cân trong thoi gian dó là
230
s 085 , 1
s 250
=
µ
µ
và giá tri cân nap vào các thanh ghi
cân tìm là 65536 - 230 = 65306 và o dang hex là FF1AH.
giá tri nap vào TL là 1AH và TH là FFH.
Hç thòi gian thµc
49
Chuong trình cân viêt là:

MOV TMOD, #10H ; Chon bô dinh thoi Timer0, chê dô
1 (16 bít)
AGAIN: MOV TL1, #1AH ; Gán giá tri byte thâp TL1 = 1AH
MOV TH1, #0FFH ; Gán giá tri byte cao TH1 = FFH
SETB TR1 ; Khoi dông Timer1
BACK: JNB TF1, BACK ;giu nguyên cho dên khi bô dinh thoi quay
vê 0
CLR TR1 ; Dung bô dinh thoi.
CPL P1.5 ; Bù bít P1.5 dê nhân giá tri cao, thâp.
CLR TF1 ; Xoá co TF1
SUMP AGAIN ; Nap lai bô dinh thoi vì chê dô 1 không tu
nap
lai.
Ví du 12:
Truoc hêt ta thuc hiên các buoc sau:
Tính chu ky sóng vuông:
s 20
Hz 50
1
T µ = =
Tính thoi gian nua chu ky cho phân cao:
s 10 T
2
1
µ =
Tính sô nhip dông hô:
9216
s 085 , 1
s 10
n =
µ
µ
=
Tính giá tri cân nap vào TH và TL: 65536 - 9216 = 56320 chuyên vê dang Hex là
DC00H và TH = DCH và TL = 00H.

MOV TMOD, #10H ; Chon bô dinh thoi Timer0, chê dô 1 (16
bít)
AGAIN:
MOV TL1, #00 ; Gán giá tri byte thâp TL1 = 00
MOV TH1, #0DHCH ; Gán giá tri byte cao TH1 = DC
SETB TR1 ; Khoi dông Timer1
BACK:
JNB TF1, BACK ; giu nguyên cho dên khi bô dinh thoi quay vê 0
CLR TR1 ; Dung bô dinh thoi.
CPL P2.3 ; Bù bít P1.5 dê nhân giá tri cao, thâp.
CLR TF1 ; Xoá co TF1
SUMP AGAIN ; Nap lai bô dinh thoi vì chê dô 1 không tu nap
lai.

9.1.4.3 Tao môt dô trê thoi gian lon.
Nhu ta dã biêt tu các ví du trên là luong thoi gian trê cân tao ra phu thuôc
vào hai yêu tô:
Tân sô thach anh XTAL
Thanh ghi 16 bít cua bô dinh thoi o chê dô 1
Hç thòi gian thµc
50
Ca hai yêu tô này nám ngoài kha náng diêu chinh cua lâp trình viên 8051. Ví nhu ta
dã biêt giá tri lon nhât cua dô trê thoi gian có thê dat duoc báng cách dát ca TH và
TL báng 0. Nhung diêu này xay ra khi nhu vây dêu không du? Ví du 9.13 duoi dây
cách làm thê nào dê có giá tri dô trê thoi gian lon.
9.1.4.4 Su dung bàn tính cua Windows dê tìm TH và TL.
Bàn tính Calculator cua Windows có ngay trong máy tính PC cua chúng ta
và rât dê su dung dê tìm ra các giá tri cho TH và TL. gia su tìm giá tri cho TH và
TL voi dô trê thoi gian lon là 35.000 nhip dông hô voi chu ky 1,085µs. Ta thuc hiên
các buoc nhu sau:
Chon máy tính Calculator tu Windows và dát chê dô tính vê sô thâp phân Decimal.
Nhâp sô 35.000 vào tu bàn phím.
Chuyên vê chê dô Hex trên Calculator nó cho ta giá tri 88B8H.
Chon +/- dê nhân sô dôi dâu - 35.000 dang thâp phân và chuyên vê dang Hex là
7748H.
Hai sô hex cuôi là cho TL = 48 và hai sô Hex tiêp theo là cho TH = 77. Ta bo quan
các sô F o phía bên phai trên Calculator vì sô cua ta là 16 bít.
Ví du 9.13:
Hãy kiêm tra chuong trình sau và tìm dô trê thoi gian theo giây, không tính
dên tông phí các lênh trong vòng láp.

MOV TMOD, #10H ; Chon bô Timer1, chê dô 1 (16 bít)
AGAIN: MOV R3, #200 ; Chon bô dêm dô giu châm lon
MOV TL1, #08 ; Nap byte thâp TL1 = 08
MOV TH1, #08 ; Nap byte cao TH1 = 01
SETB TR1 ; Khoi dông Timer1
BACK: JNB TF1, BACK ;giu nguyên cho dên khi bô dinh thoi quay
vê 0
CLR TR1 ; Dung bô dinh thoi.
CLR TF1 ; Xoá co bô dinh thoi TF1
DJNZ R3, AGAIN ; Nêu R3 không báng không thì nap lai bô
dinh
thoi.
1.2.4 Chê dç 0.
Chê dô 0 hoàn toàn giông chê dô 1 chi khác là bô dinh thoi 16 bít duoc thay
báng 13 bít. Bô dêm 13 bít có thê giu các giá tri giua 0000 dên 1FFFF trong TH -
TL. Do vây khi bô dinh thoi dat duoc giá tri cuc dai cua nó là 1FFFH thì nó së quay
tro vê 0000 và co TF duoc bât lên.

1.2.5 Lçp trình chê dç 2.
Các dác trung và các phép tính cua chê dô 2:
Nó là môt bô dinh thoi 8 bít, do vây nó chi cho phép các giá tri tu 00 dên FFH duoc
nap vào thanh ghi TH cua bô dinh thoi.
Sau khi TH duoc nap voi giá tri 8 bít thì 8051 lây môt ban sao cua nó dua vào TL.
Sau dó bô dinh thoi phai duoc khoi dông. Diêu này duoc thuc hiên boi lênh “SETB
TR0” dôi voi Timer0 và “SETB TR1” dôi voi Timer1 giông nhu o chê dô 1.
Hç thòi gian thµc
51
Sau khi bô dinh thoi duoc khoi dông, nó bát dâu dêm táng lên báng cách táng thanh
ghi TL. Nó dêm cho dên khi dai giá tri gioi han FFH cua nó. Khi nó quay tro vê 00
tu FFH, nó thiêt lâp co bô dinh thoi TF. Nêu ta su dung bô dinh thoi Timer0 thì dó
là co TF0, còn Timer1 thì dó là co TF1.

Khi thanh ghi TL quay tro vê 00 tu FFH thì TF duoc bât lên 1 thì thanh ghi
TL duoc tu dông nap lai voi giá tri ban dâu duoc giu boi thanh ghi TH. Dê láp lai
quá trình chúng ta don gian chi viêc xoá co TF và dê cho nó chay mà không cân su
can thiêp cua lâp trình viên dê nap lai gia tri ban dâu. Diêu này làm cho chê dô 2
duoc goi là chê dô tu nap lai so voi chê dô 1 thì ta phai nap lai các thanh ghi TH và
TL.
Cân phai nhân manh ráng, chê dô 2 là bô dinh thoi 8 bít. Tuy nhiên, nó lai có kha
náng tu nap khi tu nap lai thì TH thuc chât là không thay dôi voi giá tri ban dâu
duoc giu nguyên, còn TL duoc nap lai giá tri duoc sao tu TH. Chê dô này có nhiêu
ung dung bao gôm viêc thiêt lâp tân sô baud trong truyên thông nôi tiêp.

XTAL
oscillator
÷12
TL TF
TF goes high
when FFFF 0
reload
TR 0 T / C =

TF

H th i gian th c

4.2. Ch*c nJng b 1nh th i (Timer Functions) 4.3. Các s ki n - Event 4.4. Các hàm ngMt trong môi tr ng RTOS 5. GiEi thi u m;t s& h .i6u hành th i gian th c 5.1. RTX51-Real Time Operating System 5.2. ARTX-Advanced Real Time Operating System 5.3. TC/OS 5.4. QNX Neutrino a. Ki n trúc microkernel b. Giao ti p liên quá trình d&a trên vi c truy)n th*ng ,i p CH NG 3 : KT THUT LUP TRÌNH TH I GIAN TH!C

1 Tác vO và quá trình (process) 2. ,a nhi m (Multitasking) và .3ng th i (Concurrency) 2 L^p lNch (Scheduling) 2.1 Các khái ni m 2.2 Các phCDng pháp l^p lNch phI biKn 2.2.1.L^p lNch offline/tanh: 2.2.2.L^p lNch online/.;ng: 2.2.3.L^p lNch t^p trung ho-c phân tán: 2.2.4.L^p lNch Mono hay Multi-processor: 2.3 Kc thu^t l^p lNch 2.3.1.FCFS 2.3.2.Shortest Job First -SJF 2.3.3.Rate monotonic (RM): 2.3.4.Earliest-deadline-first (EDF) 2.3..5Minimum Laxity first (MLF) 2.3.6.Round Robin 3 Truy6n thông và .3ng b; 3.1 Semaphore 3.2.Các lo*i Semaphore 3.3 Monitor 3.4 X> lý ngjt CH NG 4 : THIkT Kk lNG D NG TH I GIAN TH!C 1. B; .Nnh th i gian c0a 8051 2.1 Các thanh ghi cD sQ c0a b; .Nnh th i. 2.1.1 Các thanh ghi c0a b; Timer 0. 2.1.2 Các thanh ghi c0a b; Timer 1. 2.1.3 Thanh ghi TMOD (chK .; c0a b; .Nnh th i). a.Các bít M1, M0: b. C/ T ( Xng hX/ b 1nh th i). c. Bít cYng GATE. 2.1.4 Ngu3n xung .3ng h3 cho b; .Nnh th i:

2

H th i gian th c

1.2. Các chK .; c0a b; .Nnh th i 1.2.1 L^p trình cho chK .; Mode1. 1.2.2. Các bCEc l^p trình Q chK .; Mode 1. 1.2.3 Tìm các giá trN cpn .Cqc n*p vào b; .Nnh th i. 1.2.4 ChK .; 0. 1.2.5 L^p trình chK .; 2. 2. L^p trình x> lý ngjt

3

H th i gian th c

GIrI THI U Giáo trình này nh2m cung c3p cho sinh viên các n5i dung ch6 y u sau ,ây T9ng quan v) h th*ng th:i gian th&c và ;ng d<ng Môi tr?:ng chung quanh c6a h th*ng máy tính th:i gian th&c Ki n trúc phân b* cho h th*ng th:i gian th&c Th:i gian toàn c<c; mô hình c6a h th*ng th:i gian th&c i l?Bng th:i gian th&c và khái ni m Cnh Các giao ti p th:i gian th&c; Các giao th;c kích ho t do th:i gian; input/output; Các h ,i)u hành th:i gian th&c; ,Fnh th:i; validation; Thi t k h th*ng; ki n trúc kích ho t do th:i gian.

4

H th i gian th c

CH NG 1 : T NG QUAN V H TH I GIAN TH!C REALTIME SYSTEM - RTS MOc .ích : GiEi thi u tIng quan v6 mô hình h th i gian th c, các khái ni m cD bPn c0a h th i gian th c, .-c .i/m c0a các h th i gian th c, phân bi t các h th i gian th c . ChCDng này cvng .3ng th i giEi thi u h th&ng .i6u khi/n vEi th i gian th c Trong nhGng nHm gIn ,ây, các h th*ng ,i)u khiKn theo th:i gian th&c là m5t trong nhGng lLnh v&c thu hút nhi)u s& chú ý trong gi i khoa hNc nghiên c;u v) khoa hNc máy tính. Trong ,ó, v3n ,) ,i)u hành th:i gian th&c và v3n ,) lPp lFch là ,Qc bi t quan trNng. M5t s* ;ng d<ng quan trNng c6a h th*ng th:i gian th&c (RTS) ,ã và ,ang ,?Bc ;ng d<ng r5ng rãi hi n nay là các dây chuy)n sCn xu3t t& ,5ng, rôb*t, ,i)u khiKn không l?u, ,i)u khiKn các thí nghi m t& ,5ng, truy)n thông, ,i)u khiKn trong quân s&...Th h ;ng d<ng ti p theo c6a h th*ng này sW là ,i)u khiKn rôb*t có ho t ,5ng gi*ng con ng?:i, h th*ng kiKm soát thông minh trong các nhà máy công nghi p, ,i)u khiKn các tr m không gian, thHm dò ,áy , i d? ng... 1. Khái ni m h th&ng th i gian th c : M5t h th*ng th:i gian th&c (RTS – Realtime Systems) có thK ,?Bc hiKu nh? là m5t mô hình xZ lý mà tính ,úng ,[n c6a h th*ng không ch\ ph< thu5c vào k t quC tính toán lôgic mà còn ph< thu5c vào th:i gian mà k t quC này phát sinh ra. H th*ng th:i gian th&c ,?Bc thi t k nh2m cho phép trC l:i (response) l i các y u t* kích thích phát sinh t_ các thi t bF phIn c;ng trong m5t ràng bu5c th:i gian xác ,Fnh. ` ,ây ta có thK hiKu th nào là m5t RTS b2ng cách hiKu th nào là m5t ti n trình, m5t công vi c th:i gian th&c. Nhìn chung, trong nhGng RTS ch\ có m5t s* công vi c ,?Bc gNi là công vi c th:i gian th&c, các công vi c này có m5t m;c ,5 khbn c3p riêng phCi hoàn t3t, ví d< m5t ti n trình ,ang c* g[ng ,i)u khiKn hoQt giám sát m5t s& ki n ,ang xCy ra trong th gi i th&c. Bdi vì mei s& ki n xu3t hi n trong th gi i th&c nên ti n trình giám sát s& ki n này phCi xZ lý theo kFp v i nhGng thây ,9i c6a s& ki n này. S& thay ,9i c6a s& ki n trong th gi i th&c xCy ra r3t nhanh, mei ti n trình giám sát s& ki n này phCi th&c hi n vi c xZ lý trong m5t khoCn th:i gian ràng bu5c gNi là deadline, khoCn th:i gian ràng bu5c này ,?Bc xác ,Fnh bdi th:i gian b[t ,Iu và th:i gian hoàn t3t công vi c. Trong th&c t , các y u t* kích thích xCy ra trong th:i gian r3t ng[n vào khoCng vài mili giây, th:i gian mà h th*ng trC l:i l i y u t* kích thích ,ó t*t nh3t vào khoCng d? i m5t giây, th?:ng vào khoCng vài ch<c mili giây, khoCng th:i gian này bao gfm th:i gian ti p nhPn kích thích, xZ lý thông tin và trC l:i l i kích thích. M5t y u t* khác cIn quan tâm trong RTS là nhGng công vi c th:i gian th&c này có tuIn hoàn hay không ? Công vi c tuIn hoàn thì ràng bu5c th:i gian 3n ,Fnh theo t_ng chu kh xác ,Fnh. Công vi c không tuIn hoàn xCy ra v i ràng bu5c th:i gian vào lúc b[t ,Iu và lúc k t thúc công vi c, ràng bu5c này ch\ ,?Bc xác ,Fnh vào lúc b[t ,Iu công vi c. Các bi n c* kích ho t công vi c không tuIn hoàn th?:ng d&a trên ki thuPt xZ lý ng[t c6a h th*ng phIn c;ng.

5

t. tr?:ng hBp này ng?:i ta quan tâm kh[c khe .:i s*ng con ng?:i.?Bc c3u thành t_ các thành t* chính sau : .5ng c6a thi t bF này. thi t h i v) vPt ch3t. máy tính th?:ng can thi p tr&c ti p hoQc gián ti p .áng kK). 2.K kiKm soát cpng nh? . ta sW không th3y . ng?:i sZ d<ng không bi t v) chi ti t c6a nó và ch\ sZ d<ng thông qua các nút . n các hPu quC do s& vi ph m gi i h n th:i gian .c nHng t? ng . n các tác h i do s& vi ph m này gây ra (Th?:ng thì tác h i này là không . không có 6 .5 này. h th*ng von cho phép ti p t<c ho t . th:i gian trC l:i c6a h th*ng cho y u t* kích thích là quan trNng. xem k t quC qua h th*ng .c là th:i gian trC l:i c6a h th*ng v?Bt quá gi i h n trn cho phép.ng ngày càng rl.èn tín hi u hay các màn hình chuyên d<ng . Máy giQt là m5t ví d<.. -B5 . Thông th?:ng. Ng?Bc l i v i Soft realtime system là Hard realtime system. Các lo*i h th&ng th i gian th c: Các RTS th?:ng . các bCng s*. n các thi t bF vPt lý .5ng các ti n trình. n y u t* m)m t_ nhà máy. không .?Bc chi phí quá .?:ng bay. th:i gian c3t cánh.?Bc k t hBp vào phIn c. -B5 ..i)u khiKn là m5t phIn trong toàn b5 thi t bF.fng hf th:i gian th&c : Cung c3p thông tin th:i gian th&c.i)u khiKn. RTS th?:ng . -B5 quCn lý tài nguyên : Cung c3p các tài nguyên máy tính.i)u khiKn. chi phí phIn c.i)u khiKn s& ho t .?Bc.ng có khC nHng t*t h n so v i h th*ng phIn m)m có ch. n ..?Bc sCn xu3t trNn gói t_ y u t* c. -B5 .i)u khiKn ng[t : QuCn lý các bi n c* không theo chu kh.ng và tránh . không quan tâm .5c lPp. các bCng s*.H th i gian th c V) mQt c3u t o.ó là các nút . M5t ví d< cho lo i này là h th*ng . có thK gây ra nhGng Cnh h?dng x3u .ã .ng . m5t phân ph*i .. NhGng ch? ng trình này ch y .ng hay m)m tùy thu5c vào h th*ng và ý nghLa sZ d<ng.?Bc phân thành hai lo i sau Soft reatime system và Hard realtime system : *i v i Soft realtime system. Các thành t* trên có thK . các RTS .K cho phép bdi vì nhGng hPu quC này có thK là r3t tfi t .i)u khiKn không l?u. Ng?:i sZ d<ng ch\ vi c b3m nút chNn ch? ng trình giQt.Qc tr?ng cho t_ng h th*ng. V i h th*ng này.ng trên góc .?Bc lPp trình tr? c và g[n chQt vào ngay t_ khi sCn xu3t và không thK lPp trình l i.Fnh là thành phIn c.ng là m5t xu h? ng chung. Trong cC hai lo i này.?Bc nhGng thi t bF nh? trong máy tính bình th?:ng nh? bàn phím. màn hình. B5 vi xZ lý trong Embedded system này .5ng bình th?:ng. Ngày nay. tuy nhiên trong tr?:ng hBp ràng bu5c này bF vi ph m. Trong th&c t thì có nhi)u RTS bao gfm cC hai lo i soft và hard.èn hi u. h cánh không hBp lý.[t cho vi c t*i ?u hoá phIn m)m.?Bc phân . . ng?:i ta th?:ng chia các RTS ra làm hai lo i sau : (1) Embedded system : B5 vi xZ lý .i)u khiKn th&c hi n : Khdi . . nó . mà thây vào .úng lúc có thK gây ra tai n n máy bay mà thCm hNa c6a nó khó mà l?:ng tr? c .Fnh biKu : QuCn lý các qua trình th&c hi n. chNn l&u ?u tiên phIn c.

H th i gian th c s& giao ti p v i h . nh? minh hNa M5t h th*ng th:i gian th&c có các .ng. tính th:i gian th&c là khC nHng . 3.ng trong b5 .ích khác nhau và có thK .i)u khiKn máy tính.i)u khiKn th:i gian th&c.ng c6a h th*ng này.5ng: H th*ng phCi phCn . m5t trHm micro-giây thì sao? N u m5t trHm micro-giây m i gNi là nhanh.?Bc vi t l i cho phù hBp v i yêu cIu th&c t .-c . 7ms có . có khC nHng hoàn t3t công vi c trong gi i h n th:i gian nghiêm ngQt. NhGng ch? ng trình .i)u khiKn mNi ho t .ng v i các s& ki n xu3t hi n vào các th:i .?Bc gNi là h th:i gian th&c hay không? Có thK nói m5t cách nôm na.i)u khiKn có yêu cIu th:i gian tính toán r3t nhanh m i gNi là . HiKn nhiên thì lo i h th*ng này ho t . Thông qua máy tính ta hoàn toàn có thK kiKm soát cpng nh? .o.i)u hành (H H) cpng nh? không cho phép ng?:i sZ d<ng can thi p vào. * Tính nhanh nh y: H th*ng phCi xZ lý thông tin m5t cách nhanh chóng .5ng .i)u khiKn này có r3t nhi)u lo i. ph<c v< cho nhi)u m<c . phCi là các . N u ta cho r2ng..iKm th?:ng không bi t tr? c. 6 ms.i)u khiKn. s& v?Bt ng?wng c6a m5t giá trF .áp kFp th:i và chính xác.?Bc . n các phCn .9i tr ng thái c6a m5t thi t bF quá trình phCi don . .fng nghLa v i khái ni m h xZ lý t*c .iKm tiêu biKu sau: * Tính bF . Và ta hoàn toàn có thK .5 cao. có nhanh không? Các h .i)u khiKn v i chu kh trích mou 5ms.Qt ra là: nh? th nào m i . thì m5t câu hvi sW .?Bc phCi cIn m5t H H . H H này phCi là H H h9 trB xZ lý th:i gian th&c – Realtime operating system (RTOS). H H này phCi có khC nHng nhPn bi t . s& thay . hai là bao gfm nhGng h th*ng có s& can thi p c6a máy tính thông th?:ng. tuy nhiên n u m5t vài ch<c micro-giây thì sao. cw m5t vài micro-giây là r3t nhanh. Ví d<.. (2) Lo i th.Fnh nghLa nh? th nào là kFp th:i theo b*n yêu cIu khác nhau.ng d<ng . 102. .Qc .K có thK 7 .?Bc gNi là nhanh? Ta có thK th*ng nh3t là. thì 101. xZ lý nhanh.i/m c0a các h th&ng th i gian th c Khái ni m h th:i gian th&c không .?Bc thi t bF phIn c.5ng c6a thi t bF phIn c.

Quan ni m v6 s r i r*c th i gian: Trong quan ni m c6a RTS.6 nhv.Iu vào.áp .3ng h3 h th&ng: n giCn nh3t là h th*ng ch\ có m5t . Trong môi tr?:ng có nhi)u vi xZ lý có thK tfn t i nhi)u .5 chính xác c6a .fng hf h th*ng qua hàm s* sau: C(t) = t.3ng h3 h th&ng: Th:i gian h th*ng . (2) Còn trong các RTOS.ng tiêu biKu. N u m5t b5 . nh?ng m5t h th*ng có tính nHng th:i gian th&c không nh3t thi t phCi có . Có thK biKu dinn m.c .Qc .fng hf chính (master clock) .5ng c . giám sát ng?wng giá trF nhi)u .fng hf gNi là .H th i gian th c . fng hf .fng hf quCn lý th:i gian .K . ta phCi tham gia quy t .?Bc xem nh? là m5t y u t* r:i r c.*i v i các yêu cIu.fng hf (sever clock).i)u khiKn phCi xZ lý .fng hf chính bF hvng thì m5t trong nhGng . 4.fng hf phân tán và .ng.i)u ch\nh. Chu kh này có thK .iKm tiêu biKu.fng có cùng .?a ra các phCn .?Bc th:i gian phCn . 4. cCnh gi i tr ng thái làm vi c c6a m5t s* .fng hf ph< sW thay th .Fnh: D& .5ng bên ngoài.fng th:i nhi)u s& ki n dinn ra. Th i gian trong h th&ng th i gian th c: 4.i)u khiKn .ng kFp th:i . Nh? vPy ng?:i sZ d<ng m i có c sd . Chính chu kh này .1.áp .fng b5 giGa các ti n trình.?Bc th:i gian xZ lý mei công vi c.fng b5 v i nhi)u .fng b5 v i nhau theo cùng m5t thuPt toán.ng chPm nh3t cpng nh? trình t& ..3.?Bc . Tuy tính nhanh nh y là m5t .5 chính xác. th:i gian phCn .fng b5 v i nhau. thì nhGng .iKm ti n u : C(ti) = ti 4.?a ra k t quC phCn .?Bc báo b2ng m5t . h th*ng sZ d<ng m5t .ánh giá v) khC nHng .fng hf h th*ng.[t. M5t lo i khác gfm m5t . yêu cIu .?Bc v) trình t& th&c hi n các công vi c và .5 chính xác và tin cPy r3t cao. n th:i gian th&c thi các ti n trình. Có thK. . và th?:ng là vào khoCng vài ch<c mili giây.fng hf.fng th:i: H th*ng phCi có khC nHng phCn .fng th:i nhi)u nhi m v<.2.fng hf có khC nHng lPp 8 .fng hf h th*ng bao gfm t3t cC các . (1) Trong các H H kinh .Fnh . Lo i này giá thành r3t .?Bc yêu cIu th&c hi n nhi)u vòng .ánh giá .ng m5t cách kFp th:i.ng thPt nhanh mà quan trNng h n là phCi có phCn . * Tính ti)n .fng hf này phCi .?Bc .c t p và lý thú.?Bc . th:i gian . n u .iKn.?Bc gNi là chính xác vào th:i . t3t cC các .oán tr? c . ây là m5t khía c nh r3t ph. có m5t .ng và xZ lý . tác . fng hf này phát sinh ra ng[t báo hi u cho h th*ng theo chu kh.fng hf ph< (slave clock) theo kiKu “polling”.i)u ch\nh nh?ng không quá nhanh hay quá chPm làm Cnh h?dng .ng tính th:i gian th&c c6a h th*ng. cùng m5t lúc m5t b5 . *i v i các h th*ng phân tán. Các lo*i .ã chia th:i gian ra thành các mCnh . . * Tính .

i)u ph*i ng[t theo m5t chu kh . Tbegin(condition1).?Bc tài nguyên cIn c3p phát.Iu ti n trình Tend(condition2) : Th:i gian ti n trình hoàn t3t xZ lý Ph< thu5c vào h th*ng và th:i gian xác .ó là c ch i)u Ph*i Quá Trình . M5t ràng bu5c t*i thiKu có thK .Qt ra là làm th nào nhGng công vi c có thK th&c thi m5t cách hoàn ch\nh trong th:i gian bF h n ch . Trong th&c t thì các RTS th?:ng d&a trên cách ti p cPn k t hBp giGa hai quan ni m trên. Tbegin(condition1). tính . xZ lý th:i gian th&c cpng có các .K khdi t o tiKu trình.ó: ID : Ch\ s* c6a ti n trình Tbegin(condition1) : Th:i gian b[t . n th:i gian th&c hi n công vi c .ó: ID : Ch\ s* c6a ti n trình Tbegin(condition1) : Th:i gian b[t . CID. k t thúc tiKu trình don . X> lý th i gian th c XZ lý th:i gian th&c là hình th.Fnh nh? sau: (ID. Ràng bu.?Bc xem xét d phIn sau.Fnh ph< thu5c vào phIn c. Tend(condition2)) Trong .Fnh. ví d< : Ch\ thF Th:i gian th&c thi (clock) MOV reg8.iKm tiêu biKu nêu trên nh? tính bF .ó còn có th:i gian dùng . th&c hi n các xZ lý tính toán và hoàn t3t vi c trC l:i vào th:i .?Bc vi t b2ng m5t nhóm các ch\ thF (hàm) sW có th:i gian th&c hi n là c* .5ng. Câu trC l:i .iKm t0. K có thK phCn . h th*ng ti p nhPn vào m5t th:i .fng th:i và tính ti)n . Tend(condition2)) dC(t) dt ti Trong .6 nhv hBp lý.Fnh nghLa qua b5 ba sau: (ID.iKm (1) là n)n tCng có s& h9 trB c6a quan . cpng nh? quá trình giCi phóng tài nguyên sau khi ti n trình sZ d<ng… M5t ràng bu5c kh[c khe h n có thK xác . 5.K .Iu ti n trình Tend(condition2) : Th:i gian ti n trình hoàn t3t xZ lý CID : Th:i gian ? c tính c6a ti n trình (s* mou th:i gian) FID : TIn s* mou th:i gian Mei ch\ thF c sd (Assembly) có m5t th:i gian th&c thi c* .ó sW l n h n th:i gian th&c th< th&c hi n tiKu trình.4. h th*ng ti n hành c3p phát tài nguyên. m5t h th*ng xZ lý th:i gian th&c sZ d<ng các quá trình tính toán . Câu hvi .ó. 4.iKm tk khác sau . tính nhanh nh y.fng th:i. reg8 2 JMP 15 IRET 24 IN 10 OUT 10 Nh? vPy. FID. 9 .ng. chu kh d h th*ng này vào khoCng vài micrô giây.Fnh . mei tiKu trình th&c hi n m5t công vi c .ng v i nhi)u s& ki n dinn ra cùng m5t lúc.H th i gian th c trình .Cm bCo tính nHng th:i gian th&c c6a nó. th?:ng thì quan .c xZ lý thông tin trong m5t h th*ng .c v6 th i gian: V i mei y u t* kích thích. Nh? vPy.Fnh. thêm vào .iKm(2).Qc .?Bc .

fng th:i v i các quá trình khác kK cC trong th:i gian th&c hi n l nh và th:i gian x p hàng ch: . Trong các hình th. tác v< là m5t nhi m v< xZ lý thông tin trong h th*ng. có thK tfn t i . Các d ng tác v< qui . và mei tr m có thK là m5t h . m5t tác v< có thK th&c hi n nhi m v< . Tác v< có thK th&c hi n d? i d ng m5t quá trình tính toán duy nh3t. 6.fng th:i: * XZ lý c nh tranh: Nhi)u quá trình tính toán chia sl th:i gian xZ lý thông tin c6a m5t b5 xZ lý. * XZ lý phân tán: Mei quá trình tính toán .H th i gian th c Quá trình tính toán là m5t ti n trình th&c hi n m5t hoQc m5t phIn ch? ng trình tuIn t& do h .i)u hành quCn lý trên m5t máy tính.K th&c hi n xen kW nhi)u nhi m v< khác nhau theo th.?Bc sZ d<ng bên c nh quá trình tính toán.a vi xZ lý. . khái ni m tác v< (task) cpng hay .?Bc phân chia th&c hi n song song trên nhi)u b5 xZ lý c6a m5t máy tính. nó phCi phân chia th:i gian . Trong khi m5t vi xZ lý không thK th&c hi n song song nhi)u l nh.Bi th&c hi n. hoQc m5t dãy các quá trình tính toán khác nhau.c xZ lý c nh tranh có vai trò ch6 ch*t. Có thK nói.c ?u tiên và ph? ng pháp lPp lFch. HoQc. Trong các h th*ng .c trên . Ví d<. H th&ng . * XZ lý song song: Các quá trình tính toán .i6u khi/n và h th i gian th c 10 .Fnh trong chubn IEC 61131-3 (Programmable Controllers – Part3: Programming Languages) . t& tùy theo m. Các hình th.i)u khiKn.c các quá trình tính toán . MQc dù h th*ng .?Bc minh hNa trên hình 2.ây thì hình th.?Bc th&c hi n riêng trên m5t máy tính.i)u khiKn logic.i)u khiKn có thK có nhi)u tr m. s* l?Bng các quá trình tính toán cIn th&c hi n th?:ng bao gi: cpng l n h n s* l?Bng vi xZ lý.c t9 ch. có thK th&c hi n theo c ch tuIn hoàn (periodic task) hoQc theo s& ki n (event task).i)u khiKn cho m5t hoQc nhi)u m ch vòng kín có chu kh trích mou gi*ng nhau.i)u khiKn trình t& theo các s& ki n xCy ra. m5t tác v< th&c hi n nhi m v< .

?a ra .5ng bình th?:ng n u nh? nó không .ng d<ng PLC và DCS cpng th?:ng chPm h n (ví d< trong .H th i gian th c Có thK nói. tiêu biKu là . Trong khi .i)u khiKn là h th:i gian th&c.5.?Bc giCm thiKu. H n nGa. Không có h th*ng .ng d<ng .5ng. n u thuPt toán .i)u khiKn nhi t .i)u khiKn có tính nHng th:i gian th&c phCi có khC nHng truy)n tin m5t cách tin cPy và kFp th:i .c . b3t kK là h th*ng . vì vPy dung l?Bng b5 nh cpng nh? hi u nHng vi xZ lý th?:ng th3p.?a ra .i)u khiKn chuyKn .?a ra k t quC . . i nh?ng b5 .i)u khiKn phCi . i)u gì sW xCy ra trong m5t nhà máy . các h th*ng .5 ngQt nghèo khác nhau.?a vào vPn hành thuPn ti n cho các bài toán l n.i)u khiKn l?u l?Bng hay . M5t m ng truy)n thông trong m5t h th*ng .Qt ra yêu cIu cao v) khC nHng lPp trình và .i)u khiKn các quá trình công ngh ) Nh?ng nh? vPy không có nghLa là các giCi pháp PLC hoQc DCS không phCi là các h th:i gian th&c. Trong th&c t .i)u khiKn nhúng l i là giCi pháp .K .5ng.i)u khiKn không có khC nHng . hay khi không . các h . n các yêu cIu ngQt nghèo h n v) hi u su3t phIn m)m. Ng?Bc l i.i)u khiKn phân tán không ch\ ph< thu5c vào tính nHng th:i gian th&c c6a t_ng thành phIn trong h th*ng.i)u khiKn.Fnh d_ng khbn c3p m5t cách kFp th:i trong nhGng tình hu*ng b3t th?:ng? 11 .i)u khiKn nhúng th?:ng .i)u khiKn.i)u khiKn chuyKn . chi phí phIn c.?Bc các yêu cIu v) th:i gian.ng d<ng nhanh.i)u khiKn áp su3t.i)u khiKn cpng có các .ng cho t_ng sCn phbm cIn .?Bc tín hi u .Qc thù trong các .i)u khiKn nào có thK ho t . yêu cIu v) tính th:i gian th&c .?Bc .i)u khiKn kFp th:i sau m5t th:i gian nhPn .Qc thù khác nhau. M5t b5 .?a quá trình ki thuPt v) tr ng thái mong mu*n. các thi t bF .i)u khiKn mQc dù r3t hi n .o và thi t bF ch3p hành. don .áp . Ví d<.o .?Bc tín hi u . m5t s* l n các h th*ng th:i gian th&c là các h th*ng . .i)u khiKn công nghi p nh? PLC hoQc DCS . mà còn ph< thu5c vào s& ph*i hBp ho t .ó. .iKm trích mou.ng d<ng v i các sCn phbm ch t o hàng lo t. các thi t bF vào/ra.i n nguyên tZ hay trong m5t nhà máy lNc dIu. Tính nHng th:i gian th&c c6a m5t h th*ng .ng .ng kFp th:i vào nhGng th:i . m. Các h th*ng .*i v i các yêu cIu c6a các b5 .5ng giGa các thành phIn .áp .?Bc các quy t .ó.*i v i mei . t3t các các h th*ng .

ã có. H th*ng .i)u hành .:i c6a h .I U HÀNH TH I GIAN TH!C REALTIME OPERATING SYSTEM – RTOS MOc .c nHng cIn thi t .ng c6a máy tính.?Bc yêu cIu và hiKu bi t sâu s[c v) phIn c.i6u hành Ngufn g*c ra .H th i gian th c CH NG 2 : H . Các công c< .ích : GiEi thi u v6 kiKn trúc c0a m.ng d<ng và ng?:i sZ d<ng phát triKn phIn m)m trên các n)n phIn c.Cm nhi m ch.i6u hành th i gian th c vEi các h . H th*ng . vxn .ng .c nHng quCn lý và lPp lFch các quá trình sZ d<ng CPU và cùng chia sl tài nguyên 12 .K t? ng tác tr&c ti p v i phIn c.*i cCDng v6 h .Cm nhi m vai trò trung gian .3ng th i giEi thi u m.6 x> lý th i gian trong h .5ng và . .?Bc vi t .K cho phép các gói phIn m)m .K quCn lý tài nguyên nh? b5 nh và các thi t bF ngo i vi nói chung.i6u hành th i gian th c.i6u hành th i gian th c.K ph<c v< .i6u hành th i gian th c phI biKn nhC : Window Mobile. ph<c v< cho nhi)u .i6u hành PC.-c .?Bc th&c hi n tr&c ti p bdi b5 xZ lý c6a h th*ng.Iu tiên khi h th*ng b[t . Các h .Iu khdi .a d ng. H .?Bc n p và th&c thi .i)u hành cung c3p m5t tPp các ch.1. ChCDng này cvng .t s& h .i)u khiKn phIn c.. S& khác bi t .i/m và phân lo*i các h .i6u hành th i gian th c 1..iKn hình là h th*ng . .t h .ng và có thK phát triKn d&a trên các ngôn ngG bPc cao.ng d<ng .K . Symbyan …. i)u này t o ra m5t giao di n r3t thuPn lBi cho các . card âm thanh.i)u hành bCn ch3t cpng là m5t lo i phIn m)m nh?ng nó khác v i các lo i phIn m)m thông th?:ng.ng máy tính mà không cIn phCi can thi p tr&c ti p sâu. fng th:i tránh . 1.i)u hành .i)u khiKn b5 xZ lý cpng nh? các tài nguyên khác trong h th*ng bdi vì nó sW . các khác bi t c0a h . H .i)u hành c6a máy tính có thK th3y nó bao gfm các drivers cho các ngo i vi tích hBp v i máy tính nh? card màn hình.i6u hành th i gian th c.i)u hành là .

H . th:i gian . Th.Fnh ch\ bao gfm các dFch v< cIn thi t cho .?Bc phân thành ba kiKu l i chính là: 1. HIu h t các RTOS cho phép chúng ta c3u hình bao quát tr? c khi chúng ta liên k t chúng v i .) chia sl dG li u.i6u hành th i gian th c so vEi h .-c . Các h .ng d<ng c6a mình tách bi t v i h .Iu tiên và sau .ng. T i lúc khdi . n các gi i h n.i)u hành th:i gian th&c (RTOS) cho các h th*ng nhúng r3t khác so v i h .H th i gian th c 1.áp . Bdi vPy . hai.i)u hành trên máy desktop quan tâm .i)u hành th:i gian th&c l i quan tâm .i)u hành sW chi m quy)n . n hi u nHng trung bình trong khi các h .i)u khiKn ngay sau khi máy . Th. nh3t. r3t nhi)u RTOS không bCo v chính bCn thân chúng m5t cách cbn thPn nh? h .i6u hành trên PC H . Th.i)u hành trên máy tính desktop nh? Windows hay UNIX : Th. ba. h . quCn lý b5 nh và t? ng tác giGa các th6 t<c ng[t.ng. n khC nHng d& . .Fnh th:i. semaphores. trên máy tính desktop h . chúng ta còn xem xét v3n . trong m5t h th*ng nhúng.?Bc bPt và sau . . ` trong phIn này. t?.oán và các ràng bu5c v) th:i gian .i6u hành th i gian th c 13 .2.ó m i cho chúng ta b[t . queue… Ngoài ra.i)u hành th:i gian th&c th?:ng .Iu .ng d<ng. mailbox.ng d<ng th?:ng xuyên liên k t v i RTOS.ng d<ng nhPn l3y quy)n .ng d<ng c6a mình. Nói chung.) truy)n thông liên quá trình.3.áp .i)u hành th:i gian th&c nh3n m nh .Task trong môi tr?:ng RTOS và v3n . chúng ta tìm hiKu khái ni m tác v< . . dFch v< b5 .i/m c0a h .ó nó m i b[t .i)u khiKn . Chúng ta biên dFch và liên k t các . hIu h t các . .Iu RTOS.i)u hành.i)u hành trên desktop. Ng?Bc l i.K ti t ki m b5 nh các RTOS mQc .5ng.ng d<ng và RTOS phCi có m*i quan h chQt chW h n.ng d<ng nhúng c6a chúng ta.

oán và không ph< thu5c vào s* l?Bng các .ng d l p d? i + LPp lFch và xZ lý ?u tiên + QuCn lý b5 nh + Các dFch v< vào ra + He trB s& l&a chNn b5 vi xZ lý + Tính khC chuyKn t i các b5 vi xZ lý khác + Tính m)m dlo . i c6a RTOS và .K có thK .Bi.ánh giá .i)u hành th:i gian th&c xác .oán . Nó sW có thK .Qc tC chính xác là r3t quan trNng .òi hvi c6a . 5.i)u khiKn các ng[t (IRQ: Interrupt ReQuest). các tính toán v) khoCng th:i gian ng[t và th:i gian chuyKn m ch ngG cCnh là r3t quan trNng.Fnh.ng d<ng và phCi d& .realtime thì các nhà sCn xu3t RTOS nên ch\ rõ các y u t*: 1. th:i gian t*i . phù hBp v i các . và s& quan trNng c6a vi c lPp lFch. thêm b t các dFch v< cho phù hBp v i . Tr? c khi xem xét các dFch v< c6a h . Trình thi t bF .i)u hành th:i gian th&c t? ng t& nh? m5t h .?Bc phân phát cùng các công c< t*t . H . Cho mei l:i gNi h th*ng. i c6a h th*ng mà trình thi t bF .K phát triKn và vPn hành .a vi xZ lý + Md r5ng các dFch v< nh? he trB m ng 14 .i)u hành th:i gian th&c t*t.ng d<ng nhúng th:i gian th&c c6a ta.ng d<ng nhúng th:i gian th&c m5t cách nhanh h n.ng d<ng khác nhau + He trB b5 .ích và cung c3p các ch.Interrupt Latency: là khoCng th:i gian t_ lúc ng[t t i lúc ch y tác v<.H th i gian th c Do các yêu cIu kh[t khe v) th:i gian. KhoCng th:i gian này phCi t? ng thích v i các . cùng v i các thông s* khác làm nên m5t RTOS t*t.K phù hBp v i các yêu cIu . v) vi c sZ d<ng tài nguyên.realtime: M5t RTOS t*t ch\ khi có m5t nhân t*t.K nhPn ra RTOS t*t. m5t RTOS he trB nhi)u dFch v< có nhi)u thuPn lBi h n m5t RTOS .?Bc bi t tr? c. tin t?dng h n.?Bc. 4.c ng[t h th*ng. có nhGng . Vì vPy s& tfn t i c6a các RTOS là r3t cIn thi t và quan trNng.ng d<ng nhúng th:i gian th&c .óng vai trò r3t quan trNng trong phát triKn h nhúng th:i gian th&c.fng th:i ch: .i)u khiKn ng[t th&c hi n. Cho ví d<. Theo comp.a . 2. Các m.K có thK phát triKn . Vì vPy. ta cIn bi t nh? th nào .ây là h . Th:i gian c&c . Thêm vào .a m<c . Các giá trF này ph< thu5c trên s* l?Bng c6a các ng[t . M5t RTOS t*t sW có m5t tài li u t*t và .i)u hành . Chúng gi*ng nh? nhGng th? vi n.ó. KhoCng th:i gian trn ng[t .ng d<ng c6a chúng ta.*i t?Bng trong h th*ng. Theo FQA cho comp. n giCn.c nHng nh?: + Giao ti p v i phIn c. các RTOS .i)u khiKn các mQt n ng[t. chúng ta có thK dùng. 3. th:i gian c&c .

i th:i gian th&c.i6u hành th i gian th c + H .Iy .ích nghiên c. Nhân nhv c6a m5t RTOS thích hBp cho m5t . 15 .6 chubn POSIX M5t RTOS th?:ng có tính m)m dlo và có tính c3u trúc.Fnh mã. + Kích th? c r3t nhv. + CCnh báo . Nh?: QNX.K phát triKn các .i)u hành th:i gian th&c này t i h .5 trn. pSOS. Các RTOS th?:ng cung c3p các m.)u chia sl m5t chubn API (giao di n lPp trình .4.?Bc thêm vào nh? m5t vòng ngoài khi cIn thi t.ng nhanh.ng d<ng b5 xZ lý nhv.a tác v< và chubn giao ti p liên quá trình.M5t khuynh h? ng giúp nhGng nhà thi t k di chuyKn t_ h . dG li u trong b5 nh . PDOS.?Bc . + Các nhân cho m<c . Windows CE. t& ?u tiên.H th i gian th c Theo nhGng tiêu chubn POSIX .ng d<ng nhúng th:i gian th&c. treo hay kích ho t vi c th&c hi n.áng kK th:i gian khdi .fng tâm. trong khi nhGng vòng ngoài có thK giúp .Qc . Các mailbox. RTOS nào tuân theo chubn POSIX . Phân lo*i h . .Qc . LynxOS là m5t RTOS tuân theo . VxWorks.w xây d&ng h th*ng th:i gian th&c l n. H i u hành th i gian th c nh v i m c ích th ng m i Các h . + H th*ng .iKm sau: + Có th:i gian chuyKn ngG cCnh và th:i gian . cho nhGng h th*ng không có b3t c. LynxOS.i)u hành th:i gian th&c khác. ERCOS. RTX-51… 1.Qc tính quan trNng nh3t c6a h .i)u hành th:i gian th&c nhv v i m<c . 4. + Cung c3p vi c xZ lý .iKm khác có thK . Nó cho phép tích hBp thêm các dFch v< gia tHng theo vòng tròn . QNX.i)u hành này th?:ng có các . + He trB các hàng .èn báo .1. nh? vPy giCm m5t cách . Nó cung c3p khdi .ng d<ng). Các . NhGng h . + H .Qc tC t*t và có các công c< t*t .?Bc th&c hi n tr? c. Các công vi c ?u tiên cao h n sW .5ng t_ ROM. b3t c. Các RTOS thích hBp v i các yêu cIu c6a h th*ng nhúng. M5t vài ví d< c6a các h .La l?u trG nào.i)u hành th:i gian th&c.áp . chúng có các . Qc bi t.i)u hành th:i gian th&c md r5ng t i UNIX và các h .5ng c6a h th*ng. EMERALDS.i)u hành th:i gian th&c là: VxWorks.Fnh nghLa t*t.c xZ lý ?u tiên.ích th? ng m i. + LPp lFch th. + fng hf th:i gian th&c. ŒCOS. + Không có b5 nh Co và có thK c* .i)u hành này th?:ng nhv và nhanh.u. Vòng trong cùng hay nhân cung c3p nhGng .Qc bi t và th:i gian quá h n (timeout). Nulceus.i)u hành khác. các s& ki n. Nó he trB các ràng bu5c th:i gian th&c v i các dFch v< nh?: + Các gi i h n th:i gian th&c hi n. các tín hi u và các .

+ He trB cho khC nHng chFu lei.iKm sau: + He trB các thuPt toán lPp lFch th:i gian th&c và vi c phân tích th:i gian. Chúng chPm h n và có khC nHng d& .?Bc bi t .ng d<ng. yêu cIu thi t k m5t h . H 16 .i)u hành v i các phIn m)m khác là nó th&c hi n ch.i)u hành .H th i gian th c i u hành th i gian th c m r ng t i Unix và các h i u hành khác Các h .ng. M5t .c nHng c bCn c6a h th*ng bao gfm ch6 y u là quCn lý b5 nh . HARTOS.K . MARUTI. T ng quan Nh? chúng ta . Ví d< nh?: Spring.i)u hành này có các .Qc bi t. + He trB các dFch v< c bCn .i)u hành phCi th&c hi n v i m5t ngufn tài nguyên th?:ng r3t h n h•p.i)u khiKn các ch. DARK.i)u khiKn s& ki n th&c thi trong h th*ng. H nhúng th:i gian th&c l i yêu cIu h . 4. RT-MACH.i)u hành th:i gian th&c th? ng m i d trên nh?ng chúng l i có nhi)u ch.3.c nHng và môi tr?:ng phát triKn t*t h n d&a trên tPp các giao ti p chubn và thân thi n. MQc dù kích th? c b5 nh tích hBp on chip sW có thK tHng lên trong t? ng lai nh?ng v i s& phát triKn hi n nay h .oán ít h n so v i các h . Có nghLa là nó th&c hi n các tác v< theo m nh l nh yêu cIu t_ các ch? ng trình .Cm nhi m vi c .TI chJc và kiKn trúc h .1. thi t bF vào ra và các s& ki n ng[t. + Nh3n m nh khC nHng d& .*i v i các h th*ng th:i gian th&c. CHAOS.i6u hành th i gian th c 2.ã .oán h n là hi u nHng trung bình. ngo i vi và vào ra giao ti p v i h th*ng phIn c.fng b5 th:i gian th&c.ã bi t v) h . Các nhân cho m c ích nghiên c*u Các h . ARTS. RT-LINUX. MARS.2.Qc .i)u hành cho các h nhúng ch\ nên cw khoCng nhv h n 32 Kbytes. H th*ng .i)u hành khá . RT-POSIX.i)u hành này nh?: RT-UNIX.c nHng . 4.iKm khác bi t c bCn nh? chúng ta . 2.

Nh: c ch này mà các dFch v< có thK . n h t nhân (monolithic).*i giGa các modul trong vi h t nhân nên cIn thi t phCi có m5t c ch trao . Ki n trúc vi h t nhân cung c3p . Qc . Tuy nhiên do tính .*i .5c lPp . các thanh ghi .iKn nh3t là ki n trúc vi h t nhân và .Qc bi t cho các h nhúng cpng vì s& tác .H th i gian th c B*n nhân t* chính tác .2. Các dFch v< th&c thi d tIng trên c6a h t nhân vì vPy .i)u hành là: phIn h t nhân (kernel) và các ch? ng trình h th*ng.K cung c3p các ti n ích chung và ph*i hBp v i các ho t .9i cpng nh? xây d&ng linh ho t h n.c nHng .i)u hành h th*ng th&c thi trong không gian ng?:i sZ d<ng. Hi n nay chúng ta cpng có thK b[t gQp r3t nhi)u h . xZ lý ng[t…Ch.5ng c6a h th*ng. Nó . b5 lPp lFch b5 quCn lý tài nguyên và b5 quCn lý vào ra. t .i)u khiKn phIn c.i)u khiKn r3t quan trNng . PhIn h t nhân .i)u hành c bCn c*t lõi (thô) theo c ch các module t? ng .fng b5 và bCo v h th*ng bdi vi c sZ d<ng sai.i)u khiKn. .?Bc giám sát. HIu h t chúng . PhIn h t nhân có vai trò . (2) nHng l?Bng tiêu th< (3) giá thành (4) khC nHng t? ng thích.5 an toàn cao bdi vì dFch v< h th*ng ch y d tIng ng?:i sZ d<ng v i h n ch v) truy nhPp vào tài nguyên c6a h th*ng và có thK .i)u hành.?Bc xây d&ng m5t cách m)m dlo .?Bc phát triKn m nh mW trong các h th*ng .i)u hành khác nhau .i)u hành .?Bc sZ d<ng .ng khác nhau m5t cách llinh ho t h n so v i kiKu ki n trúc h t nhân monilithic.Fnh th:i gian.iKm n9i bPt và c*t lõi c6a ki n trúc vi h t nhân là kích th? c nhv và dn dàng sZa . Ki n trúc vi h t nhân có thK .)u có kiKu d ng và giao di n khá gi*ng nhau nh?ng c ch quCn lý và th&c thi các tác v< bên trong r3t khác nhau. Ki n trúc vi h t nhân . H t nhân chính là phIn lõi c6a h .c nHng . 17 .iKn hình .ng bao gfm ng[t.Fnh và th*ng nh3t. Các ki+n trúc h i u hành Hai thành phIn chính trong thi t k h . 2.5ng c6a 4 nhân t* nêu trên.9i thông tin hay truy)n thông giGa các modul . Vi h*t nhân : Các vi h t nhân cung c3p các ch.K .K ph<c v< cho các b5 quCn lý quá trình.a xZ lý ví d< nh? Windows 2000.ó vì vPy có thK là lý do làm chPm t*c .i)u khiKn chính c6a nó là ph<c v< . Mei h .ng c6a h nhúng và không dn dàng so sánh . Mach và QNX. Nó n p các phIn m)m . các t_ tr ng thái và các b5 .Cm bCo t3t cC các phIn c6a h th*ng có thK làm vi c 9n .c nHng .i)u hành là : (1) khC nHng th&c hi n.Qc thù phIn c.i)u khiKn thi t bF .?Bc khdi t o hoQc c3u hình l i mà không nh3t thi t phCi khdi t o l i toàn b5 h th*ng.5ng vào ra v i h th*ng. Hai ki n trúc thi t k phIn h t nhân kinh .c nHng lPp lFch.Cm nhi m các tác v< c< thK và chuyKn r:i r3t nhi)u các dFch v< .5c lPp t? ng .5ng tr&c ti p t i quá trình thi t k h .?Bc thi t k ph<c v< tr&c ti p các ch.?Bc giGa chúng v i nhau.Cm nhi m ch.5 và giCm tính hi u quC ho t .5 an toàn cao.?Bc .K phù hBp v i c3u hình phIn c.

5ng c6a h t nhân ng?:i ta phân lo i m5t s* lo i hình (1)H th-ng th i gian th c nh : 18 .9i m)m dlo linh ho t nh? kiKu vi h t nhân. và DOS.Iy .i)u hành cpng .i6u hành th i gian th c H th*ng .3. Ví d< . H*t nhân h .c nHng/dFch v< chính y u thông qua m5t qua trình xZ lý .úng b5 xZ lý và ph<c v< dFch v< ng[t i)u khiKn quá trình T o và k t thúc quá trình/tác v< LPp lFch và .i)u ph*i ho t .i)u hành v i phIn lõi là h t nhân phCi . Lo i hình ki n trúc này th?:ng .H th i gian th c .ng nh: vPy mà khC nHng t*i ?u cpng dn dàng h n so v i áp d<ng kiKu ki n trúc vi h t nhân.iKm xu3t hi n ng[t NhPn d ng và l&a chNn .iKn hình v) lo i hình ki n trúc h t nhân monolithic bao gfm Linux.5ng h th*ng Fnh th:i i)u khiKn ngo i vi XZ lý ng[t Khdi t o giao ti p vào ra Tùy theo c ch th&c hi n và xây d&ng ho t .Cm nhi m các tác v< chính nh? sau: XZ lý ng[t L?u trG ngG cCnh ch? ng trình t i th:i .?Bc thông tin v) chúng m5t cách .6.ng c< thK mà h t nhân monolithic có s& t? ng tác tr&c ti p v i phIn c. Chính vì vPy cpng là lý do t i sao ki n trúc monolithic không thK thay . 2. Chính vì vPy kích th? c c6a chúng th?:ng l n h n kiKu ki n trúc vi h t nhân. MacOS.Dn h*t nhân: KiKu ki n trúc monolithic cung c3p t3t cC ch. n ll.òi hvi v) tài nguyên và kiêm cC ch. Vì h .?Bc áp d<ng ch6 y u cho các phIn c.c nHng quCn lý chúng vì vPy ng?:i thi t k cIn phCi n[m .

Các tác v< l n cIn nhi)u th:i gian th&c hi n có thK .?Bc th&c hi n t i các th:i . Các kiKu lo i h t nhân c bCn H t nhân th&c hi n vòng lQp thHm dò H t nhân th&c hi n theo c ch ng[t H t nhân quá trình vPn hành quá trình 19 . Nó xZ lý t3t cC các tác v< thông qua các dFch v< ng[t. m.?Bc chia nhv thành các Thread cùng chia sl không gian b5 nh .6 nó sW trd thành m5t h .i)u khiKn bdi vòng lQp và nhFp .?Bc b9 sung .) v) .i)u khiKn h th*ng bao gfm: XZ lý ng[t i)u khiKn quá trình/ tác v< QuCn lý b5 nh (2) Công ngh a nhi m Mei quá trình có m5t không gian b5 nh riêng Các quá trình phCi . V i m5t b5 xZ lý c3u hình nhv nh3t.c t p h n sW bao gfm m5t s* các dFch v< ph< ph<c v< cho vi c truy)n thông giGa các quá trình.H th i gian th c V i lo i này các phIn m)m .i)u khiKn h h*ng H t nhân . Các h t nhân th&c thi theo c ch ng[t r3t gi*ng v i lo i h t nhân th&c hi n theo c ch vòng lQp thHm dò.Fnh th:i gian M5t s* các dFch v< cung c3p he trB vi c th&c thi liên quan . không phCi lúc nào nó cpng có thK l?u c3t ngG cCnh vì không thK thay . Và n u .9i cPp nhPt bdi các b5 xZ lý ng[t.?Bc chia nhv thành các tác v< nhv và . (3) Các d1ch v cung c2p b i h t nhân T o và k t thúc quá trình/ tác v< Truy)n th*ng giGa các quá trình Các dFch v< v) . Các h t nhân l n và ph. n giCn nh3t là m5t vòng lQp vô h n thHm dò các s& ki n xu3t hi n trong h th*ng và phCn .?Bc .iKm khác nhau nh: vào c ch chuyKn và sZ d<ng b5 . vòng lQp thHm dò có thK giám sát các bi n mà chFu s& thay .Iy .iKn hình c bCn Lo i h t nhân .i)u hành .i)u hành.6.ng l i theo s& thay . n . Thay vì sZ d<ng các thanh ghi thi t bF.9i con trv ngHn x p hoQc vùng ngHn x p r3t h n ch .?Bc phát triKn mà không cIn có h .9i n u có. H t nhân có thK .i)u khiKn bdi các ng[t.Iy . ng?:i lPp trình phCi t& quCn lý và xZ lý các v3n .?Bc .?Bc xây d&ng sao cho t3t cC các tín hi u logic .

Bi m5t s& ki n bên ngoài tác . Blocked: V i ý nghLa tác v< không s•n sàng ch y kK cC khi b5 xZ lý trong tr ng thái ngh\ . Các dNch vO cD bPn 3.?:ng truy)n tín hi u logic bên trong các quá trình và các dFch v< ng[t . Tác v và các tr ng thái tác v Xây d&ng các kh*i c bCn c6a phIn m)m d? i RTOS là tác v< . n giCn ch\ là m5t th6 t<c con. 3. 2.Iu các tác v<.Cm nhi m ch. chúng ta th&c hi n m5t hoQc nhi)u l:i gNi t i m5t hàm trong RTOS .i)u khiKn ng[t. READY • M. M5t tác v< .iKm nh3t .?Bc tích hBp và th&c hi n thông qua vi c truy)n dG li u. H*t nhân quá trình Các h t nhân quá trình rõ ràng là ph.ang th&c hi n tác v<.Fa ch\ b5 nh c6a phIn tZ quá trình) • Tr ng thái: RUN.K ph<c v< cho vi c lPp lFch. V i m5t b5 xZ lý thì chúng ta ch\ ch y m5t tác v< t i m5t th:i .Fnh. n giCn.5 ?u tiên • NgG cCnh (dùng con trv . WAIT.H th i gian th c Vi c l&a chNn lo i h t nhân nào hoàn toàn tùy thu5c vào các b5 xZ lý và kích th? c phIn m)m. Mei tác v< trong RTOS luôn luôn d m5t trong ba tr ng thái chính: 1. Running: V i ý nghLa b5 xZ lý . Tác v< d trong tr ng thái này vì chúng . tuy nhiên riêng lo i h t nhân vPn hành theo quá trình không phù hBp v i các b5 xZ lý nhv.c nHng lPp lFch cho các quá trình theo .Idle.?Bc th&c hi n WAIT: các quá trình ch: m5t s& ki n hoQc tín hi u vào ra kích ho t quá trình READY: các quá trình s•n sàng . 20 . T i m5t s* . H t nhân sW phCi .iKm trong ch? ng trình. Vi c t o ra các tác v< d? i RTOS là r3t .c .?Bc th&c hi n Các phIn tZ thu5c tính c6a m5t quá trình: Các phIn tZ này cIn thi t .K quCn lý l?u c3t thông tin trong ngHn x p) 3.*i v i c ch lPp lFch theo m.5 ?u tiên sW yêu cIu thông tin sau v i mei quá trình: • Tên (. Ready: V i ý nghLa m5t s* tác v< khác s•n sàng ch y n u b5 xZ lý rei.úng mô hình tr ng thái.K b[t . Ví d< .1.c .Task.5ng . RUN: quá trình .c t p h n các h t nhân th&c hi n theo c ch thHm dò và . Các .K kích ho t nó trd l i tr ng thái s•n sàng.

) v) chia sl dG li u nh?ng h th*ng c6a chúng ta có thK làm vi c t*t h n.ó ch\ có m5t tác v< có thK n[m quy)n sZ d<ng . không thK ch: .èn báo vì vPy mà .?Bc tín hi u nào làm cho các tác v< trd l i tr ng thái s•n sàng bên trong hay bên ngoài RTOS thì ta nói r2ng h th*ng c6a chúng ta bF hvng. m ch? ng trình và m5t stack.K chuyKn dG li u t_ tác v< này t i tác v< khác: hai tác v< cIn phCi truy nhPp t i cùng bi n.èn báo có thK ngHn chQn vi c chia sl dG li u don . b5 .ó r3t dn dàng .èn báo sau khi sZ d<ng xong.ó và hàm release là hàm giCi phóng .èn báo không thK giCi quy t mNi v3n .K giao ti p giGa các tác v< v i nhau hoQc giGa hàm ng[t và tác v<.ang ch y và sW ch y tác v< ?u tiên cao h n kia.?Bc gNi là b5 lPp lFch. B l8p l1ch M5t phIn c6a RTOS .i vào tr ng thái Running. B5 lPp lFch giúp chúng ta bi t tác v< nào phCi làm tr? c khi chúng ta thi t lPp th. phIn m)m chúng ta thi t k bF lei. v3n . có m5t tác v< khác ?u tiên cao h n . thì nó ph< thu5c vào cách xZ lý c6a RTOS mà chúng ta sZ d<ng. K b5 lPp lFch bi t . l?u v t các tr ng thái c6a mei tác v< và quy t . Khi chúng ta sZ d<ng bi n chia sl dG li u giGa các tác v<. .iKm.c ?u tiên . Tuy nhiên. èn báo có hai hàm liên quan là take và release.ang s•n sàng m5t tác v< có m.Bi cho .i)u . T3t cC nhGng dG li u khác .) chia sl dG li u r3t dn don t i vi c không nh3t quán trong ch? ng trình và có thK gây s<p . Tác v< có m. m5t s* khác l i ch y m5t tác v< b3t kh cho .c ?u tiên cao nh3t sW .)u bF khoá.Bi tín hi u . b5 lPp lFch trong hIu h t các RTOS là khá . 3. Tác v và d9 li u Mei tác v< có m5t ngG cCnh riêng.ang ch y. Khi .?Bc kích ho t thì RTOS sW d_ng tác v< .H th i gian th c 3.K s& ki n xCy ra .) này là vi c không bao gi: cho phép hai tác v< có cùng m.èn báo t i m5t th:i .3. Hàm take n[m l3y quy)n sZ d<ng .èn báo t i th:i gian .?Bc gán t i mei tác v< và giGa nhGng tác v< .K giCi quy t v3n . Không gi*ng nh? b5 lPp lFch trong Windows hay UNIX. bao gfm giá trF thanh ghi. :èn báo và chia s= d9 li u (Semaphore) Semaphore có thK giCi quy t v3n . Các tác v< khác dù có ?u tiên cao h n von phCi ch: . n giCn: Chúng nhìn vào m. m5t s* khác sZ d<ng phân chia th:i gian (time-slice) giGa các tác v< .?Bc th&c hi n. t& ?u tiên. N u m5t tác v< .4.c ?u tiên th3p h n sW khoá.c ?u tiên s•n sàng.2.c ?u tiên cao h n trong khi các tác v< ?u tiên th3p h n sW .Fnh m5t tác v< duy nh3t sW .ó.èn báo nh? tín hi u .?Bc tác v< nào khoá và s•n sàng thì RTOS cung c3p m5t tPp các hàm mà tác v< có thK gNi . n khi giCi phóng . N u t3t cC tác v< . n khi giCi phóng b5 xZ lý khvi tác v< ?u tiên cao h n.ang . N u hai tác v< cùng m.?Bc chia sl giGa các tác v<. B5 lPp lFch sW ph<c v< tác v< nào có m. ít th:i gian h n khi chúng ta sZ d<ng 21 . Ít nh3t m5t h th*ng giCi quy t v3n . Chúng ta có thK sZ d<ng .c ?u tiên.9 h th*ng c6a chúng ta.) trong chia sl dG li u.?Bc các s& ki n mà các tác v< này .) này. n lei. n khi nó bF khoá.K b5 lPp lFch nhPn bi t . 3.ó. vì vPy cIn có các bi n pháp trong RTOS . Tuy .

Bi n u chúng ta mu*n.úng .Bi trong m5t l:i gNi có thK không chính xác v i s* byte dG li u chúng ta mu*n ghi.ó.) này b2ng cách k th_a m.Bi n u có dG li u trong hàng .èn báo tr? c khi sZ d<ng.ó có thK gây ra treo ch? ng trình c6a chúng ta.Bi reng. Hàng Fi . HIu h t RTOS k t hBp c6a m5t s* dFch v< nh?: hàng các . các mailboxe. Mailbox 22 .Bi trong m5t lIn gNi s* l?Bng byte mang .áp . Mailboxes và Piles a.Bi reng. các pipe cho m<c . S* byte dG li u mà RTOS ghi vào hàng . V3n .Bi. b.?a ra.Bi khi nó . Và hàm này sW d tr ng thái khoá (block) n u hàng . HIu h t RTOS yêu cIu chúng ta phCi khdi t o hàng .Bi thông .[n. n khi có m5t tác v< .5ng . 4. GiG m5t . n u tác v< C có m.?Bc gNi là th.K chúng ta bi t ho t .ang sZ d<ng nhi)u .Iy.ã .c ?u tiên.èn báo ch\ làm vi c t*t khi chúng ta sZ d<ng chúng .5ng .Nc.ôi khi chúng ta quên nên gây ra lei r3t l n.ó chúng ta có thK .1.ích này.) d .) này nh?ng có m5t s* RTOS cho phép chúng ta ghi lên m5t hàng . Quên giCi phóng . N[m l3y quy)n sZ d<ng . thì vi c l3y quy)n sZ d<ng .èn báo khi sZ d<ng xong.K .èn báo mà C .i p.èn báo.c ?u tiên th3p . chúng ta phCi .c ?u tiên tác v< C .Bi. Message Queues. ghi vào hàng .èn báo trong th:i gian quá lâu.èn báo cho tác v< A. Nh?ng trong th&c t thì chúng ta gQp phCi m5t s* v3n .Bi tr? c khi chúng ta sZ d<ng chúng b2ng vi c gNi hàm cung c3p cho m<c .i)u .Queue Các tác v< phCi có khC nHng giao ti p v i nhau .èn báo.) nh?: Quên l3y quy)n sZ d<ng . R3t nhi)u RTOS sZ d<ng m5t hàm .èn báo lei. M5t s* RTOS giCi quy t v3n .ây là . .K . N u chúng ta c* ghi vào hàng . .) .èn báo còn ph< thu5c vào các . R3t nhi)u RTOS không m)m dlo v) v3n .èn báo và phCi nh?:ng quy)n sZ d<ng b5 xZ lý cho tác v< B có quy)n ?u tiên trung bình.ng trong h th*ng nhúng th:i gian th&c c6a chúng ta. RTOS sW trC l i m5t thông báo lei .Fnh danh hàng .èn báo khác.ng c0a RTOS thCDng m*i 4. HIu h t các RTOS cho phép ta sZ d<ng nhi)u hàng .ó bF hvng hoQc là ho t .ích này.K ch y và giCi phóng . n khi nó chi m quy)n sZ d<ng b5 xZ lý.Bi .Fnh c6a các dFch v< này ph< thu5c vào RTOS.ang n[m giG.5ng và . chúng t m th:i nâng m. Tính nHng xác .ó phCi bF khoá cho . Chúng ta thêm m5t s* thông s* . M5t s* h th*ng cho phép chúng ta c3p phát b5 nh mà RTOS sW quCn lý nh? m5t hàng . N u chúng ta .) này có thK vi ph m th:i gian .ó . nh?ng C không thK giCi phóng cho . Các dNch vO mQ r. t& ?u tiên .Bi và sW trC ra m5t lei n u hàng .Co ng?Bc (Priority Inversion). M5t v3n .Nc dG li u khvi hàng .H th i gian th c .Nc h? ng don mà RTOS .K k t hBp các ho t . V3n . n b2ng m5t con trv hàm.Nc t_ m5t hàng .K chia sl dG li u. Và m5t tác v< có quy)n ?u tiên cao là A mu*n sZ d<ng .Bi và t_ .ang giG .

Nc 14 byte t_ pipe.Nc t_ chúng… Nh?ng trong mei RTOS chúng cpng có nhGng . ây là m5t s* kinh nghi m khi sZ d<ng chúng: + HIu h t RTOS không gi i h n tác v< nào có thK . mailbox hoQc pipe sW gây ra m5t s& phá hu‘ trong phIn m)m nhúng. Các thông .i p là c* . + Trong m5t s* RTOS. Ví d< m5t tác v< ghi vào m5t s* nguyên và tác v< khác .ó n u task C .Cm bCo r2ng các tác v< .5 dài thông .i p nào.Iu tiên mà task B .iKm riêng: + M5t s* RTOS cho phép chính xác s* l?Bng thông .2. + Trong m5t s* RTOS. pipe sW . Khi mailbox không cIn thi t nGa thì nó sW .?Bc 11 byte c6a task A . mailbox hoQc pipe là cách .i p trong t3t cC các mailbox trong h th*ng.i p v i .i p .?Bc .i p trong mei mailbox là không bF gi i h n.ã ghi. .iKm.K t o. t& chúng .Qc . sau .ã ghi c5ng v i 3 byte .Qc . pipe có thK làm v3n .Cm bCo r2ng dG li u . chúng ta có thK ?u tiên các thông .K giCi phóng b5 nh . mailbox.i p ?u tiên cao h n sW .K t o ra chia sl dG li u.) chia sl dG li u giGa các tác v< trd lên dn dàng h n nh?ng nó cpng r3t dn gây ra lei trong h th*ng c6a chúng ta. pipe vì vPy chúng ta phCi . d.?Bc ghi vào mailbox.Nc và ghi vào mailbox và có lW các hàm này sW kiKm tra xem mailbox có ch.Iy khi . Chúng ta tránh dùng hàm malloc và free.?Bc hu‘ . + ChuyKn con trv t_ m5t tác v< này t i tác v< khác thông qua m5t queue.Nc và ghi t i pipe.a .i p trong mailbox.i p có ?u tiên th3p h n.Nc và coi nó m5t con trv.Nc tr? c các thông . c.?Bc ghi t i mailbox. . s* l?Bng c6a thông .úng v i tác v< . RTOS có thK t o chúng. 4.H th i gian th c Nói chung.Iu .ó các thông .Nc nó. Trong các RTOS thì mailbox có nhGng . + Pipe trong m5t s* RTOS là toàn b5 h? ng byte: N u task A ghi 11 byte t i pipe và sau . mailbox là gi*ng hàng .?Bc sZ d<ng là chính xác t i mei th:i . không ph< thu5c vào th. + RTOS không . mailbox sW . ghi lên chúng. M5t thông . Pipe Các pipe cpng r3t gi*ng hàng .Fnh RTOS có các hàm .?Bc hay không b3t kh m5t thông . Ch\ có m5t gi i h n là t9ng s* thông .iKm riêng: + M5t s* RTOS cho phép chúng ta ghi thông .?Bc ghi vào trong queue.?Bc .Bi. + M5t s* RTOS sZ d<ng hàm th? vi n chubn C là fread và fwrite .Fnh). mailbox.Bi.ó task B ghi 19 byte t i pipe. ghi vào queue.i p khác ch\ có thK ghi t i mailbox khi thông . con s* này chúng ta có thK chNn khi t o mailbox.i p trong m5t mailbox t i m5t th:i .i p trong mei mailbox. MQc . Ch*c nJng b 1nh th i (Timer Functions) 23 . mailbox.Nc.i p .Nc.iKm. mailbox. m5t s* khác thì ch\ cho phép m5t thông . SH d ng queue. pipe MQc dù queue.K . + Ch y ra ngoài không gian queue.5 dài tuh ý lên trên pipe (không gi*ng nh? mailbox và queue . nó sW nhPn .

M5t s* ..?Bc giCi phóng.iKm nh?ng s& thPt là chúng cho phép chúng ta có thK gZi dG li u thông qua m5t hàng . + Ch? ng trình c6a chúng ta có thK .K thi t lPp l i m5t s& ki n sau khi nó .?Bc chuyKn .Bi.èn báo. không nhi)u thông tin có thK thông qua m5t semaphore. t& ?u tiên khi s& ki n xCy ra.Pp c6a b5 .Bi t i m5t th:i .c nhanh nh3t và .3. S& d<ng các s& ki n thuPn lBi h n semaphore d che: m5t tác v< .ó có thK khoá l:i gNi.Event M5t dFch v< khác c6a RTOS .òi hvi các tác v< phIn m)m c6a chúng ta phCi t& làm. hàng .Fnh kh và . không .Bi m5t hay nhi)u s& ki n trong cùng th:i gian trong khi nó ch\ . n vF th:i gian xác .c t p h n semaphore nh?ng l i tiêu t*n nhi)u th:i gian b5 xZ lý h n semaphore.Bi hoQc mailbox khi các hàng . Tuy nhiên.Bi trên m5t hàng .Bi và mailbox reng. B5 .i)u hành th:i gian th&c khác nhau .K: + M5t tác v< có thK khoá chính bCn thân nó sau m5t s* . n vF th:i gian c6a h th*ng (System Tick).Fnh th:i này ng[t m5t cách .Fnh sau m5t s* .Qc .iKm riêng: + Semaphore là ph? ng th.èn báo.Bi các s& 24 .i p .Fnh th:i. 4. Chúng ta sZ d<ng các queue.Fnh. + RTOS mQc .Fnh hình thành m5t nhóm các s& ki n và các tác v< . Các hàm ngMt trong môi tr ng RTOS Các hàm ng[t trong hIu h t các môi tr?:ng RTOS phCi tuân theo hai quy t[c. n vF th:i gian c6a h th*ng khi nó . thi t lPp l i và có thK có các tác v< khác nhau cùng .H th i gian th c HIu h t các RTOS . Nh?ng chúng có m5t s* .?Bc sZ d<ng cho các dFch v< th:i gian c6a RTOS. S& b3t lBi là khi . + Các h . n vF th:i gian c6a h th*ng. n giCn nh3t. semaphore.Bi s& ki n .5ng.Bi cho b3t kh tPp con nào c6a nhóm s& ki n xCy ra.ã xCy ra và các tác v< . Ch\ m5t bit thông .Bi m5t .?a ra là quCn lý các s& ki n bên trong h th*ng.Nc và ghi thông . Các s ki n .iKm c6a s& ki n trong các RTOS là: + Nhi)u h n m5t tác v< có thK cùng bF khoá . Mailboxe và pipe có cùng . Cho dù tác v< ch\ .Nc t_ các hàng .?Bc giCi phóng.Bi m5t semaphore.K thông báo semaphore . . Bdi vPy th6 t<c ng[t không sZ d<ng .i)u khiKn RTOS gNi m5t hàm xác .Bi làm nó linh ho t h n m5t s& ki n. và các s& ki n cho vi c giao ti p giGa 2 tác v< hoQc giGa m5t ng[t và m5t tác v<.4.Qc . M5t s* RTOS thi t lPp l i các s& ki n m5t cách t& . pipe.?Bc gNi là m5t . KhoCng th:i gian giGa các ng[t . không .Bi cho m5t s& ki n.Qc . + Hàng .iKm v i queue. RTOS sW giCi phóng t3t cC chúng và th&c hi n chúng theo th. Mei s& ki n c bCn là m5t c: boolean mà các tác v< có thK thi t lPp. + M5t tác v< sW bF gi i h n bao nhiêu .i p sW chi m nhi)u th:i gian b5 xZ lý và r3t dn m[c phCi lei trong ch? ng trình c6a chúng ta.)u duy trì nhFp .?Bc gNi b3t kh hàm RTOS nào mà nhGng hàm .?a ra các cách khác nhau . + S& ki n là ít ph.i)u này không áp d<ng cho mã c6a tác v<: Quy t[c 1: M5t hàm ng[t không . mailbox. 4. m5t s* khác .Bi cho phép chúng ta gZi m5t s* l?Bng l n thông tin t_ tác v< này t i tác v< khác. HIu h t các RTOS th?:ng sZ d<ng dFch v< th:i gian .ó sW ..Bi nó.

thì tác v< .Bi cho các s& ki n: ng[t..ng . Quy t[c 2: M5t hàm ng[t có thK không gNi b3t kh hàm RTOS nào nhGng hàm có thK gây ra cho RTOS chuyKn t i ch y các tác v< tr_ khi RTOS bi t .ang th&c hi n hàm ng[t. So sánh RTX Full và RTX Tiny Mô tC S* tác v< RTX51 Full RTX51 Tiny 256.c t p và có gi i h n chính xác v) th:i gian . Hàm os_wait c6a RTX51 có thK . Tuy nhiên ch? ng trình sZ d<ng RTX51 Tiny có thK truy nhPp sZ d<ng b5 nh ngoài. i 19 tác v< ho t 16 . tín hi u t_ tác v< hoQc ng[t.H th i gian th c ki n.5ng RAM yêu cIu 40.òi Timer 0 hoQc Timer 1 Timer 0 hvi fng hf h 1000…40000 chu kh 1000…65535 chu kh 25 . RTX51 có các công c< r3t m nh . thPm chí tác v< này có quy)n ?u tiên cao nh3t.K quCn lý các tác v<. RTX51 Tiny là m5t tPp con c6a RTX51 Full. và hàm ng[t có thK không hoàn thành sau m5t th:i gian dài..i p sZ d<ng m5t h th*ng mailbox và các semaphore. hIu h t các hàm ng[t phCi ch y .?Bc thi t k cho các phIn m)m có . N u th6 t<c ng[t phá vw quy t[c này thì RTOS có thK chuyKn vi c . RTX51 là m5t h th*ng . vì vPy khoá t3t cC các ng[t có m.ang ch y khi ng[t xCy ra sW mãi bF khoá.60 byte DATA 7 byte DATA 20.i6u hành th i gian th c 5.K hoàn thành vi c thi t lPp l i phIn c. n giCn . N u hàm ng[t gNi m5t hàm RTOS và bF khoá. timeout.i)u khiKn t_ hàm ng[t t i ch y m5t tác v< khác.Bi cho các s& ki n: timeout.ó là m5t hàm ng[t và không là m5t tác v< trong lúc . thông . chuyKn các thông .200 byte IDATA 3*(S* tác v<) IDATA c&c tiKu 650 byte XDATA Mã yêu cIu 6KB…8KB 900 byte PhIn c.c ?u tiên. Hàm os_wait c6a RTX51 có thK . RTX51-Real Time Operating System RTX51 là m5t h .K s•n sàng cho ng[t ti p theo.ng .1. c&c .. RTX51 Tiny dn dàng ch y trên m5t chip không có b5 nh dG li u ngoài.áp .t s& h . Ngoài ra. Có hai phiên bCn c6a RTX51: RTX51 Full cho phép th&c hi n cC chuyKn m ch xoay vòng và chuyKn tác v< v i 4 m. GiEi thi u m. he trB chuyKn các thông .i p t_ tác v< hoQc ng[t.i)u khiKn 8051. RTX51 chuyKn các tín hi u.i)u hành th:i gian th&c .5ng cùng v i các hàm ng[t m5t cách song song. RTX51 Tiny cho phép chuyKn m ch xoay vòng giGa các tác v<.a tác v< cho hN vi ..i p và có thK ho t .ng. semaphore.5 ph.5ng cùng v i các hàm ng[t m5t cách song song. có thK ho t . 5.c ?u tiên th3p h n và có thK là t3t cC các ng[t khác.

Không gi i h n Không he trB Không gi i h n Không he trB 16 s& ki n trên m5t tác T*i .a d ng trong c3u hình.100 Œsec 26 .ó.K .a 32.5ng các ngufn dG li u c6a h th*ng nh? CPU và b5 nh .5 KByte Yêu cIu phIn c.c t p và s& .Fnh th:i trên M5t b5 . dn dàng .c ?u tiên tác v< 1 . T*i .2. ARTX Kernel sZ d<ng lPp lFch linh . H .i)u khiKn hN ARM.Fnh th:i Không gi i h n Không he trB Yêu cIu v) RAM T*i thiKu 500 Byte 8 + 4 * S* byte c6a các tác v< Yêu cIu v) mã Ít h n 4 KByte Ít h n 1.H th i gian th c th*ng Th:i gian trn <50 chu kh ng[t Th:i chuyKn tác 70…100 chu kh (tác v< v< nhanh) 180…700 chu kh (chubn) ph< thu5c vào vi c n p stack H th*ng 8 mailboxes mailbox Pool b5 nh Lên t i 16 pool b5 nh Semaphores 8*1 bit 5.fng th:i th&c hi n nhi)u tác v<.òi hvi trong các . Thêm vào . So sánh ARTX và RTX Mô tC S* tác v< S* mailboxe S* semaphore S* tín hi u ARARM Kernel RTX166 Tiny T*i .ng d<ng mà . ARTX-Advanced Real Time Operating System <20 chu kh 100…700 chu kh ph< thu5c vào vi c n p stack Không mailbox Không có giá trF Không có giá trF ARTX Kernel là m5t h .ng M5t b5 .?a ra m5t s* cách giao ti p giGa các tác v<.i)u hành ARTX .255 Không he trB Th:i gian chuyKn ngG It h n 25Œsec 40 .a 32 v< S* b5 . i)u này th?:ng xuyên .a 256. ngôn ngG C cho phép chúng ta khai báo các tác v< dn dàng mà không cIn sZ d<ng các stack ph.K sZ d<ng và làm vi c cùng v i t3t cC các vi . ARTX Kernel là m5t RTOS t*t.ng d<ng nhúng th:i gian th&c.?Bc vi t b2ng vi c sZ d<ng các hàm chubn và b5 biên dich C cùng v i b5 biên dFch Keil™ CARM.i)u hành th:i gian th&c nó cho phép chúng ta t o .ng d<ng này có thK .Fnh th:i trên chip chip Các m.

5ng .?Bc thông qua vi c tinh 27 . Qc bi t v i phiên bCn V2. QNX Neutrino QNX Neutrino là chubn m&c cho các . hàng .c .5 chuyên môn hoá v) tính hi u quC. Ki n trúc microkernel T i tIng th3p nh3t. vi c th&c thi c6a QNX d&a ch6 y u vào mã C.H th i gian th c cCnh @20MHz.?Bc m.Bi. mailbox.*i t?Bng c bCn này. có tính nHng ?u tiên.3. 0 waitstates 5. b5 ph3t hi n lei có thK hiKn thF tên c6a nhGng .Qt tên t i mei .i p a.*i t?Bng. H n nGa. M5t s* nhà phát triKn cho r2ng microkernel nên .*i t?Bng . microkernel ch.4. Do . chúng ta có thK gán tên t i m5t tác v<. Nó là nhân h . QNX Neutrino là r3t m)m dlo. Nó có thK co giãn t i m5t kích th? c r3t nhv và cung c3p nhi)u tác v< ho t .ng d<ng c6a mình. Th:i gian giCi phóng 0.i)u hành th:i gian th&c có tính khC chuyKn cao. Nh?ng. OS là . m)m dlo.i)u khiKn lPp lFch th. t . 0 ws.i)u hành th:i gian th&c do J.ó. TC/OS ŒC/OS là nhân m5t h .6.?Bc trang bF phát triKn m ng di n r5ng .&ng m5t vài . Ngoài ra. .a tác v<. m5t nhóm s& ki n hay m5t vùng b5 nh .ng d<ng và hiKu thF nhGng thông tin . QNX Neutrino . V2.ng d<ng nhúng th:i gian th&c. Labrosse xây d&ng.K sZ d<ng cho nhi)u h th*ng nhúng. th:i gian th&c và .?Bc th&c thi hoàn toàn d trong mã assembly cho lý do kích th? c và hi u nHng.èn báo.*i t?Bng c6a nhân.a . n giCn v i hai y u t* c bCn sau: + Ki n trúc microkernel + Giao ti p liên quá trình d&a trên thông .Nc thông tin c3u hình c6a m5t .6 cho phép b5 sZa lei .?Bc xây d&ng t_ các .ó.K ph<c v< hàng trHm ng?:i dùng.ng d<ng nhúng th:i gian th&c.i p + fng b5 và chia sl dG li u giGa các tác v< + QuCn lý b5 nh + Các thi t bF vào ra + H th*ng file + M ng ŒC/OS he trB nhi)u b5 vi xZ lý và r3t gNn nh• . nhà cung c3p OS t? ng thích v i chubn th:i gian th&c POSIX-standard API. t .2 Œsec ng[t Ít h n 4 Œsec. tính module hoá và tính . và cho phép chúng ta nhanh chóng xem thông tin v) nhGng . các ti n trình. Phiên bCn ŒC/OS-II tHng c?:ng thêm khC nHng .fng th:i.ó. Các m<c tiêu kích th? c và hi u nHng . Ng?:i phát triKn có thK dn dàng tuh bi n OS cho phù hBp v i . t& ?u tiên và chuyKn ngG cCnh nhanh… t3t cC các thành phIn c bCn c6a m5t . T_ m5t c3u hình c bCn nh3t c6a m5t nhân nhv (microkernel) cùng v i m5t vài module nhv t i m5t h th*ng . ŒC/OS he trB các tính nHng sau: + B5 lPp lFch + Truy)n thông . .K thao tác v i chúng. 5.*i t?Bng c bCn và các hàm .

?Bc gNi bdi hàm MsgSend() và server .K ghép v i m5t ti n trình khác (ví d<: nó .?Bc th&c hi n trong khi b5 xZ lý th&c hi n m5t ti n trình khác có m. .?Bc hu‘ m5t cách t& .Iu th&c hi n c6a ti n trình t i m5t s* hàm trong không gian .t ti n trình (pthread_exit().NET_REPLY: Ti n trình .ang .INTERRUPT: Ti n trình bF khoá và . QNX Neutrino microkernel có nhân he trB các dFch v< sau: 1.SEM: Ti n trình . .a d ng.ang .ã ch3m d. .CONDVAR: Ti n trình bF khoá trên m5t bi n .RECEIVE: Ti n trình bF khoá .ã nhPn .:i c6a ti n trình S* l?Bng các ti n trình trong m5t xZ lý có thK r3t . Các .Fnh th:i 6. Truy)n thông . hoQc SignalKill()).?Bc mô tC nh? là d m5t trong hai tr ng thái "ready" hoQc "blocked.c vi t mã b2ng assembly.Bi m5t thông .REPLY: Ti n trình bF khoá . cùng v i các ti n trình là .RUNNING: Ti n trình .i p .t và .Fa ch\.?Bc ghép cùng m5t ti n trình khác.èn báo 8. MsgDeliverEvent().?Bc gNi bdi hàm pthread_condvar_wait()).?Bc t o và .ang .?Bc thông . . . Vi c t o ti n trình (pthread_create()) liên quan t i vi c c3p phát và khdi t o ngufn dG li u cIn thi t bên trong không gian .i p . .?Bc gNi bdi hàm nanosleep()). Các tín hi u 4.áp l i (ví d<: nó .Bi cho s& .?Bc m5t thông .DEAD: Ti n trình .?Bc gNi bdi hàm pthread_mutex_lock())." .5ng.JOIN: Ti n trình bF khoá .Bi cho m5t xung hoQc tín hi u t i vi c phân phát qua m ng (ví d<: nó . tr ng thái c6a nó nói chung có thK .èn báo giCi phóng (ví d<: nó . Các khoá lo i tr_ lon nhau (mutexes) Vòng .NANOSLEEP: Ti n trình .?Bc gNi bdi hàm InterruptWait()).Bi .Bi cho m5t .ó.Bi cho . . .Bi nhPn . Ch3m d. .Fa ch\ c6a xZ lý (ví d<: thread stack) và vi c b[t .ang .i p 3.?Bc th&c hi n bdi b5 xZ lý.ang .NET_SEND: Ti n trình .Bi cho m5t ng[t (ví d<: nó .?Bc gNi bdi hàm SyncSemWait()).?Bc gNi bdi hàm MsgReply*()).?Bc gNi bdi hàm MsgReceive()).i)u ki n (ví d<: nó .READY: Ti n trình . Các .ó).c ?u tiên cao h n hoQc b2ng ti n trình .i p (ví d<: nó .ang ng6 cho m5t khoCng th:i gian ng[n (ví d<: nó . Các b5 .H th i gian th c lNc các thuPt toán và c3u trúc dG li u h n là vi c t*i ?u thông qua m.?Bc gNi bdi hàm pthread_join()).fng hf 5.Bi . 28 . Khi m5t ti n trình th&c hi n.MUTEX: Ti n trình bF khoá trên m5t khoá lo i tr_ lon nhau (ví d<: nó .ang . . .áp l i t i vi c phân phát qua m ng (ví d<: nó . Các ti n trình 2. i)u khiKn các ng[t 7. pthread_cancel()) liên quan t i vi c d_ng ti n trình và ph<c hfi l i ngufn dG li u c6a ti n trình.?Bc gNi bdi hàm MsgSendPulse(). .

Giao ti p liên quá trình d&a trên vi c truy)n th*ng .ang . SIGSUSPEND: Ti n trình bF khoá .i p QNX là h .?Bc gNi bdi hàm sigsuspend()).?Bc gNi bdi hàm MsgSend() nh?ng server ch?a nhPn . WAITPAGE: Ti n trình .?Bc gNi bdi hàm sigwaitinfo()).Fa ch\ Co .Bi cho m5t không gian b5 nh Co .?Bc thông .i p là m5t gói các byte . Trong QNX Neutrino.ang .Bi cho tín hi u SIGCONT.5ng) . SIGWAITINFO: Ti n trình bF khoá . Bi t .c nHng .H th i gian th c .ang .Bi cho m5t tín hi u (ví d<: nó . STOPPED: Ti n trình bF khoá . QNX cung c3p ch.ang .SEND: Ti n trình là bF khoá ch: thông .?Bc c3p phát. t& ?u tiên c6a chúng.?Bc tr ng thái c6a chúng và th.ó.Bi cho không phCi m5t s* nguyên (ví d<: d3u phby .i p.Bi cho m5t ti n trình con k t thúc .i p liên quá trình.i p t_ m5t ti n trình t i ti n trình khác.Bi cho m5t tín hi u (ví d<: nó . Ti n trình phCi thay .9i tr ng thái c6a nó khi truy)n.i t_ ti n trình này . STACK: Ti n trình .?Bc c3p phát cho stack c6a ti n trình .i p. b.Bi cho m5t không gian . Các thuPt toán lPp lFch: QNX Neutrino cung c3p các thuPt toán lPp lFch sau: * Vào tr? c ra tr? c (FIFO) * Xoay vòng (round-robin) * LPp lFch r:i r c (sporadic) 29 . microkerel có thK lPp lFch t3t cC các thông .i p). nhPn và .i)u hành th? ng m i . n ti n trình khác.K truy)n thông .i p g6i (ví d<: nó . WAITCTX: Ti n trình . m5t thông .?Bc truy)n .?Bc t o bdi chính nó (ví d<: nó .K trd thành có giá trF cho vi c sZ d<ng.áp l i thông .Iu tiên sZ d<ng truy)n thông .fng b5 .?Bc gNi bdi hàm ThreadCreate()). WAITTHREAD: Ti n trình .

i)u này . Tác v< chu kh (period) và không chu kh (aperiod) Các tác v< phCi th&c hi n lQp l i m5t cách . Các lo i tác v< khác thì .ây v i 3 tác v< và giCn .?Bc mô tC d s .?Bc gNi là các tác v< có chu kh và p .iKm nh?ng v i s& chuyKn .a nhi m (Multitasking) và .?Bc gNi là tác v< không chu kh.9i m5t cách r3t nhanh giGa các tác v< c6a m5t h .3ng th i (Concurrency) Th?:ng thì các b5 vi xZ lý ch\ có thK th&c hi n m5t tác v< duy nh3t trong mNt th:i .Qn theo nhGng khoCng th:i gian p .fng th:i v i nhau.iKm nh?ng v i s& chuyKn .H th i gian th c CH NG 3 : KT THUT LUP TRÌNH TH I GIAN TH!C MOc .f d? i .f th:i gian c6a chúng. i)u này .?Bc mô tC d s .fng th:i v i nhau.i)u hành . .ây v i 3 tác v< và giCn .9i m5t cách r3t nhanh giGa các tác v< c6a m5t h .f d? i .-c bi t t^p trung vào kc thu^t l^p lNch và kc thu^t x> lý ngjt trong các h th i gian th c 1 Tác vO và quá trình (process) Tác v< (task) ? Là m5t công vi c cIn th&c thi tham gia trong h th*ng Quá trình (process) là m5t dinn bi n th&c thi m5t tác v< c6a h th*ng. ôi khi ng?:i ta von dùng lon hai khái ni m này và không phân bi t.?Bc ch y .)u .ích : ChCDng này giEi thi u các kc thu^t x> lý cD bPn trong h th i gian th c.f th:i gian c6a chúng.?Bc ch y . 2. Th?:ng thì các b5 vi xZ lý ch\ có thK th&c hi n m5t tác v< duy nh3t trong mNt th:i . 2 L^p lNch (Scheduling) T i sao phCi lPp lFch? 30 .i)u hành .a nhi m làm cho chúng d?:ng nh? .a nhi m làm cho chúng d?:ng nh? . .?Bc gNi là chu kh c6a tác v<.

Iu th&c thi ri (release time): Th:i .Fnh và .i)u ph*i quá trình/tác v< th&c hi n.ã s•n sàng và có thK b[t .Bi quá lâu) Ví d< v) m5t lFch th&c hi n 2 tác v< .S& công b2ng và th:i gian ch: . LPp lFch phCi nh2m thoC mãn hay .Th:i gian .K quy t .?Bc c ch th&c thi chia sl tài nguyên hGu h n và thoC mãn yêu cIu th:i gian th&c. • Th:i gian tính toán/th&c thi ci (Computation time): Là khoCng th:i gian cIn thi t . Gi[n X th c hi n c\a m t tác v Ti Trên c sd .ng (response time) .Iu. s& ph< thu5c lon nhau hay th:i gian th&c hi n.ó tác v< hoàn thành vi c th&c hi n c6a mình.?Bc th&c hi n hoàn toàn.ng .*i v i b3t kh b5 lPp lFch th:i gian th&c nào.ó b5 lPp lFch sW phCi th&c hi n bài toán t*i ?u v): .Iu vi c th&c hi n c6a mình.f phân b* th:i gian th&c hi n . • Th:i .H th i gian th c K .iKm b[t .iKm mà t i .iKm b[t .ó tác v< b[t . • Th:i . Có m5t s* thông tin v) tác v< luôn phCi quan tâm .i)u ki n ràng bu5c cho tr? c.iKm s m nh3t khi vi c xZ lý .iKm hoàn thành fi (finishing time): Là th:i .a nhi m hBp lý v i các . LPp lFch = tìm ki m m5t giCn .?Bc s& thoC hi p giGa các ràng bu5c v) tài nguyên. bao gfm: • Th:i gian xu3t hi n ai (arrival time): Khi s& ki n xCy ra và tác v< t? ng .iKm k t thúc di (due time): Th:i .áp . 2.Iu th&c hi n si (starting time): Là th:i .?Bc mô tC nh? sau Gi[n X l8p l1ch th c hi n 2 tác v 31 . • Th:i . n vF th:igian) .?Bc kích ho t.iKm mà t i . • Th:i gian r6i ro/ x3u nh3t wi (worst case time): khoCng th:i gian th&c hi n lâu nh3t có thK xCy ra • Th:i .1 Các khái ni m LPp lFch là m5t phép th&c hi n phân b9 và gán quy trình th&c thi các tác v< cho b5 xZ lý sao cho mei tác v< .Cm bCo . Hay nói cách khác là b5 lPp lFch phCi xZ lý .iKm mà tác v< phCi hoàn thành.Bi (các tác v< không phCi ch: .Hi u su3t th&c hi n (s* l?Bng công vi c th&c hi n xong trong m5t .K b5 xZ lý th&c hi n xong nhi m v< c6a mình mà không bF ng[t. t t i .

iKm thi t k và .Fnh trong su*t quá trình ho t . Vi c lPp lFch tr? c có m5t s* các ?u .deadline…) và .Iu th&c hi n: 1 s = 0 . Th:i gian b[t .9i lFch trình th&c hi n c6a h th*ng trong quá trình th&c hi n o òi hvi phCi có thông tin th:i gian chính xác v) các tác v< .K tính toán lPp lFch 32 . 2 L =1.?Bc nh? sau: Th:i gian tính toán 1 C = 9 và 2 C = 12 .?Bc th&c hi n d&a trên các hiKu bi t hoQc d& báo v) các s& ki n tác v< th&c hi n trong h th*ng (th:i .áp . 2 X =11.?Bc th&c hi n hoàn thành mei khi th&c thi.iKm: o Không thK thay .iKm hoàn thành: 1 f = 18 . vì vPy th:i gian .iKm xu3t hi n.?Bc .Fnh t i th:i .2 Các phCDng pháp l^p lNch phI biKn Tuh thu5c vào lo i hình tác v<.K th&c hi n tác v< (Laxity) i i i i X =d ›a›C: 1 X = 13.ng cho các s& ki n khác có thK lâu.?Bc áp d<ng c* .?Bc quy t . L^p lNch offline/tanh: Vi c lPp lFch . Các tác v< sW . L^p lNch preemptive: Ph? ng pháp này kh[c ph<c nh?Bc .5ng c6a h th*ng.Cm bCo Nh?Bc .áp .K ph<c v< th&c thi các tác v< khác. 2. ng?:i ta ra hai ph? ng pháp lPp lFch là có chu kh và không có chu kh.Cm bCo th:i gian . 2 f = 28 .iKm c6a lPp lFch nonpreemptive khi th:i gian th&c thi các tác v< lâu. C ch lPp lFch này cho phép .ng yêu cIu th:i gian th&c có thK . Th:i .ng cho các s& ki n và tác v< ng[n và nhanh h n.iKm k t thúc và deadline (Lateness) L=f ›d: 1 L = ›4.Cm bCo các tác v< .?Bc l&a chNn th&c thi trong khoCng th:i gian là h2ng s* • KhC nHng .áp .?Bc bi t tr? c và . L^p lNch non-preemptive: Ph? ng pháp này . KhoCng th:i gian chênh l ch th:i . KhoCng th:i gian rei/d? th_a giGa th:i gian cho phép th&c hi n và th:i gian cIn . 2 s = 6 .?Bc th&c hi n và có thK bF ng[t giGa ch_ng . th:i gian th&c hi n.H th i gian th c Trong tr?:ng hBp c6a ví d< này các thông s* v) th:i gian th&c hi n c6a các tác v< tính .iKm sau: • Tác v< ti p theo có thK .

?Bc.a nhi m v i 2 tác v<.i)u ki n ràng bu5c . L^p lNch t^p trung ho-c phân tán: Vi c lPp lFch .?Bc th&c hi n áp d<ng cho các tác v< th&c thi bdi m5t (tPp trung) hoQc nhi)u b5 xZ lý (phân tán).Cm nhi m bdi m5t (mono) hoQc nhi)u b5 vi xZ lý (multi).c t p v) thuPt toán cIn xZ lý khi lPp lFch mà ng?:i ta quy t .i)u khiKn theo c ch ng[t th?:ng th&c thi c ch lPp lFch nonpreemtive .?Bc gNi là t*i ?u n u nó có thK tìm ra .f lPp lFch là không xác .i)u ki n ràng bu5c .?Bc m5t lFch .5 ph.iKm xu3t hi n yêu cIu th&c thi c6a các tác v< không .H th i gian th c M5t thuPt toán lPp lFch tLnh .Fnh phCi sZ d<ng ph? ng pháp lPp lFch mono hay multi-processor. Tuh thu5c vào .ã cho b3t kK khi nào mà thuPt toán tLnh không tìm ra .5ng trong khi lo i h t nhân vPn hành theo quá trình l i th&c thi theo c ch preemptive .9i . L^p lNch Mono hay Multi-processor: Nhi m v< lPp lFch và th&c thi .5ng theo quá trình th&c hi n.ã cho trong khi m5t thuPt toán tLnh khác cpng tìm . Ví d< v) lPp lFch cho h th*ng .Fnh tr? c và thay .?Bc gNi là t*i ?u n u nó luôn luôn có thK tìm .5ng. Các h t nhân .ng: B5 xZ lý th&c hi n vi c lPp lFch trong quá trình th&c thi d&a trên c sd các thông tin ho t . Các thuPt toán lPp lFch tLnh t*i ?u không phCi là t*i ?u trong h th*ng .i)u khiKn h th*ng thoC mãn các ràng bu5c th:i gian .?Bc gNi là khC lPp lFch n u tfn t i ít nh3t m5t c ch lFch trình th&c hi n thoC mãn các tác v< và .i)u ph*i .?Bc m5t lFch .5ng. L^p lNch online/.i)u ph*i thoC mãn các ràng bu5c ..5ng hi n hành c6a h th*ng.5ng .ó. Tác v< 1 th&c hi n theo chu kh và tác v< 2 th&c hi n không theo chu kh v i th:i gian th&c thi l n h n th:i gian chu kh lQp l i c6a tác v< 1. 33 . M5t thuPt toán lPp lFch . Tính khC lPp lFch: M5t h th*ng v i m5t tPp các tác v< và các .?Bc bi t tr? c.?Bc m5t l:i giCi.?Bc . Không tfn t i m5t l:i giCi t*i ?u cho vi c lPp lFch trong h th*ng nhi)u b5 xZ lý n u th:i . S .?Bc .

c ?u tiên cao.5ng là . nó không phù hBp cho các h th*ng mà he trB nhi)u ng?:i sZ d<ng vì có m5t s& bi n .K . Tuy nhiên. V3n .K luôn .) chính gQp phCi trong c ch lPp lFch này là không bi t tr? c .?Bc bi t t i nhi)u nh3t áp d<ng cho các tác v< hay quá trình .5c quy)n b5 xZ lý trong th:i gian dài và có thK gây ra s& trn b3t th?:ng trong quá trình th&c hi n c6a các tác v< phCi ch: .K xZ lý . Shortest Job First -SJF Trong c ch lPp lFch này tác v< có th:i gian th&c thi ng[n nh3t sW có quy)n ?u tiên cao nh3t và sW .ng cho các tr?:ng hBp các deadline thay .i)u ki n ?u tiên .?Bc ph<c v< tr? c. Tuy nhiên RM he trB yêu cIu h th*ng không t*t.9i (4) Th:i gian chuyKn .?Bc áp d<ng cho các tPp tác v< chu kh và cpng có thK md r5ng .H th i gian th c 2.?Bc 100% cho t3t cC các tPp tác v<.oán và . n tr? c .K .c ?u tiên gán cho mei tác v< trong quá trình ho t .?Bc th&c thi theo nguyên lý gán m. œu .?Bc .Cm bCo . t& mà nó xu3t hi n yêu cIu và cho .9i khác nhau theo chu kh.9i b3t kh lúc nào theo th:i gian.ng .9i thì RM sW là ph? ng pháp lPp lFch cho phép ng[t và m. EDF có thK .c ?u tiên cho các tác v< d&a trên chu kh c6a chúng.?Bc xZ lý. H n nGa m.9i l n v) th:i gian trung bình mà m5t quá trình hay tác v< phCi ch: . C ch lPp lFch này có thK áp d<ng cho cC lo i ng[t . C ch lPp lFch này thu5c lo i không ng[t .?Bc. Tác v< có deadline gIn nh3t sW có m.5ng.?Bc và có ?u .5 chính xác.Bi .?Bc th:i gian th&c thi c6a các tác v< tham gia trong ch? ng trình và thông th?:ng phCi áp d<ng c ch tiên .áp . Rate monotonic (RM): Ph? ng pháp lPp lich RM có lW hi n này là thuPt toán .Fnh.c ?u tiên c* .5c lPp.5ng vì vPy chu kh c6a tác v< có thK thay .9i ngG cCnh th&c hi n là r3t nhv và có thK bv qua ThuPt toán RM . Earliest-deadline-first (EDF) Nh? .iKm là dn dàng th&c thi.?Bc xZ lý theo th. Theo nguyên lý này v i các tác v< chu kh không thay .3 Kc thu^t l^p lNch FCFS Trong c ch lPp lFch .?Bc và không ng[t . n khi hoàn thành.ánh giá d&a vào kinh nghi m v) các tác v< th&c thi trong h th*ng. Ph? ng pháp này d&a trên m5t s* giC thi t sau: (1) T3t cC các tác v< tham gia h th*ng phCi có deadline kiKu chu kh (2) T3t cC các tác v< .?Bc ph< v< tr? c thì các quá tình .Bi khác.c ?u tiên cao nh3t và các tác v< có deadline xa nh3t sW nhPn m. i)u này ch[c ch[n r3t khó .?Bc nên có hi n t?Bng chi m hGu .úng tên gNi c6a ph? ng pháp.c ?u tiên th3p nh3t.?Bc gán m.iKm n9i bPt c6a ph? ng pháp này là gi i h n có thK lPp lFch . Tác v< nào có chu kh nhv thì sW có . H n nGa do vi c xZ lý không ng[t .5c lPp v i nhau (3) Th:i gian th&c hi n c6a các tác v< bi t tr? c và không . 34 . thuPt toán lPp lich theo ph? ng pháp này sZ d<ng deadline c6a tác v< hay nh? .i)u ph*i ho t .áp .

Có thK chNn khoCng th:i gian .?Bc và . Round Robin ây là m5t c ch lPp lFch phân b9 .5ng và dn .5 sZ d<ng trung bình nhv h n 100% nhGng von có thK trong m5t tình hu*ng nào . KhoCng th:i gian ph<c v< cho mei tác v< trong quá trình là m5t s& thoC hi p giGa th:i gian th&c hi n c6a các tác v< và th:i gian th&c hi n m5t chu trình.áp .)u .H th i gian th c V3n .5. ây .Fnh và lQp l i theo m5t chu trình xuyên su*t toàn b5 các tác v< tham gia trong h th*ng.?Bc tác v< nào trong h th*ng có thK không .úng.9i ngG cCnh cho mei tác v< sau mei chu trình th&c hi n.ó von v?Bt qua khC nHng . n giCn.i)u khiKn .Cm bCo th&c thi .?Bc th&c hi n thành công trong quá trình quá .3ng b.?Bc xem là c ch lPp lFch gán quy)n ?u tiên . Mei m5t tác v< .ó r3t nhv và .ó quá nhv có thK làm m3t tính hi u quC th&c hi n toàn h th*ng vì cIn nhi)u th:i gian trong vi c chuyKn .Cm bCo .ôi lúc chúng ta không nhPn .c .?Bc xZ lý/ph<c v< trong m5t khoCng th:i gian nh3t .Cm bCo yêu cIu th&c thi .ang có s& phân b9 th&c hi n trong h th*ng. t .) chính c6a thuPt toán lPp lich EDF là không thK . Trong nhi)u tr?:ng hBp mQc dù m.c là sW có tác v< không .ng c6a h th*ng t.5 h th*ng bF quá tCi. Minimum Laxity first (MLF) C ch lPp lFch này sW ?u tiên tác v< nào còn ít th:i gian còn l i .K th&c hi n nh3t tr? c khi nó phCi k t thúc .úng.?Bc th&c thi trong tình hu*ng quá .K bi t tác v< nào bF lei không th&c hi n thành công hoQc tác v< nào .Qn. 3. 3 Truy6n thông và . ng[t .K .1 Semaphore 35 . Trong nhGng tr?:ng hBp nh? vPy cIn phCi .?Bc ra r2ng .?Bc s& t*i ?u v) hi u su3t th&c hi n và s& công b2ng trong h th*ng. Tuy nhiên n u th:i gian .?Bc .

5ng c bCn nh? sau: Khi m5t lufng (thread) gNi wait(): N u semaphore .K lo i tr_ khC nHng xung .5ng c6a h th*ng.Bi và không bF khoá n u không có lufng nào trong hàng .?Bc md signal(semaphore): tHng và cho phép thêm m5t lufng m i .iKm.5t trong ho t .?Bc th&c thi sW có m5t s* tình hu*ng ho t .fng th:i c6a nhi)u tác v<.?Bc quy t .Bi gfm các tác v< cIn . Counting semaphore o i)u khiKn tài nguyên mà có thK ph<c v< cùng m5t lúc nhi)u tác v< hoQc m5t ngufn tài nguyên cho phép ph<c v< m5t s* nh3t .Fnh các tác v< không .5t trong quá trình chia sl tài nguyên c6a các tác v< trong ho t .5ng ph*i hBp cùng v i semaphore có m5t hàng .?Bc md signal() sW md semaphore: n u m5t lufng . m N c6a Semaphore Th&c ch3t mutex semaphore là m5t d ng . o Nhi)u lufng có thK truy)n Semaphore o S* l?Bng lufng .fng b5 và ho t .fng th:i.5ng .ó sW bF khoá và phCi n2m ch: trong hàng .?Bc nh và dành cho lufng ti p theo Các lo*i Semaphore Mutex semaphore o Cho phép .Bi và tín hi u signal sW .ang bF .óng thì nhánh . m N=1.H th i gian th c Semaphores là m5t c3u trúc dG li u .5ng truy nhPp .?Bc gia nhPp và ti p t<c th&c thi N u semaphore .5ng chính nh? sau: wait(semaphore): giCm và khoá cho t i khi semaphore .ó sW .Qc bi t c6a counting semaphore v i bi n .5ng. Th&c thi Semaphore 36 .Fnh bdi bi n .Bi cho t i khi nào semaphore .?Bc tham gia ho t . n ll vào tài nguyên chia sl c6a h th*ng o Cm bCo lo i tr_ xung .Fnh nghLa .?Bc . Trong ho t .i)u khiKn ho t . Semaphores he trB hai ho t .5ng truy nhPp . và ch\ có m5t tác v< .?Bc md thì lufng .ang n2m trong hàng .?Bc th&c thi t i mei th:i .

fng th:i cho cC vi c lo i tr_ xung . Monitor là m5t modul .fng b5 .âu trong h th*ng khó kiKm soát .K giCi quy t b3t kh m5t bài toán hay v3n . ?Bc sZ d<ng .óng gói Các c3u trúc dG li u . 37 .?Bc chia sl Các th6 t<c ho t .i)u khiKn.5ng c6a h th*ng.fng b5 truy)n th*ng nào Tuy nhiên chúng có m5t s* nh?Bc .Bi.5t Ch\ có m5t lufng có thK th&c thi b3t kh th6 t<c nào t i mei m5t th:i .K .iKm (lufng trong monitor) N u có m5t lufng .fng b5 cho các tác v< (scheduling) 3.i)u khiKn ho t .5ng .?Bc sZ d<ng . do . Nh^n xét: Semaphores có thK . Monitor .) .2 Monitor Monitor là m5t ngôn ngG lPp trình .fng b5 hai quá trình t o và sZ d<ng h ng m<c thông qua b5 . Nó .Cm bCo lo i tr_ xung .5ng .?Bc nó .Chúng ch6 y u sZ d<ng các bi n toàn c<c trong vi c .i)u khiKn vi c truy nhPp vào vùng dG li u chia sl trong ho t . m trung gian.Không có s& liên k t chQt chW giGa semaphore và dG li u mà .fng th:i mà có thK kích ho t các th6 t<c trong ho t .fng b5 nên có thK truy nhPp b3t kh .5t (mutual exclusion) và ho t .ang th&c thi bên trong m5t monitor nó sW khoá các lufng khác mu*n vào.?Bc xây d&ng .ó monitor cpng phCi có m5t hàng .iKm .?Bc b9 sung vào trong b5 biên dFch và th&c thi khi ch y ch? ng trình.Cm bCo r2ng các lufng truy nhPp vào dG li u thông qua các th6 t<c t? ng tác theo nhGng cách hBp pháp và có kiKm soát.H th i gian th c SZ d<ng Semaphore trong vi c .5ng h th*ng Monitor có thK bCo v dG li u khvi s& truy nhPp không có c3u trúc. Mã ch? ng trình .5ng thao tác trên các c3u trúc dG li u chia sl fng b5 các lufng th&c thi .

ng. Sau khi hoàn thành.?Bc mô tC nh? trong hình 38 . *i v i b5 xZ lý ng[t. Chu trình th c hi n ngMt Ví d v ph_n c*ng xH lý ngMt Th6 t<c kích ho t m5t tác v< ph<c v< s& ki n ng[t .?Bc gNi là tín hi u ng[t.5ng c6a h th*ng làm h th*ng ng_ng và chuyKn h? ng th&c thi . nó sW phCi th&c hi n hai nhi m v< chính .ón nhPn dG li u và sW kích ho t s& ki n ng[t CPU mei khi có dG li u xu3t hi n . Hình 5 6 mô tC m5t chu trình c bCn th&c hi n ng[t trong các h VXL/V K.ng .iKm mà nó bF ng[t.?Bc kích ho t. VXL luôn phCi ch: .Bi th:i .5ng mà nó .iKm . CPU ph<c hfi l i tr ng thái c6a h th*ng và trd l i ti p t<c th&c hi n ch? ng trình t_ th:i .Fnh có s& ki n ng[t (2) nhPn d ng s& ki n ng[t tr? c khi tác v< ph<c v< ng[t t? ng .K kFp th:i ghi dG li u vào b5 nh .ó là: (1) Xác .ang th&c thi và chuyKn sang th&c hi n m5t công vi c khác ph<c v< cho s& ki n kích ho t ng[t t? ng .H th i gian th c 4 X> lý ngjt Tín hi u .i)u khiKn b5 VXL kích ho t bdi m5t s& ki n tham gia trong quá trình ho t . Ví d< nh? trong quá trình thu thPp dG li u. Nó sW ng[t b5 VXL khvi ho t .

?Bc giCi quy t b2ng m.5 và khC nHng xZ lý c6a phIn c.Fnh bdi t*c .c tích c&c t i chân nhPn tín hi u ng[t) M5t s& ki n ng[t cpng có thK .i)u khiKn hoQc tr ng thái.ng còn th:i gian th&c hi n tác v< ng[t ch6 y u quy t .ng c6a CPU v i s& ki n ng[t và th:i gian th&c hi n tác v< ng[t.c (ng[t .ó dài hay ng[n và do ch? ng trình quy t .Fnh.5 ?u tiên hoQc k t n*i c.Nc hoQc vi t vào m5t thanh ghi thi t bF ngo i vi hoQc các thanh ghi .?Bc kích ho t khi xu3t hi n m5t tín hi u xung m.ây th:i gian .5ng .?:ng tín hi u ng[t.?Bc nhPn d ng theo kiKu tín hi u ng[t • Theo s?:n xung (ng[t . n .H th i gian th c Thông th?:ng ng?:i ta hay quan tâm nhi)u .Fnh bdi tác v< ng[t .ng ph< thu5c và quy t . Các ngufn ng[t ngoài có thK .c . ` .?Bc kích ho t khi xu3t hi n s?:n xung d? ng t i chân nhPn tín hi u ng[t) • Theo m.ng có thK .?Bc kích ho t ch\ bdi m5t ho t .5t tranh ch3p giGa các ngufn ng[t cùng xu3t hi n t i m5t th:i . S& xung .c .áp .ng v i b5 xZ lý. C ch th&c hi n ng[t có s& tranh ch3p và giCi quy t b2ng m.?Bc mô tC nh? trong hình 39 .?Bc t*i giCn vi c xZ lý b2ng s& k t hBp v i phIn m)m và cùng chia sl các .5 ?u tiên . Các ngufn ng[t ngoài/c.iKm có thK .áp .

3 Thanh ghi TMOD (chK .Dn giPn RTX51 Tiny 1.Fnh th:i gian Timer 1 cpng dài 16 bít và thanh ghi 16 bít c6a nó .ích : Trình bày phCDng pháp và kc thu^t xây d ng thiKt kK phpn cJng và l^p trình cho m. ChCDng cvng .Nc nh? các thanh ghi khác. m là Timer 0 và Timer 1. m .1. TH0” là l?u byte cao TH0 c6a Timer 0 vào R5.H th i gian th c CH NG 4 : THIkT Kk lNG D NG TH I GIAN TH!C MOc .?Bc truy cPp nh? mNi thanh ghi khác chžng h n nh? A. Thanh ghi TMOD là thanh ghi 8 bít gfm có 4 bít th3p . TH0 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 TL0 D4 D3 D2 D1 D0 2.?Bc thi t lPp dành cho b5 Timer 0 và 4 40 . B. R1. Chúng ta sW bàn riêng v) t_ng thanh ghi. TH1 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 TL1 D4 D3 D2 D1 D0 2. 2.?Bc gNi là IMOD . CC hai b5 .?Bc truy cPp nh? hai thanh ghi tách bi t byte th3p và byte cao. Thanh ghi 16 bít c6a b5 Timer 0 .?Bc truy cPp và . byte th3p c6a b5 .Nc gi*ng nh? các thanh ghi c6a b5 Timer 0 d trên. R0. Timer 0.)u dùng chung m5t thanh ghi .Fnh th:i Timer 0 và Timer 1 . l nh “MOV TL0.v. Ví d< “MOV R5.1. . CC hai b5 .. #4FH” là chuyKn giá trF 4FH vào TL0. 2.1 Các thanh ghi c0a b.Nnh th i).)u có .Fnh th:i/ b5 .2 Các thanh ghi c0a b.5 dài 16 bít .Fnh th:i .i6u hành .3ng th i trình bày phCDng pháp xây d ng h th i gian th c vEi h . .K .. Các thanh ghi này cpng có thK .?Bc gNi là TL0 (Timer 0 bow byte) và thanh ghi byte cao là TH0 (Timer 0 High byte).Fnh th:i 0.1. T^p trung vào vi c xây d ng các kc n}ng l^p trình s> dOng Timer và l^p trình x> lý ngjt.i)u khiKn.Nnh th i. Các thanh ghi này có thK .1 Các thanh ghi cD sQ c0a b.K thi t lPp các ch . Timer 1.t h th i gian th c vEi vi .Nnh th i gian c0a 8051 8051 có hai b5 . .?Bc chia ra thành hai byte là TL1 và TH1.Fnh th:i. m các s& ki n xCy ra bên ngoài b5 vi . R2 v. B5 .. Các thanh ghi này .?Bc truy cPp nh? byte th3p và byte cao. Thanh ghi byte th3p . Ví d<. Chúng có thK .?Bc dùng nh? các b5 .i6u khi/n MCS-51.K t o m5t b5 trn th:i gian hoQc nh? các b5 . c0a b.?Bc .Fnh th:i Timer 0 và Timer 1 . B.5 làm vi c khác nhau c6a b5 .

5 trn hay b5 .Các bít M1. M0: Là các bít ch .?Bc chNn.Fnh th:i nào . d phIn này ch\ bàn v) l&a chNn này.?Bc chNn. Chúng ta sW s m khám phá ra các . Các phép toán này sW .Fnh th:i 16 bít và ch .9i giá trF t_ s* Hex sang nhF phân và .Fnh th:i Timer0 và Timer1 .?Bc thi t lPp theo tr ng thái c6a M1 và M0 nh? sau: M1 0 0 1 1 M0 0 1 0 1 Ch .ây.H th i gian th c bít cao dành cho Timer 1.Fnh th:i Timer 0 .ó hai bít th3p c6a chúng dùng .5 nào và b5 . TMOD = 0001 0010. N u bít C/T = 0 thì nó .Fnh th:i.5 0 là m5t b5 .Qt tr? c) B5 .5 1 và 2.Fnh phép toán.Fnh th:i nh? b5 .K quy t .Fnh xem b5 . ch .5 này sau khi khám phIn còn l i c6a thanh ghi TMOD.K làm gì? Mei b5 . C/ T ( Xng hX/ b 1nh th i).Fnh th:i .5 c6a các b5 Timer 0 và Timer 1. M5t bít khác c6a thanh ghi TMOD là bít c9ng GATE.Qt tr? c B5 .Fnh th:i: 0. (MSB) GATE C/T M1 Timer1 M0 GATE C/T M1 Timer0 (MSB) M0 a.Fnh th:i Timer 1 .Fnh th:i 41 . m 5 bít .5 .?Bc dùng nh? m5t b5 . 1.?Bc dùng . Trong .Fnh th:i Timer 0 và ch .5 1 c6a b5 . công d<ng c6a b5 . #01H b) MOV TMOD.*i chi u hình 93 ta có: TMOD = 0000 0001. m s& ki n. Bít này trong thanh ghi TMOD .?Bc sZ d<ng r5ng rãi nh3t là ch .5 trn th:i gian là tIn s* th ch anh c6a 8051.K thi t lPp ch . #20H c) MOV TMDO.5 1 c6a Timer 1 .iKm khdi .5 2 là b5 .?Bc bàn d phIn k ti p.5 chn th:i gian.Fnh th:i 16 bít (không có .*i v i các tr?:ng hBp sau: a) MOV TMOD. Chúng ta ch\ tPp chung vào các ch .?Bc dùng nh? m5t máy t o . m s& ki n thì sW . còn 2 bít cao dùng . #12H L:i giCi: Chúng ta chuyKn . Ch .)u có bít GATE. ch . c.?Bc chNn. ch .5 ho t .Fnh th:i/ b5 .Fnh th:i 8 bít t& n p l i Ch .?Bc bàn d? i . Ngufn .5 1 c6a b5 .fng hf cho ch . 2 và 3.K xác .3 ta th3y cC hai b5 .5 1 c6a b5 .Fnh th:i th&c hi n . Ví d< 1: Hãy hiKn thF xem ch .5 th?:ng .5 0 1 2 3 Ch .Fnh th:i 13.5ng B5 .Fnh th:i 8 bít. Chúng chNn ch . M5t s* b5 . Bít cYng GATE. Các ch .Fnh th:i chia tách b. TMOD = 0010 0000.5 c6a các b5 . VPy bít GATE dùng .Fnh th:i t o .5 c6a b5 .5 1 là m5t b5 . ch .Qc tính c6 các ch .Fnh th:i 13 bít gfm 8 bít là b5 . K ý trên hình 9.5 b5 .5ng và d_ng.

5 c6a b5 .Fnh th:i và cách chúng .4 Ngu3n xung . Ví d< 2: Tìm giá trF cho TMOD n u ta mu*n lPp trình b5 Timer0 d ch .Fnh th:i TR là TR0 và TR1.fng b5 và chu kh c6a b5 .i xét chi ti t t_ng ch . L nh SETB khdi .K khdi .?Bc khdi .âu? N u C/T = 0 thì tIn s* th ch anh .Fnh th:i.K tránh s& lon l5n ngay t_ bây gi: ta .?Bc lPp trình nh? th nào .*i v i b5 Timer0.Qt bít GATE = 1 trong thanh ghi TMOD. Các l nh này khdi . m5t s* khác b2ng phIn c. i)u .K dùng phIn m)m trong . Vi c sZ d<ng phIn c. chúng ta sW xét ch .5 nhFp c6a các b5 .i)u này b2ng phIn m)m.Fnh th:i. Các b5 .5 l n c6a tIn s* th ch anh .5ng và d_ng b5 .Fnh th:i tren 8051 có cC hai. L:i giCi: TMOD = 0000 0010: B5 .Fnh th:i phIn m)m .ng t_ ngufn ngoài b2ng cách .i li)n v i 8051 .5ng và d_ng các b5 .fng hf c6a b5 . Vi c khdi .ó có nghLa là .Fnh th:i trên 8051.Fnh th:i khi GATE = 0. 2.Fnh th:i Timer0. mei b5 .3ng h3 cho b.5 trn th:i gian.5 2 .5ng và ng_ng b5 .fng hf .ng t_ bên ngoài.Fnh th:i cho các h d&a trên 8051 v i các tIn s* th ch anh sau: a) 12MHz b) 16MHz c) 11.5ng và d_ng các b5 .ã có hiKu bi t c bCn v) vai trò c6a thanh ghi TMOD.K d_ng nó. TIn s* c6a b5 .5ng b5 .1.5ng b2ng phIn m)m bdi các bít khdi .0592MHz L:i giCi: 1 1 × 12MHz = 1MHz T= = 1µs 1 / 1MHz và a) 12 42 .Fnh th:i b2ng phIn c.Fnh th:i luôn b2ng 1/12 tIn s* c6a th ch anh g[n v i 8051.fng hf và sZ d<ng các l nh .ng v_a b2ng phIn m)m.5 1 và ch . Nh? vPy.5ng và d_ng b5 .5ng b5 .5ng và d_ng b5 . bây gi: chúng ta .Fnh th:i khi bít GATE = 0 trong thanh ghi TMOD.Fnh th:i ta sW bàn d ch? ng 11 khi bàn v) các ng[t.K t o ra m5t .Qt GATE = 0 có nghLa là không cIn khdi . . Do ch .?Bc sZ d<ng r5ng rãi nên ta . Chúng ta ch\ cIn các l nh “SETB TRx” và “CLR TRx”.Nnh th i: Nh? chúng ta bi t.ng ngoài .*i v i b5 Timer1 và “SETB TRO” và “CLR TR0” .5ng và d_ng các b5 . VPy ngufn xung .Fnh th:i.5ng và d_ng các b5 .?Bc làm ngufn cho .5 m5t. Ví d< 3: Hãy tìm tIn s* .Fnh th:i trên 8051 l3y d .H th i gian th c th&c hi n .ng và m5t s* khác v_a b2ng phIn c. Tuy nhiên.Fnh th:i .5 2 C/T = 0 dùng ngufn XTAL GATE = 0 .Fnh th:i cIn m5t xung .5ng và d_ng b5 . . i)u này có .K khdi .?Bc nh: các l nh “SETB TR1” và “CLR TR1” .K giG nhFp.i kèm v i 8051 quy t .K khdi . ch .Fnh th:i b2ng phIn c.K khdi .5 2 sZ d<ng th ch anh XTAL 8051 làm ngufn . K sZ d<ng phIn m)m .Fnh t*c . Khdi .Fnh th:i và l nh CLR dùng .K khdi .fng hf cho các b5 .

0592MHz.K d_ng b5 .*i v i Timer0 và TF1 ..Fnh th:i b2ng các l nh “CLR TR0” .*i v i Timer1. .Fnh th:i này .?Bc gi i h n c6a nó và quay quan giá trF FFFFH. .?Bc thi t lPp t_ m5t trong các ph? ng án . N p các thanh ghi TL và TH v i các giáa trF . 43 . D? i .Fnh th:i.Fnh th:i phCi .6kHz 0. do vPy nó cho phép các giá trF 0000 . Các chK .Fnh th:i .2ng sau m5t s* ll nh? vPy là hCi làm vi c v i tIn su3t bouid .2.*i v i Timer1.5ng b5 . nó b[t .9216MHz c) 12 và MQc dù các h th*ng d&a trên 8051 khác v i tIn s* th ch anh t_ 10 .*i v i Timer1.?Bc khdi . c0a b. C: b5 .?Bc duy trì v) 0.?Bc gi i h n FFFFH c6a nó.Iu .2.5 Mode1: Nó là b5 . Sau khi b5 .ây cpng cIn phCi nh[c l i là . Các bCEc l^p trình Q chK . Nó .1 L^p trình cho chK .085µs × 11. Sau khi TL và TH .2.111Mz 1.?Bc n p m5t giá trF khdi t o 16 bít thì b5 .?Bc sZ d<ng và ch .Fnh th:i thì cIn phCi th&c hi n các b? c d? i .Fnh th:i 16 bít. i)u này .?Bc chNn.Qc tính và nhGng phép toán c6a ch .5 nào .ây. N p giá trF TMOD cho thanh ghi báo .Fnh th:i.. m lên cho . m lên.0592MHz cho phép h 8051 truy)n thông v i IBM PC mà không có lei.?Bc n p l i v i giá trF ban .5 trn th:i gian dùng ch .5ng. t .?Bc th&c hi n bdi “SETB TR0” .Iu và TF phCi .*i v i Timer0 hoQc “CLR TR1” . 1. Lý do .?Bc n p vào các thanh ghi TL và TH c6a b5 .5ng.)u có c: TF riêng c6a mình: TF6 .?Bc hiKn thF.Fnh th:i nào (Timer0 hay Timer1) . Mode1.0592MHz = 921.?Bc gNi là c: b5 . K t o ra m5t . 1. d .333MHz b) 12 và 1 1 T= = 1. Khi nó quay qua t_ FFFFH v) 0000 thì nó bPt lên bít c: TF .2. n FFFFH .5 1 c6a b5 . XTAL oscillator ÷12 TH TL TF overflow flag TF goes high when FFFF 0 C/T = 0 TR Sau khi b5 .75µs × 16MHz = 1. n 40MHz.Fnh th:i. song ta ch\ tPp chung vào tIn s* th ch anh 11. Khdi . Mode 1.Fnh th:i này có thK . TIn s* XTAL = 11..*i v i truy)n thông n*i ti p c6a 8051.Iu. n khi .Fnh th:i .?Bc khdi .*i v i b5 . t .H th i gian th c 1 1 T= = 0.i)u mà ta sW bi t d ch? ng 10. mu*n lQp l i quá trình thì các thanh ghi TH và TL phCi . Khi c: b5 .Fnh th:i .5 .*i v i Timer 0 và “SETB TR1” . m ban .Nnh th i 1.ây là nhGng .

TL0 = F2H. Khdi .Fnh th:i TF b2ng l nh “JNB TFx. Máy tính trong th? m<c Accessrry c6a Microsoft Windows có thK giúp ta tìm các giá trF TH và TL.K nhPn m5t s* thPp phân NNNNN sau . TL v) s* thPp phân . HiKn thF c: b5 . Thoát vòng lQp khi TF .5 . 0592MHz (xem hình 9. a) Tính theo s* Hex (FFFF .Fnh th:i Timer0 . AGAIN: L:i giCi: Trong ch? ng trình trên . DELAY: SETB TR0 .5 trn sZ d<ng ch .5 . 1.5 Mode1 (16 bít) c6a b5 . b) Tính theo s* thPp phân ChuyKn .Fnh th:i Timer0 JNB TF0.?Bc bPt không.Fnh th:i .K xem nó . T_ ví d< 9. Ví d< 4: Trong ch? ng trình d? i . TL t? ng .?Bc chNn dùng cho phIn cao th3p c6a xung.Fnh th:i 0 .?Bc lên cao.ng. 44 .4). TH0 = FFH.5 trn th:i gian. TL delay using timer0.TL0 Chân P1. N p l i TH.ích” . SZ d<ng Timer0 và ch . L?u ý r2ng các giá trF YYXX là theo s* Hex.c tính toán .5ng b5 . Máy tính này he trB các phép tính theo s* thPp phân.5 ACALL DELAY SJMP HERE .Fnh th:i. HERE: MOV TMOD. B5 . n khi nó v?Bt qua FFFFH. Quay trd l i b? c 2 .ây ta t o ra m5t sóng vuông v i .5.1.5 thì ta cIn bi t tIn s* XTAL (xem ví d< 9.?Bc n p.6 ta có thK phát triKn m5t công th. .085µs. byte th3p MOV TH0.Iy xung 50% (cùng t‘ l giGa phIn cao và phIn th3p) trên chân P1.*i v i tIn s* th ch anh XTAL = 11. D_ng b5 . #0FFH .ây chú ý các b? c sau: TMOD . #01 .085µs trong . Xoá c: b5 .H th i gian th c Duy trì hiKn thF c: b5 .Fnh th:i cho . SZ d<ng chân P1. D_ng b5 Timer . Xoá c: TF cho vòng k ti p.5 1(16 bít) MOV TL0. . K tính toàn th:i gian trn chính xác và tIn s* sóng vuông .5).?Bc dùng . nhF phân và thPp l<c.K t o . byte cao CPL P1.5 .ó l3y (65536 NNNNN). AGAIN CLR TR0 CLR TF0 RET . Hãy phân tích ch? ng trình này.YYXX + 1).?Bc n p và TH0 .K n p l i TL và TH. #0F2H .?Bc t o ra trên chân P1.9i các giá trF YYXX c6a TH.ó YYXX là các giá trF khdi t o c6a TH. giá trF FFF2H .

085µs = 15. m ×1. ta phCi c5ng 1 vào 13 vì cIn thêm m5t nhFp . Ch? ng trình con DELAY k t thúc và quá trình . L?u ý r2ng .085µs 0. Trong ch? ng trình con DELAY b5 .?Bc gNi..fng hf .fng hf .K lQp l i quá trình trên ta phCi n p l i các thanh ghi TH và TL và khdi . B5 Timer0 .Fnh th:i v i giá thi t tIn s* XTAL = 11. FFF4 . n khi . 0592MHz. Và m5t xung nGa là nó quay v) không và bPt c: b5 .?Bc c3p bdi máy phát th ch anh. T i th:i . S* . m b2ng FFFFH . m lên v i mei xung .Fnh th:i. 38µs là th:i gian trn . t giá trF FFFFH. m tHng sau hf có chu kh 1.Fnh th:i . Hay nói cách khác.Fnh th:i Timer0 .?Bc t o ra trên chân P1. K t quC là mei nhFp xung .Fnh th:i làm vi c v i tIn s* .?Bc khdi .iKm này thì l nh JNB h n xu*ng.?Bc lQp l i.?Bc t o ra bdi b5 . ta có 14 × 1.0592 = 0. L:i giCi: B5 . cho . m tHng qua các tr ng thái FFF3.9216MHz là tIn s* c6a b5 .Fnh th:i v i giC thi t tIn s* XTAL = 11. FFF2 TF = 0 FFF3 TF = 0 FFF4 TF = 0 FFFF TF = 0 0000 TF = 1 Ví d< 5: Trong ví d< 4 trên hãy tính toán l?Bng th:i gian trn trong ch? ng trình con DELAY . HERE: MOV TL0. n t9ng phí c6a các l nh trong vòng lQp.K nó quay t_ FFFFH v) 0 và bPt c: TF. Do vPy. do vPy ta 11.19µs cho nZa chu kh và cC chu kh là T = 2 × 15. K tính toán chính xác h n ta cIn b9 xung thêm các chu kh th:i gian c6a các l nh trong vòng lQp.5.Fnh th:i.ó ta sZ d<ng các chu kh máy t_ bCng A-1 trong ph< l<c Appendix A .9216MHz ..19µs = 30. #0FFH CPL P1-5 ACALL DELAY 2 2 1 2 45 .?Bc t o ra bdi b5 .Fnh th:i .K t o ra b5 trn b2ng s* .fng có 12 1 T= = 1. Ví d< 6: Trong ví d< 5 trên hãy tính toán tIn s* c6a xung vuông .?Bc ch\ d? i .fng hf b2ng 1/12 tIn s* XTAL.FFF2H = ODH (13 theo s* thPp phân).0592MHz.5 th:i gian trn c6a ví d< 9. Khi b5 . #0F2H MOV TH0. K làm .?Bc dùng bdi l nh “CLR TR0”.Fnh th:i TF0 = 1.085µs.i)u .5 ta không tính .085µs . L:i giCi: Trong tính toán .5ng bdi l nh “SETB TR0” B5 Timer0 .ây. b5 Timer0 .H th i gian th c Ch? ng trình con DELAY dùng b5 . Tuy nhiên.5ng l i b5 .

Không tính các t9ng phí c6a các l nh. m t_ 0000 .?a vào cC t9ng phí c6a các l nh. Khdi . T9ng s* chu kh .085µs = 19. n FFFFH và sau . Nó .5 1 (16 bít) . K nhPn . byte cao . Hãy tính . BPt P2. byte th3p . CLR P2. Xoá P2. n FFFF.5 trn th:i gian l n nh3t có thK. CLR MOV MOV MOV SETB SETB JNB CLR CLR CLR P2. ch .3 TMOD. AGAIN TR0 TF0 P2. 93145µs. byte th3p 46 HERE: . ch .085µs and F = 17067.5 trn . ChNn Timer0. #0 . AGAIN CLR TR0 CLR TF0 RET 2 1 1 1 1 1 27 Total T = (2 × 27 × 1.93145ms là .3 .5 1 (16 bít) . TL0 = 3EH.o n mã sau sZ d<ng cC hai ph? ng pháp c6a hình 9. #01 MOV TL0. Vì TH .5 trn th:i gian l n nh3t có thK ta . Trong tính toán cIn .B83E + 1) = 47C2H = 18370 h thPp phân 18370 × 1.4.47166 = 18370.?Bc . D_ng b5 . Qt TL0 = 0.3 .TL = B83EH = 47166 (s* thPp phân) ta có 65536 .ã b9 xung là x7 nên chu kh th:i gian trn là T = 2 × 27 × 1. i)u này làm cho b5 .Qt TH và TL b2ng 0. i)u này có nghLa là b5 . m t_ B83EH . Do vPy ta có 18370 × 1.085µs = 19.?Bc c5ng v i m5t s* .Fnh th:i .Fnh th:i cho vòng sau HERE: AGAIN: L:i giCi: 5 trn . HiKn thF c: b5 .K nhPn . Ví d< 8: SZa giá trF c6a TH và TL trong ví d< 9. Xoá P2.3 MOV TMOD. m . #0B8G P2. ChNn Timer0. #3EH TH0.K v) 0 thành m5t b5 t9ng là 18370µs.Fnh th:i TF0 .Fnh th:i.75Hz).5 r5ng xung.085µs = 58.3 . DELAY: AGAIN: SJMP HERE delay using timer0 SETB TR0 JNB TF0.7 . #01 TL0. TH0 = B8H.?Bc t o ra trong mã trên là: (FFFF . Ví d< 7: Hãy tìm ra .75Hz.Fnh th:i gian .3 lên cao .ó quay qua v) 0.H th i gian th c .3 TR0 TF0.5ng Timer0 .59µs và tIn s* là F = 17067.?Bc t o ra bdi Timer0 trong .5 trn theo miligiây. . Xoá c: b5 .

Fnh th:i do ch .ã không n p l i TH và TL vì nó là m5t xung .5 trn = (65536 . 1.K nhPn Hi.K ý r2ng phIn cao và phIn th3p c6a xung sóng vuông là b2ng nhau.3 lên cao SETB TR0 .2. Xoá c: b5 .5 trn th:i gian. #01H MOV TL1. L0 .5ng n p l i . Khdi .085µs = 38274ms và tIn s* là 1 (Hz) = 26127 Hz. Trong tính toán không .ây ta l?u ý . Khdi .K bPt c: b5 . 0592MHz .Fnh th:i .0592MHz.ây . CLR TF0 . Xoá c: TF0 CLR P2. Ví d< 9. #0 .Fnh th:i.7634H = 89CBH + 1 = 89CCH và 90CCH = 35276 là s* lIn . Qt byte th3p TL1 = 34H .?Bc các giá trF cIn thi t cho các thanh thi TH và TL.5 trn là 35276 × 1.K t o ra .5 1 ch? ng trình phCi n p l i thanh ghi. .Nnh th i. 38274 AGAIN: t& Cpng .Fnh th:i là 7634H) . TH và TL mei lIn n u ta mu*n có sóng d ng liên t<c.5ng b5 Timer0 AGAIN: JNB TF0.Fnh th:i . Qt TH0 = 0.K tìm ra .Fnh th:i TF. . #34H MOV TH0. D_ng b5 . Trong tính toán trên .3 Tìm các giá trN cpn .5 TF AGAIN .ây t o ra m5t sóng vuông trên chân P2. ChNn Timer0.*i v i h 8051. AGAIN .ây là ch?a kK . ta có . n. L:i giCi: Trong ch? ng trình trên . Hãy tìm tIn s* c6a sóng vuông n u tIn s* XTAL = 11.Fnh th:i TF0 CLR TR0 . byte cao SETB P2. HiKn thF c: b5 . m qua 0 .ích c6a SJMP. n .ây là k t quC tính toán: Vì FFFFH .7 và 9. Trong ví d< 9.ó quay qua v) 0 . n khi b5 . N p l i b5 . D_ng b5 . Do vPy.H th i gian th c MOV TH0.Cqc n*p vào b.5ng b5 Timer1 .3 Th&c hi n bi n TH và TL b2ng 0 nghLa là b5 . n FFFFH và sau .fng hf.5ng XTAL = 11.5 liên t<c b2ng vi c sZ d<ng b5 Timer1 . #76H SETB JNB CLR CPL CLR SJMP TR1 TF1.Qt ra là làm th nào .9 d? i .Fnh th:i . Qt byte cao TH1 = 76H .5 1. m tHng t_ 0000 .Fnh th:i.K xem vi c n p l i làm vi c nh? th nào d ch . giC sZ r2ng chúng ta bi t l?Bng th:i gian trn mà ta cIn thì câu hvi . BPt P2. D? i .8 chúng ta .085µs = 71.?Bc n p vào các thanh ghi TH và TL chúng ta hãy nhìn vào ví d< sau v i vi c sZ d<ng tIn s* dao . K tính toán các giá trF cIn .5 1 (16 bít) . d l i cho .5 1 không .9: Ch? ng trình d? i . BACK TR1 P1. (giá trF b5 . m xung . Xét ví d< 9. Bù chân P1. 47 . n t9ng phí các l nh vòng lQp.0) × 1.3 . .i qua 65536 tr ng thái.?a vào t9ng phí c6a các l nh vòng lQp: HERE: MOV TMOD. ch . d ch .1065µs. K t quC là nó .5 .

.ó có nghLa là phCi m3t r3t nhi)u khoCng th:i gian 1.Fnh th:i Timer0 . ây là tr?:ng hBp gi*ng v i ví d< 9.K có . Hãy trình bày ch? ng trình cho b5 Timer0 .5 1 (16 bít) .i 4608 b2ng 60928.3 .0592MHz hãy vi t ch? ng trình t o ra m5t sóng vuông tIn s* 2kHz trên chân P2. CLR P2.085µs T= cIn tìm là 65536 .hex ban .3. AGAIN CLR TR0 CLR TF0 .K tìm các giá trF c6a các thanh ghi TH và TL. HERE: AGAIN: v) 0 Ví d< 11: giC sZ ta có tIn s* XTAL là 11. #EEH SETB P2.?Bc n p vào TL và TH thì ta ti n hành l3y 65536 tr_ . m tHng sau mei chu kh 1. m quay .5 th:i gian trn là 5µs. Ví d< 10: giC sZ tIn s* XTAL = 11.?Bc t_ b? c 1.Fnh th:i.?Bc giá trF cIn .H th i gian th c T_ ví d< 9.ó là 1.K t o ra b5 xung v i . giá trF n p vào TL là 1AH và TH là FFH.085µs.3 lên cao .Iu cIn phCi n p vào các thanh ghi b5 . ChuyKn . Khdi . i)u . ChNn Timer0.5.10 ta có thK sZ d<ng nhGng b? c sau .n v i n là giá trF thPp phân nhPn . K có .?Bc n p vào các thanh ghi vào các thanh ghi TH và TL n u ta mu*n . Qt TL = xx và TH = yy. N p TH = EEH . Xét các b? c sau: 1 1 = = 500µs f 2kHz a) là chu kh c6a sóng vuông. ch . giá trF n p vào TH là EE Và TL là 00.230 = 65306 và d d ng hex là FF1AH.HiKn thF c: TF0 cho .3 SETB TR0 JNB TF0. Xoá c: TF0 cho vòng sau.5ng b5 . Hãy tìm các giá trF cIn . n khi b5 .9i s* này ra s* hex thành EE00H.K t o ra sóng vuông. Xoá bít P2. 48 .?Bc s* n = 4608 nhFp. #0 MOV TH0.0592MHz nên b5 . Do vPy.5 r5ng 5µs trên chân P2.?Bc m5t xung 5µs.10 ngoài tr_ m5t vi c là ta phCi chNn bít .9i k t quC d b? c 2 sang s* Hex v i yyxx là giá trF .0592µs Th&c hi n 65536 .?Bc ta chia 5ms cho 1. Ta . K nhPn . 1 T b) KhoCng th:i gian cao và phIn th3p là 2 b2ng 250µs. Chia th:i gian trn cIn thi t cho 1.085µs .085µs và nhPn .Fnh th:i. #01 MOV TL0. BPt P2. L:i giCi: Vì tIn s* XTAL = 11. D_ng b5 .0592MHz. N p TL = 00 .3 MOV TMOD. 250µs = 230 và giá trF cIn n p vào các thanh ghi S* nhFp cIn trong th:i gian .

K nhPn giá trF cao.giG nguyên cho .5 1 49 . giG nguyên cho .Fnh th:i quay . #0FFH TR1 TF1.4.Fnh th:i Timer0. Xoá c: TF1 .3 CLR TF1 SUMP AGAIN l i.5 1 không t& l i. .fng hf: T= CLR TR1 CPL P1. ChNn b5 . Gán giá trF byte th3p TL1 = 00 . Bù bít P1.Fnh th:i. Gán giá trF byte cao TH1 = FFH . N p l i b5 .5 1 không t& n p 9.Fnh th:i vì ch . N p l i b5 .5 . MOV TMOD.K nhPn giá trF cao.9216 = 56320 chuyKn v) d ng Hex là DC00H và TH = DCH và TL = 00H. #10H bít) AGAIN: MOV TL1. D_ng b5 . Xoá c: TF1 . th3p.5 .5ng Timer1 .Fnh th:i d ch . . ChNn b5 .5 CLR TF1 SUMP AGAIN n p Tính giá trF cIn n p vào TH và TL: 65536 . #00 MOV TH1. th3p. ch . #10H 1 (16 bít) AGAIN: BACK: v) 0 MOV MOV SETB JNB TL1.1. D_ng b5 .ã bi t t_ các ví d< trên là l?Bng th:i gian trn cIn t o ra ph< thu5c vào hai y u t*: TIn s* th ch anh XTAL Thanh ghi 16 bít c6a b5 . Ví d< 12: Tr? c h t ta th&c hi n các b? c sau: 1 = 20µs 50Hz Tính chu kh sóng vuông: 1 T = 10µs Tính th:i gian nZa chu kh cho phIn cao: 2 10µs n= = 9216 1. BACK .5ng Timer1 . n khi b5 .Fnh th:i quay v) 0 .Fnh th:i Timer0.5 1 (16 .Fnh th:i. .5 trn th:i gian l n.H th i gian th c Ch? ng trình cIn vi t là: MOV TMOD. n khi b5 . Nh? ta . Bù bít P1. Khdi . . ch . Gán giá trF byte cao TH1 = DC . .5 . BACK CLR TR1 CPL P2. Gán giá trF byte th3p TL1 = 1AH . Khdi .3 T o m5t . #1AH TH1. #0DHCH SETB TR1 BACK: JNB TF1.085µs Tính s* nhFp .Fnh th:i vì ch .

?Bc thay b2ng 13 bít. Do vPy khi b5 . 0.K nhPn s* .6? Ví d< 9. không tính .?Bc giá trF c&c .H th i gian th c CC hai y u t* này n2m ngoài khC nHng . Ta bv quan các s* F d phía bên phCi trên Calculator vì s* c6a ta là 16 bít.Fnh th:i 8 bít. AGAIN . B5 . ch . giC sZ tìm giá trF cho TH và TL v i .5ng Timer1 . N p byte th3p TL1 = 08 .35. 1. N u R3 không b2ng không thì n p l i b5 th:i.fng hf v i chu kh 1. #10H R3.000 vào t_ bàn phím. n t9ng phí các l nh trong vòng lQp..5 2: Nó là m5t b5 . t .Fnh th:i 16 bít .?Bc khdi . Sau khi TH .13 d? i . #08 TR1 TF1..4.*i v i Timer0 và “SETB TR1” .Fnh th:i TF1 . Xoá c: b5 .5 giG chPm l n .K tìm TH và TL. Bàn tính Calculator c6a Windows có ngay trong máy tính PC c6a chúng ta và r3t dn sZ d<ng . ChNn +/. 1.5 1 (16 bít) . ChuyKn v) ch .000 d ng thPp phân và chuyKn v) d ng Hex là 7748H.1.5 trn th:i gian có thK . 2.13: Hãy kiKm tra ch? ng trình sau và tìm . Nh?ng .5 tính v) s* thPp phân Decimal. i)u này . BACK: v) 0 CLR TR1 CLR TF1 DJNZ R3. D_ng b5 .5 trn th:i gian theo giây. NhPp s* 35.?Bc th&c hi n bdi l nh “SETB TR0” . .Fnh 50 .K tìm ra các giá trF cho TH và TL.000 nhFp .4 SZ d<ng bàn tính c6a Windows .ây cách làm th nào . n 1FFFF trong TH TL.085µs. n khi b5 .?Bc n p v i giá trF 8 bít thì 8051 l3y m5t bCn sao c6a nó .)u không . #200 TL1. Ví nh? ta .?Bc b2ng cách .5 trn th:i gian l n là 35. do vPy nó ch\ cho phép các giá trF t_ 00 . N p byte cao TH1 = 01 .Fnh th:i phCi . i c6a nó là 1FFFH thì nó sW quay trd v) 0000 và c: TF .5ng. #08 TH1. Ch . AGAIN: MOV MOV MOV MOV SETB JNB TMOD.K có giá trF . ChNn b5 Timer1.?Bc bPt lên. ChNn b5 . Khdi .5 Hex trên Calculator nó cho ta giá trF 88B8H. BACK .2.4 ChK .Fnh th:i quay .ó b5 .5 1. n FFH .ã bi t giá trF l n nh3t c6a . Sau . Các .5 trn th:i gian l n.5 0 hoàn toàn gi*ng ch . 9.Qc tr?ng và các phép tính c6a ch . Hai s* hex cu*i là cho TL = 48 và hai s* Hex ti p theo là cho TH = 77.*i v i Timer1 gi*ng nh? d ch .2.Fnh th:i.?Bc n p vào thanh ghi TH c6a b5 .?a vào TL.5 1 ch\ khác là b5 .i)u này xCy ra khi nh? vPy . m . t .. Ví d< 9.Qt ch .Fnh th:i.giG nguyên cho .i)u ch\nh c6a lPp trình viên 8051. m 13 bít có thK giG các giá trF giGa 0000 .9i d3u .Qt cC TH và TL b2ng 0.Fnh th:i .5 L^p trình chK . Ta th&c hi n các b? c nh? sau: ChNn máy tính Calculator t_ Windows và .

?Bc sao t_ TH.?Bc giG nguyên.Fnh th:i TF.?Bc khdi .Fnh th:i .5ng n p l i v i giá trF ban .?Bc n p l i giá trF . N u ta sZ d<ng b5 . XTAL oscillator ÷12 TL reload TF TF goes high when FFFF 0 C/T = 0 TR TF Khi thanh ghi TL quay trd v) 00 t_ FFH thì TF .5 t_ n p l i so v i ch . nó b[t .?Bc giG bdi thanh ghi TH. nó l i có khC nHng t& n p khi t& n p l i thì TH th&c ch3t là không thay . Khi nó quay trd v) 00 t_ FFH.Fnh th:i Timer0 thì . ch .9i v i giá trF ban . còn Timer1 thì . i giá trF gi i h n FFH c6a nó. 51 .Iu .K n p l i giC trF ban .5 này có nhi)u .?Bc gNi là ch .ó là c: TF0.5 2 . Ch .Iu .5 2 là b5 . m tHng lên b2ng cách tHng thanh ghi TL. m cho . Nó . n khi .5ng.Iu .?Bc t& . i)u này làm cho ch . CIn phCi nh3n m nh r2ng.ó là c: TF1.Fnh th:i 8 bít.H th i gian th c Sau khi b5 .Iu. Tuy nhiên.?Bc bPt lên 1 thì thanh ghi TL . n giCn ch\ vi c xoá c: TF và . K lQp l i quá trình chúng ta .K cho nó ch y mà không cIn s& can thi p c6a lPp trình viên . nó thi t lPp c: b5 . còn TL .ng d<ng bao gfm vi c thi t lPp tIn s* baud trong truy)n thông n*i ti p.5 1 thì ta phCi n p l i các thanh ghi TH và TL.