You are on page 1of 96

Trng i hc Bch khoa H ni

Khoa Cng ngh Thng tin B mn cng ngh phn mm


============= o =============

Bi ging

H iu Hnh
60 tit (45 tit l thuyt + 15 tit thc hnh) (Version 0.11)

Bin son

L Tin Dng
H ni 8-2001

H iu hnh

trang 2/96

Chng 1. Cc khi nim c bn


LT: 6 Tit, TH: 0 Tit 1. Cu trc phn lp v s pht trin ca h thng tnh ton a. Lch s pht trin ca cc h thng tnh ton cc nguyn l pht trin ca processor v h lnh. - 1940-1950 y l giai on ra i th h u tin ca my tnh in t, vi nhng h thng my tnh cu to t cc b phn c kh v n in t. Cc my tnh giai on ny va cng knh (kch c bng mt to nh) va phc tp. Do mt my phi dng nhiu ngi s dng. Trong giai on ny: Phm vi ngi s dng my tnh in t cn b b hp nhng chuyn gia m thi. Ngi thit k xy dng chng trnh chnh l ngi lp trnh v cng l ngi vn hnh. Ngn ng lm vic ca h l ngn ng my l mt chui s nh phn 01 v vy cng vic ca h rt n iu nhm chn v vic mc li l khng th trnh khi do cn hiu chnh chng trnh. V th hiu sut lm vic thp, trung bnh khong 8 cu lnh/ngy. Tn ti cng vic cho mi ngi, mi chng trnh: Mong mun ca ngi s dng lun khc xa vi kh nng p ng ca my tnh. N rt phong ph a dng, cn kh nng ca my tnh trong mt thi gian xc nh l hu nh khng i. Bn cnh cng c nhng kh nng ca my tnh nh tc processor ngi dng t khi khai thc trit . Ngi ta thy mt s cng vic l cn thit cho mi ngi, thng xuyn c s dng do phi xy dng (cc chng trnh chun hay chng trnh mu) Standard Programs. Vic ny c thc hin bi cc nh lp trnh v c cung cp cng vi my tnh. T to thnh mt b th vin chng trnh mu. {Standard Programs} = Library of Standard Programs Ban u cc chng trnh mang tnh cht hon thin: t mt u vo nht nh (input) s a ra mt kt qu(output). Tuy nhin vic ny l khng thun li v hiu qu v c nhiu chc nng con ca chng trnh s lp i lp li nhiu ln. V vy ngi ta ngh n cc phng php ci tin hiu sut lm vic l phi xy dng cc chng trnh con v ci tin h lnh ca processor tc l gim bt cc lnh macroprocessor m thay vo l cc php x l tc ng ln bit, byte.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 3/96

L do: cc hm c s nh ly cn, sinx, hay lu tha khng phi ai cng cn dng, nhng ai cng cn x l thng tin, m c s nh nht ca thng tin nm trong bit, byte nn khi tng cng kh nng cho processor trong lnh vc x l bit th n s gn vi nhu cu ca mi ngi hn. - 1951-1960 {Library of Standard Programs} p ng nhu cu ngi s dng, mt mt ngi ta phi nghin cu cc thut ton ly cn, sinx, cos, . trn c s x l bit, byte; mt khc phi xy dng sn cc modul p ng yu cu nay. i ng ngi s dng ngy cng ln => tho mn nhu cu lp trnh di dng th vin ngy cng ln theo => yu cu s th vin ln vi ni dung s => kh. Gii quyt bng cch phi cung cp cho ngi s dng cng c cho php m t nhng gii thut cn thit => y l thi k ra i ca ngn ng thut ton vi mt lot cc chng trnh dch. Cc ngn ng ra i: Assembler, FORTRAN, COBOL. i i vi chng l k thut bn dn, sn xut c bng t cho php lu tr c mt s chng trnh. c s phn ho chc nng gia ngi lp trnh v thao tc vin (operator). + Processor cng chuyn giao mt s chc nng cho cc thit b khc. + bt u vic nhm cc chng trnh hay tc v (jobs) li x l theo l. c nhng mm mng ca h iu hnh: o Thc hin t ng cc cng vic o Np v gii phng chng trnh trong b nh o Qun l vo ra: c ba, bng t, my in. => M hnh hot ng ca h iu hnh : ngi s dng tc ng trc tip ln MTDT hay thng qua th vin chng trnh mu hoc tc ng trung gian qua chng trnh dch => + H thng qun l o Qun l th vin o Qun l Chng trnh dch o Qun l cung cp dch v - 1960-nay Tin thm mt bc trong vic c s ho th vin chng trnh mu. Thay v cung cp cc chng trnh hon thin, cung cp cc module gii quyt tng phn gii thut, php bin i thng gp => ngoi ra cn cn c nhng modul chuyn phc v iu khin v t chc cc module trong th vin.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 4/96

Ra i pht trin mch tch hp (kch c nh, tc cao), cc a t vi tc truy nhp d liu ln hn. + Ra i cc my vi tnh IBM PC v MSDOS. o Giao din ho o Chc nng a phng tin c nhng vo h iu hnh. o H iu hnh gn vi mng v Internet. o Cc h thng song song: nhiu b vi x l cng chia s mt h thng bus, ng h, thit b ngoi vi, b nh. o Cc h thng phn tn: nhiu b vi x l nhng dng b nh, bus, ng h ring nhng lin lc trao i vi nhau thc hin mt nhim v no . o H thng thi gian thc: Cc x l tinh ton b gii hn v mt thi gian thc hin. Ngi ta a ra cc lp tu chn (option) a my tnh v cc mi trng lm vic ph hp. b. Phn mm v vai tr ca cc lp chng trnh trong h thng tnh ton Trong khi phn k thut thay i chm chp th phn chng trnh bao quanh MTDT pht trin vi tc chng mt. Ngy nay gi thnh ca phn mm chim mt t trng ln trong gi tr ton h thng. - So snh gi thnh gia phn cng v phn mm Ngy 06/06/2001 I. HARDWARE Server
P/N X Series 230 865861Y Description IBM Series x230 PIII 1000 Mhz/ 256 Kb Cache IBM Netfinity 128MB SDRAM ECC RDIMM Intergrated dual channel Ultra 160 LVD SCSI Internal storage: 218.4 GB 10/100 Ethernet intergrated 10 bays( 6 hot plug, 2 half-high, 40x IDE CDROM) 250w Power Supply Cooling fans: 2 IBM Netfinity 128MB SDRAM ECC RDIMM IBM Netfinity 256MB SDRAM ECC RDIMM IBM Netfinity 18.2 GB 10K-4 Wide Ultra160 SCSI IBM E54 Color Monitor, stealth black HP SureStore Tape 40i GB Internal (40GB) TOTAL Unit Price 3,475.00

33L3123 33L3125 37L7205 C5647A

305.00 641.00 598.00 178.00 1,980.00 7,177.00

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 5/96

II. SOFTWARE
P/N Description Unit Price

VISUALAGE JAVA ENTERPRISE EDITION V3.5 00P7778 PROGRAM PKG WEBSPHERE STUDIO ADVANCED V3.5 11K7694 PROGRAM PACKAGE WITH 1 CLIENT ADV Oracle 8i Standard Edition Release 3 (with 5 Client) 659-00399 VStudio Pro 6.0 Win32 English Intl CD Refresh 021-02665 021-03851 227-01187 Office 2000 win 32 English Intl CD Office 2000 win 32 English OLP NL WinNT Svr 4.0 English Intl CD 5 Clt SP4 TOTAL

4,349.00 2,899.00 1,120.00 1,107.76 477.25 385.65 823.25 11,161.91

Cc chng trnh bao quanh phn k thut to thnh mt mi trng tnh ton. Mi chng trnh mun c thc hin phi gn vi mi trng v tha hng mi trng mi kh nng ca h thng. Lm cho thng tin lu chuyn d dng gia cc thnh phn ca h thng. Thng tin u ra ca mt module ny c th lm u vo cho mt module khc. Mi bin i trung gian u do h thng m nhim v trong sut vi ngi s dng. V d: cc phn mm Word, Excel gn lin vi mi trng Windows. Khi cc thng s ca mi trng thay i (H thng font ch, bn phm, ngn ng )=> s nh hng ln cc phn mm ny. D l mt chng trnh hay mt thnh phn ca h thng th u phi hot ng ng b vi ton h thng (cc thnh phn h thng hay chng trnh khc). H thng c chc nng m bo y cc iu kin vt cht chng trnh chy c nh b nh, thi gian phc v ca processor, thit b ngoi vi => Tm li h thng c nhim v qun l ti nguyn. 2. Ti nguyn ca h thng tnh ton - Cc ti nguyn ch yu Ti nguyn phn chia lm hai loi c bn: khng gian v thi gian. Trong khung cnh mi h thng th l khng gian nh v thi gian thc hin lnh. a. B nh - B nh l ni lu tr thng tin. - c trng b nh

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 6/96

+ Thi gian truy nhp trc tip: thi gian trc tip truy nhp ti a ch bt k trong b nh. + Thi gian truy nhp tun t: Khi tn ti mt cch t chc lu tr k tip. B nh thng c phn cp theo tc truy nhp trc tip hay k tip. B nh c gi l thc hin nu processor c th thc hin cu lnh bt k ghi trong . c im ca b nh ny l thi gian truy nhp thc hin v truy nhp tun t l bng nhau. B nh trong bao gi cng l b nh thc hin. + Khng gian b nh + Gi thnh - Phn loi b nh + B nh trong: C tc truy nhp cao nhng khng gian b nh nh + B nh ngoi: C khng gian b nh ln nhng tc truy nhp thp. Thi gian truy nhp trc tip thng ln hn thi gian truy tun t. Loi b nh ph bin l b nh a cng, a mm, bng t, a quang. b. Thi gian processor Bn thn Processor l ti nguyn quan trng. Ti nguyn thi gian y l thi gian thc hin cu lnh ch khng phi thi gian ca cuc sng hng ngy. Processor c dng cho nhiu tin trnh khc nhau do vic phn chia thi gian s dng processor ca mi tin trnh phi c ti u ho, c bit l khi chng cn dng chung ti nguyn khc: chng trnh, d liu, thit b vo ra... Ni cch khc, thi gian processor chnh l mt ti nguyn quan trng ca h thng. c. Thit b ngoi vi - a dng - S lng ln >>1 - Tc x l << tc processor Cc thit b tip nhn, lu tr thng tin b nh ngoi trong thi gian di c gi l thit b ngoi vi. My in, bn phm, mn hnh, chut, modem, .Trc y cc thit b ny thng c t xa phng t my chnh nn gi l thit b ngoi vi. Chng cn c tn gi khc l thit b vo ra. Chng thng c gn vi MTDT thng qua cc thit b trung gian: cc thit b iu khin. Ti nguyn c hai loi: Phn chia c v khng phn chia c. Phn chia c: Cho php nhiu ngi hay chng trnh s dng n mt cch ng thi. in hnh l b nh(trong v ngoi): c th np nhiu chng trnh vo b nh trong, hay 1 chng trnh s dng nhiu tp trn a cng. L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 7/96

Khng phn chia c: phn ln cc ti nguyn cn li. Tuy nhin c th phn phi vic s dng chng sao cho ngi s dng cm gic nh c phc v ng thi. 3. nh ngha HH H iu hnh l mt phn quan trng ca mi h thng thng tin. Mt h thng thng tin gm 4 thnh phn: phn cng, h iu hnh, chng trnh ng dng, ngi s dng. Phn cng: CPU, b nh, thit b vo ra cung cp cc ti nguyn thng tin c s. Cc chng trnh ng dng: chng trnh dch, h thng c s d liu, trnh son tho vn bn . qui nh cch s dng cc ti nguyn gii quyt nhng vn ca ngi s dng. H iu hnh iu khin v ng b vic s dng phn cng ca cc chng trnh ng dng phc v cc ngi s dng khc nhau vi cc mc ch s dng phong ph a dng. Ta c th hiu HH l H THNG cc chng trnh m bo cc chc nng giao tip ngi my v qun l ti nguyn h thng tnh ton. - Tuy nhin c nhiu ngi quan st HH di cc gc khc nhau v th tn ti nhiu nh ngha v HH. i vi ngi s dng: HH l tp hp cc chng trnh, phc v khai thc h thng tnh ton mt cch d dng, thun tin. Ngi s dng khi thc hin mt chng trnh no trn MTDT th ch quan tm n vic h thng c p ng c nhu cu ca h hay khng? C chng trnh cn thc hin, c b nh chy H khng quan tm n vic h iu hnh lm g nhm mc ch g, c cu trc nh th no? i vi ngi lm cng tc qun l: HH l mt tp cc chng trnh phc v qun l cht tr v s dng ti u cc ti nguyn ca h thng tnh ton. i vi cn b k thut: HH l h thng chng trnh bao trm ln mt my tnh vt l c th to ra mt my logic vi nhng ti nguyn mi v kh nng mi. Cc nh nghi trn phn nh v tr quan st ca ngi nu. H ng ngoi h thng v th hin iu h mong i v cng l iu h nhn thy. i vi cn b lp trnh h thng: HH l h thng m hnh ho, m phng cc hot ng ca my, ca ngi s dng v ca thao tc vin hot ng trong cc h thng i thoi nhm to mi trng qun l cht tr cc ti nguyn v t chc khai thc chng mt cch thun tin v ti u. L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 8/96

Cn b lp trnh h thng

N gi s d ng

Cn b k thut

Ngi lm cng tc qun l

Chng trnh dch

Son tho vn bn

Qun l c s d liu

Chng trnh ng dng


H iu hnh Ti nguyn

i vi cc cn b lp trnh h thng, v tr ca h l bn trong h iu hnh. H quan st cc module, cc thnh phn ca h thng, quan st mi quan h gia chng. y l quan im ca chng ta trong sut qu trnh kho st nghin cu h iu hnh. - Nh vy HH l h chuyn gia ra i sm nht v thuc loi hon thin nht. 4. Phn loi h iu hnh a. H iu hnh n nhim v h iu hnh a nhim Da vo cch thc a chng trnh vo b nh, chn chng trnh c sn trong b nh processor thc hin, ngi ta phn thnh: h iu hnh n nhim, a nhim. - H iu hnh n nhim Ti mt thi im xc nh, khi mt chng trnh c a vo b nh th n chim gi mi ti nguyn ca h thng, v v vy chng trnh khc khng th c a vo b nh trong khi n cha kt thc. Nhng do cc thit b vo ra thng lm vic vi tc chm, ngi ta dng k thut SPOOLING(simultanous peripheral Operation on line): cho php to ra hiu ng song song cc thit b ch cho php vo ra tun t(s cp chi tit chng sau). - H iu hnh a nhim

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 9/96

H iu hnh cho php ti mt thi im c nhiu chng trnh trong b nh trong. Chng c nhu cu c phn phi thi gian phc v CPU, b nh v thit b ngoi vi. Nh vy CPU, b nh, thit b ngoi vi v.v.. l cc ti nguyn c chia s cho cc chng trnh . Vn l lm sao m bo tt nht tnh bnh ng khi gii quyt vn phn phi ti nguyn. b. H iu hnh n chng v h iu hnh a chng (MultiUsers) - H iu hnh n chng Ti mt thi im xc nh h iu hnh ch cho php mt ngi s dng thao tc m thi. - H iu hnh a chng H iu hnh cho php ti mt thi im c th phc v nhiu ngi s dng. c. H iu hnh tp trung v h iu hnh phn tn - H iu hnh tp trung Trn mt h thng my tnh ch c mt HH duy nht ci my ch. Cc my trm c khi ng nh my ch v n ch lm chc nng nhp/xut d liu. Mi x l u tp trung my ch. - H iu hnh phn tn Trn mi my c 1 h iu hnh khc nhau, my ch chu trch nhim cung ng cc dch v truy nhp n cc ti nguyn chung v iu hnh ton h thng, cc php x l c th tin hnh my trm. d. H iu hnh phn chia thi gian v h iu hnh thi gian thc - H iu hnh phn chia thi gian (Share time) Mt CPU lun phin phc v cc tin trnh v 1 tin trnh c th ri vo trng thi ch i khi cha c phn phi CPU. - H iu hnh thi gian thc (Real time) Mt tin trnh khi xm nhp vo h thng th bt k lc no u c phn phi CPU. 5. Cc tnh cht c bn ca h iu hnh a. Tin cy - Mi hot ng ca HH u phi chun xc tuyt i. - Thng tin ca HH a ra phi chnh xc v phi ngn nga cc sai st ngu nhin, hn ch cc sai st c . - V d A:\> copy A:\f1.txt C: + Kim tra xem c tn ti cc a khng (control card) L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 10/96

+ Kim tra xem c tn ti a A: + Kim tra xem c tn ti a A + Kim tra kh nng truy nhp a t + Kim tra c tn ti tp f1.txt + Kim tra c c c tp hay khng + Lp li vi C: - HH phi c nhng phng tin kim tra tnh ng n ca d liu trong khi thao tc. b. An ton - H thng c gng bo v thng tin, c gng chng cc trng hp truy nhp khng hp thc. - Chc nng bo v thng tin c chia thnh nhiu mc: + Cc mc do h thng m nhim: V d trong cc h thng UNIX, khi mun xo hay sa i ni dung mt tp, ngi s dng phi c quyn xo sa i vi file . + C mc do ngi s dng m nhim: Lnh DEL *.* ca MSDOS, h thng hi li ngi s dng mt ln na trnh sai st v . c. Khi qut theo thi gian - HH phi c tnh k tha t cc h thng c - HH cng phi c kh nng thch nghi vi nhng thay i trong tng lai. d. Hiu qu - Cc ti nguyn ca h thng phi c khai thc ti u. - HH phi duy tr ng trong ton b h thng. e. Thun tin - HH phi thn thin vi ngi s dng do HH phi c nhiu hnh thi giao tip: + Giao tip dng dng lnh + Giao tip dng thc n (Menu) + Giao tip dng biu tng 6. Nguyn l xy dng chng trnh HH a. Module - HH phi c xy dng t cc module c lp nhng c kh nng lin kt thnh mt h thng c th thu gn hoc m rng tu . - Cc module ng cp quan h vi nhau thng qua d liu vo v ra.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 11/96

- Tn ti quan h phn cp khi cc lin kt cc module to thnh nhng module c kh nng gii quyt cc vn phc tp hn. b. Ph chc nng - Mt cng vic c th thc hin bng nhiu cch khc nhau. - V d Mun in tp f1.txt + C:\> copy f1.txt prn + C:\> type f1.txt >prn + C:\> print f1.txt c. Marco-processor - Khi c mt cng vic c th, h thng s xy dng cc yu cu, lit k cc bc phi thc hin t xy dng chng trnh tng ng, sau thc hin chng trnh ni trn. - V d: Trong MSDOS ta c cc tp config.sys v autoexec.bat d. Nguyn l bng tham s iu khin - H thng khng tham chiu trc tip n thit b, i tng vt l m ch lm vic vi bng tham s xc nh c trng ca thit b . - Bng tham s c h thng xy dng ngay trong qu trnh lm vic - V d Bng tham s ca mt my tnh PC c lu trong CMOS 64byte - Li ch ca vic s dng bng tham s + Truy nhp thc hin cng vic nhanh vi CPU + Khng ph thuc vo cc thit b vt l c th - V d: Bn cnh bng tham s c lu trong CMOS cn c cc bng tham s trong tp config.sys v autoexec.bat cho php ta thay i gi tr cc bin mi trng ca MSDOS. Files = S_tp_m_ti_a e. Nguyn l gi tr chun - HH chun b bng gi tr ca cc tham s gi l bng gi tr chun. Trong trng hp mt module hoc mt cu lnh c nhiu tham s v ngi s dng khng nu ht cc gi tr tham s th HH phi ly gi tr trong bng gi tr chun b xung vo cc tham s thiu. - V d: C:\>TP70>Dir L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 12/96

+ a no? Thng trc: a C: + Th mc no? Thng trc: C:\Tp70 + Xem g? Xem tt c cc tp + a ra u? a ra thit b ra chun: Mn hnh + a ra nh th no? y thng tin - Tham s + Tham s v tr: Xut hin theo v tr v theo dng tham s. + Tham s kho c xy dng theo t kho v c th xut hin v tr bt k, trnh t bt k. - V d C:\> format A: /q + Lnh format a + Tham s v tr: a A + Tham s kho: Format nhanh

f. Nguyn l bo v nhiu mc - Chng trnh v d liu phi c bo v nhiu mc bng nhiu kho. - V d trong Linux + Mc 1: Ngi s dng phi c ti khon mi c s dng my tnh. + Mc 2: Ch nhng ngi s dng thuc nhm A mi c truy nhp v tp chung ca nhm A. L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 13/96

7. Thnh phn ca HH v kin trc HH a. Thnh phn ca HH - Ngn ng lm vic v giao tip H iu hnh phi c t nht 3 ngn ng lm vic v giao tip phc v cho cc i tng khc nhau. + Ngn ng my: L ngn ng thc hin duy nht ca h thng v vy cn gi l ngn ng thc hin. Mi ngn ng khc u phi c nh x sang ngn ng ny. + Ngn ng vn hnh: L ngn ng gip thao tc vin giao tip vi h thng. V d: ngn ng MSDOS. + Ngn ng thut ton: L ngn ng ch yu gip ngi s dng giao tip vi h thng. V d ngn ng Pascal, C, Visual Basic. Mi ngn ng c th c nhiu chng trnh dch nh x sang ngn ng my. - H thng qun l ti nguyn: Supervisor y l h thng phc v phn phi v qun l ti nguyn. b. Kin trc HH CT ng dng CT ng dng

Giao tip

COMMAND MSDOS.SYS

Dch v IO.SYS Nhn BIOS

Nhn l phn chnh ca HH lm cc nhim v nh qun l b nh, qun l tin trnh, phn chia ti nguyn Nhn ch m nhim cc chc nng c bn nht, c kch thc nh gim n mc ti thiu li. Dch v l phn m rng cc chc nng ca HH cho php khai thc ti nguyn h thng v h tr ngi dng nh qun l tp, qun l th mc, th in t, truyn tp. L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 14/96

Giao tip l phn to ra mi trng giao tip gia ngi s dng v my tnh. 8. Cc hnh thi giao tip a. Hnh thi dng lnh Ngi s dng giao tip vi HH qua cc dng lnh, mi lnh c cc tham s tng ng. - u im + D xy dng v gim cng sc cho ngi xy dng h thng. + Ngi s dng c th a tham s ca lnh mt cc chnh xc theo mong mun. - Nhc im + Tc a lnh vo chm, ngi s dng phi nh cc tham s. + i vi cc thao tc vin khng c kinh nghim, th hnh thi giao tip. ny gy cn tr n hiu qu lm vic. + Hnh thi giao tip ny b cn tr bi hng ro ngn ng. b. Hnh thi thc n Ngi s dng giao tip vi HH thng cc cc thc n, cc thc n thng c dng tri xung (Popup). Mi mt thc n con tng ng vi mt chc nng. Cc tham s c th c a vo thng qua giao tip vi ngi s dng. - u im + Hnh thi ny khng yu cu nh lnh + Ngi s dng c th truy nhp vo thc n qua bn phm hoc qua chut. - Nhc im + Hnh thi giao tip ny b cn tr bi hng ro ngn ng. + i khi cc t trn thc n khng nu bt c chc nng ca n c. Hnh thi ca s biu tng Ngi s dng giao tip vi HH thng cc cc thanh cng c v cc biu tng. Mi mt biu tng tng ng vi mt chc nng. Cc tham s c th c a vo thng qua giao tip vi ngi s dng. - u im + Hnh thi ny khng yu cu nh lnh + Ngi s dng khng b hng ro ngn ng gy cn tr. - Nhc im L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 15/96

+ C th c rt nhiu biu tng do gy s nhp nhng v chc nng. + Khng thun li khi thao tc bng bn phm d. Hnh thi kt hp H iu hnh thng kt hp nhiu hnh thi giao tip to ra tnh thn thin vi ngi s dng. V d: vic kt hp thc n vi cc biu tng, hoc kt hp gia cc biu tng v cc t gi (tooltip). Hnh thi giao tip kt hp ny khc phc c cc nhc im ca cc hnh thi giao tip n l. 9. Gii thiu v MSDOS a. Lch s ca DOS - Nhng nm 1980, hng Intel cho ra i b vi x l 16 bt 8086. Jim Paterson b cng sc xy dng h iu hnh mi cho loi my tnh s dng b vi x l ny l 86-DOS. HH ny c gng khc phc nhng im yu ca h iu hnh trc l CP/M. - Microsoft mua li HH ca Jim Paterson v pht trin thnh h iu hnh PCDOS hay MSDOS. Phin bn u tin ca MSDOS th h 1.0 ra i vo 8/1981. - Cc ci tin ca MSDOS 1.0 so vi CP/M + C thm loi chng trnh chy EXE bn cnh cc chng trnh COM. + HH tch b x l lnh thnh mt phn ni tr v mt phn ngoi tr. + tin li cho vic qun l a ngi ta a ra bng File Allocation Table vit tt l FAT qun l a. Mi phn t ca bng FAT tng ng vi 521 byte trn a gi l sector, ch ra sector ny c d liu hay cn t do. + MSDOS 1.0 cho php x l l (batch) mt s lnh ca MSDOS bng cch to mt tp batch. + Ngy thng to hay cp nht tp cng c lu tr cng vi thng tin ca tp. Phin bn MSDOS 2.0 ra i vo nm 1983 Phin bn MSDOS 3.0 ra i vo nm 1984 Phin bn MSDOS 4.0 ra i vo nm 1988 b. Cc thnh phn ca MSDOS - BIOS: Cha cc chng trnh ca supervisor v qun l tp nhng cha kt ni thnh h thng. Do cn chng trnh kch hot. - Chng trnh mi Boot Strap Loader: nm sector u tin ca a t dng kch hot ton b chng trnh h thng. L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 16/96

- IO.SYS: Di s h tr ca BSL bao ly BIOS, cung cp cc dch v c bn nht nh chia s ti nguyn, qun l b nh. - MSDOS.SYS: m rng IO.SYS ln na - COMMAND.COM: lin lc gia ngi s dng v h thng, cha cc lnh ni tr. - Cc lnh ngoi: l thnh phn m rng theo tng lnh vc.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 17/96

Chng 2. H thng x l ngt trong IBM PC


1. Khi nim v ngt v x l ngt trong IBM PC - Ngt l hin tng tm ngng thc hin mt tin trnh chuyn sang thc hin mt tin trnh khc khi c mt s kin xy ra trong h thng tnh ton. C th hiu tm ngha thc hin mt tin trnh l thc hin mt chng trnh, tin trnh b ngt c th coi l chng trnh chnh, cn tin trnh x l ngt c th coi l chng trnh con. - Chng trnh con x l ngt l mt chng trnh ngn ng my hon ton bnh thng. Chng trnh ny a ch kt thc bng lnh IRET (Interupt RETurn), n ra lnh cho b x l quay v thc hin tip chng trnh chnh ng t ch m n b ngt. Ct gi cc thanh ghi

Khi phc cc thanh ghi Chng trnh chnh Chng trnh con

- i vi cc h thng tnh ton vic gi ngt dng cho vic cc b phn khc nhau ca h thng tnh ton bo cho processor bit v kt qu thc hin cng vic ca mnh. 2. Phn loi ngt C nhiu tiu ch phn loi ngt - Phn loi theo ngt trong v ngt ngoi + Ngt trong l ngt do cc tn hiu ca procesor bo cho processor + Ngt ngoi l ngt do cc tnh hiu bn ngoi bo cho processor - Phn loi theo s s dng + Ngt dnh cho HH s dng. Nu thay i x l ngt ny s lm thay i chc nng ca h thng. + Ngt dnh cho ngi s dng

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 18/96

+ Ngt d tr, hoc l cho HH s dng sau ny hoc ngi s dng dng cho mc ch ring. - Phn loi ngt cng v ngt mm, y l cch phn loi ph bin nht a. Ngt mm - L ngt c gi bng mt lnh trong chng trnh. Lnh gi ngt t chng trnh ngn ng my l lnh INT (INTerupt), cc lnh gi ngt t chng trnh ngn ng bc cao s c dch thnh lnh INT. b. Ngt cng - L ngt c gi bi cc chng trnh c cng ho trong cc mch in t. - Ngt cng c chia lm hai loi: + Ngt cng che c (Maskable Interupt) L ngt c th dng mt n ngn cho khng ngt hot ng. Ta c th t cc bt trong mt l bng lnh CLI (CLear Interupt flag). V d: Ngt chut l ngt cng c th b che. + Ngt cng khng che c (Non Maskable Interupt) L ngt khng th dng mt n che c. V d: Ngt 2 bo hiu c li trong b nh. Ngt cng khng che c c u tin cao nht v c CPU phc v trc tt c cc ngt khc. 3. Quy trnh x l ngt a. Quy trnh x l ngt Quy trnh x l ngt c chia thnh 5 bc - Bc 1: Lu c trng s kin gy ngt vo ni quy nh - Bc 2: Lu trng thi ca tin trnh b ngt vo ni quy nh - Bc 3: Chuyn iu khin ti chng trnh x l ngt - Bc 4: Thc hin chng trnh x l ngt, tc l x l s kin - Bc 5: Khi phc tin trnh b ngt b. Chng trnh con v chng trnh x l ngt - Ging nhau Khi thc hin xong cng vic, hai chng trnh u tr v chng trnh mc trn n. L Tin Dng BM Cng ngh phn mm

H iu hnh Ba bc thc hin u tin u ging nhau - Khc nhau Chng trnh con Khi chng ta c li gi chng trnh con, chng ta cn bit ch xc chng trnh con nm ti u. Chng trnh chnh v chng trnh con c gn kt vi nhau thnh mt tin trnh duy nht. Trong chng trnh chnh ta phi khai bo th vin cc chng trnh con.

trang 19/96

Chng trnh x l ngt Chng trnh b ngt v chng trnh x l ngt l 2 tin trnh c lp, 2 tin trnh ny khng bit thng tin ca nhau. Trong chng trnh b ngt cng khng c li gi n chng trnh x l ngt.

4. Bng vector ngt Khi ngt c to ra, ni pht sinh n khng cn bit a ch ca chng trnh x l ngt tng ng m ch cn bit s hiu ngt. S hiu ny ch n mt phn t trong mt bng gi l bng cc vector ngt nm vng c a ch thp nht trong b nh v cha a ch ca chng trnh con x l ngt. a ch bt u ca mi chng trnh con c xc nh bi a ch on v a ch offset c t trc on. Hai a ch ny u l 16 bit (2 byte), nh vy mi a ch ngt chim 4 byte trong b nh. My tnh PC c 256 ngt khc nhau c nh s t 0 n 255 do vy di ca c bng do vy s l 256*4 = 1024. Bng vector ngt chim cc nh t a ch 0 n 3FFh. S th t ca ngt bng s th t ca vector ngt. a ch ca chng trnh x l s i c cha trong bng vc t ngt t a ch offset 4*(i-1) n 4*(i-1) + 3. Mt s ngt thng dng STT S hiu ngt 1 00 2 04 3 08 4 09 L Tin Dng Chc nng Ngt chia cho 0 Ngt trn s Ngt thi gian Ngt bn phm BM Cng ngh phn mm

H iu hnh 5 6 7 8 9 10 11 12 10H 19H 20H 21H 25H/26H 27H 33H 67H Ngt phc v mn hnh Ngt khi ng h thng Kt thc chng trnh Gi cc hm ca DOS c/ghi a Kt thc nhng thng tr Ngt phc v chut Qun l b nh m rng

trang 20/96

5. Gi ngt trong Assembler - V d: Gi ngt 10 h n con tr


Mov AH,1 Mov CX,0100H INT 10H

- Gii thch Cho CH = 1, dng u tin ca ma trn hin th con tr Cho CL = 0, dng cui cng ca ma trn hin th con tr Nh vy CH < CL v vy con tr khng hin ra mn hnh - Nhng ngn ng Assembler vo trong mi trng PASCAL
uses crt; begin writeln('...'); asm mov AH,1 mov CX,$0100 end; readkey; end.

6. Gi ngt trong Pascal Pascal cung cp hai th tc gi ngt trong th vin Dos - Th tc Intr procedure Intr(IntNo: Byte; var Regs: Registers); gi ngt vi mt s hiu ngt bt k - Th tc MsDos procedure MsDos(var Regs: Registers); gi ngt 21H ca DOS. - Kiu bn ghi Registers
type

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 21/96

Registers = record case Integer of 0: (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags: Word); 1: (AL, AH, BL, BH, CL, CH, DL, DH: Byte); end;

Ch : + t cc thng s cho cc thanh ghi trc khi gi th tc. + Ly ra cc gi tr tr v qua cc thanh ghi sau khi gi th tc. - V d: Dng hm 2AH xem ngy
uses Dos; var date, year, month, day: string; regs: Registers; begin regs.ah := $2a; { Hm $2A ly ngy } msdos(regs); with regs do begin str(cx,year); { Chuyn gi tr t s sang xu } str(dh,month); str(dl,day); end; date := day+'/'+month+'/'+year; writeln(' Hom nay la ', date); end.

Kt qu
Hom nay la 11/8/2001

7. B thanh ghi ca 8088 B vi x l 8088 c 14 thanh ghi c di 16 bit v c chia thnh 4 loi a. Cc thanh ghi chung - Thng dng lu tr trong cc php ton s hc. Gm c + AX (Accumulator): Thanh ghi tch ly Thng dng lu tr cc gi tr trong khi thc hin cc php ton s hc. + BX (Base): Thanh ghi c s

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 22/96

Thng dng tr n u ca mt bng dch chuyn trong b nh. N cng c dng ct gi phn a ch offset ca mt a ch theo on. + CX (Count): Thanh ghi m Thng dng nh mt b m iu khin mt vng lp hoc chuyn lp d liu. + DX (Data): Thanh ghi d liu Thng dng ct gi cc gi tr 16 bit cho cc mc ch chung. Cc thanh ghi chung c chia nh thnh hai thanh ghi 8 bit l thanh ghi thp (Low) cha cc bit t 0 n 7 v thanh ghi cao (High) cha cc bit t 8 n 15. Nh vy ta c 8 thanh ghi nh l AH,AL, BH,BL, CH,CL, DH, DL. b. Cc thanh ghi on - CS (Code Segment): Thanh ghi on lnh Dng xc nh on lnh, ni cha chng trnh ang c thc hin. - DS (Data Segment): Thanh ghi on d liu Dng xc nh on d liu, ni cha d liu ca chng trnh ang c thc hin. - SS (Stack Segmen): Thanh ghi on ngn xp Dng xc nh on ngn xp, l vng lm vic tm thi dng theo di cc tham s v cc a ch ang c chng trnh s dng. - ES (Extra Segment): Thanh ghi on ngoi Khi vng nh cn s dng vt qu 64K, b vi x l dng thanh ES tr n mt on thm. Ngoi ra thanh ES cn c s dng cho vic chuyn d liu gia cc on. c. Thanh ghi c L thanh ghi CF c dng lu tr cc c 15 14 13 12 11 10 09 OF DF IF 08 07 06 05 TF SF ZF 04 03 AF 02 01 PF 00 CF

Cc c c chia lm hai loi - Cc c trng thi + CF (Carry Flag): C nh ch php ton s hc c nh + OF (Overflow Flag): C trn ch php ton s hc b trn + ZF (Zero Flag): C zero ch kt qu bng khng hoc so snh bng + SF (Sign Flag): C du ch kt qu m khng hoc so snh m + PF (Parity Flag): C chn l ch s chn cc bit 1 L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 23/96

+ AF (Auxiliary Flag): C nh ph dng trong cc php ton trn cc s BCD (Binary-coded Decimal) - Cc c iu khin + DF (Direction Flag): C nh hng iu khin hng tin/li trong cc php lp + IF (Interupt Flag): C ngt iu khin cho php ngt + TF (Trap Flag): C by iu kin vic thc hin tng lnh d. B m chng trnh - L thanh ghi IP c dng cha a ch offset trong on lnh, ni m chng trnh ang thc hin, v vy cn c gi l con tr lnh. 8. Thay i ngt trong h thng a. Cc bc khi mun thay i ngt - Vit chng trnh con x l ngt
{To chng trnh con x l ngt vi a ch gi 4 byte} {$F+} procedure thay_doi_break; interrupt; begin {thc hin cc x l ngt} end; {$F-}

- Lu tr vector ngt c S dng th tc


procedure GetIntVec(IntNo: Byte; var Vector: Pointer);

Vector thuc kiu Pointer dng cha a ch chng trnh x l ngt. - Thay th vector ngt mi S dng th tc
procedure SetIntVec(IntNo: Byte; Vector: Pointer);

- Thc hin cc chc nng khc - Khi phc vector ngt c b. V d vit chng trnh ng nhp vo my
program Mat_Khau; uses crt,dos; var p: pointer; { cha a ch ngt c } break_flag: boolean; i,j: byte; password: string[16]; procedure pw;

L Tin Dng

BM Cng ngh phn mm

H iu hnh
var i: byte; begin password:= ''; { Password c di bng 3 } for i:= 1 to 3 do password:=password + readkey; end;

trang 24/96

{To chng trnh con x l ngt vi a ch gi 4 byte} {$F+} procedure thay_doi_break; interrupt; begin break_flag:=true; end; {$F-} begin clrscr; { lu ngt Ctrl + Break vo vng nh c tr bi p } getintvec($1B,p); break_flag:=false; { thay i ngt Ctrl + Break } setintvec($1B,addr(thay_doi_break)); i:=0; write('Cho biet mat khau:'); while (i<3) and (not break_flag) do begin pw; if(password = 'ABC') then begin setintvec($1B,p); exit; end else begin i:=i+1; write(#7#7#7); end; end; inline($EA/$00/$00/$FF/$FF); { Lnh JMP FFFF:0000 } end.

9. Mt s hm v th tc thng dng trong lp trnh h thng - Cc ton t Logic


not and or

L Tin Dng

BM Cng ngh phn mm

H iu hnh
xor shl shr

trang 25/96

- V d:
{ not and or xor shl shr } | | | | | | Bitwise negation|integer Bitwise and |integer Bitwise or |integer Bitwise xor |integer Shift left |integer Shift right |integer type type type type type type |integer |integer |integer |integer |integer |integer type type type type type type

procedure WriteBiWord(w: Word); var i: byte; begin for i := 15 downto 0 do begin if((w shr i) mod 2 = 0) then Write('0') else Write('1'); if(i mod 4 = 0) then Write(' '); end; end; procedure WriteHexWord(w: Word); const hexChars: array [0..$F] of Char = '0123456789ABCDEF'; begin Write(hexChars[Hi(w) shr 4], hexChars[Hi(w) and $F], hexChars[Lo(w) shr 4], hexChars[Lo(w) and $F]); end; procedure WriteWord(w: Word); begin Writeln; Write('w = ',w); Write(' = '); WriteHexWord(w); Write(' = '); WriteBiWord(w); end; procedure TestShift; var

L Tin Dng

BM Cng ngh phn mm

H iu hnh
A: Word; begin writeln; writeln('-------------'); A := $8FFF; WriteWord(A); A := A shl 2; WriteWord(A); A := A shr 4; WriteWord(A); end; procedure TestNotAndOrXor; var A,B: Word; begin writeln; writeln('-------------'); A:= $1234; B:= $5678; WriteWord(A); WriteWord(B); WriteWord(NOT A); WriteWord(A AND B); WriteWord(A OR B); WriteWord(A XOR B); end; begin TestShift; TestNotAndOrXor; end. { Ban Dau : w = 36863 = Sau quay trai: w = 16380 = Sau quay phai: w = 1023 = ------------A = 4660 = B = 22136 = NOT A = 60875 = A AND B = 4656 = A OR B = 22140 = A XOR B = 17484 = 1234 5678 EDCB 1230 567C 444C = = = = = = 0001 0101 1110 0001 0101 0100 0010 0110 1101 0010 0110 0100 0011 0111 1100 0011 0111 0100 0100 1000 1011 0000 1100 1100

trang 26/96

8FFF = 1000 1111 1111 1111 3FFC = 0011 1111 1111 1100 03FF = 0000 0011 1111 1111

L Tin Dng

BM Cng ngh phn mm

H iu hnh
}

trang 27/96

- Hm ly byte cao ca mt t (word)


function Hi(X): Byte;

Lo(x) Hi(x)

- Hm ly byte thp ca mt t (word)


function Lo(X): Byte;

- Hm hon i ni dung byte thp v byte cao


function Swap(X): (Same type as parameter);

- V d:
var A,B: Word; A1,A2: Byte; procedure WriteHexWord(w: Word); const hexChars: array [0..$F] of Char = '0123456789ABCDEF'; begin Write(hexChars[Hi(w) shr 4], hexChars[Hi(w) and $F], hexChars[Lo(w) shr 4], hexChars[Lo(w) and $F]); end; begin A := $1234; { 4660 } writeln; write('A = ', A, ' = $');WriteHexWord(A); { function Hi(X): Byte; } A1 := Hi(A); { $12 = 18 } writeln; write('A1 = ', A1, ' = $');WriteHexWord(A1); { function Lo(X): Byte; } A2 := Lo(A); { $34 = 52 } writeln; write('A2 = ', A2, ' = $');WriteHexWord(A2); writeln; { function Swap(X): (Same type as parameter); } B := Swap(A); { $3412 = 13330 } write('B = ', B, ' = $');WriteHexWord(B); end.

- Hm ly a ch on ca mt bin, mt th tc hay mt hm
function Seg(X): Word;

L Tin Dng

BM Cng ngh phn mm

H iu hnh - Hm ly a ch offset ca mt bin, mt th tc hay mt hm


function Ofs(X): Word;

trang 28/96

- Hm ly a ch on ca on m hin thi
function CSeg: Word;

- Hm ly a ch on ca on d liu
function DSeg: Word;

- Hm ly a ch on ca on ngn xp (stack)
function SSeg: Word;

- Hm ly gi tr ca con tr stack IP ca on ngn xp


function SPtr: Word;

- V d:
{ CSeg, DSeg, SSeg, SPtr, Ofs, and Seg functions.} { function Ofs(X): Word; } procedure WriteHexWord(w: Word); const hexChars: array [0..$F] of Char = '0123456789ABCDEF'; begin Write(hexChars[Hi(w) shr 4], hexChars[Hi(w) and $F], hexChars[Lo(w) shr 4], hexChars[Lo(w) and $F]); end; var i: Integer; begin Write('The current code segment is $'); WriteHexWord(CSeg); Writeln; Write('The global data segment is $'); WriteHexWord(DSeg); Writeln; Write('The stack segment is $'); WriteHexWord(SSeg); Writeln; Write('The stack pointer is at $'); WriteHexWord(SPtr); Writeln; Write('i is at offset $'); WriteHexWord(Ofs(i)); Write(' in segment $'); WriteHexWord(Seg(i)); end.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 29/96

{ CSeg DSeg SSeg SPtr i is }

: The current code segment is $0DC7 : The global data segment is $0E6D : The stack segment is $0E98 : The stack pointer is at $3FFE at offset $0062 in segment $0E6D

- Hm ly a ch ca mt bin, mt th tc hay mt hm
function Addr(X): pointer;

- Hm ly a ch khi bit a ch on v a ch offset


function Ptr(Seg, Ofs: Word): Pointer;

- V d:
{ function Addr(X): pointer; } { function Ptr(Seg, Ofs: Word): Pointer; } var P1, P2: ^Byte; i, j : Byte; begin writeln('--------'); i := 1; P1 := Addr(i); Writeln('i = ', P1^); j := i + 1; P2 := Ptr( seg(j), ofs(j)); Writeln('j = ', P2^); end. { i = j = }

1 2

- Th tc xin cp pht v gii phng b nh b nh


procedure GetMem(var P: Pointer; Size: Word); procedure FreeMem(var P: Pointer; Size: Word);

- V d:
{ function SizeOf: Integer; } { procedure GetMem(var P: Pointer; Size: Word);} { The largest block that can be safely allocated on the heap at one time is 65,528 bytes (64K-$8). } { procedure FreeMem(var P: Pointer; Size: Word); } type NhanVien = record

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 30/96

Ten: string[40]; { 40 + 1 di k t } DiaChi: string[40]; { 40 + 1 di k t } DienThoai: string[20]; { 20 + 1 di k t } Tuoi: byte; { 1 } GioiTinh: boolean; { 1 } end; var P: ^NhanVien; begin GetMem(P, SizeOf(NhanVien)); Writeln ('Kich thuoc bg la ', SizeOf(NhanVien), ' bytes.'); FreeMem (P, SizeOf(NhanVien)); end. { Kich thuoc cua ban ghi la 105 bytes.}

- Th tc sao chp cc byte


procedure Move(var Source, Dest; Count: Word);

- V d:
{ procedure Move(var Source, Dest; Count: Word); Copies bytes from source to dest. } procedure WriteHexWord(w: Word); const hexChars: array [0..$F] of Char = '0123456789ABCDEF'; begin Write(hexChars[Hi(w) shr 4], hexChars[Hi(w) and $F], hexChars[Lo(w) shr 4], hexChars[Lo(w) and $F]); end; var A: array[1..2] of Byte; B: Word; i: Byte; begin for i := 1 to 2 do A[i] := i; { A[1] = 1; A[2] = 2; => A = $0201 } Move(A, B, SizeOf(A)); { B = 513 = $0201; } writeln; write('B = ', B); write(' = '); WriteHexWord(B); end.

- Th tc in y mt s cc byte vi mt gi tr kiu byte hoc kiu char L Tin Dng BM Cng ngh phn mm

H iu hnh
procedure FillChar(var X; Count: Word; value);

trang 31/96

- Truy nhp trc tip b nh


Mem, MemW, MemL

Mem ly mt byte ti a ch c tr bi a ch on v a ch offset. MemW ly mt word (2 bytes) ti a ch c tr bi a ch on v a ch offset. MemL ly mt longint (4 bytes) ti a ch c tr bi a ch on v a ch offset. - V d:
var i: Byte; j: Word; k: Longint; begin i := 1; j := 1000; k := 1000000; writeln; writeln('i = ', Mem[seg(i):ofs(i)]); writeln('j = ', MemW[seg(j):ofs(j)]); writeln('k = ', MemL[seg(k):ofs(k)]); end.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 32/96

Chng 3. Qun l thit b ngoi vi v tp


LT: 12 Tit, TH: Khi cng ngh thng tin ngy mt pht trin, s lng cc thit b ngoi vi gn vo my tnh ngy cng ln. T chc v qun l cc thit b ngoi vi ngy mt kh khn v quan trng. Nhim v c bn v quan trng nht ca cc HH hin i l qun l v khai thc ti u cc thit b ngoi vi. Nhim v ny quyt nh hiu sut chung ca ton h thng. 1. Nguyn l phn cp trong t chc v qun l thit b ngoi vi a. Gii thiu Thit b ngoi vi ht sc a dng, phong ph v chng loi v c th gn vo vo h thng vi s lng ln. Ngoi cc thit b chun c tnh cht bt buc do ngi sn xut cung cp nh bn phm, mn hnh, chut cc h thng tnh ton phi lun c tnh m tc l kh nng giao tip vi s lng tu cc thit b ngoi vi b xung. iu ny l cn thit v h thng tnh ton phi sn sng c th s dng cho mt mi trng bt k. V d: My tnh c th gn vo my c th kim tra nhn vin c i lm hay khng? hn ch s xm phm tri php. Ni chung cu to v chc nng ca cc thit b ngoi vi l khc nhau. V d: mn hnh l thit b ra chun, bn phm l thit b vo chun. Tuy chng u l thit b chun nhng r rng cu to v hot ng ca hai thit b ny khc nhau rt nhiu. Hn na cc tnh hiu iu khin c truyn n cc thit b s iu khin thao tc hin hnh ca n. Rt kh c cc tn hiu ring cho tng chc nng ring ca cc thit b bao gm c cc thit b c th c thm vo trong sut thi gian tn ti ca h thng. V d: 1 tn hiu ca h thng a n my in c th hiu l b qua mt dng (dng trng) nhng li c ngha l tua li nu tn hiu c a n bng t. Chnh v vy m processor khng th lm vic trc tip vi cc thit b ngoi vi ny m ch lm vic vi cc thit b iu khin (Device Controller).

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 33/96

Cc thit b iu khin ny s thng dch tn hiu iu khin cho ph hp vi thit b ngoi vi gn vi n v s iu khin thao tc tng ng vi thit b. i vi mt h thng my tnh cc thit b iu khin hot ng nh nhng my tnh chuyn dng (c h lnh ring v chng trnh ring). Mt my tnh c th c nhiu thit b iu khin. Processor

Device Controller 1 IO Device 1 IO Device 2 IO Device m

Device Controller 2

DCn

b. Knh Mt thit b iu khin v cc thit b ngoi vi do n iu khin to thnh mt h thng hot ng c lp gi l knh. Mt my tnh c th c nhiu knh, cc knh ny phi c kh nng lin h vi processor. - Knh n v knh b: Nu thit b iu khin lm vic trc tip vi thit b vo ra ta c knh n. Knh b c knh c nhiu knh n, tc l thit b iu khin li iu khin cc thit b iu khin khc. Device Controller

TBK 1 IO Device 11 IO Device 12

TBK 2 IO Device 21

IO Device

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 34/96

- Trao i vo ra vi knh thc hin mt php trao i vo ra mt knh no th processor phi to ra chng trnh trn ngn ng ca thit b iu khin (cn gi l chng trnh knh). Tip theo processor chuyn giao chng trnh knh cng vi d liu cn thit cho knh. Sau processor tip tc thc hin cng vic ca mnh. Nh vy cc cng vic ca knh c thc hin song song vi cng vic ca processor iu ny lm tng tc chung ca c h thng. Khi knh thc hin xong cng vic ca mnh knh s bo v cho processor di dng ngt vo/ra cng vi m kt qu thc hin cng vic (return code). Tn hiu ngt c th c x l ngay lp tc hay phi ch i hoc thm ch b hu b nu processor thy khng cn thit. M kt qu bao gi cng c lu tr ch processor x l. Khi processor dng cng vic ca mnh nh gi cng vic thc hin ca knh (tn hiu ngt c x l), processor s ly m tr v t knh. Nu m cho bit knh thc hin tt p th processor c th giao tip cng vic mi cho knh (nu cn). Ngc li, processor c th yu cu knh thc hin li cng vic. Nu sau n ln (ph thuc vo tng h iu hnh) vn khng c ta mi nhn c thng bo li. Ngn ng knh c th c a vo h thng khi np h iu hnh hoc c th c cung cp cho processor ngay khi h thng hot ng. i vi MSDOS gii quyt bng cc a cc cu lnh iu khin thit b trong CONFIG.SYS hoc thc hin cc chng trnh cung cp ngn ng knh trong khi h iu hnh ang lm vic. - V d i vi thit b ngoi vi chut + Ta c th a vo tp config.sys cu lnh
Device = C:\mouse\mouse.sys

+ Hoc thc hin chng trnh Mouse.com - V d (m rng ni thm): to a o


Device = c:\windows\Ramdrive.sys 200

To mt a o (RAM disk) kch thc 200K, nu ch c mm A: th a ny s l a B: 2. Phng m (Buffer) c trng c bn ca thit b ngoi vi l tc hot ng nh hn nhiu ln so vi tc hot ng ca processor. thc hin mt php vo ra h thng phi kch hot thit b, ch i thit b t trng thi thch hp (V d nh my in phi ch nng ) v sau ch i cng vic c thc hin. Chnh v L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 35/96

vy phn ln cc thit b vo ra lm vic vi tng khi d liu ch khng phi tng byte ring l. m bo nng sut, h thng cn phi + C gng thc hin song song cng vic vo ra vi cc php x l thng tin khc + Gim s lng cc php trao i vo ra vt l + Thc hin trc cc php nhp d liu - Nh vy ngi ta phi s dng phng m nng cao nng sut + Phng m ca h iu hnh l mt vng nh dng lu tr tm thi cc thng tin phc cho cc php vo ra. + Ngoi ra cn c phng m ca thit b khng ph thuc vo h iu hnh gi l phng m k thut. V d phng m ca my in. - V d
Assign(f,f1.txt); Reset(f); Read(f,a);

Reset(f) Buffer

Read(f,a) a

Khi thc hin Reset(f) th h thng a d liu t a ln vng m. Khi chng trnh mun c d liu t tp vo bin a th h thng ch cn ly d liu t vng m thay cho vic c tp. Gi thit mi ln truy nhp a mt 0,01 giy, kch thc vng m l 512 bytes v thi gian truy nhp vo b nh l rt nh (so vi 0,01) S byte cn c Khng c vng m C vng m 1B 0,01 0,01 512B 5 = 512x0.01 0,01 5KB 50 = 10x5 0.1 = 10x0.01 50KB 8 = 10x50 1 = 10x01. L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 36/96

- Phn loi phng m a. Phng m trung chuyn - L phng m thun tu lu tr tm thi cc php phc v vo ra. - Phng m ny c hai loi + Phng m vo l phng m ch dng nhp thng tin. Trong h thng s c lnh a thng tin vo phng m (c vt l). Khi gp ch th c (READ), thng tin s c tch v chuyn t phng m vo cc a ch tng ng trong chng trnh ng dng. Nh vy, mi gi tr c lu tr hai ni trong b nh (mt phng m v mt vng b nh trong chng trnh ng dng). Khi gi tr cui cng ca phng m vo c ly ra th phng m c gii phng (rng) v h thng a thng tin mi vo phng m trong thi gian ngn nht c th. gim thi gian ch i, h thng c th t chc nhiu phng m vo, khi ht thng tin mt phng m, h thng s chuyn sang phng m khc. + Phng m ra l phng m ghi thng tin. Trong h thng c lnh gii phng phng m (ghi vt l). Khi c ch th ghi (WRITE), thng tin c a vo phng m. Khi phng m ra y, h thng s a thng tin ra thit b ngoi vi. H thng cng c th t chc nhiu phng m ra. Buffer System Buffer Read(f,a) Write(f,a) a - u im: + n gin + C h s song song cao v tc gii phng vng m ln + C tnh cht vn nng, thch ng vi mi phng php truy nhp - Nhc im + Tn b nh + Tn thi gian trao i thng tin trong b nh System

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 37/96

b. Phng m x l Thng tin c x l ngay trong phng m khng ghi li vo ni khc trong b nh. Ch th c xc nh a ch thng tin ch khng cung cp thng tin ch khng cung cp gi tr. Buffer System

a ch a - u im: + Tit kim b nh + Khng mt thi gian chuyn thng tin b nh trong, thch hp khi cn kch thc bn ghi d liu ln. - Nhc im + Tnh vn nng khng cao + H s song song thp c. Phng m vng trn Phng m vng trn thng c ba phng m

Ghi X l

- Sau mt khong thi gian vai tr ca ba phng m c thay i cho nhau. - u im:

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 38/96

+ C s ng b gia c, ghi v x l (ba qu trnh c thc hin song song). + Thng p dng cho h c s d liu v hu dng nht khi lng thng tin vo bng lng thng tin ra. - Nhc im (khng thy c, t ngh ra) 3. SPOOL- Simultaneous Peripheral Operation On-Line M phng cc php trao i vo ra ngay trong lc thc hin - Spool l c ch thay mt thit b ngoi vi bng mt thit b trung gian c kh nng dng chung, c tc cao v sau thay tr li thit b trung gian bng thit b cui khi iu kin cho php. - u im: + C th mau chng kt thc chng trnh ngi s dng + Ta gii phng c cc rng buc v s lng thit b + Khai thc cc thit b ngoi vi mt cch ti u - Cc phng php t chc SPOOL + Phng php 1 Tin hnh a thng tin ra thit b trung gian trn thit b m chng ta m phng v chng ta c th sao chp nguyn vn kt qu ra thit b cui, iu ny ch lm c khi 2 thit b c tnh nng tng ng. + Phng php 2 Bc 1: To chng trnh knh 1 theo yu cu ca ngi s dng V d: ngi s dng cn a ra my in => to chng trnh knh a ra my in. Bc 2: To chng trnh knh 2 c nhim v lu tr chng trnh knh 1 v d liu ca n ln thit b trung gian X l kt thc: chuyn chng trnh knh lu tr (chng trnh knh 1) ra knh ca thit b cui.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 39/96

4. Qun l mn hnh a. Gii thiu Cc thnh phn ca thit b mn hnh. Trong my IBM PC, thit b mn hnh gm c hai thnh phn: 1. Card mn hnh (display adapter) 2. Mn hnh hin th, cn gi tt l mn hnh (monitor) Card mn hnh ni my tnh vi mn hnh thng qua mt chip l b iu khin (Cathode Ray Tube Controller). Card mn hnh c cc cng vo/ra lp trnh c, vng nh ( to) k t ROM v b nh mn hnh RAM cha thng tin cn a ra mn hnh hin th. Cc cng vo ra ca mn hnh: Cng M t M t thm 2c0-2df EGA #2 EGA I/O Ports 3b0-3df Video Graphics Array (VGA) VGA I/O Ports 3c0-3cf Enhanced Graphics Adapter (EGA) #1 EGA I/O Ports 3d0-3df Color/Graphics Adapter (CGA) and EGA CGA I/O Ports b. B nh mn hnh B nh mn hnh v mt logic c coi nh mt phn ca b nh nm v tr A0000-BFFFF l ni lu tr thng tin hin th cho mn hnh c ch ho v ch vn bn. - Vi mn hnh VGA (c s dng phn ln hin nay), b nh mn hnh vn bn bt u t v tr B8000-BFFFF (di 8000H). Trong ch ny mi k t trn mn hnh tng ng vi 2 byte trong b nh. + Byte u tin s lu tr m ASCII ca k t + Byte tip theo lu tr thuc tnh ca k t 7 6 5 4 3 2 1 0 Blink Red Green Blue Intensity Red Green Blue Mu nn Mu k t

Intensity = 1 : mu ch c tng sng L Tin Dng BM Cng ngh phn mm

H iu hnh Fgb = 1 : mu nn c t sng - Bng mu Do ba bt kiu R,G,B to thnh cc mu S th t 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Dng Hex 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0aH 0bH 0cH 0dH 0eH 0fH Mu black blue green cyan red magenta brown white gray bright blue bright green bright cyan bright red bright magenta yellow bright white

trang 40/96

i vi mu nn ch c th c cc mu t 1 8 tc l n mu c m l 7H (White). - Hin th mt k t K t c v tr (y,x) tnh t (0,0) n (79,24) trn mn hnh th v tr ca n trong b nh l x

(y,x)

B8000 + 80.2.y + 2.x = B800:160y + 2.x Nh vy ti nh c a ch B800:160y + 2.x ta a m k t cn hin th L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 41/96

ti nh c a ch B800:160y + 2.x + 1 ta a thuc tnh k t - Gii thch khai bo bin dng absolute + Khi ta khai bo bin nh sau
Var tn_bin : tn_kiu absolute Seg:Ofs;

Th chng trnh s to ra mt bin vi a ch ca bin ti a ch c tr bi seg v ofs. Khai bo bin dng ny cho php ta truy nhp b nh mt cch thun tin hn. + V d:
head: Word absolute $0040:$001A;

Chng trnh s to ra mt bin kiu word ti a ch $0040:$001A; - V d in mt k t X ti dng 10, ct 40 tc l (y,x) = (39,9) vi mu nn l mu xanh (c m l 01H) v ch mu (c m l 04H)
uses crt,dos; var A: Array[0..4000] of Byte absolute $B800:$0000; x,y: integer; ch : char; tt : byte; begin clrscr; ch := 'X'; x := 39; y := 9; A[160*y + 2*x] := ord(ch); { k t X } tt := tt OR $14; { mau nen = BLUE, mau chu = RED } A[160*y + 2*x + 1] := tt; readkey; end.

- V d: in ra mn hnh xu 'Truong Dai Hoc Bach Khoa'


uses crt,dos; const str : string = 'Truong Dai Hoc Bach Khoa'; var A: Array[0..4000] of Byte absolute $B800:$0000; x,y,i: integer; begin clrscr; x := 9; y := 9; { dng 10 ct 10 } for i:= 1 to length(str) do A[160*y + 2*(x+i)] := ord(str[i]); readkey; end.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 42/96

- V d: Khi to mn hnh ho 256 mu (mt pixel chim 1 byte) v v mt ng thng t (0,0) (99,99) (Cn phi t li trang???)
uses Graph,Crt; var gd,gm: integer; A: Array[0..4000] of Byte absolute $A000:$0000; i: integer; begin gd :=installUserDriver('SVGA256',Nil); gm := 2; { 640 x 480 } InitGraph(gd,gm,'c:\tp70\bgi'); for i := 0 to 99 do A[i*(getmaxx + 1) + i] := Green; { v getmaxx cho 639 v vy phi cng thm 1 } readkey; closegraph; end.

c. Mt s hm phc v mn hnh ca ROM BIOS Ta s dng ngt 10h ca ROM BIOS cho mn hnh. Gi tr ca hm c a vo thanh ghi AH. - t kch thc con tr: Ta s dng hm 01h + Input:
AH = 01H CH = start line (0-1fH; 20H=no cursor) CL = end line (0-1fH)

- t v tr con tr: Ta s dng hm 02h + Input:


AH = 02H BH = video page (0-based) DH,DL = row,column (0-based)

+ V d:
uses crt, dos; var r: Registers; begin r.ah := $02; { ham dat vi tri con tro } r.bh := 0; { trang 0 } r.dh := 10; { dong 10 } r.dl := 40; { cot 40 } intr($10,r); readkey; end.

- c con tr: Ta s dng hm 03h L Tin Dng BM Cng ngh phn mm

H iu hnh + Input:
AH = 03H BH = video page (0-based)

trang 43/96

+ Output:
DH,DL = current row,column of cursor CH,CL = current start,end line of cursor

+ V d:
uses crt, dos; var r: Registers; begin clrscr; r.ah := $02; { ham dat vi tri con tro } r.bh := 0; { trang 0 } r.dh := 10; { dong 10 } r.dl := 40; { cot 40 } intr($10,r); r.ah := $02; r.bh := 0; intr($10,r); write('x'); writeln; writeln('vi tri hien thoi cua con tro la (', r.dh,' , ', r.dl, ')'); writeln('start line = ', r.ch, ', end line = ', r.cl); readkey; end.

- Cun mn hnh ln mt s dng trong phm vi mt ca s: S dng hm 06h + Input:


AH = 06H CH,CL = row,clm of upper left corner of window (0-based) DH,DL = row,clm of lower right corner of window AL = number of blank lines to scroll in (0=blank entire window) BH = video attribute to be used on blank lines

+ V d:
uses crt, dos; var r: Registers; i,j: byte; begin

L Tin Dng

BM Cng ngh phn mm

H iu hnh
clrscr; for i := 1 to 9 do for j := 1 to 80 do write('.'); for i := 10 to 25 do for j := 1 to 80 do write('!');

trang 44/96

r.ah := $06; { ham cuon trong cua so } r.al := 10; r.ch := 6; { dong 6 goc trai} r.cl := 20; { cot 20 goc trai} r.dh := 20; { dong 20 goc phai} r.dl := 60; { dong 60 goc phai } r.bh := $40; {mu nn=mu xem thm thuc tnh kt) intr($10,r); readkey; end.

- Cun mn hnh xung mt s dng trong phm vi mt ca s: + S dng hm 07h. Cc tham s nh hm 06h - Bi tp: Lu li ton b mn hnh vn bn ra tp, sau khi phc li mn hnh khi hon thnh cng vic gii phng trnh bc 2. L Tin Dng BM Cng ngh phn mm

H iu hnh - Li gii

trang 45/96

uses crt,dos; type MH = Array[0..4000] of Byte; var A: MH absolute $B800:$0000; f: file of MH; begin clrscr; writeln('Xin chao cac ban da den voi mon HDH'); writeln('Ban khoe chu'); assign(f,'mh.hex'); rewrite(f); write(f,A); { dua bo nho man hinh ra tep } close(f); while keypressed do readkey; readkey; clrscr; writeln('Bam mot phim bat ky'); while keypressed do readkey; readkey; reset(f); read(f,A); { dua tu tep ra bo nho man hinh } while keypressed do readkey; readkey; close(f); end.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 46/96

5. Qun l bn phm a. Gii thiu Bn phm c iu khin thng qua 1 b iu khin bn phm l b Vi X L 8048 (i vi PC chun) hoc 8042 (i vi my AT). Mi khi c s kin bm hoc nh phm th b iu khin ny c nhim v bo cho ROM-BIOS bit x l. Nu mt phm c bm lu th b iu khin lp li phm ny sau nhng khong xc nh. Mi ln bm th cc vi mch ca bn phm to ra mt s 1 byte gi l m qut (scan code) c trng cho phm tng ng. Bn phm to ra mt m scan khc khi mt phm c nh. C th: Khi bm mt phm, bn phm to ra mt m scan, khi nh phm bn phm to ra mt m scan khc bng m scan lc bm cng thm 128 (cho bt 7 ca m scan lc bm bng 1).
| Keyboard Scan Codes | |------------------------------------------------------------------------------| |Hex Dec Key |Hex Dec Key |Hex Dec Key |Hex Dec Key |Hex Dec Key | |------------+-------------+---------------+----------------+------------------| |01 1 Esc |12 18 E |23 35 H |34 52 . > |45 69 NumLock | |02 2 1 ! |13 19 R |24 36 J |35 53 / ? |46 70 ScrollLock| |03 3 2 @ |14 20 T |25 37 K |36 54 Shft(Rt)|47 71 Home [7] | |04 4 3 # |15 21 Y |26 38 L |37 55 * PrtSc |48 72 Up [8] | |05 5 4 $ |16 22 U |27 39 ; : |38 56 Alt |49 73 PgUp [9] | |06 6 5 % |17 23 I |28 40 " ' |39 57 spacebar|4a 74 K | |07 7 6 ^ |18 24 O |29 41 ` ~ |3a 58 CapsLock|4b 75 Left [4] | |08 8 7 & |19 25 P |2a 42 Shft(L)|3b 59 F1 |4c 76 [5] | |09 9 8 * |1a 26 [ { |2b 43 \ | |3c 60 F2 |4d 77 Right[6] | |0a 10 9 ( |1b 27 ] } |2c 44 Z |3d 61 F3 |4e 78 K + | |0b 11 0 ) |1c 28 Enter|2d 45 X |3e 62 F4 |4f 79 End [1] | |0c 12 - _ |1d 29 Ctrl |2e 46 C |3f 63 F5 |50 80 Down [2] | |0d 13 + = |1e 30 A |2f 47 V |40 64 F6 |51 81 PgDn [3] | |0e 14 bksp|1f 31 S |30 48 B |41 65 F7 |52 82 Ins [0] | |0f 15 Tab |20 32 D |31 49 N |42 66 F8 |53 83 Del [.] | |10 16 Q |21 33 F |32 50 M |43 67 F9 | | |11 17 W |22 34 G |33 51 , < |44 68 F10 | | |------------------------------------------------------------------------------|

Khi ngi s dng bm phm, bn phm khng h bit ngha ca phm c bm th ch thng bo c tc ng phm thng qua ngt 9H. Ngt 9H gi chng trnh x l ngt, chng trnh ny s c gi tr cng 60H bit tc ng phm no xy ra. Sau m scan c bn phm trao cho ROM-BIOS v c cc trnh phc v bn phm i thnh 2 byte. Byte thp cha m ASCII ca phm cn byte cao cha m scan t bn phm. Vi cc phm chc nng khng c m ASCII nn byte thp c gi tr l 0. Sau ROM-BIOS s t 2 byte ny vo mt hng i nm trong b nh. b. B m bn phm B m bn phm gm c 32 byte t a ch 0040:001E - 0040:003D, cha ti a l 16 k t (v mi k t chim 2 byte : 1 cho m ASCII v 1 cho m L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 47/96

scan). ch ti v tr trong b nh ca k t u tin (trong cc cc k t cn trong b m) ta dng mt t nh ti a ch $0040:$001A, gi l con tr u (Head). V tr ca k t tip theo c ch bi ni dung ca t nh ti a ch $0040:$001C gi l con tr cui (Tail). Head v Tail ch l a ch offset ca on c a ch on l $0040. Head ti $001A Tail ti $001C 0040:001E 0040:003D

+ Khi c cn a mt k t vo b m th a vo hai byte nh c tr bi con tr Tail. Sau Tail c tng ln 2 (Tail := Tail + 2, nu tail > $003D th Tail := $001E). Khi ly ra mt k t th h thng ly hai byte c tr bi con tr Head, sau Head c tng ln. + Nu c k t trong b m th gi tr ca head khc gi tr ca tail. Ta c th thay hm KeyPressed bng php so snh (head <> tail) + Nu b m rng th gi tr ca head bng gi tr ca tail. Ta c th xo rng vng m bn phm bng cch gn gi tr ca head = tail (head := tail) hoc ngc li (tail := head). - V d: chng trnh c m scan v m ASCII khi bm phm. Ch : i vi mt s phm nh shift hay caps lock th khng bt c do chng trnh x l ngt khng chuyn thnh m hai byte. Mun bt c th dng chng trnh chn ngt bn phm v c t cng 60H.
uses crt,dos; var head: Word absolute $0040:$001A; tail: Word absolute $0040:$001C; ch1, ch2, i : byte; begin clrscr; repeat { ch phm bm } while (head = tail) do; { thay cho Not KeyPressed } { c m ascii ca k t } ch1 := Mem[$0040 : head];

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 48/96

{ m scan ca k t } ch2 := Mem[$0040 : (head + 1)]; write('Ky tu ''', chr(ch1), ''' co ma ascii = ', ch1); write(' va ma scan = ', ch2); writeln; head := tail; { thay cho lnh readkey; } until (ch1 = 13); { cho n khi gp phm Enter } end.

- V d 2: chng trnh gi lp bm phm


{ Dua ra vung dem ban phim lenh Dir va Enter } uses crt,dos; const a:array[0..7] of byte=($44,$20,$69,$17,$72,$13,$0D,$1C); { gom co lenh Dir va dau Enter (Ascii va scan code) } var head: Word absolute $0000:$041A; tail: Word absolute $0000:$041C; i : byte; procedure WriteToKb(ch : byte); begin { b nh bn phm t 0040:001E - 0040:003D } Mem[$0040 : tail] := ch; tail := tail + 1; if (tail > $003D) then tail := $001E; end; begin writeln('Chuong trinh gia lap go phim'); head := tail; for i := 0 to 7 do WriteToKb(a[i]); { chay tu dau nhac dos se thay lenh dir duoc thuc hien } { hoac thay bang 'while keypressed do write(readkey);' } end.

c. Chuyn i cc m scan Khi ROM-BIOS nhn c m scan qua cng 60H th n s tin hnh chuyn sang m 2 byte. Trong qu trnh chuyn i ROM-BIOS lun kim tra trng thi cc phm SHIFT, CTRL, ALT v cc phm Capslock, Numlock tr kt qun ng. Trng thi cc phm c bit ny c ROM-BIOS lu trong 2 byte nm ti a ch $0040:$0017 (hay 0417) v $0040:$0018 (hay 0418). ROM-BIOS cng kim tra 1 s t hp phm c bit c tc dng nh l cc lnh yu cu ROM-BIOS thc hin mt cng vic no . V d nh Ctrl Alt Del yu cu khi ng li my. L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 49/96

Trong trng hp phm kp (v d: phm 1 v phm ! hng phm trn) th m ASCII ca chng khc nhau (ord(1) = 49 v ord(!) = 33) nhng vn gi nguyn gi tr m scan ca chng (scan(1) = 2). Hai phm cho k t ging nhau nhng khc v tr th cho m scan khc nhau (m scan ca phm 1 trn hng phm trn l 2, cn ca phm 1 trn dy phm s l 79). Nu c mt phm phm chc nng c bm th m ASCII bng 0, cn m scan c gi nguyn (phm F1 c m scan 59). + Keyboard Shift Status Flags i vi bn phm c
+------------------------------------------------------------------------+ | +-7--6--5--4--3--2--1--0+ Perform INT 16H Fn 02H | | |I |C |N |S |a |c |sL|sR| or fetch AL=byte at 0:0417 | | +-----------------------+ bit | | | | | | | | | +-> 0: alpha-shift (right side) DOWN (AL & 01H) | | | | | | | | +----> 1: alpha-shift (left side) DOWN (AL & 02H) | | | | | | | +-------> 2: Ctrl-shift (either side) DOWN (AL & 04H) | | | | | | +----------> 3: Alt-shift (either side) DOWN (AL & 08H) | | | | | +-------------> 4: ScrollLock state (AL & 10H) | | | | +----------------> 5: NumLock state (AL & 20H) | | | +-------------------> 6: CapsLock state (AL & 40H) | | +----------------------> 7: Insert state (AL & 80H) | +------------------------------------------------------------------------+ | +-7--6--5--4--3--2--1--0+ | | |i |c |n |s | |sy|aL|cL| fetch AL=byte at 0:0418 | | +-----------------------+ bit | | | | | | | | | +-> 0: Ctrl-shift (left side) DOWN (AL & 01H) | | | | | | | | +----> 1: Alt-shift (left side) DOWN (AL & 02H) | | | | | | | +-------> 2: SysReq DOWN (AL & 04H) | | | | | | +----------> 3: hold/pause state (AL & 08H) | | | | | +-------------> 4: ScrollLock DOWN (AL & 10H) | | | | +----------------> 5: NumLock DOWN (AL & 20H) | | | +-------------------> 6: CapsLock DOWN (AL & 40H) | | +----------------------> 7: Insert DOWN (AL & 80H) | +------------------------------------------------------------------------+

+ i vi bn phm mi (101 phm) th byte trng thi ti $0040:$0017


+------------------------------------------------------------------------+ | | | +-7--6--5--4--3--2--1--0+ | | |sy|c |n |s |aR|cR|aL|cL| Perform INT 16H Fn 12H (101-key BIOS only)| | +-----------------------+ bit | | | | | | | | | +-> 0: Ctrl-shift (left side) DOWN (AH & 01H) | | | | | | | | +----> 1: Alt-shift (left side) DOWN (AH & 02H) | | | | | | | +-------> 2: Ctrl-shift (right side) DOWN (AH & 04H) | | | | | | +----------> 3: Alt-shift (right side) DOWN (AH & 08H) | | | | | +-------------> 4: ScrollLock DOWN (AH & 10H) | | | | +----------------> 5: NumLock DOWN (AH & 20H) | | | +-------------------> 6: CapsLock DOWN (AH & 40H) | | +----------------------> 7: SysReq DOWN (AH & 80H) | +------------------------------------------------------------------------+

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 50/96

- Bi tp: Lp trnh hin th trng thi ca cc phm Caps lock (AND $40), Num lock (AND $20), Scroll lock (AND $10)
uses crt,dos; var a: byte absolute $0040:$0017; const tg : array[false .. true] of string = ('Tat','Bat'); begin writeln('Trang thai cac phim nhu sau :');
writeln('Trang thai phim Caps lock la ', tg[(a AND $40) > 0]); writeln('Trang thai phim Num lock la ', tg[(a AND $20) > 0]); writeln('Trang thai phim Scroll lock la ', tg[(a AND $10) > 0]);

end.

d. Mt s hm phc v bn phm ca ROM-BIOS - Trong ROM-BIOS c hai ngt khc nhau cho bn phm + Ngt 9H: Dng thu thp d liu t bn phm v t vo vng m a ch thp trong b nh. + Ngt 16H: p ng cc yu cu phc v bn phm v truyn d liu t b m bn phm n cc chng trnh khc. - c mt k t k tip t bn phm: Ta s dng ngt 16h, hm 00h + Input:
AH = 00H

+ Output:
AL = ASCII { bng 0 cho cc phm c bit } AH = Scan Code

- Kim tra c k t trong b m cha: Ta s dng ngt 16h, hm 01h + Input:


AH = 01H

+ Output:
ZF = ZR = 1: Nu khng c k t no ZF = NZ = 0: Nu trong b m c k t

15

Thanh ghi c 14 13 12 11 10 09 OF DF IF
ZF := (Flags AND $40)

08 07 06 05 TF SF ZF

04 03 AF

02 01 PF

00 CF

e. Thay i ngt bn phm - Thay i ngt bn phm v c bn cng ging nh thay i cc ngt khc ca h thng nhng c mt s im khc

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 51/96

+ Phi gi l chng trnh x l ngt bn phm ca h thng chuyn d liu t m scan v m 2 byte. V vy ta khai bo mt bin kiu th tc v gn a ch ca chng trnh x l ngt c cho a bin ny sau ny ta c th gi c th tc ny.
Var kb: procedure; getintvec($9,@kb);

+ Trc khi gi li chng trnh x l ngt trn phi khi phc li thanh ghi c bng lnh PushF (push flags) hay c m my l $9C. - V d: chng trnh c m scan bn phm
uses dos,crt; var kb: procedure; ch: char; {$F+} procedure keyclick; interrupt; begin if (Port[$60] < $80) then writeln('Scan = ',Port[$60]); { chi lay ma scan khi bam phim, khong lay ma nha phimm } inline($9C); { PushF push flags } kb; { gi li th tc x l ngt c } end; {$F-} begin getintvec($9,@kb); setintvec($9,addr(keyclick)); repeat ch := readkey; until ch = #27; setintvec($9,@kb); end.

- V d: hon i hai phm 1 v 2 ( trn hng phm trn)


uses var kb: ch: sc: dos,crt; procedure; char; byte;

procedure Swap(sc : byte); var tail: Word absolute $0000:$041C; head1: word; ch: byte; begin { b nh bn phm t 0040:001E - 0040:003D }

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 52/96

if (sc = $02) OR (sc = $03) then begin if(sc = $02) then { neu bam so 1 tren day phim tren } begin ch := $32; { so 2 } sc := $03; end else begin ch := $31; { so 1 } sc := $02; end; head1 := tail - 2; if (head1 < $001E) then head1 := $003C; Mem[$0040 : head1] := ch; Mem[$0040 : (head1 + 1) ] := sc; end; end; {$F+} procedure keyclick; interrupt; begin sc := Port[$60]; inline($9C); { PushF push flags } kb; if (sc < $80) then Swap(sc); end; {$F-} begin getintvec($9,@kb); setintvec($9,addr(keyclick)); repeat ch := readkey; writeln(' Bam phim ', ch); until ch = #27; setintvec($9,@kb); end.

- Bi tp: Trong lc thc hin cng vic gii phng trnh bc 2 (c th trong lc nhp d liu) lc ngi s dng bm ESC th thot khi chng trnh. Bit m ASCII ca ESC = 27 = 1Bh v m scan = 1. Gi s th tc gii phng trnh bc 2 Giai_PTB2 c sn.

L Tin Dng

BM Cng ngh phn mm

H iu hnh
uses dos,crt; var kb: procedure; ch: char; function check : boolean; var tail: Word absolute $0040:$001C; x: word; begin { b nh bn phm t 0040:001E - 0040:003D } x := tail - 2; if (x < $001E) then x := $003C; if (Mem[$0040 : x] = $1B) AND (Mem[$0040 : (x + 1) ] = $01) then check := true else check := false; end; {$F+} procedure keyclick; interrupt; begin inline($9C); { PushF push flags } kb; if(check) then begin writeln('Ban da bam Esc'); setintvec($9,@kb); halt; end; end; {$F-} begin getintvec($9,@kb); setintvec($9,addr(keyclick)); writeln('Chuong trinh bat phim'); writeln('Bam Enter hoac ESC de thoat'); repeat ch := readkey; writeln('Bam Enter hoac ESC de thoat'); until ch = #13; writeln('Ban da bam Enter'); setintvec($9,@kb); end.

trang 53/96

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 54/96

6. Qun l tp a. Cc khi nim - Tp: C hai c trng ca tp + Lu tr d liu b nh ngoi: Tn ti cho ti khi ngi s dng xo khi b nh ngoi. Khng b mt d liu khi tt my tnh. + C nhiu ngi s dng: (nhu cu chia s tp) Tp thc hin: Nhiu ngi cng mun dng mt ng dng no Tp ca nhn h iu hnh: Tp vn bn: text, nh, m thanh Th mc: gm nhiu tp - Tp gm c Tn tp v phn m rng (khng bt buc) + Ngi s dng c th hiu c + Phn m rng cho tp dng Nhm cc tp cng kiu theo mt quy c Tp ca h iu hnh + Biu tng cng l thnh phn ca phn m rng gip ngi s dng qun l tt hn - Thuc tnh ca tp + Ngi s hu, nhm s hu + Thuc tnh n, h thng, lu tr(archive), ch c + Thi gian ln truy nhp cui cng, thi giansa i cui cng + Quyn iu khin, mt khu + Kch thc hin ti, kch thc ti a + Cc ng dng c lin kt, vn hnh (operation) - T chc tp + T chc tun t theo byte: d liu c t chc lu tr, c v ghi mt cch tun t tng byte. Cch t chc ny c tnh vn nng, mi ng dng u c th s dng tp. + T chc tun t theo bn ghi: d liu c t chc lu tr, c v ghi mt cch tun t tng bn ghi vi kch thc c nh. + T chc cy cc bn ghi: d liu c t chc lu tr, c v ghi theo cy cc bn ghi theo trng kho.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 55/96

- Truy nhp tp + Truy nhp tun t: Vic c / ghi theo th t t u tp n cui tp + Truy nhp ngu nhin: C th truy nhp tun t hoc c / ghi theo bt k trnh t no. - Kiu tp + Tp thng thng: Gm cc tp text (dng ASCII) v tp nh phn dng lu tr d liu. + Th mc: Cha mt tp cc tp + Tp c bit: c truy nhp bi thit b - Cc thao tc vi tp + To tp + Xo tp + M tp + ng tp + c tp + Ghi d liu (c th ghi ln d liu c) + M rng (ghi d liu vo cui tp, khng lm mt d liu c) + Di chuyn con tr c/ghi d liu + c/Thit lp thuc tnh tp + i tn tp - Cu trc th mc + Th mc gc: Dos (C:\), Unix (/) + ng dn L Tin Dng BM Cng ngh phn mm

H iu hnh Dng ch ra ni lu tr tp ng dn tuyt i: ch ra tp t th mc gc


v d: C:\TP\Bin\Turbo.exe

trang 56/96

ng dn tng i: ch ra tp t th mc hin ti
V d: lnh DIR ..\BGI (nu ang trong C:\TP\Bin)

b. Trao i d liu vi tp H Qun tr CSDL Ngi s dng c th -Giao din tt -Khng nn

Cc phng php truy nhp (Access Methods)

Truy nhp logic H iu hnh c th - nn cao -C tnh cht vn nng -Tn ti cc macro

Truy nhp vt l

Php trao i vo/ra

Thit b ngoi vi L Tin Dng BM Cng ngh phn mm

H iu hnh 7. Qun l tp trong MSDOS a. Cu trc a t - Cu trc vt l Track Sector

trang 57/96

Head

+ D liu c ghi trn a theo cc ng trn ng tm gi l track (rnh) khi a c nhiu mt gi l cylinder. + Mi cylinder c chia thnh cc sector (cung). Mi sector lu tr c mt s cc byte. + a c th c 1, 2 hay nhiu mt (side). Mi mt c truy nhp bng mt u t (head). - Dung lng ca a ph thuc vo s u t, s cylinder, s sector trn mt track v s byte trn mt sector - V d: a c cc thng s sau
S S S S byte / sector = 512 sector / track = 63 cylinder = 523 mt = 128

Ta c dung lng a bng 523*128*63*512 2 GB - V d: a c cc thng s sau (cho bi tp ti lp)


S S S S byte / sector = 512 sector / track = 18 mt = 2 cylinder = 80

Ta c dung lng a bng 2*80*18*512 1.44 MB L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 58/96

- a ch vt l ca mt sector trn mt a c c trng bi (Cylinder, Head, Sector). + Cc cylinder c nh s t ngoi vo bt u t 0. + S hiu u t c nh s t 0. + Cc sector c nh s t 1. - Sector logic Sector c th c truy nhp qua a ch logic. S hiu sector logic c nh s t 0 bt u t cylinder 0, u t 1, sector vt l 1. Tip tc nh s theo track v theo u t cho mi cylinder
relSec = (CylNo * SecsPerTrack * Heads) + (HeadNo * SecsPerTrack) + (SecNo - 1) relSec = 0*63*64 + 1*63 + (1-1) = 63

b. phc v c/ghi a Ta s dng ngt 13H c/ghi a - c mt Sector: Ta s dng ngt 13h, hm 02h + Input:
DL = S hiu a (0 = A...; 80H = HD0; 81H = HD1) DH = S hiu u t CH = track (cylinder) number (0 n) CL = S hiu sector (1 n) AL = S sector cn c ES:BX => a ch vng nh Ch : Gi tr Sector gm 6 bit v Cylinder l 10bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Cylinder Sector

Th tc m ho Cylinder v Sector
Function CylSecEncode(Cylinder, Sector : Word) : Word; Begin CylSecEncode := (Lo(Cylinder) shl 8) or (Hi(Cylinder) shl 6) or Sector; End;

+ Output:
Nu c li: Carry Flag=CY=1 v m li trong AH Nu khng li: AH = 0 v ES:BX => a ch vng nh
+--------------------------------------------------------------------------------+ |Err# | Description | |_____|__________________________________________________________________________| | 00H | no error on last operation | | 01H | bad command: invalid request to controller | | 02H | bad address mark | | 03H | write protect: attempted to write on write-protected diskette |

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 59/96

| 04H | sector ID bad or not found. | | 05H | reset failed | | 08H | DMA failure | | 09H | DMA overrun: attempted to write across a 64K-byte boundary. | | 0bH | bad track flag encountered | | 10H | bad CRC: invalid CRC when data checked. | | 11H | data corrected: recoverable error found/corrected by ECC algorithm | | 20H | controller failure | | 40H | bad seek. requested track not found | | 80H | time out. drive did not respond | |0aaH | drive not ready | |0bbH | undefined error | |0ffH | sense operation failed | +--------------------------------------------------------------------------------+

- Bng m li Gi tr ngha 00 Thnh cng 01 Lnh khng hp l 02 Khng tm thy du a ch trn a. 03 Mun ghi ln a c bo v chng ghi (M) 04 Khng tm thy sector 05 Ti lp khng c (C) 06 a mm ly ra (M) 07 Bng tham s b hng (C) 08 DMA chy li (M) 09 DMA ngoi phm vi 46 K 0A C sector b li 10 CRC hay ECC li 11 ECC iu chnh d liu sai (C) 20 Li do b iu khin a. 40 Li khng tm c track 80 Li ht thi gian AA a khng sn sng (C) BB Li khng xc nh (C) CC Li lc ghi (C) E0 Li thanh ghi trng thi (C) FF Thao tc d tht bi (C = ch dng cho a cng; M = ch dng cho a mm) - Th tc c mt sector L Tin Dng BM Cng ngh phn mm

H iu hnh
Type SectorType = array[0..511] of byte;

trang 60/96

Function CylSecEncode(Cylinder, Sector : Word) : Word; Begin CylSecEncode := (Lo(Cylinder) shl 8) or (Hi(Cylinder) shl 6) or Sector; End; { Nu c li tr v false, nu khng li tr v true } function ReadSector(var buf: SectorType; Drive, Cylinder, Head, Sector: Byte) : Boolean; var r: registers; begin fillchar(buf,sizeof(buf),$11); with r do begin dl := Drive; dh := Head; cx := CylSecEncode(Cylinder, Sector); al := 1; { so sector } ah := 2; { doc o dia } bx := ofs(buf); es := seg(buf); end; intr($13,r); if(r.ah <> 0) then ReadSector := false else ReadSector := true; end;

- Ghi mt Sector: Ta s dng ngt 13h, hm 03h, hm ny tng t hm 02h. - Ch : Vi mm th ng c cn c mt thi gian khi ng t tc lm vic, nhng thi gian ch i ca hm c/ghi a l rt nh v vy cn phi thc hin vic c/ghi vi ln trc khi khng nh c li vo/ra. - Cluster gm mt nhm sector lin tip nhau v mt logic v phn phi b nh cho ngi s dng, s lng sector cho mt cluster thng l b s ca hai v Cluster c nh s t 2 tr i. c. Cu trc thng tin Bng tham s iu khin Bng tham s iu khin xc nh ton b vng h thng: i vi a mm th nm (0, 0, 1) v i vi a cng th nm sector u tin ca mi a logic (partition), v d i vi a logic th nht l (0, 1, 1). Tu theo khun dng ca bng FAT m h thng dnh mt s lng sector khc nhau cho Boot Record. Boot Record ca FAT 12 v FAT 16 chim 1 sector, cn Boot Record ca FAT 32 thng chim 3 sector. - Cu trc Boot Record ca FAT 12 v FAT 16 + Phn 1: cha tham s ca a t

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 61/96

+ Phn 2: cha chng trnh mi (Boot Strap Loader), cn thit cho a khi ng Tham s

Chng trnh mi 55AA Phn ny c du hiu l ch k gm 2 byte 55AA. - Cu trc c th nh sau:


No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Offset 0 3 B D E 10 11 13 15 16 18 1A 1C 20 24 25 26 27 2B 36 3Eh 1Feh Leng 3 8 2 1 2 1 2 1 1 2 2 2 4 4 1 1 1 4 1110 8 448 2 ngha JMP Tn h thng format a t S byte trn mt sector S sector / cluster Ghi a ch ca FAT th nht trong a logic S lng bng FAT S phn t ti a th mc gc = 0; <> 0 : Ghi s lng sector ca a t nu < 32 MB Byte Media: F8 nu l HD, F0: FDD 1.44 S sector dnh cho mt bng FAT S sector dnh cho mt Track S u t Ghi a ch tuyt i ca Boot Sector trong a vt l = 0; <> 0 : tng s sector ca a >= 32 MB a ch vt l a t A: 00H, C: 80H, D: 81H D tr Du hiu 29H Ghi s hiu ca a t Tn a t D tr: FAT1632 32 32 (32 l du cch) on m thc hin Ch k (55h AAh)

L Tin Dng

BM Cng ngh phn mm

H iu hnh - V d:
00 EB 02 2 FAT 41 01 02 3C 90 JMP 00 02 512 Root Dir 0C 34 03 4D 00 04 53 00

trang 62/96

00: 10:

20:

00

80

30:

20

3411009 C: 20 20 20 20 Tn a t (rng)

05 06 07 08 09 0A 0B 0C 0D 0E 0F 57 49 4E 34 2E 31 00 02 40 01 00 M S W I N 4 . 1 512 64 /c FAT F8 D1 00 3F 00 40 00 3F 00 00 00 209 63 Sec/ Sec/ 64 63 hidden sectors FAT Track Head (/c Boot Sector) HD 00 29 1E 13 DA 13 20 20 20 20 20 ch k Serial Number Tn a t (rng) 20 46 41 54 31 36 20 20 20 FAT16

OEM ID MSWIN4.1 Bytes per sector 512 Sectors per cluster 64 Reserved sectors at beginning 1 FAT Copies 2 Root directory entries 512 Total sectors on disk (Unused) Media descriptor byte F8 Hex Sectors per FAT 209 Sectors per track 63 Sides 64 Special hidden sectors 63: Boot Sector nm (0,1,1) Big total number of sectors 3411009 Physical drive number 128 Extended Boot Record Signature 29 Hex Volume Serial Number 13DA131E Hex Volume Label (rng) File System ID FAT16

- Chng trnh c Boot Sector + Kt qu


Thong tin ve Boot Sector Ten HDH : MSWIN4.1 So byte / sector : 512 So sector / cluster : 16 So phan tu toi da o thu muc goc : 512 So bang Fat : 2 So byte / Fat : 0 So sector / cylinder : 63 So head : 255

L Tin Dng

BM Cng ngh phn mm

H iu hnh + M ngun

trang 63/96

uses crt,dos; const hexs: array[0..15] of char = '0123456789ABCDEF'; Type SectorType = array[0..511] of byte; function ReadSector(var buf: SectorType; Drive, Cylinder, Head, Sector: Byte) : Boolean; begin end; var buf: SectorType; i,j: word; Begin clrscr; ReadSector(buf,$80,0,1,1); { Boot Sector } Writeln('Thong tin ve Boot Sector'); Write('Ten HDH : '); for i := $03 to ($03 + 7) do write(chr(buf[i])); Writeln; Write('So byte / sector : ', buf[$0B] + buf[$0C]*256); Writeln; Write('So sector / cluster : ', buf[$0D]); Writeln; Write('So bang Fat : ', buf[$10]); Writeln; Write('So phan tu toi da o thu muc goc : ', buf[$11] + buf[$12]*256); Writeln; Write('So byte / Fat : ', buf[$16] + buf[$17]*256); Writeln; Write('So sector / cylinder : ', buf[$18] + buf[$19]*256); Writeln; Write('So head : ', buf[$1A] + buf[$1B]*256); Writeln; readkey; end.

- Bi tp: Sao lu Boot Sector a A: + Lp trnh c Boot Sector ca a A: v lu ra tp ti a cng + Khi phc li khi Boot Sector ca A: khi b hng Boot Sector - Cu trc Boot Record ca FAT 32 (cho t nghin cu).

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 64/96

d. Th mc gc (Directory) - Th mc c hai loi: + Th mc gc (Root): l thnh phn thit yu mi h iu hnh. + Th mc con (SubDirectory) Th mc bao gm cc phn t, mi phn t nu c s dng s tng ng vi mt tp trong th mc. Trong MSDOS th mi phn t gm 32 byte c chia thnh 8 trng - Cu trc mt phn t trong th mc (32 byte)

No 1 2 3 4 5 6 7 8

Offset 0 8 B C 16H 18 1A 1C

Leng 8 3 1 1010 2 2 2 4

ngha Tn tp (nu nh 8 k t th ly k t <space> in vo) Phn m rng Thuc tnh tp attribute D tr Thi gian (Gi, Pht, Giy) to/cp nht cui cng Ngy (Nm, Thng, Ngy) to/cp nht cui cng Starting Cluster: ghi cluster u tin ca tp Kch thc tp (tnh theo byte)

+------------------------------------------------------------------------------+ | Directory Entry Layout | |------------------------------------------------------------------------------| |Offset Size Contents | |______ ____ __________________________________________________________________| | +-------------------------------+ | | +0 8 |'F' 'I' 'L' 'E' 'N' 'A' 'M' 'E'| left-justified, blank-padded | | +-----------+-------------------+ | | +8 3 |'E' 'X' 'T'| left-justified, blank-padded | | +---+---+---+ | |+0bH 1 |atr| file attribute | | +------------ - - ----+ | |+0cH 0aH | reserved | | | +-------+---- - - ----+ | |+16H 2 | time | time created or last modified in filetime format| | +-------| | |+18H 2 | date | date created or last modified in filetime format| | +----------------+ | |+1aH 2 |Starting Cluster| ghi cluster u tin ca tp (link into FAT) | | +----------------+ | |+1cH 4 | file size | file size in bytes | | +---------------+ | +------------------------------------------------------------------------------+

L Tin Dng

BM Cng ngh phn mm

H iu hnh Trong - Byte s 0 ng vai tr c bit nh sau:

trang 65/96

00: phn t ny cha c s dng 0E: phn t ny c s dng nh b xo 2E20 (.<space>): phn t th nht ca th mc con 2E2E (..): phn t th hai ca th mc con

Hai phn t u tin ny dng to danh sch mc ni cc phn t th mc vi nhau. Trng Starting Cluster ca phn t th nht ch ti chnh n v trng Starting Cluster ca phn t th hai ch ti th mc trc tip trn n.

+ Ch : Th mc gc khng c hai phn t u tin ny. - Thuc tnh attribute


+------------------------------------------------------------------------------+ | File Attribute | |------------------------------------------------------------------------------| |+7-6-5-4-3-2-1-0+ | || |a|d|v|s|h|r| | |+---------------+ bit description mask value| | | | | | | +-> 0: 1=file is Read-only (can't be written/deleted) (a & 01H)| | | | | | +---> 1: 1=Hidden (a & 02H)| | | | | +-----> 2: 1=System (a & 04H)| | | | +-------> 3: 1=Volume label entry (a = 08H)| | | +---------> 4: 1=subDirectory entry (a & 10H)| | +-----------> 5: Archive bit. 1=file has NOT been backed up (a & 20H)| +------------------------------------------------------------------------------+

+ V d 0 0

1 Arc

1 Sys

1 Hid

1 R/O (Read Only)

- Thuc tnh ngy/gi + Thi gian (gi, pht, giy) L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 66/96

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Gi + Thi gian (nm, thng, ngy)

Pht

Giy (bc 2)

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

S nm k t nm 1980

Thng

Ngy

+------------------------------------------------------------------------------+ | File Time/Date Format | |------------------------------------------------------------------------------| | | | 1 1 1 1 1 1 Load word at DIR_ENTRY+16H into a | |+5-4-3-2-1-0-9-8-7-6-5-4-3-2-1-0+ 16-bit register and perform mask | || hour | minute | sec/2 | and shift operations to extract | |+-------------------------------+ components of the file time. | | +-------+ +---------+ +-------+ | | | | 5+---> 2-second increments (0-30 valid) (t & 001fH)| | | 6+--------------> minute (0-59 valid) ((t & 07e0H) >> 5)| | 5+-------------------------> hour (0-23 valid) ((t & 0f800H) >> 11)| | | | 1 1 1 1 1 1 | |+5-4-3-2-1-0-9-8-7-6-5-4-3-2-1-0+ | || year | month | day | Use word at DIR_ENTRY+18H. After 16-bit | |+-------------------------------+ masks and shifts, add 1980 (07bcH) to year.| | +-----------+ +-----+ +-------+ | | | | 5+---> day (0-31) (d & 001fH)| | | 4+------------> month (1-12 valid) ((d & 01e0H) >> 5)| | 7+-----------------------> year (0-127 valid) ((d & f800H) >> 9)| | => t 1980 n 2107 | +------------------------------------------------------------------------------+

+ V d: C0 B2 => Time = C0B2 = 10110 010110 00000


Gi 10110 = 22 => 10 chiu Pht 010110 = 22 Giy 00000 = 0

Kt qu cho ta thi gian ln sa cui cng (hoc to) l 10:22 pm + V d: 97 26 => Date = 2697 = 0010011 0100 10111
Nm 1980 + 0010011 = 1980 + 19 = 1999 Thng 0100 = 4 Ngy 10111 => ngy 23

Kt qu cho ta ngy ca ln sa cui cng (hoc to) l 4-23-99 - Bi tp v nh Chuyn i gi tr thi gian gm: ngy, thng, nm, gi, pht, giy thnh 4 byte c nh dng ging nh dng trn v ngc li. - V d: c th mc gc ca a A: bit s phn t ti a l 224, s sector dnh cho th mc gc l 14 (224*32/512 = 224/16 = 14 hay cho al := 14)
uses crt,dos; type

L Tin Dng

BM Cng ngh phn mm

H iu hnh
elmt = record filename: array[0..7] of char; ext: array[0..2] of char; attb: byte; reserved: array[0..9] of byte; Dt: longint; firstCluster: word; size: longint; end; procedure show(e: elmt); var i: byte; t: DateTime; begin if(e.firstCluster <> 0) then

trang 67/96

{ phi kim tra v di Win98 th c s m rng cho tn tp di, v th c nhiu phn t ph v c thnh phn firstCluster = 0 )
with e do begin for i := 0 to 7 do write(filename[i]); write('.'); for i := 0 to 2 do write(ext[i]); write(' ':8); { procedure UnpackTime(DT: Longint; var T: TDateTime); } { DateTime = record Year,Month,Day,Hour,Min,Sec: Word; end; } UnpackTime(dt,t); with t do begin write(Day:2, '/', Month:2, '/', Year:4); write(' ':8); write(Hour:2, ':', Min:2, ':', Sec:2); end; write(size: 10); writeln; end; end; Type RootType = array[0..223] of elmt; Function CylSecEncode(Cylinder, Sector : Word) : Word; Begin CylSecEncode := (Lo(Cylinder) shl 8) or (Hi(Cylinder) shl 6) or Sector; End; function ReadSector(var buf: RootType; Drive, Cylinder, Head, Sector: Byte) : Boolean; var r: registers; begin

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 68/96

fillchar(buf,sizeof(buf),$11); with r do begin dl := Drive; dh := Head; cx := CylSecEncode(Cylinder, Sector); al := 14; { so sector = 14 vi 224 * 32 = 14 * 512} ah := 2; { doc o dia } bx := ofs(buf); es := seg(buf); end; intr($13,r); if(r.ah <> 0) then ReadSector := false else ReadSector := true; end; var t: Datetime; buf: RootType; i,j: word; { DateTime = record Year,Month,Day,Hour,Min,Sec: Word; end; } begin clrscr; writeln('Cho dia A:'); readln; ReadSector(buf,0,0,1,2); while(buf[i].filename[0] <> #0) do begin show(buf[i]); i := i + 1; end; readkey; end.

+ Kt qu:
Cho dia A: A FUZZY TMP .TXT .TXT .VN 21/ 9/2001 19/ 6/2001 6/ 1/2001 8:46:18 16:37:38 17: 5:20 16 2444 34

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 69/96

e. FAT (File Allocation Table) - Vai tr ca FAT + Qun l b nh phn phi cho tng tp + Qun l b nh t do + Qun l vng b nh cht lng km (khng cho h thng ghi thng tin vo). - Bng FAT bao gm cc phn t, mi phn t c th l 12 bit hay 16 bit. Cc phn t t phn t th hai tr i, mi phn t tng ng vi mt cluster trn a v ngc li. Trng hp c mt sector b km th h thng s nh du cc phn t ca cluster l FF7 (i vi FAT 12) hoc l FFF7 (i vi FAT 16). Ch cn c mt sector c cht lng km th c cluster b nh du l c cht lng km. Phn t 0: Fxx (i vi FAT 12) v FFxx (i vi FAT 16) trong xx l 1 byte gi l byte Media cho bit kiu a t. Media Kiu a t 1 F9 a mm 1.2 M 2 F0 a mm 1.4 M 3 F8 a cng Nhc li phn t th 7 (c a ch offset l 1A vi kch thc 2 byte trong 1 phn t ca th mc) ghi Starting Cluster, tc l cluster u tin ca tp. T ni dung ca phn t trong bng FAT tng ng ta c th tm c phn t tip theo hay chnh l cluster tip theo dng lu tr tp. Cc phn t trong bng FAT to thnh mt danh sch mc ni v phn t cui cng ca danh sch c gi tr l FFF (i vi FAT 12) v FFFF (i vi FAT 16). V cc phn t to thnh danh sch mc ni nn chng khng nht thit phi nm cnh nhau.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 70/96

V d: tp f1.txt c gi tr Starting Cluster = 6 0 FF0 1 FFF 2 3 4 4 8 5 FFF 6 9 7 5 8 7 9 3

Nh vy tp c lu cc cluster sau: 6->9->3->4->8->7->5. Khi h thng mun c ni dung tp: H thng bt u c t cluster s 6 v c phn t tng ng trong bng FAT, ni dung ca phn t ny ch cho h thng bit phi c cluster s 9, tip tc nh vy cho n phn t s 5. Gi tr ca phn t s 5 l FFF y l du hiu kt thc v dng li. tng tc truy nhp, ngay ln truy nhp u tin lm vic vi a t, h thng s c lun FAT v ROOT vo RAM, nh vy h thng ch cn truy nhp vo b nh ly thng tin, khng cn phi truy nhp li a t do vy tng c tc v gim c di chuyn c kh ca u t. - Truy nhp bng FAT 16: Mi phn t ca FAT 16 l mt word, v vy vic c/ghi mi phn t l kh d dng.
0 1 2 3 4 5 6 7

F8 FF FF 7F 15 01 FF FF 17 00 FF FF FF FF B6 00 277 <EOF> <EOF> <EOF> 8 9 10 11 12 13 14 15 25 00 2C 00 14 17 FF FF FF FF FF FF FF FF FF FF 37 44 5908 <EOF> <EOF> <EOF> <EOF> <EOF>

- Truy nhp bng FAT 12: Mi phn t ca FAT 12 l mt 1.5 word, v vy vic c/ghi mi phn t l phc tp hn. Hai phn t 2n v 2n + 1 ca FAT c lu tr trong 3 byte. L Tin Dng BM Cng ngh phn mm

H iu hnh + V d: ghi 2 phn t


2n : 123h => 0123 => o => 2301 2n + 1: 456h => 4560 => o => 6045 ghi vo a 236145

trang 71/96

+ V d: c 2 phn t c 3 byte, ta c 123456


2n : 1234 => o => 3412 => AND 0FFF => 412 2n + 1: 3456 => o => 5634 => AND FFF0 => 563

+ Gii thut c phn t th i vo mng B: array[0..xxx] of byte p := (i*3) div 2 a := MemW[seg(buf[p]) : ofs(buf[p])]; True False

odd(i)

a := a shr 4 Byte1 B C F Byte2 A

a := a AND $0FFF Byte3 D E

A B C Entry th nht

D E F Entry th hai

- V d: Gi tr cc byte ca 50 phn t u tin ca Fat 12 l


F0 09 11 19 21 29 31 FF A0 20 A0 20 A0 20 FF 00 01 01 02 02 03 03 0B 13 1B 23 2B 40 C0 40 C0 40 C0 00 00 01 01 02 02 05 0D 15 1D 25 2D 60 E0 60 E0 60 E0 00 00 01 01 02 02 07 0F 17 1F 27 2F 80 00 80 00 80 00 00 01 01 02 02 03

L Tin Dng

BM Cng ngh phn mm

H iu hnh Fat 12 h 16
FF0 009 011 019 021 029 031 FFF 00A 012 01A 022 02A 032 003 00B 013 01B 023 02B 004 00C 014 01C 024 02C 005 00D 015 01D 025 02D 006 00E 016 01E 026 02E 007 00F 017 01F 027 02F 008 010 018 020 028 030

trang 72/96

Gi tr phn t th 2 v th 3 c lu tr 3 byte 3,4 v 5 l 03 40 00 tnh ra c 003 v 004. - V d: Lp trnh c v a ra mn hnh 50 phn t u tin ca bng FAT 12 trn a mm 1.44 MB
uses crt,dos; const hexs: array[0..15] of char = '0123456789ABCDEF'; var buf : array[0..511] of byte; r: registers; i,p,k1,k2,k3,a: word; begin clrscr; fillchar(buf,sizeof(buf),$11); writeln('Chuong trinh dua ra 50 phan tu dau tien cua FAT 12'); writeln('Cho dia A: va bam mot phim bat ky'); readkey; for i:=1 to 10 do begin with r do begin dl := 0; { 00H: dia A } dh := 0; { head = 0 } cx := 2; { Fat o sector 2, cylinder 0 } al := 1; { so sector } ah := 2; { doc o dia } bx := ofs(buf); es := seg(buf); end; intr($13,r); end; if(r.ah <> 0) then begin writeln('Co loi doc dia '); exit; end; writeln('GT cac byte cua 50 phan tu dau tien cua Fat 12 la'); for i:=0 to 74 do { 50 phantu * 3 / 2 = 75 } begin if(i mod 8 = 0) then writeln; { 8 * 3/2= 12 }

L Tin Dng

BM Cng ngh phn mm

H iu hnh
k1 := buf[i] shr 4; k2 := buf[i] and $0F; write(hexs[k1]:3, hexs[k2]); end; writeln;

trang 73/96

writeln('Fat 12 o he 16'); for i:=0 to 49 do begin if(i mod 8 = 0) then writeln; { 8 * 3/2= 12 } p := i*3 div 2; a := MemW[seg(buf[p]) : ofs(buf[p])]; if odd(i) then a := a shr 4 else a := a and $0FFF; k1 := a shr 8; k2 := (a and $00F0) shr 4; k3 := a and $000F; write(hexs[k1]:3,hexs[k2],hexs[k3]); end; readkey; end.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 74/96

f. Master Boot L sector u tin ca a cng (cylinder 0, head 0, sector 1) v c np vo b nh ti 0000: 7000 thc hin. - Cu trc Master Boot + Phn 1: Chng trnh nhn bit cu trc + Phn 2: Bng phn chng (Partition Table) Chng trnh nhn bit cu trc Bng phn chng 55AA Phn ny c du hiu l ch k gm 2 byte 55AA. a cng c chia thnh cc phn, mi phn c s dng nh mt a t c lp gi l a logic. Thng tin v cc phn ny nm trong bng phn chng. - Cu trc bng phn chng: bng phn chng c bt u t a ch 1BE gm 4 phn t mi phn t 16 byte.
+------------------------------------------------------------------------------+ |Offset Size Contents | |______ ____ __________________________________________________________________| | +---- - - - - - - - - - - - - - - - - - - - - - - - - - ----+ | | +0 1beH | code to load and execute boot sector of active partition | | | +---- - - - - - - - + - - - - - - - - - - - - - - - - - ----+ | |+1beH 10H | | partition 1 entry (see below) | | +---- - - - - - ----| | |+1ceH 10H | | partition 2 entry | | +---- - - - - - ----| | |+1deH 10H | | partition 3 entry | | +---- - - - - - ----| | |+1eeH 10H | | partition 4 entry | | +---- - + - - - ----+ | |+1feH 2 | 55 aa | partition table signature (0aa55H) | | +-------+ | | | +------------------------------------------------------------------------------+

Mi phn t chia thnh 4 trng, mi trng 4 byte


15-12 11-8 7-4 3-0 a ch a ch a ch Tng s vt l u vt l cui logic u sector

+ a ch vt l u
3 2 1 0 Sys Head Sec Cyl Sys = 00 th y l a logic cha d liu Sys = 80 th y l a logic cha h thng

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 75/96

Head: u t u tin 2 phn t Sec v Cyl c phn phi nh sau 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 Cyl Sec Cyl Nh vy s bit dnh cho trng Cyl l 10 v dnh cho sec l 6. V d: Ta c 2 byte l FF v 4D ta phi tnh Sec=?, Cyl=? Kt qu cho ta Sec = 63 v Cyl = 845 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 FF 4D 1 1 1 1 1 1 1 1 0 1 0 0 1 1 0 1 Cyl 63 Cyl Cyl = 11 0100 1101 = 84510

+ a ch vt l cui
3 2 1 0 Type Head Sec Cyl Type = 00 : cm truy nhp Type = 01 : h thng Dos 12 (dng cho FAT 12) Type = 04 : h thng Dos 16 (cho a <= 5M) Type = 06 : h thng Dos 16 (cho a >= 5M) Type = 0C : h thng Dos 32 Type = 50 : h thng DM (Disk Management) Readonly Type = 51: h thng DM (Disk Management) Read/Write Type = 05 : M rng, dng to ra a logic v cu trc ca a logic ging nh cu trc ca a vt l, nhng cc thnh phn con ca a m rng (05) th khng c dng lm a khi ng.cc Type = 0F : M rng.
+--------------------------------------------------------------+ | Extended DOS Partition | |--------------------------------------------------------------| | _ Each drive table can also contain another type-5 entry | | to point to yet another drive table: | | +--------------------+ 0M | | +-----| master boot sector | Volume #1 | | | | +--------------------| | | | +->| DOS boot sector | (drive C:) | | | \ fat, dir & data \ | | +---->|--------------------| 32M | | +-----| Extension table | Volume #2 | | | | +--------------------| | | | +->| DOS boot sector | (drive D:) | | | \ fat, dir & data \ | | +---->|--------------------| 64M | | | Extension table | Volume #3 |

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 76/96

| | | | +--------------------------------------------------------------+

- V d:
00 80 Sys 00 00 00 05 06 07 08 09 0A 0B 0C 0D 0E 0F 3F FF 4D 3F 00 00 00 41 0C 34 00 =3411009 Head Sec(-2b) Cyl(+2b) BIGDOS 63 63 845 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Khng s dng 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Khng s dng 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Khng s dng
relSec = (CylNo*SecsPerTrack*Heads)+(HeadNo*SecsPerTrack)+(SecNo - 1)

01 01

02 01

03 00

04 06

relSec = 0*63*64 + 1*63 + (1-1) = 63 Dung lng a 3411009*512 1.6 GB

- V d: c dung lng a cng th nht


uses crt,dos; Type SectorType = array[0..511] of byte; function ReadSector(var buf: SectorType; Drive, Cylinder, Head, Sector: Byte) : Boolean; { cho chp ri } { phn chng trnh chnh } var buf: SectorType; i,j: word; kt, kti: longint; Begin ReadSector(buf,$80,0,0,1); kt := 0; for i := 0 to 3 do begin j := $1CA + i*16; { 1CA la vi tri kich thuoc phan tu dau tien } kti := MemL[seg(buf[j]):ofs(buf[j])]; kt := kt + kti; end; kt := kt div 2048; { MB, 1 sec = 512 byte } writeln('Kich thuoc dia tu la ', kt, ' MB'); readkey; end.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 77/96

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 78/96

Chng 4. Qun l tin trnh


1. nh ngha tin trnh Tt c cc my tnh hin i u c th thc hin nhiu vic cng mt lc. Trong khi thc hin chng trnh ca ngi s dng, my tnh c th c d liu t a v a ra mn hnh hoc my in. Trong mi trng a chng trnh (multiprogramming system), mt CPU c th chuyn t chng trnh ny sang chng trnh khc, thc hin mi chng trnh trong khong 1% hoc 1/10 mili giy. Nu ni chnh xc, th ti mt thi im, CPU ch thc hin c mt chng trnh. Nhng nu xt trong khong thi gian phn trm giy th CPU c th thc hin nhiu cng vic. - nh ngha Tin trnh l mt dy cc trng thi ca h thng tnh ton v vic chuyn t trng thi ny sang trng thi khc c thc hin theo 1 chng trnh no . s0 s1 s2 s3 s4 s5 s6 s7 sn-1 sn sn+1

Cc trng thi ny khng nht thit phi lin tip nhau. + Nu chng trnh ca h thng th cho ta tin trnh h thng. + Nu chng trnh ca ngi s dng th cho ta tin trnh ca ngi s dng. Hiu mt cch thng thng ta c th coi tin trnh l mt chng trnh ang c thc hin. - V d: Khi to c chp nhn Sn sng iu phi kt thc mt s kin hoc mt tn hiu vo/ra Ch i ch i mt s kin hoc mt tn hiu vo/ra ngt thot Thc hin Kt thc

L Tin Dng

BM Cng ngh phn mm

H iu hnh + + + +

trang 79/96

Khi to: Tin trnh ang c to ra. Sn sng: Tin trnh ch kt ni vo processor. Thc hin: Cc lnh ang c thc hin. Ch i: Tin trnh ch mt s kin vo/ra hoc ch nhn mt tn hiu no . + Kt thc: Tin trnh kt thc thc hin.

2. Khi iu khin tin trnh (Process Control Bloc - PCB) - Mi tin trnh c biu din trong h iu hnh bi mt khi iu khin tin trnh gm c + Trng thi tin trnh. + Lnh my: my tnh ch ra a ch lnh my u tin trong tin trnh. + B thanh ghi. + Thng tin v lch trong b iu khiu CPU: bao gm th t u tin ca tin trnh, cc tham s lp lch. + Thng tin v b nh. + Thng tin tnh ton: gm thi gian chim gi processor, thi gian thc t, gii hn v thi gian, s lng cng vic. + Thng tin trng thi cc cng vo/ra. 3. Cch thc tin trnh a. Thc hin tun t Khi h thng kt thc mt tin trnh th h thng mi chuyn sang tin trnh khc. Thc hin tun t khng phi l i tng nghin cu ca chng ta. b. Thc hin song song Hai tin trnh c gi l song song nu thi im bt u ca mt tin trnh nm gia thi im bt u v kt thc ca tin trnh kia. Tin trnh 1 Tin trnh 2 Bt u Kt thc

Bt u - Thc hin song song vt l: cng mt thi im 2 tin trnh cng c thc hin. Cc im cn ch : + Loi ny ch c th thc hin trong ch nhiu processor.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 80/96

+ Hai tin trnh song song vt l c th s dng song song thit b ngoi vi v processor do cch lm vic ca h thng hon ton khc so vi ch n processor. - Thc hin song song an xen nng cao hiu qu ca processor, cc tin trnh ln lt c phc v an xen ln nhau. Tin trnh A B C C B A Thi gian A

H iu hnh
Ngt hoc li gi h thng Ct gi trng thi trong PCBA

Ngh

Khi phc trng thi t PCBB

Ngh Ngt hoc li gi h thng Ct gi trng thi trong PCBB

Hot ng

Ngh Khi phc trng thi t PCBA Hot ng S thay i thc hin tin trnh

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 81/96

4. Phn loi tin trnh song song a. c lp Hai tin trnh song song c thc hin ring r khng c quan h vi nhau. A1 B1

A2

B2

An

Bm

H thng phi c c ch bo v tin trnh ny khng lm nh hng n tin trnh khc. b. Quan h thng tin Hai tin trnh A v B c gi l c quan h thng tin vi nhau nu tin trnh ny c gi thng bo cho tin trnh kia. Tin trnh gi thng bo c th khng cn bit tin trnh nhn c tn ti hay khng? u? v ang giai on no? A1 Information A2 Information B2 B1

An

Bm

Cc phng php t chc lu tr cc thng bo: L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 82/96

- S dng b nh H thng s s dng mt phn b nh lu tr cc thng bo. Mi tin trnh cn nhn thng bo ch vic r sot trong hm th ca h thng. + u im: lu tr c lng thng tin ln vi thi gian lu tr lu. + Nhc im: tnh th ng cao. - Gi thng bo qua cng vo/ra + u im: cc tin trnh c th d dng ly thng tin t cng m khng b hng ro b nh ngn cn. + Nhc im: dung lng thng tin cha cc cng khng ln, thi gian lu tr thng bo b hn ch. - S dng chng trnh th k (Monitor) Chng trnh th k (Monitor) l chng trnh ca h thng, n c cung cp mi thng tin nhng khng c kh nng iu khin h thng. Thng qua chng trnh ny, tin trnh c th d dng xc nh c tin trnh kia u. + u im: Tnh ch ng cao. c. Loi song song phn cp L loi tin trnh m trong qu trnh hot ng n sn sinh ra mt tin trnh na hot ng song song vi chnh n. A1

A2 B1

B2 An

Bm Khi tin trnh con hot ng th hai tin trnh ny khng bit g v nhau L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 83/96

- Ti nguyn ca tin trnh con c th ly t vn ti nguyn ca h thng hoc ly t vn ti nguyn ca tin trnh chnh. + Nu ly ti nguyn t vn ti nguyn ca h thng th h thng c th qun l ti nguyn tp chung. Nh vy s ti u ho c vic s dng ti nguyn, nhng vic qun l ny rt phc tp. + Nu tin trnh con ly t vn ti nguyn ca tin trnh chnh th ta c h qun l ti nguyn phn tn. Loi ti nguyn ny n gin, nhng khng c kh nng khai thc ti u ti nguyn h thng. Trong mi trng hp nu ti nguyn ly u th phi tr v , v vy tin trnh chnh thng s dng cc lnh ch POS hoc WAIT cc tin trnh con kp tr li ti nguyn. d. Tin trnh ng mc Hai tin trnh c gi l ng mc nu c th s dng chung ti nguyn theo nguyn tc ln lt. A1 B1

A2

Ti Nguyn

B2

An

Bm

Hai tin trnh ny khng phn bit tin trnh chnh v tin trnh con, m l hai tin trnh c lp. Mi tin trnh sau khi s dng ti nguyn th phi tr li cho h thng v tip tc hot ng c lp. V d: chng trnh chi c: Ti nguyn chung l bn c. Gi s n lt tin trnh th nht, tin trnh th nht chim ti nguyn chi, khi ra quyt nh xong th tr li bn c cho h thng. Tin trnh th hai phi kim tra xem tin trnh th nht i cha? nu xong ri th mi n lt n (thc hin nh tin trnh th nht). 5. M t tin trnh song song Ta dng k php nhn to L Tin Dng BM Cng ngh phn mm

H iu hnh Gi s cn thc hin mt tp cc khi lnh song song s1, s2,

trang 84/96 , sn

S1

S2

Sn

Ta a vo trong mt khi lnh c bt u bi t kho ParBegin (Parallel Begin) v kt thc bi t kho ParEnd (Parallel End).
ParBegin S1; S2; ... Sn; ParEnd;

6. Ti nguyn gng v on gng - Ti nguyn gng l ti nguyn m trong mt khong thi gian nht nh th ch phc v hp l cho mt s hu hn cc tin trnh. - on chng trnh s dng ti nguyn gng gi l on gng hay ch hp trong tin trnh. - H iu hnh phi t chc cho mi tin trnh i qua ch hp mt cch hp l, cng vic ny gi l iu tin trnh qua on gng. - S cn thit phi iu Ta xem xt v d khi 2 tin trnh cng mun in ra my in. + Khi mt tin trnh cn in mt tp ra my in, n a tn tp vo th mc spool. Mt tin trnh iu khin in khc kim tra nh k nu c tp no cn in, nu tm thy th in tp n v loi tn tp khi th mc spool. Gi s th mc spool c s lng phn t rt ln (mi phn t cha mt tn tp). Ta c hai bin dng dung l OUT ch tp tip theo cn in v IN ch v tr rng tip theo dng cha tn tp cn in. + Ta gi s v tr 0 3 rng (cc tp c in), v tr 4 6 ang bn (cha tn tp cn in). L Tin Dng BM Cng ngh phn mm

H iu hnh Nh vy bin OUT = 4 v IN = 7

trang 85/96

Tin trnh A 4 5 6 Tin trnh B 7 Abc.txt Prog.doc Prog.pas IN = 7 OUT = 4

+ Gi s tin trnh A cn in mt tp a.txt, khi tin trnh A s c bin IN v a vo bin cc b INA, nh vy INA = 7. Lc c tn hiu ngt ng h v CPU quyt nh tin trnh A chy thi gian v chuyn sang thc hin tin trnh B. n lt mnh, tin trnh B cng mun in tp b.txt. Tin trnh B c bin IN v a vo bin cc b INB, nh vy INB = 7. Tin trnh B a tn tp b.txt vo v tr th 7 trong th mc spool v cp nht bin IN = INB + 1 = 8, sau lm cc vic khc. + Khi CPU chuyn sang thc hin tin trnh A, khng may tin trnh A vn gi nguyn bin INA=7. Tin trnh A a tn tp a.txt vo v tr th 7 v cp nht bin IN = INA + 1 = 8. + Tin trnh iu khin in khng c thng bo l c s c v tip tc thc hin nhim v. + Nh vy tp b.txt b i thnh tp a.txt v s khng c in ra my in. - Cc cng c iu phi tho mn cc yu cu sau: + Phi m bo sao cho tin trnh khng chim gi ti nguyn gng v hn + Nu c mt tin trnh xp hng ch ti nguyn gng th sm hay mun n phi vo c on gng ca mnh (c phc v ti nguyn gng). + Nu c tin trnh xp hng ch i ti nguyn gng v nu ti nguyn gng c gii phng th n phi c phc v trong cc tin trnh ang ch i. - Cc cng c iu : Chia lm ba lp chnh + Phng php kho trong: l loi gii thut khng yu cu g v thit b hoc h thng. Phng php ny c tnh cht vn nng ng vi mi ngn ng, mi loi my. + Kim tra v xc lp L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 86/96

Xc lp da vo thit b, thit b c nhng lnh c bit phc v cho ring cng tc iu . + K thut n bo: da vo cng c c bit ca tng h iu hnh. 7. Phng php kho trong - Nguyn l: Dng thm cc bin vi t cch l ti nguyn chung cha cc c cho bit tin trnh vo on gng hay ra khi on gng. - Gi thit: + C hai tin trnh song song cng s dng 1 ti nguyn gng chung v kh nng phc v ca ti nguyn gng l 1. + Mi tin trnh ch c mt on gng nm u tin trnh. + Cc tin trnh ny lp v hn, nu c kt thc th u ngoi on gng. - S dng mt bin IS_USED c gi tr bng 1 ch ra ti nguyn gng ang b mt tin trnh no chim gi v ngc li, khi IS_USED = 0 ch ra ti nguyn gng ang sn sng phc v. Khi mt tin trnh thy bin IS_USED = 0, n phi t bin IS_USED = 1 trc khi s dng ti nguyn gng. Tuy nhin ta d dng tin bin IS_USED li tr thnh ti nguyn gng. Gi s tin trnh 1 kim tra thy bin IS_USED = 0, trc lc n t bin ny ln 1 th tin trnh 2 li kim tra bin ny v tt nhin khi bin IS_USED = 0. Nh vy c hai tin trnh u vo on gng v u s dng ti nguyn gng. Ni cch khc vn iu cha c gii quyt - S dng bin TURN ch n lt tin trnh no c s dng ti nguyn gng. + S nguyn l
Var turn : integer; Begin turn := 1; ParBegin { Hai khi lnh trong t kho thc hin song song vi nhau } TT1: REPEAT while (turn <> 1) do ; vao_doan_gang_1; { on turn := 2; { chuyn ti thuc_hien_viec_khac_1; { phn cn li ca tin UNTIL FALSE;

ParBegin v ParEnd c

gng ca tin trnh 1 } nguyn gng cho tt2) trnh 1 }

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 87/96

TT2: REPEAT while (turn <> 2) do ; vao_doan_gang_2; { on gng ca tin trnh 2 } turn := 1; { chuyn ti nguyn gng cho tt1) thuc_hien_viec_khac_2; { phn cn li ca tin trnh 2 } UNTIL FALSE; ParEnd; End.

+ Gii thch: Ban u TURN = 1, tc l tin trnh 1 c php s dng ti nguyn gng. Khi tin trnh 1 dng ti nguyn gng xong th t TURN = 2, cho php tin trnh 2 s dng ti nguyn gng. Khi tin trnh 2 s dng xong ti nguyn gng th li t TURN = 1, ch n lt tin trnh 1 s dng. + Tuy nhin ta gi s tin trnh 1 dng xong ti nguyn gng, sau khi t TURN = 2 sang thc hin th tc thuc_hien_viec_khac_1, th tc ny kh ngt, tin trnh 1 quay li on gng. Nhng lc ny tin trnh 2 ang bn thc hin cc cng vic khc trong th tc thuc_hien_viec_khac_2. Tin trnh 2 vn cha vo on gng v vy bin TURN vn c gi tr bng 2. V vy mc d ti nguyn gng khng c s dng nhng do TURN = 2 m tin trnh 1 khng th s dng c ti nguyn gng. - khc phc nhc im ny ngi ta a ra cch thc dng hai bin c1 v c2 cho hai tin trnh nh sau: + S nguyn l
Var c1,c2 : integer; Begin c1 := 0; c2 := 0; ParBegin { Hai khi lnh trong t kho ParBegin v ParEnd c thc hin song song vi nhau } TT1: REPEAT while (c2 > 0) do ; c1 := 1; vao_doan_gang_1; { on gng ca tin trnh 1 } c1 := 0; thuc_hien_viec_khac_1; { phn cn li ca tin trnh 1 } UNTIL FALSE;

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 88/96

TT2: REPEAT while (c1 > 0) do ; c2 := 1; vao_doan_gang_2; { on gng ca tin trnh 2 } c2 := 0; thuc_hien_viec_khac_2; { phn cn li ca tin trnh 2 } UNTIL FALSE; ParEnd; End.

- Gii thch C1 v C2 i din cho vic s dng ti nguyn gng th nht v ti nguyn gng th hai. + Ban u c hai bin u c gi tr bng 0 th hin ti nguyn gng ang trng thi sn sng phc v. + Gi s tin trnh 1 c phc v trc, tin trnh 1 b qua vic ch i
while (c2 > 0) do ;

v chim ly ti nguyn gng ng thi t C1 = 1; + C1 = 1 c ngha l tin trnh 1 ang s dng ti nguyn gng. Trong lc ti nguyn gng ang b tin trnh 1 chim gi th tin trnh 2 phi ch i
while (c1 > 0) do ;

Khi tin trnh 1 dng xong ti nguyn gng th t li bin C1 = 0. + Khi C1 = 0 v tin trnh 2 kt thc vic ch i
while (c1 > 0) do ; { c kt thc do c1 = 0 }

lc ny tin trnh 2 chim gi ti nguyn gng v t C2 = 1; Khi tin trnh 2 dng xong ti nguyn gng th t li C2 = 0; + Qu trnh nh vy c lp i lp li, cho n khi kt thc c hai tin trnh (lnh kt thc trong on chng trnh khng phi l on gng). - Trong trng hp ti nht, c hai tin trnh u vo on gng v t bin C1 v C2 bng 1, v c hai tin trnh u khng vo c on gng v gy ra hin tng ch i vng trn. L o l vic xc lp vo on gng v kh nng xem xt c c vo on gng ca hai on trn khng c quan h vi nhau. - V vy ngi ta a ra mt phng php khc phi hp hai phng php trn, phng php ny phi hp Xc lp Kim tra Xc lp, do Delker cng b nm 1968 nh sau:
Var c1, c2, tt: integer; Begin c1:=0; c2:=0; tt:=1;

L Tin Dng

BM Cng ngh phn mm

H iu hnh
ParBegin TT1: REPEAT c1:=1; while(c2=1) do Begin if(tt = 2) then Begin c1:=0; while(tt =2) do; c1:=1; End; End; vao_doan_gang_1; c1:=0; tt:=2; thuc_hien_viec_khac_1; UNTIL FALSE; TT2: REPEAT c2:=1; while(c1=1) do Begin if(tt = 1) then Begin c2:=0; while(tt =1) do; c2:=1; End; End; vao_doan_gang_2; c2:=0; tt:=1; thuc_hien_viec_khac_2; UNTIL FALSE; ParEnd; End.

trang 89/96

- u im: + Gii thut ny c tnh cht vn nng p dng cho mi cng c v mi h thng. + Tn dng, pht huy kh nng ti a ti nguyn gng. - Nhc im + phc tp t l vi s lng tin trnh v s ti nguyn gng. + Tn ti hin tng ch i tch cc. Mc d khng lm g c nhng vn chim thi gian processor. Nguyn nhn l do mi tin trnh phi lm vic vi nhiu bin, trong c nhiu bin khng phi ca mnh (v d: mun xc lp bin c1 phi kim tra bin c2 v bin tt).

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 90/96

8. Phng php Kim tra v Xc lp (Test and Set) - Trong h lnh ca my tnh tn ti lnh cho thc hin nhiu cng vic lin tc. Cc cng vic ny to thnh mt h lnh nguyn t, khng th ch thc hin mt cng vic. Th tc Test_And_Set c th c nh ngha nh sau:
Procedure TS(var local: integer); Begin local:=global; global:=1; End;

+ Ch : hai lnh trn phi c thc hin lin tc khng b chia r. + Mi tin trnh s s dng hai bin l bin local ca mnh v bin global ca ton chng trnh. - S iu
Var lc1, lc2: integer; global: integer; Procedure TS(var local: integer); Begin local:=global; global:=1; End; Begin gl:=0; ParBegin TT1: REPEAT lc1:=1; while lc1=1 do TS(lc1); vao_doan_gang_1; gl:=0; thuc_hien_viec_khac_1; UNTIL FALSE; TT2: REPEAT lc2:=1; while lc2=1 do TS(lc2); vao_doan_gang_2; gl:=0; thuc_hien_viec_khac_2; UNTIL FALSE; ParEnd; End.

L Tin Dng

BM Cng ngh phn mm

H iu hnh Global 0 1 1 0 1 ... Lc1 1 0 ... Lc2

trang 91/96

1 (ch i) 0

1 (ch i) ...

...

- u im: Khc phc c phc tp ca thut ton, phc tp thut ton khng ph thuc vo s lng tin trnh. - Nhc im: Vn cn hin tng ch i tch cc. 9. K thut n bo y l cng c ph thuc vo h thng do Dijkstra xut, vi t tng nh sau: - H thng s dng bin n bo nguyn c bit (Semaphore) s. Ban u s nhn mt gi tr bng kh nng phc v ca ti nguyn gng. H thng c hai php thao tc trn s l P(s) v V(s). P: Proberen (ting H Lan) c ngha l gim V: Verhogen c ngha l kim tra - Ni dung ca P(s) nh sau: + Gim s i mt:
s := s 1

+ Kim tra xem nu s<0 a tin trnh vo xp hng


If (s<0) then xep_hang;

- Ni dung ca V(s) nh sau: + Tng s ln mt:


s := s +1;

+ Kim tra nu s <= 0 th kch hot mt tin trnh ra hot ng


If (s<=0) then hoat_dong;

- c im quan trng l 2 php P v V l lin tc, trong qu trnh thc hin P hoc V th processor khng b ngt chuyn sang cng vic khc. - Tuy nhin cc php x l ny c th khng tn ti trn cc my v P v V phi lm vic vi dng xp hng v thng tin lu tr kh ln. khc phc

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 92/96

iu ny ngi ta xy dng cc th tc procedure thc hin cc php x l ny. + u ca thn th tc bao gi cng ra lnh cm ngt tc l chn mi tn hiu vo processor CLI, tr nhng tn hiu bt buc (ngt khng che c). + Cui thn th tc c lnh gii phng ngt (STI). - S iu
Var s: integer; Begin s:=1; ParBegin TT1: REPEAT P(s); vao_doan_gang_1; V(s); thuc_hien_viec_khac_1; UNTIL FALSE; TT2: REPEAT P(s); vao_doan_gang_2; V(s); thuc_hien_viec_khac_2; UNTIL FALSE; ParEnd; End.

S TT1 TT2 1 P(s) 0 Lm TT1 P(s) -1 ch i -1 TT1 xong ch i 0 V(s) LmTT2 0 TT2 xong 1 V(s) V s>0 nn khng cn tin trnh no cn ti nguyn gng - u im: Chng c hin tng ch i tch cc. L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 93/96

L do: mi tin trnh ch phi kim tra iu kin vo on gng mt ln, nu khng vo c s c mt tin trnh khc kch hot tin trnh ny vo thi im thch hp.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 94/96

- Qun l b nh 10. LT: 6 Tit, TH: Qun l tin trnh LT: 12 Tit, TH:Ti liu tham kho - Ti liu tham kho [1] Nguyn Thanh Tng. Gio trnh H iu hnh, 1995. [2] A.S. Tanenbaum. Operating Systems Design and Implementation, 1997. [3] Abraham Silberschatz. Principes des systmmes d exploitation, 1994. [4] Peter Norton. Cm nang lp trnh h thng cho IBM PC, 1992.

[5] [6] [7] [8]

Phm Vn t. Lp trnh C c s v nng cao, 1997. L c Trung, L ng Hng, Nguyn Thanh Thu. Ngn ng Lp trnh C, 1996. L ng Hng, T Tun Anh. Lp trnh hng i tng vi C++, Khoa CNTT 1999. Bruce Eckel. Thinhking in C++, 1999.

L Tin Dng

BM Cng ngh phn mm

H iu hnh

trang 95/96

Chng 1. Cc khi nim c bn.......................................................... 2


1. Cu trc phn lp v s pht trin ca h thng tnh ton.............. 2 2. Ti nguyn ca h thng tnh ton.................................................. 5 3. nh ngha HH............................................................................. 7 4. Phn loi h iu hnh .................................................................... 8 5. Cc tnh cht c bn ca h iu hnh............................................ 9 6. Nguyn l xy dng chng trnh HH....................................... 10 7. Thnh phn ca HH v kin trc HH...................................... 13 8. Cc hnh thi giao tip .................................................................. 14 9. Gii thiu v MSDOS.................................................................... 15 Chng 2. H thng x l ngt trong IBM PC ................................... 17 1. Khi nim v ngt v x l ngt trong IBM PC............................ 17 2. Phn loi ngt................................................................................ 17 3. Quy trnh x l ngt ...................................................................... 18 4. Bng vector ngt............................................................................ 19 5. Gi ngt trong Assembler ............................................................. 20 6. Gi ngt trong Pascal .................................................................... 20 7. B thanh ghi ca 8088 .................................................................. 21 8. Thay i ngt trong h thng........................................................ 23 9. Mt s hm v th tc thng dng trong lp trnh h thng ...... 24 Chng 3. Qun l thit b ngoi vi v tp ......................................... 32 1. Nguyn l phn cp trong t chc v qun l thit b ngoi vi .... 32 2. Phng m (Buffer)...................................................................... 34 3. SPOOL- Simultaneous Peripheral Operation On-Line ................. 38 4. Qun l mn hnh.......................................................................... 39 5. Qun l bn phm.......................................................................... 46 6. Qun l tp.................................................................................... 54 7. Qun l tp trong MSDOS ............................................................ 57 Chng 4. Qun l tin trnh .............................................................. 78 1. nh ngha tin trnh ..................................................................... 78 2. Khi iu khin tin trnh (Process Control Bloc - PCB) ............. 79 3. Cch thc tin trnh....................................................................... 79 4. Phn loi tin trnh song song....................................................... 81 5. M t tin trnh song song ............................................................ 83 6. Ti nguyn gng v on gng ..................................................... 84 L Tin Dng BM Cng ngh phn mm

H iu hnh

trang 96/96

7. Phng php kho trong ............................................................... 86 8. LT: 6 Tit, TH:.............................................................................. 94

L Tin Dng

BM Cng ngh phn mm

You might also like