73
4 HỆ ĐIỀU HÀNH NHÚNG
4.1 Hệ điều hành
Nguồngốcrađờicủahệđiềuhànhlàđểđảmnhiệmvaitròtrunggianđểtươngtác
trựctiếpvớiphầncứngcủamáytính,phụcvụchonhiềuứngdụngđadạng.Cách
ệ
điềuhànhcungcấpmộttậpcácchứcnăngcầnthiếtđểchophépcácgóiphầnmềm
điềukhiểnphần cứngmáytínhmà khôngcầnphảicanthiệptrựctiế
psâu.Hệ điều
hànhcủamáytínhcóthểthấynóbaogồmcácdriverschocácngoạivitíchhợpvớimáy
tínhnhưcardmànhình,cardâmthanh Cáccôngcụđểquảnlýtàinguyênnhưbộ
nhớvà
cácthiếtbịngoạivinóichung.Điềunàytạoramộtgiaodiệnrấtthuậnlợicho
cácứngdụngvàngườisửdụngpháttriểnphầnmềm trêncácnềnphần
cứngđãcó.
Đồngthờitránhđượcyêucầuvàhiểubiếtsâusắcvềphầncứngvàcóthểpháttriển
dựatrêncácngônngữbậccao.
Hệthốngđiềuhànhbảnchất
cũnglàmộtloạiphầnmềmnhưngnókhácvớicácloại
phầnmềmthôngthường.Sựkhácbiệtđiểnhìnhlàhệthốngđiềuhànhđượcnạpvà
thựcthiđầutiênkhi
hệthốngbắtđầukhởiđộngvàđượcthựchiệntrựctiếpbởibộxử
lýcủahệthống.Hệthốngđiềuhànhđượcviếtđểphụcvụđiềukhiểnbộxửlýcũng
nhưcác tàinguyênkháctronghệthốngbởivìnósẽđảmnhiệmchứcnăngquảnlývà
lậplịchcácquátrìnhsửdụngCPUvàcùngchiasẻtàinguyên.
Hình4‐1:Kiếntrúchệđiềuhành
Tómlại,hệđiềuhànhthựcchấtchínhlàmộtgiaodiệnquantrọng,giaotiếptrựctiếp
vớitầngphầncứngcấpthấpphụcvụchoc ảngườisửdụngc
ũngnhưcác chươngtrình
ứngdụngthựcthitrênnềnphầncứnghệthống.Hơnnữahệđiềuhànhcòncóvaitrò
quantrọngtrongviệcđảmnhiệm3tácvụnguyênlýchính:
(1)Quảnlýquátrình,(2)
Quảnlýtàinguyên,(3)Bảovệtàinguyênkhỏisựxâmphạmcủacácquátrìnhthựcthi
sai.
74
4.2 Bộ nạp khởi tạo (Boot-loader)
Thuậtngữ“bootstrap”bắtnguồntừcáchdiễnđạtcổxưacónghĩalàtựmìnhvươnlên
bằngchínhnỗlựccủabảnthân“pullingyourselfupbyyourownbootstraps”.Nóđãđược
sửdụng
nhưmộtthuậtngữrấtphổbiếnđểgọitênmộtphầnmềmthựcthiviệckhởi
tạochươngtrìnhthựcthitrêncácnềnviđiệntửkhảtrìnhnóichung.Chươngtrình
này
thườngrấtnhỏgọnvàđảmnhiệmchứcnăngtiềnhoạtđộngcủahệđiềuhành.Cũng
rấtphổbiếnhiệnnayngườitacũngthườngdùngthuậtngữ“boot‐loader”
(bộnạpkhởi
tạo)thayvì“bootstrap”.Bộnạpkhởitạothựcchấtlàmộtchươngtrìnhnhỏthựchiện
tronghệthốngvàđảmnhiệmchứcnăngcầnthiếtđểđưa
hệđiềuhànhvàohoạtđộng.
Trongcáchệnhúng,cáclệnhđượcthựchiệnđầutiênthườngnằmtrongcácvùngnhớ
ROMvàthườngthuộcloạichậm.Dóđó,mộttrongnhữngtácvụphổbi
ếncủabộnạp
khởitạolàsaochépchươngtrìnhứngdụngchính(mainprogram)vàotrongvùngbộ
nhớnhanhtrướckhichúngđượcthựchiện.Bộnạpkhởitạocũngcónhiệm
vụkhởitạo
vùngnhớdữliệuvàcácthanhghihệthốngtrướckhinhảytớichươngtrìnhứngdụng
chính.Cũngcórấtnhiềudạngkhácnhaucủabộnạpkhởitạo,
từdạngđơngiảnđến
phứctạp.Dạngđơngiảnnhấtcóthểchỉlàmộtlệnhnhảytớichươngtrìnhứngdụng
chínhngaysaukhiresetmàkhôngthựchiệnbấtkỳ
mộttácvụkhởitạohaynạpchương
trìnhgì.Chươngtrìnhứngdụngchínhsẽphảitựthiếtlậpđểthựcthitácvụcủamình.
Cácbộnạpkhởitạophứctạph
ơncóthểthựchiệnnhiệmvụchuẩnđoánbộnhớvà
khởitạohệthống,kiểmtrachươngtrìnhvànạpchúngtrướckhichobộxửlýnhảytới
thựchiệnchương
trìnhứngdụngchính.
Sauđâychúngtasẽtìmhiểuvềmộtmôitrườngpháttriểnkháđiểnhìnhvàthảoluận
vềmộtsốcácthuộctínhnguyênlýcơbảncủabộnạpkhởi
tạo.
Hình4‐2:NguyênlýthựchiệncủabộnạpkhởitạoBoot‐loader
Trongmôitrườngpháttriểnhệnhúngđiểnhình,nềnphầncứngđíchcầnpháttriển
đượckếtnốivớitrạmchủ(host)thôngquamộtgiaodiệntruyềnthông.Mộtmôitrườ
ng
pháttriểnbaogồmmộtchươngtrìnhgỡrối(debugger)vídụnhưCodeComposerStudio
75
củaTexasInstrument,đểchophépngườipháttriểnchươngtrìnhnạpvàthựchiệnthử
nghiệmcácchươngtrìnhtrênphầncứngđích.Mộtsốcáccôngcụhỗtrợvídụnhưđể
thiếtlập
cácđiểmdừng(breakpoint)…vàcácnhiệmvụphụtrợkhácđểbámsáttrạng
tháiquátrìnhthựcthithờigianthựccủachươngtrìnhthửnghiệm.Điềunàyrấtcóý
nghĩavàtạonênm
ộtsựdễdànghơntrongquátrìnhpháttriểnvàgỡrốimộtchương
trìnhứngdụngmớichonềnphầncứngđích.
Thôngthườngcácứngdụngđượcpháttriểntrongmôitrườngngôn
ngữCthìchương
trìnhứngdụngchínhđượcthựcthivànằmtrongphạmvihàmmain()phầnkhởitạo
chươngtrìnhvànạptiềnthựchiệnchươngtrìnhchínhthườngkhôngtườngminh
hoặc
bịẩnđi.Thựcchấtđiềunàychỉđúngđốivớinhữngngườipháttriểnmãchươngtrình
ứngdụngchínhbằngngônngữbậccao(đặcbiệtchocácứngdụngkhôngph
ảichohệ
nhúng)màkhôngcầnphảiquantâmnhiềuđếncáctácvụcơsởđảmnhiệmviệckhởi
tạocácthanhghihệthống,ngănxếpvàdữliệu…Điềunàycũngrất
cóýnghĩađểtạora
mộtcảmgiácvàmôitrườngpháttriểnthânthiệnchongườipháttriểnchươngtrìnhvà
chỉcầntậptrungphầnthựchiệnchứcnăngchínhcủa
hệthống.Tuynhiêntrongmôi
trườngpháttriểnhệthốngnhúngviệcthựcthichươngtrìnhthườngbắtđầutạiđịachỉ
chươngtrìnhnơibắtđầutácvụkhởitạohệthống
trướckhinhảytớithựchiệnchương
trìnhchínhmain().Quátrìnhnàyđượcbắtđầuthựcchấtlàthựcthimộttácvụngắt
kíchhoạtbởisựkiệnreset.
Boot‐loadercũ
ngcónhiềudạngkhácnhau.Hình4‐2môtảmộtb ộnạpkhởitạochomột
ứngdụngCnhúng.TrongvídụnàyvectorRESETtrỏtớithủtụcc_int00thựchiệntác
vụkhở
itạo.Ngoàiviệckhởitạocácthanhghi,ngănxếp…cácbiếnCcũngcầnđược
khởitạotrướckhiđượcthựcthi.Quátrìnhnàysẽsaochéptừphần.cinitvàviếtvào
các
địachỉdữliệutươngứngcủachúngtrongphần.bss.Saukhihoànthànhchươngtrình
chínhmain()mớiđượcgọivàbắtđầuthựcthi.Trongvídụđơngiảnnàybộnạpkhởi
t
ạotổhợpvector RESET cùng vớihàmkhởitạoc_int00 và giảthiếtrằngcảchương
trìnhbộnạpkhởitạovàchươngtrìnhứngdụngchínhđềunằmcùngtrongvùngnhớ
vậtlý
non‐volatile.Trongcáctrườnghợphệthốngphứctạphơn,bộnạpkhởitạocóthể
baohàmcảtácvụsaochépchươngtrìnhchínhvàotrongvùngnhớfastvolatiletrước
khi nóđượcgọi
và thực thi. Bộ nạpkhởi tạo cũng có thể đảm nhiệm cả chức năng
chuẩnđoán,gỡrốivànângcấphệthốngnếucó.Chứcnăngchuẩnđoáncóthểchỉlà
ki
ểmtrabộnhớ,ngoạivivàđộtươngthíchtíchhợptronghệthống.Chứcnănggỡrối
cũngcóthểlàmộtgiaodiệngiámsátcungcấpthôngtinvàtrạngtháithờigian
thựcvề
hệthốngmàngườitavẫnthườngbiếttớivớitêngọilàchươngtrìnhmonitoring.Việc
nângcấphoặcthayđổichươngtrìnhbộnạpkhởitạocũngcó
thểđượcthựcthinhờkhả
nănglậptrìnhFLASHin‐circuitvànạptừbộnhớngoàithôngquagiaodiệnvớitrạm
chủhoặcchứcnăngtươngtự.
76
Hình4‐3:CấutrúccủabộnạpkhởitạoBoot‐loader
4.3 Các yêu cầu chung
Nhưchúngtađãđượcbiếtđốivớicáchệthốngthờigianthực,yêucầuthiếtkếmộthệ
điềuhànhkháđặcbiệt.Hệnhúngthờigianthựclạiyêucầuhệđiều
hànhphảithực
hiệnvớimộtnguồntàinguyênthườngrấthạnhẹp.Mặcdùkíchthướcbộnhớtíchhợp
on‐chipsẽcóthểtănglêntrongtươnglainhưngvới
sựpháttriểnhiệnnayhệđiềuhành
chocáchệnhúngchỉnêncỡkhoảngnhỏhơn32Kbytes.
Hệthốngđiềuhànhđảmnhiệmviệcđiềukhiểncácchứcnăngcơbảncủa
hệthốngbao
gồmchủyếulàquảnlýbộnhớ,ngoạivivàvàoragiaotiếpvớihệthốngphầncứng.
Mộtđiểmkhácbiệtcơbảnnhưchúngtađãbiếtv
ềhệđiềuhànhvớicácphầnmềm
kháclànóthựchiệnchứcnăngđiềukhiểnsựkiệnthựcthitronghệthống.Cónghĩalà
nóthựchiệncáctácvụtheomệ
nhlệnhyêuc ầutừcácchươngtrìnhứngdụng,thiếtbị
vàoravàcácsựkiệnngắt.
Bốnnhântốchínhtácđộngtrựctiếptớiquátrìnhthiếtkếhệđiều hànhlà(1)kh
ảnăng
thựchiện,(2)nănglượngtiêuthụ,(3)giáthành,và(4)khảnăngtươngthích.Hiệnnay
chúngtacũngcóthểbắtgặprấtnhiềuhệđiềuhànhkhácnhauđặcbiệ
tchocáchệ
nhúngcũngvìsựtácđộngcủa4nhântốnêutrên.Hầuhếtchúngđềucókiểudạngvà
giaodiệnkhágiống nhaunhưngcơchếquảnlývàthựcthicáctácv
ụbêntrongrất
khácnhau.Mỗihệđiềuhànhđượcthiếtkếphụcvụtrựctiếpcácchứcnăngđặcthù
phầncứngcủahệnhúngvàkhôngdễdàngsosánhđượcgiữachúngvới
nhau.
Hai thành phần chính trong thiết kế hệ điều hành là: phần hạt nhân (kernel) và các
chươngtrìnhhệthống.Hạtnhânnóchínhlàphầnlõicủahệđiềuhành.Nóđượcsử
dụngđể
phụcvụchocácbộquảnlýquátrình,bộlậplịchbộquảnlýtàinguyênvàbộ
quảnlývàora.Phầnhạtnhânđảmnhiệmchứcnănglậplịch,đồngbộvàbảov
ệhệ
thốngbởiviệcsửdụngsai,xửlýngắt…Chứcnăngđiềukhiểnchínhcủanólàphụcvụ
điềukhiểnphầncứngbaogồmng ắt,cácthanhghiđiềukhiển,
cáctừtrạngtháivàcác
77
bộđịnhthờigian.Nónạpcácphầnmềmđiềukhiểnthiếtbịđểcungcấpcáctiệních
chungvàphốihợpvớicáchoạtđộngvàoravớihệthống.Phầnhạt
nhâncóvaitròđiều
khiểnrấtquantrọngđểđảmbảotấtcảcácphầncủahệthốngcóthểlàmviệcổnđịnh
vàthốngnhất.
Haikiếntrúcthiếtkếphầnhạt
nhânkinhđiểnnhấtlàkiếntrúcvihạtnhânvàđơnhạt
nhân(monolithic).Cácvihạtnhâncungcấpcácchứcnăngđiềuhànhc ơbảncốtlõi(thô)
theocơchếcácmoduletương
đốiđộclậpđảmnhiệmcáctácvụcụthểvàchuyểnrờirất
nhiềucácdịchvụđiểnhìnhđiềuhànhhệthốngthựcthitrongkhônggianngườisử
dụng.Nhờcơchếnàymà
cácdịchvụcóthểđượckhởitạohoặccấuhìnhlạimàkhông
nhấtthiếtphảikhởitạolạitoànbộhệthống.Kiếntrúcvihạtnhâncungcấpđộantoàn
caob
ởivìdịchvụhệthốngchạyởtầngngườisửdụngvớihạnchếvềtruynhậpvàotài
nguyêncủahệthốngvàcóthểđượcgiámsát.Kiếntrúcvihạtnhâncóthểđược
xây
dựngmộtcáchmềmdẻođểphùhợpvớicấuhìnhphầncứngkhácnhaumộtcáchllinh
hoạthơnsovớikiểukiếntrúchạtnhânmonilithic.Tuynhiêndotínhđộclậ
ptươngđối
giữacácmodultrongvihạtnhânnêncầnthiếtphảicómộtcơchếtraođổithôngtinhay
truyềnthônggiữacácmodulđóvìvậycóthểlàlýdolàmchậmtốc
độvàgiảmtínhhiệu
quảhoạtđộngcủahệthống.Đặcđiểmnổibậtvàcốtlõicủakiếntrúcvihạtnhânlà
kíchthướcnhỏvàdễdàngsửađổicũngnhưxây
dựnglinhhoạthơn.Cácdịchvụthực
thiởtầngtrêncủahạtnhânvìvậyđạtđượcđộantoàncao.Kiếntrúcvihạtnhânđược
pháttriển mạnhmẽtrongcáchệthốngđax
ửlývídụnhưWindows2000,Machvà
QNX.
Kiểukiếntrúcmonolithiccungcấptấtcảchứcnăng/dịchvụchínhyếuthôngquamột
quatrìnhxửlýđơnlẻ.Chínhvìvậykíchthướccủa
chúngthườnglớnhơnkiểukiến
trúcvihạtnhân.Loạihìnhkiếntrúcnàythườngđượcápdụngchủyếuchocácphần
cứngcụthểmàhạtnhânmonolithiccósựtươngtáctr
ựctiếpvớiphầncứngnhờvậymà
khảnăngtốiưucũngdễdàngh ơnsovớiápdụngkiểukiếntrúcvihạtnhân.Chínhvì
vậycũnglàlýdotạ
isaokiếntrúcmonolithickhôngthểthayđổimềmdẻolinhhoạtnhư
kiểuvihạtnhân.Vídụđiểnhìnhvềloạihìnhkiếntrúchạtnhânmonolithicbaogồm
Linux,MacOS,vàDOS.
Vìhệđiề
uhànhcũngđòihỏivềtàinguyênvàkiêmcảchứcnăngquảnlýchúngvìvậy
ngườithiếtkếcầnphảinắmđượcthôngtinvềchúngmộtcáchđầyđủ.Vídụnhưđối
với
hệthốngđiềuhànhchoSunMicrosystemSolarisyêuc ầutốithiểukhônggianbộnhớ
trênđĩalà8MB;Windows2000yêucầukhoảnggấphailầnnhưvậy.
4.4 Hệ điều hành thời gian thực
QNXlàmộtvídụđiểnhìnhvềhệthốngthờigianthựcRTOSđượcthiếtkếđểđápứng
cácyêuc ầuvềlậplịchrấtkhắtkhe.QNXcũngchưathựcsựphùhợpđểcó
thểđược
thựcthichocáchệthốngnhúngbởivìnóđòihỏidunglượngbộnhớkhôngnhỏvà
thườngphùhợpchocácứngdụngđòihỏivềđộantoànvàđộtincậylớn.
78
Hệthốngđiềuhànhthờigianthựclàhệđiềuhànhhỗtrợkhảnăngxâydựngcáchệ
thốngthờigianthực.
Hình4‐4:SosánhkiếntrúcRTOSvàOSchuẩn
Hệthốngđiềuhànhvớiphầnlõilàhạtnhânphảiđảmnhiệmcáctácvụchínhnhưsau:
Xửlýngắt
Lưutrữngữcảnhchươngtrìnhtạithờiđiểmxuấthiệnng
ắt
Nhậndạngvàlựachọnđúngbộxửlývàphụcvụdịchvụngắt
Điềukhiểnquátrình
Tạovàkếtthúcquátrình/tácvụ
Lậplịchvàđiềuphối
hoạtđộnghệthống
Địnhthời
Điềukhiểnngoạivi
Xửlýngắt
Khởitạogiaotiếpvàora
Hình4‐5:Cấutrúchệđiềuhànhthờigianthực
Tùytheocơchếthựchiệnvàxâydựnghoạtđộngcủahạtnhânngườitaphânloạimột
sốloạihình:
79
(1)Hệthốngthờigianthựcnhỏ:Vớiloạinàycácphầnmềmđượcpháttriểnmàkhông
cầncóhệđiềuhành,ngườilậptrìnhphảitựquảnlývàxửlýcácv
ấnđềvềđiềukhiển
hệthốngbaogồm:
Xửlýngắt
Điềukhiểnquátrình/tácvụ
Quảnlýbộnhớ
(2)Côngnghệđanhiệm
Mỗiquátrìnhcómộtkhônggianbộnh
ớriêng
Các quátrìnhphảiđượcchianhỏthànhcácThreadcùngchiasẻkhônggianbộ
nhớ.
(3)Cácdịchvụcungcấpbởihạtnhân
Tạovàkếtthúcquátrình/tácvụ
Truyềnthống
giữacácquátrình
Các dịchvụvềđịnhthờigian
Mộtsốcácdịchvụcungcấphỗtrợviệcthựcthiliênquanđếnđiềukhiểnhệ
thống
Đặcđiểmcơbảncủahạtnhânthờigianthựcđiểnhình:
Kíchthướcnhỏ(lưutrữtoànbộtrongROM)
Hệthốngngắt
Khôngnhấtthiếtphảicócáccơchếbảovệ
9 Chỉhỗtrợphần
kiểmtrachươngtrìnhứngdụng
9 Tăngtốcđộchuyểnngữcảnhvàtruyềnthônggiữacácquátrình
9 Khicácquátrìnhứngdụngđangthựchiệnthìcácyêucầuhệthốngđiề
u
hànhcóthểđượcthựchiệnthôngquacáclờigọihàmthayvìsửdụngcơ
chếngắtmềm
Vihạtnhân(Micro‐kernel):Baogồmmộttậpnhỏcácdịchvụhỗtrợ
9
Quảnlýquátrình
9 Cácdịchvụtruyềnthônggiữacácquátrìnhnếucần
9 Cácphầnmềmđiềukhiểnthiếtbịlàcácquátrìnhứngdụng
Hạtnhânđiểnhìnhcơbả
n
Loạihạtnhânđơngiảnnhấtlàmộtvònglặpvôhạnthămdòcácsựkiệnxuất
hiệntronghệthốngvàphảnứnglạitheosựthayđổinếucó.
V
ớimộtbộxửlýcấuhìnhnhỏnhất,khôngphảilúcnàonócũngcóthểlưucất
ngữcảnhvìkhôngthểthayđổicontrỏngănxếphoặcvùngngănxếprấthạ
n
chế.
Thayvìsửdụngcácthanhghithiếtbị,vònglặpthămdòcóthểgiámsátcác
biếnmàchịusựthayđổicậpnhậtbởicácbộxửlýngắt.
Hạtnhân
cóthểđượcxâydựngsaochotấtcảcáctínhiệulogicđượcđiềukhiển
bởivònglặpvànhịpđượcđiềukhiểnbởicácngắt.
Cáctácvụlớncầnnhiềuthờ
igianthựchiệncóthểđượcchianhỏthànhcáctác
vụnhỏvàđượcthựchiệntạicácthờiđiểmkhácnhaunhờvàocơchếchuyểnvà
sửdụngbộđếm.
80
Cáchạt nhânthựcthitheocơ chếngắtrất giốngvớiloạihạtnhânthựchiện
theocơchếvònglặpthămdò.Nóxửlýtấtcảcáctácvụthôngquacácd
ịchvụ
ngắt.
Cáchạtnhânlớnvàphứctạphơnsẽbaogồmmộtsốcácdịchvụphụphụcvụ
choviệctruyềnthônggiữacácquátrình.Vànếuđượcbổsungđầ
yđủnósẽtrở
thànhmộthệđiềuhànhđầyđủ.
Cáckiểuloạihạtnhâncơbản
Hạtnhânthựchiệnvònglặpthămdò
Hạtnhânthựchiệntheocơchếngắt
Hạtnhânquátrìnhvậnhànhquátrình
Việclựachọnloạihạtnhânnàohoàntoàntùythuộcvàocácbộxửlývàkíchthước
phầnmềm,tuynhiênriêngloạihạtnhânvậ
nhànhtheoquátrìnhkhôngphùhợpvới
cácbộxửlýnhỏ.
Hạtnhânquátrình
Cáchạtnhânquátrìnhrõrànglàphứctạphơncáchạtnhânthựchiệntheocơchếthăm
dòvàđiềukhiểnngắt.Cácđườngtruyềntínhiệulogicbêntrongcácquátrìnhvàcác
dịchvụngắtđượctíchhợpvàthựchiệnthôngquaviệctruyềndữliệu.
Hình4‐6:Môhìnhtrạngtháicủaquátrình
Hạtnhânsẽphảiđảmnhiệmchứcnănglậplịchchocácquátrìnhtheođúngmôhình
trạngthái.
RUN:quátrìnhđượcthựchiện
WAIT:cácquátrìnhchờmộtsựkiệnhoặc
tínhiệuvàorakíchhoạtquátrình
READY:cácquátrìnhsẵnsàngđượcthựchiện
Cácphầntửthuộctínhcủamộtquátrình:Cácphầntửnàycầnthi ếtđểphụcvụcho
việclậplịch.Vídụđốivớicơchếlậplịchtheomứcđộưutiênsẽyêucầuthôngtinsau
vớimỗiquátrình:
9 Tên(địachỉbộnhớcủaphầntửquátrình)
9 Tr
ạngthái:RUN,WAIT,READY
9 Mứcđộưutiên
9 Ngữcảnh(dùngcontrỏđểquảnlýlưucấtthôngtintrongngănxếp)