81
5 KỸ THẬT LẬP TRÌNH NHÚNG
5.1 Tác vụ và quá trình (process)
Tácvụ(task)?Làmộtcôngviệccầnthựcthithamgiatronghệthống
Quátrình(process)làmộtdiễnbiếnthựcthimộttácvụcủahệthống.
Đôikhingườ
itavẫndùnglẫnhaikháiniệmnàyvàkhôngphânbiệt.
Tácvụchukỳ(period)vàkhôngchukỳ(aperiod)
Cáctácvụphảithựchiệnlặplạimộtcáchđềuđặntheonhững
khoảngthờigianpđược
gọilàcáctácvụcóchukỳvàpđượcgọilàchukỳcủatácvụ.Cácloạitácvụkhácthì
đượcgọilàtácvụkhôngchukỳ.
5.2 Lập lịch (Scheduling)
Tạisaophảilậplịch?
Đểđảmbảođượccơchếthực thichias ẻtàinguyênhữuhạnvàthoảmãnyêucầuthời
gianthực.Lậplịchphảinhằmthoảmãnhayđạttớ
iđượcsựthoảhiệpgiữacácràng
buộcvềtàinguyên,sựphụthuộclẫnnhauhaythờigianthựchiện.
5.2.1 Các khái niệm
Lậplịchlàmộtphépthựchiệnphânbổvàgánquytrìnhthựcthicáctácvụchobộxửlý
saochomỗitácvụđượcthựchiệnhoàntoàn.
Lậplịch=tìmkiếmmột
giảnđồphânbốthờigianthựchiệnđanhiệmhợplývớicác
điềukiệnràngbuộcchotrước.Haynóicáchkháclàbộlậplịchphảixửlýđểquyếtđịnh
vàđiều
phốiquátrình/tácvụthựchiện.
Cómộtsốthôngtinvềtácvụluônphảiquantâmđốivớib ấtkỳbộlậplịchthờigian
thựcnào,baogồm:
• Thờigianxuấthiện
i
a (arrivaltime):Khisựkiệnxảyravàtácvụtươngứngđược
kíchhoạt.
• Thờiđiểmbắtđầuthựcthi
i
r (releasetime):Thờiđiểmsớmnhấtkhiviệcxửlýđã
sẵnsàngvàcóthểbắtđầu.
• Thờiđiểmbắtđầuthựchiện
i
s (startingtime):Làthờiđiểmmàtạiđótácvụbắt
đầuviệcthựchiệncủamình.
• Thờigiantínhtoán/thựcthi
i
c (Computationtime):Làkhoảngthờigiancầnthiết
đểbộxửlýthựchiệnxongnhiệmvụcủamìnhmàkhôngbịngắt.
• Thờiđiểmhoànthành
i
f
(finishingtime):Làthờiđiểmmàtạiđótácvụhoànthành
việcthựchiệncủamình.
• Thờigianrủiro/xấunhất
i
w (worstcasetime):khoảngthờigianthựchiệnlâunhất
cóthểxảyra.
82
• Thờiđiểmkếtthúc
i
d (duetime):Thờiđiểmmàtácvụphảihoànthành.
Hình5‐1:GiảnđồthựchiệncủamộttácvụT
i
Trêncơsởđóbộlậplịchsẽphảithựchiệnbàitoántốiưuvề:
Thờigianđápứng(responsetime)
Hiệusuấtthựchiện(sốlượngcôngviệcthựchiện
xongtrongmộtđơnvịthời
gian)
Sựcôngbằngvàthờigianchờđợi(cáctácvụkhôngphảichờđợiquálâu)
Vídụvềmộtlịchthựchiện2tácvụđượcmôtảnhưtrongHình
5‐2.
Hình5‐2:Giảnđồlậplịchthựchiện2tácvụ
Trongtrườnghợpcủavídụnàycácthôngsốvềthờigianthựchiệncủacáctácvụtính
đượcnhưsau:
¾ Thờigiantínhtoán
1
9C = và
2
12C = .
¾ Thờigianbắtđầuthựchiện:
1
0s = ,
2
6s = .
¾ Thờiđiểmhoànthành:
1
18f = ,
2
28f = .
¾ Khoảngthờigianchênhlệchthờiđiểm kếtthúcvàdeadline(Lateness)
iii
Lfd=−:
1
4L =− ,
2
1L = .
¾ Khoảngthờigianrỗi/dưthừagiữathờigianchophépthựchiệnvàthờigiancần
đểthựchiệntácvụ(Laxity)
iiii
X
daC=−−:
1
13X = ,
2
11X = .
5.2.2 Các phương pháp lập lịch phổ biến
83
Hình5‐3:Phânloạicácphươngpháplậplịch
Tuỳthuộcvàoloạihìnhtácvụ,ngườitarahaiphươngpháplậplịchlàcóchukỳvà
khôngcóchukỳ.
Lập lịch non‐preemptive:Phương phápnàyđảmbảo các tác vụđược th
ực hiệnhoàn
thànhmỗikhithựcthi,vìvậythờigianđápứngchocácsựkiệnkháccóthểlâu.
Lập lịch preemptive: Phương pháp này khắc phục nhượcđiểm của lập l
ịch non‐
preemptivekhithờigianthựcthicáctácvụlâu.Cáctácvụsẽđượcthựchiệnvàcóthểbị
ngắtgiữachừngđểphụcvụthựcthicáctácvụkhác.Cơchếlậplịchnày
chophépđảm
bảothờigianđápứngchocácsựkiệnvàtácvụngắnvànhanhhơn.
Lậplịchoffline/tĩnh:Việclậplịchđượcthựchiệndựatrêncáchiểubiếthoặ
cdựbáovề
cácsựkiệntácvụthựchiệntronghệthống(thờiđiểmxuấthiện,thờigianthựchiện,
deadline…)vàđượcquyếtđịnhtạithờiđiểmthiếtkếvàđược
ápdụngcốđịnhtrong
suốtquátrìnhhoạtđộngcủahệthống.Việclậplịchtrướccómộtsốcácưuđiểmsau:
• Tácvụtiếptheocóthểđượclựachọnthựcthitrongkhoảngthờigianlàhằngsố
• Khảnăngđápứngyêucầuthờigianthựccóthểđượcbiếttrướcvàđượcđảm
bảo
Nhượcđiểm:
o Khôngthểthayđổilịchtrìnhthựchiệncủahệthốngtrongquátrìnhthự
chiện
o Đòihỏiphảicóthôngtinthờigianchínhxácvềcáctácvụđểtínhtoánlậplịch
Mộtthuậttoánlậplịchtĩnhđượcgọilàtốiưunếunóluônluôn
cóthểtìmđượcmột
lịchđiềuphốithoảmãncácràngbuộcđãchotrongkhimộtthuậttoántĩnhkháccũng
tìmđượcmộtlờigiải.
Lậplịchonline/động:Bộxửlýth
ựchiệnviệclậplịchtrongquátrìnhthựcthidựatrên
cơsởcácthôngtinhoạtđộnghiệnhànhcủahệthống.Sơđồlậplịchlàkhôngxácđịnh
trướcvàthayđổiđộngtheo
quátrìnhthựchiện.
Cácthuậttoánlậplịchtĩnhtốiưukhôngphảilàtốiưutronghệthốngđộng.
84
Khôngtồntạimộtlờigiảitốiưuchoviệclậplịchtronghệthốngnhiềubộxửlýnếu
thờiđiểmxuấthiệnyêucầuthựcthicủacáctác
vụkhôngđượcbiếttrước.
Cáchạtnhânđượcđiềukhiểntheocơchếngắtthườngthựcthicơchếlậplịchnon‐
preemtiveđộngtrongkhiloạihạtnhânvậnhànhtheoquátrìnhlại
thựcthitheocơchế
preemptiveđộng.
Mộtthuật toánlậplịchđộngđượcgọilàtốiưunếunócóthểtìmrađượcmộtlịchđiều
phốiđiềukhiểnhệthốngthoảmãncác
ràngbuộcthờigianđãchobấtkểkhinàomà
thuậttoántĩnhkhôngtìmrađược.
Lậplịchtậptrunghoặcphântán:Việclậplịchđượcthựchiệnápdụngchocác
tácvụ
thựcthibởimột(tậptrung)hoặcnhiềubộxửlý(phântán).
LậplịchMonohayMulti‐processor:Nhiệmvụlậplịchvàthựcthiđượcđảmnhiệmbởi
một(mono)
hoặcnhiềubộvixửlý(multi).Tuỳthuộc vàođộphứctạpvềthuậttoáncần
xửlýkhilậplịchmàngườitaquyếtđịnhphảisửdụngphươngpháplậplịch
monohay
multi‐processor.
Tínhkhảlậplịch:Mộthệthốngvớimộttậpcáctácvụvàcácđiềukiệnràngbuộcđược
gọilàkhảlậplịchnếutồntạiítnhấ
tmộtc ơchếlịchtrìnhthựchiệnthoảmãn cáctácvụ
vàđiềukiệnràngbuộcđó.
Vídụvềlậplịchchohệthốngđanhiệmvới2tácvụ.Tácvụ1thực
hiệntheochukỳvà
tácvụ2thựchiệnkhôngtheochukỳvớithờigianthựcthilớnhơnthờigianchukỳlặp
lạicủatácvụ1.
Hình5‐4:Giảnđồthờigianthựchiệnlịchcủatácvụ
85
5.2.3 Kỹ thuật lập lịch
FCFS
Trongcơchếlậplịchđếntrướcđượcphụvụtrướcthìcácquátìnhđượcxửlýtheothứ
tựmànóxuấthiệnyêucầuvàchođếnkhihoànthành.Cơchếlậplịchnàythuộc
loại
khôngngắtđượcvàcóưuđiểmlàdễdàngthựcthi.Tuynhiên,nókhôngphùhợpcho
cáchệthốngmàhỗtrợnhiềungườisửdụngvìcómộtsựbiếnđổilớnvề
thờigian
trungbìnhmàmộtquátrìnhhaytácvụphảichờđợiđểđượcxửlý.Hơnnữadoviệc
xửlýkhôngngắtđượcnêncóhiệntượngchiếmhữuđộcquyềnbộxửlýtrongth
ờigian
dàivàcóthểgâyrasựtrễbấtthườngtrongquátrìnhthựchiệncủacáctácvụphảichờ
đợikhác.
ShortestJobFirst‐SJF
Trongcơchếlậplịchnàytácvụcóthờigianthựcthingắnnhấtsẽcóquyềnưutiêncao
nhấtvà sẽđượcphục vụtrước. Vấnđềchính gặp phải trongcơ chế lậplịch nàylà
khôngbiếttrướcđượcthờigianth
ựcthicủacáctácvụthamgiatrongchươngtrìnhvà
thôngthườngphảiápdụngcơchếtiênđoánvàđánhgiádựavàokinhnghiệmvềcác
tácvụthựcthitronghệthống.Điềunàychắ
cchắnrấtkhóđểluônđảmbảođượcđộ
chínhxác.Cơchếlậplịchnàycóthểápdụngchocảloạingắtđượcvàkhôngngắtđược.
Ratemonotonic(RM):
PhươngpháplậplichRMcólẽ
hiệnnàylàthuậttoánđượcbiếttớinhiềunhấtápdụng
chocáctácvụhayquátrìnhđộclập.Phươngphápnàydựatrênmộtsốgiảthiếtsau:
(1) Tấtcảcáctácvụtham
giahệthốngphảicódeadlinekiểuchukỳ
(2) Tấtcảcáctácvụđộclậpvớinhau
(3) Thờigianthựchiệncủacáctácvụbiếttrướcvàkhôngđổi
(4) Thờigianchuyể
nđổingữcảnhthựchiệnlàrấtnhỏvàcóthểbỏqua
ThuậttoánRMđượcthựcthitheonguyênlýgánmứcưutiênchocáctácvụdựatrên
chukỳcủachúng.Tácvụnàocó
chukỳnhỏthìsẽcóđượcgánmứcưutiêncao.Theo
nguyênlýnàyvớicáctácvụchukỳkhôngthayđổithìRMsẽlàphươngpháplậplịch
chophépngắtvàmứcưutiêncốđịnh.Tuynhiên
RMhỗtrợyêucầuhệthốngkhông
tốt.
Earliest‐deadline‐first(EDF)
Nhưđúngtêngọicủaphươngpháp,thuậttoánlậplichtheophươngphápnàysửdụng
deadlinecủatácvụhaynhưđiều
kiệnưutiênđểxửlýđiềuphốihoạtđộng.Tácvụcó
deadlinegầnnhấtsẽcómứcưutiêncaonhấtvàcáctácvụcódeadlinexanhấtsẽnhận
mứcưutiênthấpnhất.Ư
uđiểmnổibậtcủaphươngphápnàylàgiớihạncóthểlậplịch
đápứngđược100%chotấtcảcáctậptácvụ.Hơnnữamứcưutiêngánchomỗi
tácvụ
trongquátrìnhhoạtđộnglàđộngvìvậychukỳcủatácvụcóthểthayđổibấtkỳlúc
nàotheothờigian.
86
EDFcóthểđượcápdụngchocáctậptácvụchukỳvàcũngcóthểmởrộngđểđápứng
chocáctrườnghợpcácdeadlinethayđổikhácnhautheochukỳ.
Vấnđềchínhcủathuậttoán
lậplichEDFlàkhôngthểđảmbảođượctácvụnàotrong
hệthốngcóthểkhôngđượcthựcthitrongtìnhhuốngquáđộhệthốngbịquátải.Trong
nhiềutrườnghợpmặcdùmứcđộsửd
ụngtrungbìnhnhỏhơn100%nhữngvẫncóthể
trongmộttìnhhuốngnàođóvẫnvượtquakhảnăngđápứngcủahệthốngtứclàsẽcó
tácvụkhôngđượcđảmbảothực
thiđúng.Trongnhữngtrườnghợpnhưvậycầnphải
điềukhiểnđểbiếttácvụnàobịlỗikhôngthựchiệnthànhcônghoặctácvụnàođược
thựchiệnthànhcôngtrongquátrình
quáđộ.
MinimumLaxityfirst(MLF)
Cơchếlậplịchnàysẽưutiêntácvụnàocònítthờigiancònlạiđểthựchiệnnhấttrước
khinóphảikếtthúcđểđảmbảoyêucầuthự
cthiđúng.Đâyđượcxemlàcơchếlậplịch
gánquyềnưutiênđộngvàdễđạtđượcsựtốiưuvềhiệusuấtthựchiệnvàsựcông
bằngtronghệthống.
RoundRobin
Đâylàmộtcơchếlậplịchphânbổđềuđặn,ngắtđượcvàđơngiản.Mỗimộttácvụ
đượcxửlý/phụcvụtrongmộtkhoảngthờigiannhấtđịnhvàlặplạitheom ộtchu
trình
xuyênsuốttoànbộcáctácvụthamgiatronghệthống.Khoảngthờigianphụcvụcho
mỗitácvụtrongquátrìnhlàmộtsựthoảhiệpgiữathờigianthựchiệnc ủacác
tácvụ
vàthờigianthựchiệnmộtchutrình.Cóthểchọnkhoảngthờigianđórất nhỏvàđôi
lúcchúngtakhôngnhậnđượcrarằngđangcósựphânbổthựchiệntronghệth
ống.
Tuynhiênnếuthờigianđóquánhỏcóthểlàmmấttínhhiệuquảthựchiệntoànhệ
thốngvìcầnnhiềuthờigiantrongviệcchuyểnđổingữcảnhchomỗitácvụ
saumỗi
chutrìnhthựchiện.
87
5.3 Truyền thông và đồng bộ
5.3.1 Semaphore
Hình5‐5:Truyềnthôngquátrình
Semaphoreslàmộtcấutrúcdữliệuđượcđịnhnghĩađểloạitrừkhảnăngxungđột
trongquátrìnhchiasẻtàinguyêncủacáctácvụtronghoạtđộngcủahệthống.
Semaphoreshỗtrợhaihoạtđộngchính
nhưsau:
wait(semaphore):giảmvàkhoáchotớikhisemaphoređượcmở
signal(semaphore): tăng và chophép thêmmột luồngmớiđược thamgia hoạt
động
Tronghoạtđộngphốihợpcùngvớisemaphore
cómộthàngđợigồmcáctácvụcầnđược
thựcthisẽcómộtsốtìnhhuốnghoạtđộngcơbảnnhưsau:
Khimộtluồng(thread)gọiwait():
• Nếusemaphoređượcmởthìluồngđósẽđượcgianhậpvàtiếptụcthựcthi
• Nếu semaphoređangbị đóng thì nhánhđósẽ bịkhoá và phảinằm chờ
tronghàngđợichotớikhinàosemaphoređượcmở
signal()sẽmởsemaphore:
• nếumộtluồngđangnằmtronghàngđợivàkhôngbịkhoá
• nếukhôngcóluồngnàotronghàngđợivàtínhiệusignalsẽđượcnhớvà
dànhcholuồngtiếptheo
CácloạiSemaphore
Mutexsemaphore
9 Chophépđiềukhiểnhoạtđộngtruynhậpđơnlẻvàotàinguyênchiasẻcủa
hệthống.
88
9 Đảmbảoloạitrừxungđộttronghoạtđộngtruynhậpđồngthờicủanhiềutác
vụ,vàchỉcómộttácvụđượcthựcthitạimỗithờiđiểm.
Countingsemaphore
9
Điềukhiểntàinguyênmàcóthểphục vụcùngmộtlúcnhiềutácvụhoặcmột
nguồntàinguyênchophépphụcvụmộtsốnhấtđịnhcáctácvụkhôngđồng
bộvàhoạtđộngđồng
thời.
9 NhiềuluồngcóthểtruyềnSemaphore
9 SốlượngluồngđượcquyếtđịnhbởibiếnđếmNcủaSemaphore
Thựcchấtmutexsemaphorelàmộtdạngđặcbiệtcủacounting semaphorev
ớibiếnđếm
N=1.
ThựcthiSemaphore
SửdụngSemaphoretrongviệcđồngbộhaiquátrìnhtạovàsửdụnghạngmụcthông
quabộđệmtrunggian.
89
Nhậnxét:
9 Semaphorescóthểđượcsửdụngđểgiảiquyếtbấtkỳmộtbàitoánhayvấnđề
đồngbộtruyềnthốngnào
9 Tuynhiênchúngcómộtsốnhượcđiểm
o Chúngchủyếu
sửdụngcácbiếntoàncụctrongviệcđiềukhiểnhoạtđộng
đồngbộnêncóthểtruynhậpbấtkỳđâutronghệthốngÆkhókiểmsoát
o Khôngcósựliênkếtchặtchẽ
giữasemaphorevàdữliệumàđượcnóđiều
khiển.
o Đượcsửdụngđồngthờichocảviệcloạitrừxungđột(mutualexclusion)và
hoạtđộngđồngbộchocáctácvụ(scheduling)
5.3.2 Monitor
Monitorlàmộtngônngữlậptrìnhđượcxâydựngđểđiềukhiểnviệctruynhậpvào
vùngdữliệuchiasẻtronghoạtđộngcủahệthống.Mãchươngtrìnhđồngbộđượcbổ
sungvàotrongbộbiên
dịchvàthựcthikhichạychươngtrình.
3Monitorlàmộtmodulđónggói
• Cáccấutrúcdữliệuđượcchiasẻ
• Cácthủtụchoạtđộngthaotáctrêncáccấutrúcdữliệuchiasẻ
• Đồngbộcácluồngthựcthiđồngthờimàcóthểkíchhoạtcácthủtụctrong
hoạtđộnghệthống
3Monitorcóthểbảovệdữliệukhỏisựtruynhậpkhôngcócấutrúc.Nó
đảmbảorằng
cácluồngtruynhậpvàodữliệuthôngquacácthủtụctươngtáctheonhữngcáchhợp
phápvàcókiểmsoát.
3Monitorđảmbảoloạitrừxungđột
• Chỉcómộtluồngcóthểthựcthibấtkỳthủtụcnàotạimỗimộtthờiđiểm
(luồngtrongmonitor)
• Nếucómộtluồngđangthựcthibêntrongmộtmonitornósẽkhoácácluồng
khácmuốnvào,dođómonitorcũngphảicómộthàngđợi.
90
5.4 Xử lý ngắt
TínhiệuđiềukhiểnbộVXLkíchhoạtbởimộtsựkiệnthamgia trongquátrìnhhoạt
độngcủahệthốnglàmhệthốngngừngvàchuyểnhướngthựcthiđượcgọilà
tínhiệu
ngắt.NósẽngắtbộVXLkhỏihoạtđộngmànóđangthựcthivàchuyểnsangthựchiện
mộtcôngviệckhácphụcvụchosựkiệnkíchhoạtngắttươngứng.
Vídụnhưtrongquá
trìnhthuthậpdữliệu,VXLluônphảichờđợithờiđiểmđónnhậndữliệuvàsẽkích
hoạtsựkiệnngắtCPUmỗikhicódữliệuxuấthiệnđể
kịpthờighidữliệuvàobộnhớ.
Saukhihoànthành,CPUphụchồilạitrạngtháicủahệthốngvàtrởlạitiếptụcthực
hiệnchươngtrìnhtừthờiđiểm
mànóbịngắt.Đốivớibộxửlýngắt,nósẽphảithực
hiệnhainhiệmvụchínhđólà:(1)Xácđịnhcósựkiệnngắtvà(2)nhậndạngsựkiện
ngắttrước
khitácvụphụcvụngắttươngứngđượckíchhoạt.Hình5‐6môtảmộtchu
trìnhcơbảnthựchiệnngắttrongcáchệVXL/VĐK.
Hình5‐6:Chutrìnhthựchiệnngắt
Hình5‐7:Vídụvềcấutrúcphầncứngxửlýngắt
91
Hình5‐8:Cơchếthựchiệnthủtụcngắt
ThủtụckíchhoạtmộttácvụphụcvụsựkiệnngắtđượcmôtảnhưtrongHình5‐8.
ThôngthườngngườitahayquantâmnhiềuđếnđápứngcủaCPUvớisựkiệnngắtvà
thờigianthựchiệntácvụngắt.Ởđâythờigianđápứngphụthuộcvàquyếtđịnhbởi
tốcđộvàkhảnăngxửlýcủaphầncứngcònthờigianthựchiệntácvụ
ngắtchủyếu
quyếtđịnhbởitácvụngắtđódàihayngắnvàdochươngtrìnhquyếtđịnh.
Hình5‐9:Vídụvềnguồnngắt(DSPTMS320C2812)
92
Cácnguồnngắtngoài/cứngcóthểđượcnhậndạngtheokiểutínhiệungắt
• Theosườnxung(ngắtđượckíchhoạtkhixuấthiệnsườnxungdươngtớichân
nhậntínhiệungắt)
• Theomức(ngắtđượckíchhoạtkhixuấthiệnmộttínhiệuxungmứctíchcựctới
chânnhậntínhiệungắt)
Mộtsựkiệnngắtcũngcóthểđượckíchhoạt
chỉbởimộthoạtđộngđọchoặcviếtvào
mộtthanhghithiếtbịngoạivihoặccácthanhghiđiều khiểnhoặctrạngthái.
Sựxungđộttranhchấpgiữacácnguồnngắt
cùngxuấthiệntạimộtthờiđiểmcóthể
đượcgiảiquyếtbằngmứcđộưutiênhoặckếtnốicứngvớibộxửlý.Cácnguồnngắt
ngoàicóthểđượctối
giảnviệcxửlýbằngsựkếthợpvớiphầnmềmvàcùngchias ẻcác
đườngtínhiệungắt.Cơchếthựchiệnngắtcósựtranhchấpvàgiảiquyếtb ằng
mứcđộ
ưutiênđượcmôtảnhưtrongHình5‐10.
Hình5‐10:Cơchếthựchiệnngắttheomứcđộưutiên