Documentos de Académico
Documentos de Profesional
Documentos de Cultura
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
HOC VIEN CONG NGHE BU CHNH VIEN THONG
C S THANH PHO HO CH MINH
KHOA CNG NGH THNG TIN
GIO TRNH
H IU HNH
(OPERATING SYSTEM)
BIN SON
NINH XUN HI - HUNH TRNG THA
NM 2008
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
2
LI M U
H iu Hnh (Operating Systems) l mt thnh phn khng th thiu trong mt h thng my
tnh. Mt my tnh mc d t tin, cu hnh cao nhng nu khng c h iu hnh th hu nh
khng th s dng c. H iu hnh iu khin mi hot ng ca my tnh, gip vic s dng
my tnh tr nn n gin, d dng v hiu qa hn rt nhiu. Do vy mn hc H iu hnh l
mn hc quan trng v rt cn thit trong chng trnh o to chuyn nghnh tin hc h cao
ng v k s.
Gio trnh H iu hnh c bin son theo chng trnh o to chuyn nghnh tin hc h
cao ng v k s ca B gio dc v o to. Gio trnh c chia thnh 6 chng, chng 1, 2,
3, 4 do ging vin Ninh Xun Hi bin son, chng 5, 6 do ging vin Hunh Trng Tha bin
son. Tuy rng chng ti c nhiu c gng trong cng tc bin son nhng chc chn gio trnh
vn cn nhiu thiu st, nn rt mong c bn c cng nh cc ng nghip ng gp kin
gio trnh ngy cng hon thin, nhm mc ch phc v tt hn cho vic dy v hc tin hc ang
ngy cng pht trin nc ta.
Mi s gp hoc thc mc xin gi v a ch Email: hainx@ptithcm.edu.vn hoc
htthua@ptithcm.edu.vn.
Ngy 21 Thng 11 Nm 2008
GV. bin son
Ninh Xun Hi - Hunh Trng Tha
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
3
CHNG I
GII THIU H IU HNH
Chng GII THIU V H IU HNH s gii thiu v gii thch cc vn sau:
1.1 H iu hnh l g, cc khi nim ca h iu hnh.
1.2 Lch s pht trin ca h iu hnh
1.3 Cc loi h iu hnh
1.4 Cc dch v ca h iu hnh.
1.5 Cu trc ca h iu hnh
1.6 Nguyn l thit k h iu hnh
1.1 CC KHI NIM
1.1.1 H iu hnh l g?
H iu hnh (operating systems) l chng trnh ng vai tr trung gian gia ngi s
dng v phn cng ca my tnh. H iu hnh che du s phc tp, a dng ca phn cng,
gip vic s dng my tnh tr nn n gin, hiu qu. Nhim v ca h iu hnh l qun l ti
nguyn ca my tnh, thc thi cc chng trnh ng dng, h tr cc chc nng mng, vv
1.1.2 Cc thnh phn ca mt h thng my tnh
Mt h thng my tnh c chia thnh 4 thnh phn sau: phn cng, h iu hnh,
chng trnh ng dng/chng trnh h thng, ngi s dng.
+ Phn cng (hardware) : CPU, b nh, cc thit b nhp/xut,
+ H iu hnh (operating systems): iu khin v phi hp vic s dng phn cng cho nhiu
ng dng vi nhiu ngi s dng khc nhau.
+ Chng trnh ng dng v chng trnh h thng (system and applications programs): l cc
chng trnh gii quyt nhng vn ca ngi s dng nh l chng trnh dch, h qun tr c
s d liu, chng trnh tr chi, chng trnh thng mi,
+ Ngi s dng (user): ngi s dng hoc my tnh.
Hnh 1.1: Cc thnh phn ca mt h thng my tnh
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
4
1.1.3 Cc thnh phn ca mt h thng nhp/xut
Mt h thng nhp/xut gm ba thnh phn sau:
+ H thng b nh m (buffer-caching system)
+ Chng trnh iu khin thit b (Drivers for specific hardware devices).
+ Chng trnh giao tip vi chng trnh iu khin thit b (A general device-driver interface).
Chng trnh giao tip vi chng trnh iu khin thit b
Chng trnh iu khin thit b H thng b nh m
Hnh 1.2: Cc thnh phn ca mt h thng nhp/xut
1.1.4 Cc thnh phn ca h iu hnh
H iu hnh gm c ba thnh phn sau:
+ B cp pht ti nguyn (Resource allocator): Qun l v cp pht ti nguyn.
+ Chng trnh kim sot (Control program): Kim sot vic thc thi chng trnh v kim sot
hot ng ca cc thit b nhp/xut.
+ Phn nhn (Kernel): l chng trnh li ca h iu hnh, c thc thi trc tin v tn ti
trong b nh cho n khi tt my (cc chng trnh khc gi l chng trnh ng dng).
B cp pht ti nguyn Chng trnh kim sot
Phn nhn
Hnh 1.3: Cc thnh phn ca h iu hnh
1.2 LCH S PHT TRIN CA H IU HNH
+ Giai on 1 (1945 1955): c my tnh ln nhng cha c h iu hnh.
+ Giai on 2 (1956 1965): h thng x l theo l (Batch systems)
+ Giai on 3 (1966 1980): h thng x l a chng (Multiprogramming systems) , h thng
x l a nhim (Multitasking systems).
+ Giai on 4 (1981 - 2007 ): h thng a x l (Multiprocessor systems), h thng x l phn tn
(Distributed systems), h thng x l thi gian thc (Real-time systems), h thng nhng
(Embedded systems).
1.3 PHN LOI H THNG MY TNH
Mt h thng my tnh gm hai phn l h iu hnh v phn cng tng ng thc thi h iu
hnh.
1.3.1 H thng x l theo l (Batch Systems)
y l h iu hnh u tin, th s nht. i vi h iu hnh ny th ti mt thi im ch c
mt cng vic trong b nh, khi thc hin xong mt cng vic, cng vic khc s c t ng
np vo v cho thc thi. H iu hnh c mt chng trnh, gi l b gim st, thng tr trong
b nh chnh, gim st vic thc hin dy cc cng vic theo th t v t ng.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
5
Cch b tr b nh ca h iu hnh x l theo l nh sau: phn b nh a ch thp dnh cho h
iu hnh, phn cn li dnh cho mt chng trnh ca ngi dng.
Hnh 1.4: m hnh t chc b nh ca h iu hnh x l theo l
Xem mt v d v cch thc lm vic vi h thng x l theo l:
- Lp trnh vin mang phiu ghi chng trnh n my 1401
- My s c chng trnh t phiu v ghi chng trnh vo bng t
- Lp trnh vin em bng t ti my 7094 thc hin tnh ton v kt qa c ghi vo bng t
- Lp trnh vin em bng t cha kt qa ti my 1402 in
Hnh 1.5: v d v cch thc x l cng vic vi h iu hnh x l theo l
1.3.2 H thng x l a chng (MultiProgramming Systems)
Ti mt thi im c nhiu cng vic trong b nh v khi mt cng vic ang thc hin, nu c
yu cu nhp/xut th CPU khng ngh m h iu hnh s chuyn sang thc hin cng vic khc.
V d trong b nh hin c ba chng trnh thc hin ba cng vic. Nu cng vic 1 yu cu
nhp/xut th cng vic 1 tm ngng, cng vic 2 (hoc cng vic 3) s c thc hin. Khi thao
tc nhp/xut ca cng vic 1 xong th cng vic 1 s c thc hin tip, cng vic 2 s tm
ngng,
Hnh 1.6: m hnh t chc b nh ca h thng x l a chng
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
6
* Cc chc nng ca h iu hnh trong h thng x l a chng
+ Lp lch CPU (CPU scheduling): chn mt trong nhng cng vic trong b nh cho thc thi
(cho s dng CPU). Khi chn cn trnh trng hp mt cng vic ch trong b nh qu lu.
+ Qun l b nh (Memory management): cn phi qun l phn b nh no cp pht v cp
cho cng vic no (b nh cp pht cho mi cng vic phi ring bit), phn b nh no cha cp,
khi mt cng vic thc thi xong cn thu hi phn b nh cp cho cng vic . Nu mt cng
vic truy xut n phn b nh cp cho cng vic khc th phi ngn cm. Nu b nh b phn
mnh qu nhiu, cn dn b nh, vv
+ Cp pht thit b (Allocation of devices): tnh trng thit b rnh hay khng rnh, thit b cp
cho cng vic no, cng vic no cn a vo hng i ch. Thit b no c th dng chung v
ti a bao nhiu cng vic s dng chung thit b cng lc, thit b no khng th dng chung,
v phi trnh b tc nghn (cc cng vic ch v hn c cp ti nguyn).
+ Cung cp cc hm x l nhp/xut (I/O routines): Cc hm nhp/xut s che du s phc tp
v a dng ca cc thit b nhp/xut, qun l vic s dng chung cc thit b nhp/xut.
1.3.3 H thng x l a nhim (Multitasking Systems)
H thng x l a nhim l h thng m rng ca h thng x l a chng. i vi h iu hnh
trong h thng x l a nhim, vic chuyn i cng vic khng ch cng vic ang thc thi c
yu cu nhp/xut, m khi cng vic ang thc thi ht thi gian qui nh s dng CPU th vic
chuyn i cng vic cng s xy ra. Mi cng vic c thc hin lun phin qua c ch chuyn
i CPU, thi gian mi ln chuyn i din ra rt nhanh nn ngi s dng c cm gic l cc
cng vic ang c thi hnh cng lc. H thng x l a nhim cn gi l h thng chia x thi
gian (Time-Sharing Systems).
V d h thng c mt CPU v hin c ba cng vic A, B, C trong b nh. Ba cng vic ny s
c thc hin lun phin: cng vic A thc hin trong khong thi gian q (quantum) th tm
ngng, n lt cng vic B thc hin trong khong thi gian q, ri n lt cng vic C. Sau
li n lt A, lp li vic thc thi cc cng vic cho n khi tt c cc cng vic hon tt.
Hnh 1.7: cc cng vic A,B,C s dng cpu lun phin trong h thng x l a nhim
1.3.4 H thng a x l (Multiprocessor Systems)
My tnh c nhiu b x l cng chia x h thng ng truyn d liu, ng h, b nh v cc
thit b ngoi vi. Mi CPU s thc hin mt cng vic v khi cc cng vic s thc s din ra
ng thi. H thng a x l cn gi l h thng x l song song (Parallel Systems).
time
task
A
B
C
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
7
Hnh 1.7: m hnh h thng a x l: c nhiu cpu nhng s dng chung b nh
* u im ca h thng a x l
+ S hng hc ca mt b x l s khng nh hng n ton b h thng.
+ H thng s thc hin rt nhanh do thc hin cc cng vic ng thi trn cc b x l khc
nhau
+ Vic lin lc gia cc cng vic d dng bng cch s dng b nh dng chung.
* Phn loi h thng a x l
+ H thng a x l i xng (Symmetric MultiProcessing (SMP)): mi b x l chy vi mt
bn sao ca h iu hnh v cc b x l l ngang cp. Cc h iu hnh hin nay u h tr
SMP.
+ H thng a x l bt i xng (Asymmetric multiprocessing): C mt b x l chnh (master
processor) kim sot, phn vic cho cc b x l khc (slave processors).
1.3.5 H thng x l phn tn (Distributed Operating Systems)
Tng t nh h thng a x l nhng mi b x l c b nh ring. Cc b x l lin lc vi
nhau thng qua cc ng truyn dn mng. Mng LAN, WAN vi h iu hnh Windows,
UNIX chnh l cc h thng x l phn tn.
* Phn loi h thng x l phn tn: c hai loi
+ Peer-to-peer: h thng mng ngang hng, cc my tnh ngang cp, khng c my no ng vai
tr qun l ti nguyn dng chung.
+ Client-server: c mt my ng vai tr qun l cc ti nguyn dng chung gi l my server
(my ch), cc my khc gi l my client (my khch). Client mun s dng ti nguyn dng
chung phi c server cp quyn. M hnh h thng client-server:
Hnh 1.8: m hnh h thng x l phn tn
* u im ca h thng x l phn tn
+ Dng chung ti nguyn: my in, tp tin
+ Tng tc tnh ton: phn chia cng vic tnh ton trn nhiu v tr khc nhau
+ An ton: Nu mt v tr b hng, cc v tr khc vn tip tc lm vic.
+ Truyn thng tin d dng: download/upload file, gi/nhn mail,
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
8
1.3.6 H thng x l thi gian thc (Real-Time Systems)
H thng s cho kt qu chnh xc trong khong thi gian nhanh nht. H thng thng dng cho
nhng ng dng chuyn dng nh l h thng iu khin trong cng nghip.
* Cc loi h thng x l thi gian thc
+ H thng x l thi gian thc cng (Hard real-time): cc cng vic c hon tt ng thi
im qui nh.
+ H thng x l thi gian thc mm (Soft real-time): mi cng vic c mt u tin ring v s
c thi hnh theo u tin.
1.3.7 H thng nhng (Embedded Systems)
H iu hnh c nhng trong cc thit b gia dng, cc my tr chi,... Do cc thit b gia dng
c b nh t, b x l tc thp, kch thc mn hnh nh nn h iu hnh ny cn n gin,
nh gn, c tnh c trng cho tng thit b. V d h iu hnh dng cho my PDAs (Personal
Digital Assistants), Mobil phones, H thng nhng cn c gi l h thng cm tay (Handheld
Systems).
1.4 CC DCH V CA H IU HNH
H iu hnh thng thng cn cung cp cc dch v sau:
- Qun l tin trnh
- Qun l b nh chnh (RAM)
- Qun l b nh ph (DISK)
- Qun l h thng nhp xut
- Qun l h thng tp tin
- Bo v h thng
- H thng dng lnh
- Qun l mng
- Cc li gi h thng (system calls).
1.4.1 Dch v qun l tin trnh (Process Management)
Tin trnh l mt chng trnh ang thi hnh. Trong b nh, ti mt thi im c th c nhiu tin
trnh, mt s tin trnh l ca h iu hnh, mt s tin trnh l ca ngi s dng. Khi tin trnh
c to ra hoc ang thi hnh s c h iu hnh cung cp cc ti nguyn tin trnh hot
ng nh l CPU, b nh, tp tin, cc thit b nhp/xut Khi tin trnh kt thc, h iu hnh s
thu hi li cc ti nguyn cp pht. Mt tin trnh khi thc thi li c th to ra cc tin trnh con
v hnh thnh cy tin trnh.
* Cc chc nng ca dch v qun l tin trnh
+ To v hy cc tin trnh ca ngi s dng v ca h iu hnh.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
9
+ Tm ngng v thc hin li mt tin trnh.
+ Cung cp c ch ng b cc tin trnh.
+ Cung cp c ch lin lc gia cc tin trnh.
+ Cung cp c ch kim sot tc nghn.
1.4.2 Dch v qun l b nh chnh (Main Memory Management)
Ti mt thi im, trong b nh chnh c th c nhiu tin trnh, h iu hnh cn phi qun l
phn b nh cp cho mi tin trnh trnh xung t.
* Cc chc nng ca dch v qun l b nh chnh
+ Lu gi thng tin v cc v tr trong b nh s dng v tin trnh no ang s dng.
+ Quyt nh chn tin trnh np vo b nh chnh khi b nh chnh c ch trng.
+ Cp pht b nh cho tin trnh v thu hi b nh khi tin trnh thc thi xong.
1.4.3 Dch v qun l b nh ph (Secondary Management)
lu tr d liu lu di, d liu cn lu trn a dng tp tin, ngoi ra a cn lu gi cc tin
trnh khi b nh RAM khng cn , vng nh ny gi l b nh o.
* Cc chc nng ca dch v qun l b nh ph
+ Qun l vng trng trn a (Free space management)
+ Xc nh v tr ct gi d liu (Storage allocation).
+ Lp lch cho a (Disk scheduling).
1.4.4 Dch v qun l h thng nhp/xut (I/O System Management)
H iu hnh cn che du nhng c th ca cc thit b phn cng, bng cch cung cp cc chc
nng x l nhp xut n gin, khng ph thuc vo chi tit ca mi loi thit b.
1.4.5 Dch v qun l h thng tp tin (File Management)
My tnh c th lu tr thng tin trong nhiu dng thit b vt l khc nhau nh bng t, a t,
a quang, ... Mi dng c c kh nng lu tr, tc truyn d liu v cch truy xut khc nhau.
H iu hnh cn ng nht cch truy xut h thng lu tr, nh ngha mt n v lu tr l tp
tin.
* Cc chc nng ca dch v qun l h thng tp tin
+ H tr cc thao tc trn tp tin v th mc (to/xem/xo/sao chp/di chuyn/i tn).
+ nh x tp tin trn h thng lu tr ph.
+ Sao lu tp tin trn cc thit b lu tr.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
10
1.4.6 Dch v bo v h thng (Protection System)
H iu hnh cn cung cp c ch m bo rng ti nguyn ch c truy xut bi nhng tin
trnh c quyn. V d m bo rng tin trnh ch c thi hnh trong phm vi a ch ca n hoc
m bo rng khng c tin trnh no c chim CPU
1.4.7 Li gi h thng (system call)
Li gi h thng l tp lnh do h iu hnh cung cp dng giao tip gia tin trnh ca ngi
dng v h iu hnh, li gi h thng cn gi l ngt. Cc li gi h thng c th c chia
thnh cc loi nh l tp lnh qun l tin trnh, tp lnh qun l tp tin, tp lnh qun l thit b,
tp lnh dng lin lc gia cc tin trnh. Mi li gi h thng c mt s hiu duy nht dng
phn bit li gi ny vi li gi khc. Cc a ch ni cha m lnh ca cc ngt (li gi h thng)
c lu trong mt bng gi l bng vect ngt.
Khi tin trnh dng li gi h thng, cn cung cp tham s cho li gi h thng. C ba phng
php m tin trnh dng chuyn tham s cho h iu hnh:
- Chuyn tham s vo thanh ghi
- Lu tr tham s trong mt bng trong b nh v ghi a ch bng vo thanh ghi
- Lu tr tham s vo stack v tham s c ly ra bi h iu hnh .
V d chuyn a ch bng X (bng cha cc tham s) vo thanh ghi, gi ngt 13. Ngt 13 l li
gi h thng do h iu hnh cung cp.
Hnh 1.9: truyn tham s dng bng cho ngt 13
Qun l tin trnh
Li gi hm M t
Pid=fork() To mt tin trnh con ging tin trnh cha
Pid=waitpid(pid, &statloc, options) i mt tin trnh con kt thc
Exit(status) Kt thc vic thc thi tin trnh v tr v trng thi
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
11
Qun l Tp tin
Li gi hm M t
Fd=open(file,how,) M mt file c, ghi hoc c hai
S=close(fd) ng mt file m trc
N=read(fd,buffer,nbytes) c d liu t file vo vng m
N= write(fd,buffer,nbytes) Ghi d liu t buffer vo file
Position=lseek(fd,offset,whence) Di chuyn con tr file
S=stat(name,&buf) Ly thng tin trng thi ca file
Qun l H thng file v th mc
Li gi hm M t
S=mkdir(name,mode) To th mc mi
S=rmdir(name) Xa th mc rng
S=link(name1,name2) To mt i tng mi name2 tr vo i tng name1 trc
S=unlink(name) Xa i tng th mc
S=mount(special,name,flag) Kch hot h thng file
S=unmount(special) Ngng kch hot h thng file
Hnh 1.10: Mt s li gi h thng
1.4.8 H thng thng dch dng lnh (Command-Interpreter System)
L tp lnh c bn cng trnh thng dch lnh ngi s dng giao tip vi h iu hnh. Cc
lnh c bn nh lnh qun l tin trnh, qun l nhp xut, qun l b nh chnh, qun l b nh
ph, qun l tp tin v cc lnh bo v h thng Cc lnh trong h thng thng dch dng lnh
thc ra cng s gi cc cc li gi h thng.
1.4.9 Qun l mng (Networking)
Cung cp cc chc nng phn quyn, chia x ti nguyn mng, lin lc gia cc tin trnh trn
mng,
1.5 CU TRC H IU HNH
1.5.1 Cu trc n gin
H iu hnh khng c chia thnh nhng lp (phn) r rt, mt lp c th gi hm thuc bt k
lp no khc. H iu hnh ny n gin, d thit k, d ci t nhng kh bo v, kh m rng,
v kh nng cp. V d h iu hnh MSDOS l h iu hnh c cu trc n gin: chng trnh
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
12
ng dng c th truy xut trc tip cc hm nhp/xut trong ROM BIOS ghi trc tip ln mn
hnh hay b iu khin a.
Hnh 1.11: Cu trc ca h iu hnh MS-DOS (cu trc n gin)
H iu hnh UNIX phin bn u tin cng c cu trc n gin v c chia thnh hai phn:
phn system calls v phn kernel. Phn kernel cung cp tt c cc dch v ca h iu hnh. Cc
phn c th gi ln nhau.
Hnh 1.12: cu trc ca h iu hnh UNIX phin bn u tin (cu trc n gin)
1.5.2 Cu trc phn lp
H iu hnh c chia thnh nhiu lp, mi lp c xy dng da vo nhng lp thp hn.
Lp di cng l phn cng, lp trn cng l lp giao tip vi ngi s dng. Mi lp ch s
dng nhng hm do lp di cung cp. Ht nhn lp k lp phn cng, dng cc lnh ca phn
cng to cc li gi h thng.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
13
Xem m hnh phn lp hnh 1.12: Lp M tha k mt s hm ca lp M-1 v c th c thm
mt s hm ca ring mnh. Nhng hm m lp M-1 t thuc tnh n th lp M khng c tha
k.
Hnh 1.13: m hnh cu trc phn lp
Tng Chc nng
5 Thao tc
4 Chng trnh ngi dung
3 Qun l Xut/Nhp
2 Truyn thng Thao tc-Tin trnh
1 Qun l b nh
0 a chng
Hnh 1.14: cu trc phn lp ca h iu hnh THE
1.5.3 Cu trc my o
Vi h iu hnh my o, mt my c gi lp thnh nhiu my, ti nguyn ca h thng nh l
CPU, b nh, a, c chia x to cc my o. Mi my o c c lp vi my o khc
nn ti nguyn dng chung c bo v nhng cng dn n vic khng c chia x ti nguyn
trc tip.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
14
Hnh 1.15: M hnh cu trc my o
1.5.4 Cu trc Client-Server
H iu hnh c chia thnh nhiu phn (gi l cc tin trnh server), mi tin trnh thc hin
mt dch v nh l dch v qun l tp tin, qun l tin trnh, qun l b nh, Cc tin trnh
yu cu (gi l tin trnh client) s gi yu cu n mt tin trnh server, tin trnh server thc
hin v gi kt qu tr li cho tin trnh client. Ht nhn ch c nhim v kim sot qu trnh lin
lc gia cc tin trnh client v server.
* u im ca cu trc client-server
+ Ht nhn rt nh, ch gm cc lnh c bn, nn d bo v, d nng cp.
+ Mi dch v ca h iu hnh do mt tin trnh server m nhn, cc tin trnh ny c lp vi
nhau nn khi mt tin trnh server b li, h thng vn hot ng.
+ Cc tin trnh server c thc hin ch ngi dng (user-mode), khng phi ch ht
nhn (kernel-mode), nn khng truy xut trc tip phn cng.
+ Cu trc client-server rt thch hp vi m hnh h thng phn tn. Cc tin trnh server c th
thc thi cc my khc nhau.
Hnh 1.17: M hnh h iu hnh client-server trn mt my
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
15
Hnh 1.18: M hnh h iu hnh client-server trn nhiu my
1. 6 NGUYN L THIT K H IU HNH
+ H iu hnh cn d vit, d sa li, d nng cp (nn vit h iu hnh bng ngn ng cp cao
v d vit v d sa li hn l vit bng ngn ng assembly).
+ H iu hnh cn d ci t, d bo tr, khng c li v hiu qa.
+ H iu hnh cn d s dng, d hc, an ton, c tin cy cao v thc hin nhanh.
+ H iu hnh cn c tnh kh chuyn cao (thc hin c trn mt nhm cc phn cng khc
nhau).
+ H iu hnh cn c chng trnh SYSGEN (System Generation) thu thp thng tin lin quan
n phn cng thit lp cu hnh h iu hnh cho ph hp vi mi my tnh.
TM TT
Mt h thng my tnh gm c phn cng, h iu hnh v cc chng trnh ng dng. H iu
hnh gip cho vic s dng my tnh hiu qu, n gin hn. H iu hnh c nhiu loi nhng
thng dng l loi h iu hnh a nhim, phn tn. H iu hnh cung cp cc dch v c bn
nh dch v qun l tin trnh, dch v qun l b nh, dch v qun l tp tin, dch v qun l
nhp/xut, v mt tp cc li gi h thng (ngt). H iu hnh cn thit k sao cho d sa li,
d ci t, d bo tr, khng c li, d s dng, d hc, tin cy cao, thc hin nhanh v c tnh
kh chuyn cao.
CU HI BI TP
1. Nu mc ch chung ca h iu hnh
2. Phn bit h thng a chng v h thng a nhim
3. Nu cc vn m h thng a chng/a nhim cn gii quyt
3. Phn bit h thng a nhim v h thng a x l
4. Phn bit h thng a x l v h thng x l phn tn
5. Nu mc ch ca h thng b nh m (buffer-caching system) trong h thng nhp/xut
6. Chng trnh iu khin thit b (Drivers for specific hardware devices) do h iu hnh cung
cp hay do hng sn xut thit b cung cp?
7. Chng trnh giao tip vi chng trnh iu khin thit b (general device-driver interface) do
h iu hnh hay do hng sn xut hay do ngn ng lp trnh hay do ngi lp trnh cung cp?
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
16
8. Phn nhn (kernel) ca h iu hnh MS-DOS gm nhng chng trnh no?
9. Nu khuyt im ca h iu hnh c cu trc n gin.
TI LIU THAM KHO
[1]. Gary J. Nutt, University of Colorado. Centralized And Distributed Operating Systems.
Second Edition, 2000.
[2]. Robert Switzer. Operating Systems, A Practical Approach. Prentice-Hall International, Inc.
1993.
[3]. Andrew S. Tanenbaum. Modern Operating Systems. Prentice-Hall International, Inc. Second
Edition, 2001.
[4]. Abraham Silberschatz & Peter Baer Galvin. Operating System concepts. John Wiley & Sons,
Inc. Fifth Edition, 1999.
[5]. H. M. Deitel. Operating Systems. Addison-Wesley Inc. Second Edition, 1999.
[6] Cm nang lp trnh h thng cho my vi tnh IBM-PC tp 1 v 2, tc gi Michael Tischer.
[7]. Trn Hnh Nhi & L Khc Nhin n & Hong Kim. Gio trnh h iu hnh (tp 1 & 2).
HKHTN 2000.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
17
CHNG 2
QUN L NHP/XUT V QUN L H THNG TP TIN
Chng QUN L NHP/XUT V QUN L H THNG TP TIN s gii thiu v gii
thch cc vn sau:
2.1. Qun l nhp/xut
2.1.1 Phn loi v c tnh ca thit b nhp/xut
2.1.2 B iu khin thit b nhp/xut
2.1.3 Cc chng trnh thc hin nhp/xut v t chc h thng nhp/xut
2.1.4 C ch nhp/xut v c ch DMA
2.1.5 Cc thut ton lp lch di chuyn u c
2.1.6 H s an xen v ram disk
2.2 Qun l h thng tp tin
2.2.1 Cc khi nim v a cng, tp tin, th mc, bng th mc
2.2.2 Cc phng php ci t h thng tp tin.
2.2.3 Phng php qun l danh sch cc khi trng
2.2.4 Phng php qun l s an ton ca h thng tp tin
2.2.5 Gii thiu mt s h thng tp tin: MSDOS/Windows, UNIX.
2.1. QUN L NHP/XUT
2.1.1 Phn loi v c tnh ca thit b nhp/xut
* Phn loi thit b nhp/xut:
+ Thit b khi: thng tin c c/ghi theo tng khi c kch thc c nh v c a ch xc
nh, v d a l mt thit b khi.
+ Thit b tun t: thng tin c gi/nhn theo dy tun t cc bit, khng c a ch, v d mn
hnh, bn phm, my in, card mng, chut l thit b tun t.
+ Thit b khc: c mt s cc thit b khng ph hp vi hai loi trn, v d ng h khng l
thit b khi, cng khng l thit b tun t.
* c tnh ca thit b nhp/xut:
+ Tc truyn d liu: v d bn phm : 0.01 KB/s, chut 0.02 KB/s ...
+ Dung lng lu tr, thi gian truy xut mt n v d liu.
+ Cng dng: dng nhp hay xut
+ n v truyn d liu: truyn theo khi hoc k t
+ Biu din d liu: iu ny ty thuc vo tng thit b c th.
+ Tnh trng li: nguyn nhn gy ra li, cch m thit b bo li...
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
18
Hnh 2.1: thi gian truy xut v dung lng ca mt s thit b nhp/xut
2.1.2 B iu khin thit b nhp/xut (I/O controller)
L phn cng iu khin trc tip thit b nhp/xut, CPU khng th truy xut trc tip thit b
nhp/xut m phi thng qua b iu khin thit b, dng h thng ng truyn gi l bus. V d
b iu khin mn hnh c cc k t cn hin th trong b nh v iu khin cc tia ca CRT
(ng phng in t ca mn hnh) xut k t trn mn hnh. Thit b nhp/xut v b iu
khin phi tun theo cng chun giao tip nh chun ANSI, IEEE hay ISO
B iu khin thit b nhp/xut c th iu khin c nhiu thit b, v d mt b iu khin
mn hnh (video controller) c th iu khin nhiu mn hnh.
Hnh 2.2: CPU truy xut cc thit b nhp/xut thng qua b iu khin thit b
Mi b iu khin c mt s thanh ghi lin lc vi CPU, cc thanh ghi ny c gn mt a
ch xc nh nh l mt phn ca b nh chnh, gi l nh x b nh nhp/xut. V d:
B iu khin
nhp/xut
a ch nhp/xut
(a ch ca cc thanh ghi)
Vect ngt
ng h 040 - 043 8
Bn phm 060 - 063 9
RS232 ph 2F8 - 2FF 11
a cng 320 - 32F 13
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
19
My in 378 - 37F 15
Mn hnh mono 380 - 3BF -
Mn hnh mu 3D0 - 3DF -
a mm 3F0 - 3F7 14
RS232 chnh 3F8 - 3FF 12
Hnh 2.3: bng a ch cc thanh ghi ca mt s b iu khin nhp/xut.
CPU thc hin nhp/xut bng cch ghi lnh, cng cc tham s ln cc thanh ghi ca b iu
khin, sau CPU s thc hin cng vic khc. Khi b iu khin thc hin xong, s pht sinh
mt ngt bo hiu cho CPU bit v n ly kt qu (kt qu cng c b iu khin lu trong
cc thanh ghi).
2.1.3 Cc chng trnh thc hin nhp/xut v t chc h thng nhp/xut
* Cc chng trnh thc hin nhp/xut:
+ Chng trnh nhp/xut ca ngi dng (user program): thc hin cc li gi n chng trnh
nhp/xut c lp thit b.
+ Chng trnh nhp/xut c lp thit b: cn gi l li gi h thng nhp/xut hoc ngt
nhp/xut, do h iu hnh cung cp, chng trnh nhp/xut c lp thit b cung cp mt giao
tip ng nht cho chng trnh nhp/xut ca ngi dng.
+ Chng trnh iu khin thit b (Device drivers): do h iu hnh hoc nh sn xut thit b
cung cp, chng trnh ny ph thuc vo thit b, s nhn nhng yu cu nhp/xut ca chng
trnh nhp/xut c lp thit b. Nu device driver ang bn, yu cu s c a vo hng
i, ngc li n s thc hin ngay yu cu, bng cch chuyn lnh vo thanh ghi ca b iu
khin thit b (I/O controller).
Hnh 2.4: S giao tip gia cc chng trnh thc hin nhp/xut
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
20
* T chc h thng nhp/xut
H thng qun l nhp/xut c phn chia thnh 5 lp l: tin trnh ngi dng (user processes),
chng trnh nhp/xut c lp thit b (device-independent software), chng trnh iu khin
thit b (device drivers), chng trnh kim sot ngt (interrupt handlers), phn cng (hardware).
Mi lp c chc nng ring v c th giao tip vi lp khc.
Hnh 2.5: m hnh phn lp ca h thng qun l nhp/xut
+ Tin trnh ngi dng (user processes): nh dng nhp/xut, thc hin li gi nhp/xut.
+ Chng trnh nhp/xut c lp thit b (Device-independent software): t tn, bo v, t chc
khi, t chc b m, cp pht,
+ Chng trnh iu khin thit b (Device driver): thit lp gi tr cc thanh ghi thit b, kim tra
trng thi thit b,
+ Chng trnh kim sot ngt (Interrupt handlers): thng bo cho chng trnh iu khin thit b
khi thao tc nhp/xut hon tt.
+ Phn cng nhp/xut (I/O Hardware): thc hin thao tc nhp/xut
V d tin trnh ngi dng (user processes) mun c mt khi d liu trn a, s gi yu cu
nhp/xut n chng trnh nhp/xut c lp thit b (device-independent software), chng
trnh ny s tm kim khi trong b m nhp/xut, nu khi cn c cha c trong b m, n s
gi chng trnh iu khin thit b (device driver). Chng trnh iu khin thit b gi yu cu
n a cng v tin trnh ngi dng s tm ngng cho n khi thao tc c a hon tt, a s
pht sinh mt ngt thng bo c xong, gi tn hiu ngt cho chng trnh kim sot ngt.
Chng trnh kim sot ngt ghi nhn trng thi ca thit b v nh thc tin trnh ca ngi
dng tip tc thc hin.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
21
Hnh 2.6: khi thao tc c a hon tt, b iu khin a s pht sinh mt ngt.
2.1.4 C ch nhp/xut v c ch DMA
* C ch nhp/xut:
- B x l pht sinh mt lnh I/O n cc thit b I/O, sau ch cho n khi thao tc I/O hon
tt ri mi tip tc x l, hoc:
- B x l pht sinh mt lnh I/O n cc thit b I/O, sau tip tc vic x l cho ti khi nhn
c mt ngt t thit b I/O bo l hon tt nhp/xut, b x l tm ngng vic x l hin ti
chuyn qua x l ngt, hoc:
- S dng c ch DMA
* C ch DMA (Direct Memory Access):
Xt qu trnh c a, CPU gi cho b iu khin a (disk controller) lnh c a v cc thng
s nh a ch trn a ca khi, a ch trong b nh RAM ni s ct khi c c, s byte cn
c, sau CPU tip tc x l cng vic khc. B iu khin s c khi trn a, tng bit cho ti
khi ton b khi c a vo buffer ca b iu khin (local buffer). Tip theo b iu khin
pht ra mt ngt bo cho CPU bit l thao tc c hon tt. CPU n ly d liu trong buffer
chuyn vo b nh chnh (RAM) bng cch to mt vng lp c ln lt tng byte. Thao tc ny
lm lng ph thi gian ca CPU.
ti u, b iu khin thng c cung cp thm kh nng truy xut b nh trc tip (DMA).
Ngha l sau khi b iu khin c ton b d liu t thit b vo buffer ca n, b iu khin
chuyn byte u tin vo b nh chnh ti a ch c m t bi a ch b nh DMA. Sau n
tng a ch DMA v gim s bytes phi chuyn. Qu trnh ny lp li cho ti khi s bytes phi
chuyn bng 0, v b iu khin to mt ngt. Nh vy b iu khin t chuyn khi vo trong b
nh chnh.
Hnh 2.7: C ch DMA
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
22
2.1.5 Cc thut ton lp lch di chuyn u c
truy xut cc khi trn a, trc tin phi di chuyn u c n track thch hp, thao tc ny
gi l seek v thi gian hon tt thao tc ny gi l seek time. Mt khi n ng track, cn
phi ch cho n khi khi cn thit n di u c, thi gian ch ny gi l latency time. Cui
cng l chuyn d liu t a vo b nh chnh, thi gian ny gi l transfer time. Tng thi gian
cho dch v a chnh l tng ca ba khong thi gian trn (seek time + latency time + transfer
time). Trong seek time v latency time l mt nhiu thi gian nht, do gim thiu thi
gian truy xut, h iu hnh cn a ra cc thut ton lp lch di u c sao cho ti u.
Hnh 2.8: m hnh a cng
2.1.5.1 Thut ton FCFS (first-come, first-served)
Thut ton s di u c theo th t ng vi th t cc khi cn c, thut ton d lp trnh
nhng cha tt. V d cn phi c cc khi theo th t nh sau: 98, 183, 37, 122, 14, 124, 65, v
67. Gi s hin ti u c ang v tr 53, thut ton s di u c ln lt i qua cc khi 53,
98, 183, 37, 122, 14, 124, 65, v 67
Hnh 2.9: Cc bc di chuyn u c theo thut ton FCFS
2.1.5.2 Thut ton SSTF (shortest-seek-time-first)
Thut ton s di chuyn u c ln lt n cc khi cn c theo v tr gn vi v tr hin hnh
ca u c nht. V d cn c cc khi nh sau: 98, 183, 37, 122, 14, 124, 65, v 67. Gi s
hin ti u c ang v tr 53, thut ton s di u c ln lt i qua cc khi 53, 65, 67, 37,
14, 98, 122, 124 v 183.
Hnh 2.10: Cc bc di chuyn u c theo thut ton SSTF
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
23
2.1.5.3 Thut ton SCAN
Thut ton s di chuyn u c v mt pha ca a v t di chuyn qua pha kia. V d cn
c cc khi nh sau: 98, 183, 37, 122, 14, 124, 65, v 67. Gi s hin ti u c ang v tr
53, u c ln lt i qua cc khi: 53, 37, 14, 65, 67, 98, 122, 124 v 183
Hnh 2.11: Cc bc di chuyn u c theo thut ton SCAN
2.1.5.4 Thut ton C-SCAN
Thut ton ny tng t nh thut ton SCAN, ch khc l khi n di chuyn n mt u no
ca a, n s lp tc tr v u bt u ca a. Ly li v d trn, khi th t truy xut cc
khi s l 53, 65, 67, 98, 122, 124, 183, 14, 37
Hnh 2.12: Cc bc di chuyn u c theo thut ton C-SCAN
Thut ton SCAN v C-SCAN thch hp cho nhng h thng phi truy xut d liu khi lng
ln. Thut ton lp lch ph thuc vo s khi v kiu khi cn truy xut, v d nu s khi cn
truy xut l lin tc th FCFS l thut ton tt.
2.1.6 H s an xen v Ram Disks
* H s an xen (Interleave)
B iu khin a phi thc hin hai chc nng l c/ghi d liu v chuyn d liu vo h thng.
ng b hai chc nng ny, cc sector c nh s sao cho cc sector c s hiu lin tip
nhau khng nm k bn nhau m c mt khong cch, khong cch ny c xc nh bi qu
trnh format a v gi l h s an xen.
Hnh 2.13: (a) interleave=0, (b) interleave=1, (c) interleave=2
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
24
V d gi s h thng c 17 sector/track, v interleave = 4 th cc sector c b tr theo th t
nh sau: 1, 14, 10, 6, 2, 15, 11, 7, 3, 16, 12, 8, 4, 17, 13, 9, 5
Cch c ln lt nh sau :
Ln 1: 1, 2, 3, 4, 5
Ln 2: 6, 7, 8, 9, 10
Ln 3: 11, 12, 13, 14, 15
Ln 4: 16, 17
Nh vy sau bn ln th t cc sector c c vn l t 1 n 17
* Ram disk:
H iu hnh c th dng mt phn ca b nh chnh lu tr cc khi a, phn b nh ny gi
l Ram Disk . Ram Disk cng c chia lm nhiu khi, mi khi c kch thc bng kch thc
ca khi trn a. Khi driver nhn c lnh c/ghi khi, s tm trong b nh Ram Disk v tr ca
khi, v thc hin vic c/ ghi trong thay v t a . RAM disk c u im l cho php truy
xut nhanh, khng phi ch quay hay tm kim, thch hp cho vic lu tr nhng chng trnh
hay d liu c truy xut thng xuyn.
2.2 QUN L H THNG TP TIN
2.2.1 a cng, tp tin, th mc
2.2.1.1 a cng (hard disk)
a cng c nh dng thnh cc vng trn ng tm gi l rnh (track), mi rnh c chia
thnh nhiu phn bng nhau gi l cung (sector). Mt khi (cluster) gm mt hoc nhiu cung v
d liu c c/ghi theo n v khi. Vic s dng n v khi tng hiu qu trong vic
c/ghi v gim chi ph qun l s a ch trn a. Ngoi ra khi a cng ln, c th chia thnh
nhiu phn vng (partition), mi phn vng gm mt s t tr (cyclinder) lin tip. Mt t tr l
tp hp cc rnh cng bn knh.
Hnh 2.14: m hnh t chc a
2.2.1.2 File (tp tin)
File l mt tp hp thng tin c t tn v lu tr trn a. File l n v lu tr thng tin nh
nht trn a ca h iu hnh. File c th lu tr chng trnh hay d liu, file c th l dy tun
t cc byte khng cu trc hoc c cu trc dng (kt thc bng k t enter), hoc cu trc mu tin
c chiu di c nh hay thay i. Cu trc file do h iu hnh hoc chng trnh qui nh. File
c th truy xut tun t (c cc byte theo th t t u file), hoc truy xut ngu nhin (c/ghi
ti mt v tr bt k trong file).
sector track
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
25
* Thuc tnh file (file attributes)
Thuc tnh ca file l cc thng tin lin quan n file, s thuc tnh ca file ty theo h iu hnh,
nhng thng th file c cc thuc tnh sau:
+ Tn file (file name)
Tn file dng phn bit file ny vi file khc, UNIX phn bit tn file ch thng vi tn file
ch hoa nhng WINDOWS th khng phn bit. Trong UNIX tn file c th c nhiu phn cch
(v d prog.c.Z), WINDOWS ch c mt phn cch. H iu hnh dng phn m rng nhn
dng kiu ca file v cc thao tc c th thc hin trn kiu file , v d phn m rng l *.exe,
*.com th h iu hnh hiu l file kiu nh phn c th thc thi nhng nu khng thc thi c
th l do cu trc file khng ng qui nh ca file *.exe, *.com.
+ Kiu file (file type)
C hai loi file l file vn bn v file nh phn. File vn bn cha cc dng vn bn cui dng c
k t xung dng (k t enter). File nh phn gm dy cc byte, c cu trc ty theo chng trnh
to ra file. V d file .com, .exe, .wav, .bmp,. h iu hnh ch thc thi c file .com, .exe nu
n c cu trc ng qui nh.
+ V tr file: Danh sch cc khi (cluster) trn a cp cho file.
+ Kch thc file: Kch thc hin thi, kch thc ti a ca file tnh bng bytes/words/blocks,
+ Ngy gi to file, ngi to file: Ngy, gi to file; ngy, gi cp nht file gn nht; ngy, gi
s dng file sau cng, ngi to file.
+ Loai file: file n, ch c, h thng, lu tr, file/th mc
+ Bo v file: Dng account (username, password), owner/creator hoc dng quyn cp cho
user, group trn file hay th mc, gm cc quyn sau: quyn c (Read), ghi (Write), xa
(Delete), thc thi (Execute), lit k (List), thm (Append)...
Thuc tnh ngha
Protection Ai c th truy xut file v bng cch no
Password Mt khu cn c truy xut file
Creator ID ca ngi to file
Owner Ngi s hu hin ti
Read-only flag 0: cho php c/ghi; 1: ch cho php c
Hidden flag 0: bnh thng; 1: khng xut hin khi lit k
System flag 0: file bnh thng, 1: file h thng
Archive flag 0: backup, 1: cn c backup.
ASCII/binary flag 0: file dng m ASCII, 1: file dng m nh phn
Random Access flag 0: ch cho php truy xut tun t; 1: cho php truy xut ngu
Temporary flag 0: bnh thng, 1: file b hy khi tin trnh kt thc
Lock flags 0 : khng kha, khc 0: kha
Record length S bytes trong mt mu tin
Key position offset ca kha trong tng mu tin
Key length S byte ca kha trong mu tin
Creation time Ngy gi to file
Time of last access Ngy gi truy xut file gn nht
Time of last change Ngy gi cp nht ni dung file gn nht
Current size S byte ca file
Maximum size S bytes ti a cho php ca file
Hnh 2.15: Mt s thuc tnh ca file/th mc
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
26
* Cc thao tc trn file
H iu hnh cn cung cp cc cc li gi h thng (system call) x l file nh l:
to/xa/m/ng/c/ghi/thm/di con tr file/ly thuc tnh/t thuc tnh/i tn file,
+ To file (create): Ghi mt mc cha thng tin file vo cu trc th mc v tm mt khi trng
cp cho file.
+ Xa file (delete): Tm tn file trong cu trc th mc, gii phng tt c khi a m file chim
gi, xo mc tng ng trong cu trc th mc.
+ M file (open): Khi ln u tin file c truy xut, thng tin v file c c t cu trc th
mc v lu vo bng open-files trong b nh. Nu file cha ng, th nhng ln truy xut sau s
khng phi tm thng tin v file trong cu trc th mc na m ly trong bng open-files. Thao
tc m file s tr v ch mc trong bng open-files
+ ng file (close): Ghi mc tng ng trong bng open-files vo cu trc th mc, v hy mc
ny trong bng open-files.
+ c file (read): Tm tn file trong cu trc th mc, bit c v tr lu tr file, c file vo b
nh, dng mt con tr c (read pointer) ghi nhn v tr cho ln c k tip.
+ Ghi file (write): Tm tn file trong cu trc th mc, ly c s hiu khi nh u tin cp pht
cho file, ghi d liu ca file vo v tr ny, dng mt con tr ghi (write pointer) ghi nhn v tr
cho ln ghi k tip.
+ Ghi thm vo cui (append)
+ Ly thuc tnh (get attribute)
+ t thuc tnh (set attribute)
+ i tn file (rename)
2.2.1.3 Cu trc th mc (Directory Structure)
* Khi nim
Cu trc th mc l cu trc dng qun l tt c cc file trn a. Cu trc th mc cng c
ghi trn a v gm nhiu mc (Directory Entry), mi mc lu thng tin ca mt file. Thng
thng thng tin file gm c thuc tnh file v danh sch cc s hiu khi a lu tr file. Khi mt
file c truy xut, h iu hnh tm tn file trong cu trc th mc, nu tm thy s ly thuc tnh
v cc s hiu khi lu tr file a vo mt bng trong b nh (bng open-files), cc ln sau khi
truy xut file hoc thay i thng tin file th khng cn truy xut a m truy xut bng open-files
trong b nh chnh v s nhanh hn nhiu. H iu hnh cng cn cung cp cc li gi h thng
thao tc trn th mc tng t nh i vi file. Cc thao tc trn th mc c th l: Create,
Delete, Open, Close, Read, Rename, Link, Unlink,
Hnh 2.16: m hnh cu trc th mc, mi mc trong cu trc th mc qun l mt file hoc th
mc con
F 1 F 2 F 3 F 4
F n
Dir Structure
Files
mc 0 mc 1 . mc n
Cu trc th mc
TenFile ThuocTinh ViTriLuuTru
Mt mc trong cu trc th mc
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
27
* Cu trc th mc
+ Th mc mt cp: (Single Level Directory)
Cu trc th mc s cha thuc tnh ca tt c cc file ca tt c ngi dng. Cu trc ny n
gin nhng gy ra kh khn do t tn file khng c trng nhau v ngi s dng khng th
phn nhm cho file cng nh tm kim chm khi s lng file nhiu.
Hnh 2.17: cu trc th mc mt cp
+ Th mc hai cp: (Two Level Directory)
S bt tin ch yu ca th mc mt cp l nhm ln v tn file gia nhng ngi dng. Gii
php l to th mc ring (user file directory:UFD) cho mi user. Mi UFD c cu trc ging
nhau nhng ch qun l file ca mt user, nh vy cc user c th c file cng tn nhng user ch
c truy xut cc file trong th mc ca user . Gii php ny tm kim file nhanh hn, nhng
vn khng c kh nng nhm file. Trong hnh 2.5, user1 mun truy xut file test th s dng
ng dn: user1/test.
Hnh 2.18: cu trc th mc hai cp
+ Th mc a cp: (Tree-Structured Directory)
C mt th mc gi l th mc gc (root directory) v trong c cc th mc con. Mi user c
th to nhng th mc con ring, trong mi th mc con cha file v c th cha th mc con
khc. Cu trc ny cho php user c th truy xut n file ca user khc thng qua quyn c
cp v cho php tm kim hiu qu hn, cng nh c kh nng phn nhm file.
Hnh 2.19: cu trc th mc a cp
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
28
H iu hnh c th chia a cng thnh nhiu phn vng (partition), mi phn vng gm nhiu
t tr (cyclinder) lin tip, hoc tp hp nhiu a cng thnh mt phn vng. Mi phn vng s
c cu trc th mc ring qun l cc tp tin trong phn vng .
Hnh 2.20: t chc phn vng a
* Bng th mc (Directory Table)
Bng th mc l mt dng ci t bng dy mt chiu ca cu trc th mc (Directory Structure).
Bng th mc c nhiu mc (directory entry), mi mc lu tr thng tin ca mt file/th mc,
thng tin file gm thuc tnh ca file v a ch trn a ca ton b file hoc s hiu ca khi u
tin cha file hoc l s I-node ca file. Mi a c mt bng th mc gi l bng th mc gc,
ci t phn u ca a v c th c nhiu bng th mc con.
V d:
+ Mi mc trong bng th mc ca h iu hnh MSDOS/WINDOWS (FAT) ch lu s hiu khi
u tin ca mi file/th mc. Khi bit s hiu cc khi cn li ca file/th mc, h iu
hnh s dng bng cp pht file (bng FAT).
Hnh 2.21: cu trc mt mc trong bng th mc ca MSDOS/WINDOWS (FAT)
+ Mi mc trong bng th mc ca h iu hnh CP/M cha tt c cc s hiu khi cha file/th
mc, khi khng cn dng bng cp pht file (bng FAT)
Hnh 2.22: cu trc mt mc trong bng th mc ca CP/M
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
29
+ Mi mc trong bng th mc ca h iu hnh UNIX lu s hiu I-node
Hnh 2.23: cu trc mt mc trong bng th mc ca UNIX
2.2.2 Ci t h thng qun l file
Vic ci t h thng qun l file ph thuc vo vic h iu hnh chn phng php cp pht
khi nh cho file l lin tc hay khng lin tc.
2.2.2.1 Cp pht khi nh lin tc
Khi cp pht khi nh lin tc, ci t h thng qun l file, h iu hnh ch cn dng bng
th mc, mi mc trong bng th mc ngoi nhng thuc tnh thng thng ca file, cn c thm
thng tin v s hiu khi bt u (start) v s khi cp cho file (length). Phng php ny d
ci t, d thao tc v ton b file c c t cc khi lin tip trn a khng cn nh v li,
nhng c khuyt im l file khng th pht trin v c th gy ra lng ph do s phn mnh trn
a.
Hnh 2.24: Bng th mc trong m hnh cp pht lin tc
2.2.2.2 Cp pht khi nh khng lin tc
Khi cp pht khi nh lin tc, ci t h thng qun l file, h iu hnh s dng bng th
mc v cn phi s dng thm mt trong cc cu trc sau: danh sch lin kt, bng ch mc, bng
cp pht file, bng I-Nodes.
2.2.2.2.1 Danh sch lin kt:
Mi mc trong bng th mc cha s hiu ca khi u tin (start) v s hiu ca khi kt thc
(end), mi khi trn a dnh mt s byte u hoc cui (thng l 4 bytes) lu s hiu khi k
tip ca file, phn cn li ca khi s lu d liu ca file. Phng php ny khng b lng ph do
phn mnh ngoi vi, nhng truy xut ngu nhin chm v rt kh bo v cc s hiu khi ca File.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
30
Hnh 2.25: m hnh cp pht khng lin tc, s dng danh sch lin kt
2.2.2.2.2 Bng ch mc (index table):
Mi file c mt bng ch mc chim mt hoc vi khi, bng ch mc cha tt c cc s hiu khi
ca mt file. Khi mt mc trong bng th mc s lu s hiu khi cha bng ch mc ca file.
Phng php ny d bo v cc bng ch mc, ngha l bo v c cc s hiu khi ca file
nhng tn nhiu khi nh lu cc bng ch mc.
V d a cng c dung lng 32 GB, kch thc 1 khi l 512 Bytes. Hi kch thc mt bng
ch mc l bao nhiu nu mun qun l file c kch thc ln nht l 256K?
32 GB=2
5
x 2
10
x 2
10
KB = 2
25
KB = 2
16
khi => c 2
16
a ch trn a => mi phn t bng ch
mc cn 2 byte. File kch thc 256KB = 256 x 1024 byte = 512 khi => bng ch mc cn c
512 phn t => mt bng ch mc chim hai khi!
Hnh 2.26: m hnh cp pht khng lin tc, s dng bng ch mc
2.2.2.2.3 Bng cp pht file (FAT: File Allocation Table)
Nu mi mc trong bng th mc ch cha s hiu ca khi u tin, th s hiu cc khi cn li
ca file s c lu trong mt bng gi l bng cp pht file (bng FAT). Phng php ny d
bo v cc s hiu khi cp cho file, truy xut file ngu nhin d dng hn, kch thc file d
m rng nhng bng FAT b gii hn bi kch thc b nh dnh cho n. y chnh l cch m
h iu hnh MSDOS, OS/2, Windows (FAT) s dng qun l File.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
31
V d: Gi s file test.txt c lu tr ln lt 3 khi trn a c s hiu l: 217, 618, 339. S
hiu khi u l 217 ghi trong mt mc ca bng th mc, cc s hiu khi tip theo l 618, 339
ghi trong bng cp pht file.
Hnh 2.27: m hnh cp pht khng lin tc, s dng bng FAT
V d: Gi s file A v file B c cp pht gm cc khi theo th t sau: file A: 4, 7, 2, 10, 12 ;
file B: 6, 3, 11, 14. Khi trong bng th mc s c mt mc lu tn file A v s hiu khi u
ca file A l 4. Tng t c mt mc lu tn file B v s hiu khi u ca file B l 6. Cc s
hiu khi tip theo ca file A v file B lu trong bng cp pht file (fat)
Bng th mc:
(A, 4) (B, 6)
Entry ca A Entry ca B
Bng FAT :
Hnh 2.28: m hnh cp pht khng lin tc, s dng bng FAT, c hai file
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
32
2.2.2.2.4 Bng I-nodes:
Mi file c qun l bng mt cu trc gi l I-node, mi I-node gm hai phn: phn th nht
lu tr thuc tnh file, phn th hai gm 13 phn t: 10 phn t u cha 10 s hiu khi u tin
ca file, phn t th 11 cha s hiu khi cha bng single, phn t th 12 cha s hiu khi
cha bng double, phn t th 13 cha s hiu khi cha bng triple. Trong mi phn t ca
bng triple cha s hiu khi cha bng double, mi phn t ca bng double cha s hiu khi
cha bng single v mi phn t ca bng single cha s hiu khi d liu tip theo cp cho file.
Ghi ch: H iu hnh Unix s dng cu trc ny v s phn t ca phn th hai, khng nht thit
l 13 m c th thay i ty phin bn ca UNIX
Hnh 2.29: cu trc mt I-node trong bng I-nodes
* Phng php t chc qun l a bng I-nodes:
+ MBR(Master Boot Record): l sector u tin cha thng tin v a.
+ Partion Table: bng phn vng cha cc thng tin v mi phn vng.
Mt phn vng c t chc thnh cc phn sau: boot block, super block, free space mgmt, i-
nodes, root dir, files and directories. Trong I-nodes l bng I-nodes gm nhiu mc, mi mc
gi l mt i-node, cha mt cu trc i-node ghi thng tin ca mt file. Mi mc ca bng th mc
gc (root dir) ghi tn file v s hiu i-nodes ca file. Phng php ny tng i linh ng v
hiu qu khi qan l nhng h thng file ln.
Hnh 2.30: m hnh cp pht khng lin tc, s dng bng I-nodes tng qut
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
33
V d h iu hnh mun c file /usr/ast/mbox, trc tin tm tn th mc usr trong bng th
mc gc (root dir), v nhn thy th mc usr c i-nodes l 6. Tip theo truy xut phn t i-node
th 6 trong bng i-nodes, ly c s hiu khi u ca usr l 132, khi ny s cha bng th
mc con (sub dir) ca usr. Tip theo tm tn th mc ast trong bng th mc con ca usr,
v tm c th mc ast c i-nodes l 26. Tip theo truy xut phn t i-node th 26 trong bng
i-nodes, ly c s hiu khi u ca ast l 406, khi ny s cha bng th mc con ca ast.
Tip theo tm tn file mbox trong bng th mc con ny, v tm c file mbox c i-nodes l
60. Truy xut phn t i-node th 60 trong bng i-nodes, ly c cc s hiu khi ca file
mbox.
Hnh 2.31: m hnh cp pht khng lin tc, s dng bng I-nodes chi tit
2.2.3. Qun l cc khi trng
C hai phng php m h iu hnh thng s dng qun l cc khi trng l s dng danh
sch lin kt hoc vector bit.
2.2.3.1 Danh sch lin kt
Mi nt trong danh sch lin kt (dslk) l mt khi cha mt bng gm cc s hiu khi trng,
phn t cui ca bng lu s hiu khi tip theo trong danh sch.
V d: Gi s khi u tin trong dslk l khi 2. Trong khi 2 lu cc s 75, 53, 70, 59 l cc s
hiu khi trng, cc khi 3 l khi cha bng cc s hiu khi trng tip theoH iu hnh ch
cn bit s hiu khi u tin ca danh sch lin kt.
V d: Mt a 20M, dng khi c kch thc 1 K. qun l a ny, nu a hon ton trng
th DSLK cn bao nhiu khi (s nt ti a ca dslk)?
Gii:
20M= 20x 2
10
khi ~ 2
15
khi => cn dng 16 bit=2 byte lu mt s hiu khi
=> 1 khi=1024 byte lu c 511 s hiu khi trng
=> qun l a c 20M
hon ton trng, dslk cn 20x 2
10
/ 511 ~ 40 khi !
0 1 2 3 4
75 53 70 59 3
Khi 2
0 1 2 3 4
35 47 79 39 4
Khi 3
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
34
Nhn xt: Tn kh nhiu khi nh cho dslk nu a hon ton trng, nhng s t tn khi nh cho
dslk nu a gn y.
Hnh 2.32: Qun l danh sch cc khi trng s dng danh sch lin kt.
V d: Gi s khi a 1KB v mt s hiu khi a l 32 bit th mt khi a c th ghi c 256
-1 s hiu khi a trng
Hnh 2.33: Qun l danh sch cc khi trng s dng danh sch lin kt v vector bit.
2.2.3.2 Dng vector bit (dy bt)
Bit th i = 1 l khi th i trng, bit th i = 0 l khi th i s dng. Vector bit c lu trn mt
hoc nhiu khi a, khi cn s c vo b nh x l nhanh. Vector bit t tn khi nh hn l
dslk nhng kch thc vector bit l c nh v h iu hnh cn ng b vector bit trong b nh
v vector bit trn a.
V d: xt li v d trn, nu dng vector bit, hy tnh kch thc vector bit.
HD: a 20M c 20 x 2
10
khi nn kch thc vector bit l 20 x 2
10
bit = 20 x 2
10
/8/ 2
10
KB ~ 3
khi.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
35
2.2.4. Qun l s an ton ca h thng tp tin
2.2.4.1 Qun l khi b hng
+ Dng phn mm: dng mt file cha cc danh sch cc khi hng.
+ Dng phn cng: dng mt sector trn a lu gi danh sch cc khi b hng.
Khi b kim sot a thc hin ln u tin, n c danh sch khi b hng vo b nh, t
khng cho truy cp nhng khi hng.
2.2.4.2 Sao lu file (Backup)
File trn a mm c sao lu bng cch chp li ton b qua mt a khc. D liu trn a
cng nh th c sao lu trn cc bng t. i vi a cng ln, vic sao lu c th tin hnh
nh sau: chia a cng lm hai phn mt phn cha d liu gc v mt phn cha bn sao. Mi
khi thc hin sao lu, phn d liu gc s c chp sang phn sao lu.
Hnh 2.34: sao lu d liu
2.2.5 Gii thiu mt s h thng tp tin
2.2.5.1 H thng tp tin ca MSDOS/Windows (FAT)
H iu hnh MSDOS hoc Windows (s dng h thng FAT) s qun l h thng tp tin thng
qua ba cu trc sau: Boot Sector, bng FAT, bng ROOT DIR.
+ Boot sector
sector u tin, track 0, side 0 ca a mm, i vi a cng th v tr ny l bng partition, ri
mi ti boot sector ca partition th nht, i vi cc partition khc, boot sector l sector u tin.
Boot sector cha bng tham s a BPB (Bios Parameter Block) v cha on m boot dng
np cc file h thng, boot sector hp l phi c gi tr AA55 offset 1FE. Trn my IBM PC sau
khi thc hin thao tc POST (Power On Self Test), ROM BIOS tm boot sector hp l, c boot
sector vo a ch 0X7C00, gn CS=0000h, IP=7C00h v cho thc thi lnh u tin trong boot
sector (lnh JMP). Boot sector c cu trc nh sau:
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
36
Offset(hex) Size(byte) Content Gii thch
00 3 JMP Lnh nhy n u on m boot
03 8 Version Phin bn h iu hnh
0B 2 SectSiz s byte /mt sector, thng l 512 (y l bt u ca BPB)
0D 1 ClustSize s sector / mt cluster (khc 0)
0E 2 ResSecs s sector dnh ring trc bng FAT, tnh lun boot sector (i
vi FAT12, FAT16 =1, FAT32=20h)
10 1 FatCnt s bng FAT (thng l 2)
11 2 RootSiz S mc trong bng ROOT DIR
13 2 TotSecs Tng s sector trn a hay trn mt partition (<=65535)
15 1 MediaDescriptor Byte nhn dng a (F8:a cng, F0:1.44 MB)
16 2 FatSize S sector /mt bng FAT (<=65535). FAT32=0
18 2 TrkSecs s sector / mt track
1A 2 HeadCnt s u c
1C 4 HidnSec s sector n ( gia bng partition v partion)
20 4 BigTotSecs Tng s sector trn a hay trn mt partition ( >65535)
24 4 BigFatSize S sector /mt bng FAT (>65535)
1D (kt thc BPB)
1E u on m boot
1FF cui on m boot
Hnh 2.35: Cu trc boot sector.
+ Bng FAT
Sau boot sector l bng FAT (File Allocation Table), thng c hai bng FAT an ton. Mi
mc ca FAT qun l mt khi (cluster) d liu ( khi d liu c nh s bt u t 2). Hai
mc u tin ca bng FAT cha thng tin m t loi a. Kch thc khi c lu trong boot
sector thng thng t 1 n 8 sector. C ba loi FAT l FAT 12 v FAT 16, FAT 32. FAT 12
(mi mc trong bng FAT12 c kch thc l 12 bit) c th qun l c 2
12
= 4096 khi, FAT 16
c th qun l 2
16
= 64 K khi, FAT 32 c th qun l 2
32
=4G khi trn mt partition. Cc gi tr
c th c trong mt entry ca bng FAT.
(0)000 Cluster cn trng
(0)002 - (F)FEF Cluster cha d liu ca File, gi tr ny l s hiu cluster k.
(F)FF0 - (F)FF6 Dnh ring, khng dng
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
37
(F)FF7 Cluster hng
(F)FF8 - (F)FFF Cluster cui cng ca chui (kt thc file)
Hnh 2.36: Cu trc mt mc (entry) trong bng fat.
+ Bng ROOT DIR (bng th mc gc)
Bng ROOT DIR nm ngay sau FAT, v mi mc ca bng DIR l 32 byte. Khi h thng m mt
File/ th mc, MS-DOS tm tn File/th mc trong bng ROOT DIR, ly s hiu khi u cp
cho file/th mc v tm cc s hiu khi tip theo trong bng FAT.
Boot sector Bng FAT1 Bng FAT2 Bng DIR DATA
Kch thc Thuc tnh
8 byte Tn File
3 byte Phn m rng
1 byte Thuc tnh : A D V S - H - R
10 byte Dnh ring s dng sau ny.
2 byte Gi : 5 bit cho gi, 6 bit cho pht, 5 bit cho giy (thieu 1, nn lu n v 2 giy)
2 byte Ngy : 7 bit cho nm (t 1980), 4 bit cho thng, 5 bit cho ngy.
2 byte S hiu khi u tin ca file
4 byte Kch thc File
Hnh 2.37: Cu trc mt mc trong bng ROOT DIR/ SUB DIR
Gi tr ca byte thuc tnh:
1 : File ch c (Read Only)
2 : File n (Hidden)
4 : File h thng (System)
8 : nhn a (Volume)
16 : th mc con (Directory)
32 : File cha c sao lu (Archive)
9
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
38
V d: Xt a 1.4MB, c format di h iu hnh MS-DOS/WINDOWS (FAT12) gm c
2880 sector (1.4MB=>1.4*1024*1024/512=2880 sector), v 1 khi (cluster) = 1 sector nn mi
mc ca bng FAT ch cn 12 bit. Sector u tin l boot sector, bao gm bng tham s vt l ca
a v chng trnh khi ng ca h iu hnh. 18 sector tip theo l FAT (FAT12), gm 2 bng,
mi bng 9 sector (c 3072 mc, nu 8 sector th khng qun l 2880 khi). Ba bytes u
tin ca mi bng FAT lu s hiu loi a (240, 255, 255). 14 sector k tip cha bng th mc
gc (bng ROOT DIR). Cc sector cn li dng lu d liu, cluster nh s t 2.
Cu trc mt mc trong bng ROOT DIR
a 1.44MB th mc gc c ti a 224 file hoc th mc con. Nu file c kch thc file =0 th
s hiu khi u = 0. K t u ca tn file c gi tr l 0 (trng), du chm (dnh ring cho DOS),
0xE5 (file b xa: khi xa file, DOS s in k t 0xE5 vo k t u ca file).
+ Cu trc bng FAT
- c/ghi FAT 12
V d: ghi vo entry 2 gi tr F2Ah v entry 3 gi tr BC5h. Do byte 0,1,2 lu s hiu a, nn
entry 2 s c ghi vo byte th 3,4 v entry 3 s c ghi vo byte th 4,5 . Cch ghi nh sau:
Byte 0 1 2 3 4 5
Gi tr (s hiu a ) 2A 5F BC
unsigned char fat[512*9]; //mng cha bng fat c t a
void WriteFat (unsigned new_fat, unsigned k) // ghi gi tr new_fat vo entry th k = 2,3,...,3071
{
unsigned i=k*3/2; //entry k s c ghi vo byte th i v i+1
if (k%2==0)// k chn
{ //t 8 bt cui ca new_fat vo byte th i
fat[i] = new_fat&0x0FF;
//t 4 bt cao ca new_fat vo 4 bt cui ca byte th i+1
fat[i+1] = (fat[i+1]&0xF0) | (new_fat>>8);
}
else //k l
S sector 1 9 9 14 Cn li
Lu tr Boot sector FAT12 FAT12 DIR DATA
Byte 0,1,2 3,4,5 4606,4607
Lu tr e0,e1 (s hiu a) e2,e3 e3070, e3071
Bng FAT12 = 9 sector = 4608 bytes = 3072 entry (mi entry 12 bit)
Byte 0-7 8-10 11 12-21 22-23 24-25 26-27 28-31
Lu
tr
Tn
File
Phn m
rng
ADVSHR Dnh
ring
Gi Ngy S hiu
khi u
Kch
thc File
Bng DIR= 14 sector = 7168 byte = 224 entry (mi entry 32 byte), 1 sector=16 entry
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
39
{ //t 8 bt cao vo vo byte th i+1
fat[i+1]=new_fat>>4;
//t 4 bt thp vo 4 bt cao ca byte th i
fat[i]=((new_fat&0xF)<<4)|(fat[i]&0x0F);
}
}
V d: gi s new_fat = 1AB, luu vao entry k=7 ->luu vao byte i=10 v i+1=11
9 10 11
AB CD EF (trc khi ghi)
AB BD 1A (sau khi ghi)
unsigned ReadFat (unsigned k) // c gi tr ca entry th k (k>=2)
{
unsigned i=k*3/2; //entry th k byte th i, i+1
unsigned val_fat=(fat[i+1]<<8) | fat[i] ; // hoc val_fat=fat[i+1]*256+fat[i];
if (val_fat%2==0) val_fat=val_fat & 0x0FFF;
else val_fat=val_fat>>4;
return val_fat;
}
- c/ghi gi, pht, giy
time (2 byte)= 5 bit gi, 6 bit pht, 5 bit giy (thieu 1, nn lu n v 2 giy)
- Ghi : time=(h<<11)|(m<<5)|(s>>1)
- c: h=(time>>11); m=(time>>5)&0x3F; s=(time&0x1F)<<1;
- c/Ghi ngy, thng, nm
date (2 byte)= 7 bit cho nm (t 1980), 4 bit cho thng, 5 bit cho ngy.
- Ghi : y-=1980 ; date=(y<<9)|(m<<5)|d ;
- c : y=(date>>9) + 1980 ; m=(date>>5)&0xF ; d=date&0x1F ;
2.2.5.2 H thng tp tin ca Windows NT
S dng h thng NTFS, kch thc File ti a trong NTFS l 232 cluster. Cu trc volume ca
NTFS nh sau: partition boot sector, Master File Table, cc file h thng, vng d liu.
+ Partition boot sector: l sector khi ng ca partition (<= 16 sector) gm cc thng tin v cu
trc ca volume, cu trc ca h thng File v m ngun khi ng.
+ Master File Table (MFT): lu cc thng tin v tt c file v th mc trn volume NTFS ny
cng nh danh sch cc khi trng. MFT c t chc thnh nhiu dng, mi dng lu nhng
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
40
thuc tnh cho mt file hoc mt th mc trn volume. Nu kch thc file nh th ton b ni
dung ca file c lu trong dng ny.
+ Cc file h thng: c kch thc khong 1Mb bao gm:
. MFT2: bn sao ca MFT
. Log file: thng tin dng cho vic phc hi.
. Cluster bitmap: biu din thng tin lu tr ca cc cluster
. Bng nh ngha thuc tnh: nh ngha cc kiu thuc tnh h tr cho volume.
Kiu thuc tnh M t
Thng tin chun Bao gm cc thuc tnh truy xut (ch c, c/ghi,...), nhn thi gian, ch s lin kt
Danh sch thuc tnh s dng khi tt c thuc tnh vt qu 1 dng ca MFT
Tn File
M t an ton thng tin v ngi s hu v truy cp
D liu
Ch mc gc dng cho th mc
Ch mc nh v dng cho th mc
thng tin volume nh tn version v tn volume
Bitmap hin trng cc dng trong MFT
Hnh 2.38: Cc kiu thuc tnh ca File v th mc trong Windows NTFS
2.5.3. H thng file ca UNIX
H thng File ca UNIX thng thng c ci t trn a gm cc khi theo th t sau: khi
boot, khi c bit, I-nodes, cc khi d liu.
+ Khi boot: cha m khi ng ca h thng.
+ Khi super block : cha thng tin v ton b h thng file, bao gm:
- Kch thc ca ton b h thng file.
- a ch ca khi d liu u tin.
- S lng khi trng v danh sch khi trng.
- S lng I-node trng v danh sch I-node trng.
- Ngy super block c cp nht sau cng.
- Tn ca h thng file.
Nu khi ny b hng, h thng file s khng truy cp c. C rt nhiu trnh ng dng s dng
thng tin lu tr trong super block, v vy mt bn sao super block c t trong RAM tng
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
41
tc truy xut a. Vic cp nht super block s c thc hin ngay trong RAM v sau mi
ghi xung a. Cc I-node c nh s t 1, mi I-node c di l 64 byte v m t cho mt
file duy nht, cha thuc tnh v a ch cc khi lu tr trn a ca file. Tt c file v th mc
c lu tr cc khi d liu.
TM TT
+ Thit b nhp/xut c th phn thnh cc loi nh l thit b khi, thit b tun t, thit b khc.
c tnh ca thit b nhp/xut l tc truyn d liu, cng dng, n v truyn d liu, cch
biu din d liu, tnh trng li
+ Mi thit b nhp/xut cn c b iu khin thit b, thit b v b iu khin phi tun theo
cng chun giao tip. CPU khng th truy xut trc tip thit b nhp/xut m phi thng qua b
iu khin thit b, mi b iu khin c mt s thanh ghi lin lc vi CPU
+ Cc chng trnh thc hin nhp/xut gm c chng trnh nhp/xut ca ngi dng, chng
trnh nhp/xut c lp thit b, chng trnh iu khin thit b.
+ H thng qun l nhp/xut c t chc thnh 5 lp: chng trnh nhp/xut ca ngi dng,
chng trnh nhp/xut c lp thit b, chng trnh iu khin thit b, chng trnh kim sot
ngt, phn cng. Mi lp c chc nng ring v c th giao tip vi lp khc.
+ C ch nhp/xut: b x l pht sinh mt lnh I/O n cc thit b I/O, sau ch cho n khi
thao tc I/O hon tt ri mi tip tc x l, hoc b x l pht sinh mt lnh I/O n cc thit b
I/O, sau tip tc vic x l cho ti khi nhn c mt ngt t thit b I/O bo l hon tt
nhp/xut, b x l tm ngng vic x l hin ti chuyn qua x l ngt, hoc s dng c ch
DMA
+ C ch DMA: b iu khin thng c cung cp thm kh nng truy xut b nh trc tip
(DMA). Ngha l sau khi b iu khin c ton b d liu t thit b vo buffer ca n, b
iu khin t chuyn d liu vo trong b nh chnh.
+ C ch truy xut a: u c c di chuyn n track thch hp, v ch cho n khi khi cn
c n di u c, c d liu t a vo b nh chnh, h iu hnh cn a ra cc thut ton
lp lch di u c sao cho ti u. Cc thut ton lp lch di chuyn u c: FCFS, SSTF,
SCAN, C-SCAN
+ H s an xen: Trn a cc sector s hiu lin tip nhau khng nm k bn nhau m c mt
khong cch nht nh, khong cch ny c xc nh bi qu trnh format a v gi l h s
an xen. Mc ch ca h s an xen l ng b hai thao tc c/ghi d liu v chuyn d liu
vo h thng
+ RAM disk l mt phn ca b nh chnh lu tr cc khi a. RAM disk truy xut rt nhanh,
thch hp cho vic lu tr nhng chng trnh hay d liu c truy xut thng xuyn.
+ a cng c t chc thnh cc vng trn ng tm gi l rnh (track), mi rnh c chia
thnh nhiu phn bng nhau gi l cung (sector). Mt khi (cluster) gm 1 hoc nhiu cung v d
liu c c/ghi theo n v khi.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
42
+ File l mt tp hp cc thng tin c t tn v lu tr trn a. File c th lu tr chng
trnh hay d liu, file c th l dy tun t cc byte khng cu trc hoc c cu trc dng, hoc
cu trc mu tin c chiu di c nh hay thay i. File c th truy xut tun t, hoc truy xut
ngu nhin.
+ Thuc tnh ca file l thng tin ca file, thng c cc thuc tnh sau: tn file, kiu file, v tr
file, kch thc file, ngy gi to file, ngi to file, loai file, bo v file.
+ Cc thao tc trn file gm c to/xa/m/ng/c/ghi/thm/di con tr file/ly thuc tnh/t
thuc tnh/i tn file
+ Cu trc th mc l cu trc dng qun l tt c cc file trn a. Cu trc th mc cng
c ghi trn a v gm nhiu mc, mi mc lu thng tin ca mt file.
+ Cu trc th mc c cc loi sau: th mc mt cp, th mc hai cp, th mc a cp.
+ H iu hnh c th chia a cng thnh nhiu phn vng hoc tp hp nhiu a cng thnh
mt phn vng. Mi phn vng s c cu trc th mc ring qun l cc tp tin trong phn
vng .
+ Cc thao tc trn th mc tng t nh i vi file v gm c: Create, Delete, Open, Close,
Read, Rename, Link, Unlink,
+ Bng th mc l mt dng ci t ca cu trc th mc. Bng th mc c nhiu mc, mi mc
lu tr thng tin ca mt file, thng tin file gm thuc tnh ca file v a ch trn a ca ton b
file hoc s hiu ca khi u tin cha file hoc l s I-node ca file. Mi a c mt bng th
mc gi l bng th mc gc, ci t phn u ca a v c th c nhiu bng th mc con.
+ C th ci t h thng qun l file theo phng php cp pht khi nh cho file l lin tc hay
khng lin tc.
+ ci t h thng qun l file theo phng php cp pht khi nh cho file l lin tc, ch cn
dng bng th mc, mi mc trong bng th mc ngoi nhng thuc tnh thng thng ca file,
cn c thm thng tin v s hiu khi bt u (start) v s khi cp cho file (length).
+ ci t h thng qun l file theo phng php cp pht khi nh cho file l khng lin tc,
s dng bng th mc v s dng thm mt trong cc cu trc sau: danh sch lin kt/bng ch
mc/bng cp pht file/cu trc I-Nodes. - Cu trc danh sch lin kt: mi mc trong bng th
mc cha s hiu ca khi u tin v s hiu ca khi kt thc , mi khi trn a dnh mt s
byte u lu s hiu khi k tip ca file, phn cn li ca khi s lu d liu ca file. - Bng
ch mc: mi file c mt bng ch mc chim mt hoc vi khi, bng ch mc cha tt c cc s
hiu khi ca mt file. Mt mc trong bng th mc s lu s hiu khi cha bng ch mc ca
file. - Bng cp pht file: nu mi mc trong bng th mc ch cha s hiu ca khi u tin, th
s hiu cc khi cn li ca file s c lu trong mt bng gi l bng cp pht file. - Cu trc I-
node: mi file c qun l bng mt cu trc gi l cu trc I-node, mi I-node gm hai phn:
phn th nht lu tr thuc tnh file, phn th hai gm 13 phn t: 10 phn t u cha 10 s hiu
khi u tin ca file, phn t th 11 cha s hiu khi cha bng single, phn t th 12 cha s
hiu khi cha bng double, phn t th 13 cha s hiu khi cha bng triple. Trong mi
phn t ca bng triple cha s hiu khi cha bng double, mi phn t ca bng double cha s
hiu khi cha bng single v mi phn t ca bng single cha s hiu khi d liu tip theo cp
cho file.
+ qun l cc khi trng phng php thng dng l danh sch lin kt hoc vector bit.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
43
Danh sch lin kt: mi nt l mt khi cha mt bng gm cc s hiu khi trng, phn t cui
ca bng lu s hiu khi tip theo trong danh sch. Vector bit: Bit th i = 1 l khi th i trng, =
0 l s dng. Vector bit c lu trn mt hoc nhiu khi a, khi cn s c vo b nh
x l nhanh.
+ Qun l khi b hng c th dng phn mm: dng mt file cha cc danh sch cc khi hng.
Hoc dng phn cng: dng mt sector trn a lu gi danh sch cc khi b hng.
CU HI V BI TP
1. Nu cc loi thit b nhp/xut
2. Trnh by c tnh ca thit b nhp/xut
3. B iu khin thit b nhp/xut (I/O controller) l g?
4. Nu cc chng trnh thc hin nhp/xut
5. Nu cch t chc h thng nhp/xut
6. Nu c ch nhp/xut
6. Trnh by c ch DMA
7. Nu c ch truy xut a
8. Trnh by cc thut ton lp lch di chuyn u c
9. Trnh by h s an xen
10. Nu khi nim Ram Disks
11. Ti sao d liu khng lu tr ti v tr bt k trn a m li lu tr trn cc rnh (track)?
12. Nu l do ti sao cn phn chia a cng thnh nhng phn vng (partiton). Thng tin v cc
phn vng c qun l, lu tr nh th no? Trn h iu hnh MS-DOS hoc windows, mi
phn vng c cn mt bng th mc ring khng? ti sao?
13. Mc ch ca bng open-files, bng open-files lu tr nhng thng tin no?
14. Mc ch ca bng th mc? phn bit bng th mc gc v bng th mc con.
15. Ti sao h iu hnh CP/M khng cn bng cp pht file (FAT)?
16. Nu u/khuyt im ca vic cp pht cc khi nh lin tc cho file.
17. Nu u/khuyt im ca vic cp pht cc khi nh khng lin tc cho file.
18. Nu u/khuyt im h thng qun l file dng bng th mc v bng cp pht file.
19. Nu u/khuyt im h thng qun l file dng cu trc I-nodes.
20. Ti sao trong h iu hnh MS-DOS v h iu hnh WINDOWS s dng FAT, s file hoc
th mc con trong th mc gc b hn ch, trong khi s file hoc th mc trong th mccon li
khng b hn ch?
21. Cho dy byte ca FAT12 nh sau (bt u t u):
240 255 255 0 64 0 9 112 255 255 143 0 255 255 255
Cho bit nhng phn t no ca FAT c gi tr c bit, ngha ca phn t .
Nu sa li phn t 5 l FF0 th dy byte ca FAT12 ny c ni dung nh th no ?
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
44
22. Bit gi tr(di dng thp phn) trong mt buffer (mi phn t 1 byte) lu ni dung ca
FAT12 nh sau (bt u t phn t 0):
Cho bit gi tr ca tng phn t trong FAT (di dng s thp phn)
23. Chp 1 File kch thc l 3220 bytes ln mt a 1.44Mb cn trng nhng b hng sector
logic 33. Cho bit gi tr tng byte ca Fat (thp phn) t byte 0 n byte 14 .
24. Gi s mt a mm c 2 side, mi side c 128 track, mi track c 18 sector. Th mc gc ca
a c ti a l 251 File (hoc th mc). Mt cluster = 2 sector. a s dng Fat 12. Hi mun
truy xut cluster 10 th phi c nhng sector no ?
25. Hin trng ca FAT12 v RDET (mi entry ch gm tn File v cluster u tin)ca mt a
nh sau :
240 255 255 247 79 0 6 0 0 255 159 0 10 240 255 255 127 255
VD TXT 3 LT DOC 7 THO DAT 8
Cho bit hin trng ca FAT12 v RDET sau khi xo File vd.txt v chp vo File bt.cpp c kch
thc 1025 bytes ( gi s 1 cluster = 1 sector)
26. Mt File c lu trn a ti nhng khi theo th t sau :
20, 32, 34, 39, 52, 63, 75, 29, 37, 38, 47, 49, 56, 68, 79, 81, 92, 106, 157, 159, 160, 162, 163, 267,
269, 271, 277, 278, 279, 380, 381, 482, 489, 490, 499.
V I_node ca File ny, gi s mi khi ch cha c 3 phn t.
27. Vit cc lnh ni tr v ngoi tr ca MSDOS bng ngn ng C v ch c s dng hai hm
c/ghi sector sau:
int absread(int drive, int nsects, long lsect, void *buffer);
int abswrite(int drive, int nsects, long lsect, void *buffer);
TI LIU THAM KHO
[1]. Gary J. Nutt, University of Colorado. Centralized And Distributed Operating Systems.
Second Edition, 2000.
[2]. Robert Switzer. Operating Systems, A Practical Approach. Prentice-Hall International, Inc.
1993.
240 255 255 255 79 0 5 240 255 247 255 255
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
45
[3]. Andrew S. Tanenbaum. Modern Operating Systems. Prentice-Hall International, Inc. Second
Edition, 2001.
[4]. Abraham Silberschatz & Peter Baer Galvin. Operating System concepts. John Wiley & Sons,
Inc. Fifth Edition, 1999.
[5]. H. M. Deitel. Operating Systems. Addison-Wesley Inc. Second Edition, 1999.
[6] Cm nang lp trnh h thng cho my vi tnh IBM-PC tp 1 v 2, tc gi Michael Tischer.
[7]. Trn Hnh Nhi & L Khc Nhin n & Hong Kim. Gio trnh h iu hnh (tp 1 & 2).
HKHTN 2000.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
46
CHNG 3
QUN L TIN TRNH
Chng QUN L TIN TRNH" s gii thiu v gii thch cc vn sau:
3.1 Cc khi nim v tin trnh
3.2 iu phi cc tin trnh
3.3 Lin lc gia cc tin trnh
3.4 ng b cc tin trnh
3.5 Tnh trng tc nghn (deadlock)
3.1. CC KHI NIM V TIN TRNH
3.1.1 Tin trnh (Process)
Tin trnh l mt chng trnh ang x l, mi tin trnh c mt khng gian a ch, mt con tr
lnh, mt tp cc thanh ghi v stack ring. Tin trnh c th cn n mt s ti nguyn nh CPU,
b nh chnh, cc tp tin v thit b nhp/xut. H iu hnh s dng b iu phi (scheduler)
quyt nh thi im cn dng hot ng ca tin trnh ang x l v la chn tin trnh tip theo
cn thc hin. Trong h thng c nhng tin trnh ca h iu hnh v tin trnh ca ngi dng.
* Mc ch cho nhiu tin trnh hot ng ng thi:
a/ Tng hiu sut s dng CPU (tng mc a chng):
Phn ln cc tin trnh khi thi hnh u tri qua nhiu chu k x l (s dng CPU) v chu k
nhp xut (s dng cc thit b nhp xut) xen k nh sau :
Nu ch c 1 tin trnh duy nht trong h thng, th vo cc chu k IO ca tin trnh, CPU s hon
ton nhn ri. tng tng cng s lng tin trnh trong h thng l tn dng CPU: nu tin
trnh 1 x l IO, th h iu hnh c th s dng CPU thc hin tin trnh 2...
Tin trnh 1:
CPU IO CPU IO CPU
Tin trnh 2:
CPU IO CPU IO
b/ Tng mc a nhim
Cho mi tin trnh thc thi lun phin trong mt thi gian rt ngn, to cm gic l h thng c
nhiu tin trnh thc thi ng thi.
CPU IO CPU IO CPU
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
47
Hnh 3.1: a) A,B,C,D thc thi tun t ch cn s dng mt con tr lnh. b) A,B,C,D thc thi ng
thi bng cch chia x CPU v s dng bn con tr lnh.
c/ Tng tc x l:
Mt s bi ton c th x l song song nu c xy dng thnh nhiu n th hot ng ng
thi th s tit kim c thi gian x l.
V d xt bi ton tnh gi tr biu thc kq = a*b + c*d . Nu tin hnh tnh ng thi (a*b) v
(c*d) th thi gian x l s ngn hn l thc hin tun t.
3.1.2 Tiu trnh (thread)
3.1.2.1 Khi nim tiu trnh
Mt tin trnh c th to nhiu tiu trnh, mi tiu trnh thc hin mt chc nng no v thc
thi ng thi cng bng cch chia s CPU. Cc tiu trnh trong cng mt tin trnh dng chung
khng gian a ch tin trnh nhng c con tr lnh, tp cc thanh ghi v stack ring. Mt tiu
trnh cng c th to lp cc tin trnh con, v nhn cc trng thi khc nhau nh mt tin trnh.
3.1.2.2 Lin lc gia cc tiu trnh
Cc tin trnh ch c th lin lc vi nhau thng qua cc c ch do h iu hnh cung cp. Cc tiu
trnh lin lc vi nhau d dng thng qua cc bin ton cc ca tin trnh. Cc tiu trnh c th do
h iu hnh qun l hoc h iu hnh v tin trnh cng phi hp qun l.
Hnh 3.2: a) ba tin trnh thc thi ng thi, mi tin trnh ch c mt tiu trnh. b) mt tin trnh
c ba tiu trnh, vic hot ng ng thi ca cc tiu trnh l do tin trnh qun l.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
48
Hnh 3.3: mt chng trnh x l vn bn c ba thread: mt thread nhn cc k t nhp t bn
phm, mt thread hin vn bn, mt thread ghi vn bn vo a.
Hnh 3.4: web server c hai thread: worker thread v dispatcher thread, vic hot ng ng thi
ca cc tiu trnh l do tin trnh qun l.
(a) on m cho dispatcher thread (b) on m cho worker thread
Hnh 3.5: mt process c ba thread, mi thread s c stack ring.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
49
Trong bng di y, tt c cc thread trong cng process dng chung cc mc ct 1, nhng
mi thread s c ring cc mc ct 2
Trong cng tin trnh Trong mi tiu trnh
Khng gian a ch B m chng trnh
Cc bin ton cc Cc thanh ghi
Cc tp tin m Ngn xp
Cc tin trnh con Trng thi
Cc cnh bo
Cc tn hiu v cc b x l tn hiu
Thng tin ti khon
3.1.2.3 Ci t tiu trnh (Threads)
a/ Ci t trong Kernel-space : bng qun l thread lu tr phn kernel v vic iu phi cc
thread l do h iu hnh chu trch nhim.
Hnh 3.6: h iu hnh chu trch nhim iu phi cc tiu trnh
b/ Ci t trong User-space: bng qun l thread lu tr phn user-space v vic iu phi cc
thread l do tin trnh chu trch nhim.
Hnh 3.7: tin trnh chu trch nhim iu phi cc tiu trnh thuc tin trnh
c/ Ci t trong Kernel-space v User-space: Mt s thread mc User c ci t bng mt
thread mc kernel.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
50
Hnh 3.8: mt thread ca h iu hnh qun l mt s thread ca tin trnh.
V d: gi s quantum ca process=50 msec, quantum ca thread=5 msec v gi s tin trnh A
c ba thread, tin trnh B c 4 thread.
- Nu vic iu phi thread c thc hin mc user-space th th t iu phi c th l A1, A2,
A3, A1, A2, A3 nhng khng th l A1, B1, A2, B2, A3, B3; v khi tin trnh A c cho thc thi
vi quantum=50 v mi thread c thc thi vi quantum=5 th khng th A1 n B1 c do
thread ca tin trnh no tin trnh qun l v tin trnh A cha ht quantum nn thread ca tin
trnh B khng th thc hin.
Hnh 3.9: iu phi thread mc user, mt th t iu phi c th v khng th
- Nu vic iu phi thread c thc hin mc kernel-space th th t iu phi A1 n B1 l c
th v cc thread do h iu hnh qun l
Hnh 3.10: iu phi thread mc kernel, mt th t iu phi c th v khng th.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
51
3.1.3 Cc trng thi ca tin trnh
Vic chuyn trng thi ca tin trnh l do b iu phi (scheduler) thc hin v ti mt thi im,
tin trnh c th nhn mt trong cc trng thi sau y :
a/ New: tin trnh mi c to ang trong b nh tm trn a cng.
b/ Ready: tin trnh trong b nh v ch c cp pht CPU.
c/ Running: tin trnh trong b nh ang thc thi.
d/ Blocked (wait): tin trnh trong b nh ch c cp pht ti nguyn, hoc ch thao tc
nhp/xut hon tt hoc ch mt s kin no .
e/ End: tin trnh trong b nh hon tt x l.
3.1.3.1 S chuyn trng thi tin trnh
Hnh 3.11: s chuyn trng thi gia cc tin trnh.
Ti mt thi im, ch c mt tin trnh c th nhn trng thi running trn mt b x l no .
Trong khi , c th c nhiu tin trnh trng thi blocked hay ready. Cc cung chuyn tip
trong s trng thi biu din su s chuyn trng thi c th xy ra trong cc iu kin sau :
- Cung 1: Tin trnh mi to, nu b nh cn trng, s c a vo b nh v sn sng nhn
CPU, khi tin trnh t trng thi New c chuyn sang trng thi Ready.
- Cung 2: B iu phi cp pht cho tin trnh mt khong thi gian s dng CPU v cho tin
trnh thc hin, khi tin trnh t trng thi Ready c chuyn sang trng thi Running.
- Cung 3: Khi tin trnh kt thc vic thc hin, khi tin trnh t trng thi Running c
chuyn sang trng thi End.
- Cung 4: Khi tin trnh yu cu mt ti nguyn nhng cha c p ng v ti nguyn cha sn
sng hoc tin trnh ch thao tc nhp/xut hon tt hoc tin trnh ch mt s kin no , khi
tin trnh c chuyn t trng thi Running sang trng thi Blocked.
- Cung 5: Khi tin trnh tm dng v ht thi gian s dng CPU, b iu phi s chn mt tin
trnh khc cho x l, khi tin trnh c chuyn t trng thi Running sang trng thi
Ready.
- Cung 6: Khi ti nguyn m tin trnh yu cu tr nn sn sng cp pht ; hay s kin hoc
thao tc nhp/xut m tin trnh ang i hon tt, khi b tin trnh c chuyn t trng
thi Blocked sang trng thi Ready.
New End
Ready Running
Blocked
1 5
3
4 6
2
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
52
3.1.3.2 Cc ch x l ca tin trnh
+ Tp lnh ca CPU c phn chia thnh tp lnh c quyn (cc lnh nu s dng khng chnh
xc, c th nh hng xu n h thng) v tp lnh khng c quyn (khng nh hng ti h
thng). Phn cng ch cho php cc lnh c quyn c thc hin trong ch c quyn.
+ Thng thng ch c h iu hnh hot ng trong ch c quyn, cc tin trnh ca ngi
dng s hot ng trong ch khng c quyn.
3.1.4 Khi qun l tin trnh (Process Control Block: PCB)
H iu hnh qun l cc tin trnh thng qua bng tin trnh (process table), mi mc trong bng
gi l PCB (khi qun l tin trnh), PCB lu thng tin v mt tin trnh gm c cc thng tin sau:
a/ nh danh tin trnh: m s tin trnh, gip phn bit tin trnh ny vi tin trnh khc
b/ Trng thi tin trnh: xc nh hot ng hin hnh ca tin trnh.
c/ Ng cnh tin trnh: m t cc ti nguyn tin trnh ang s dng, dng phc v cho hot
ng hin ti, hoc lm c s phc hi hot ng cho tin trnh. Ng cnh tin trnh bao gm
cc thng tin sau:
- Trng thi CPU: bao gm ni dung cc thanh ghi, quan trng nht l con tr lnh IP lu tr a
ch lnh k tip m tin trnh s thc hin. Cc thng tin ny cn c lu tr khi xy ra mt ngt,
nhm c th cho php phc hi hot ng ca tin trnh ng nh trc khi b ngt.
- S hiu b x l: xc nh s hiu CPU m tin trnh ang s dng.
- B nh chnh: danh sch cc khi nh c cp cho tin trnh.
- Ti nguyn s dng: danh sch cc ti nguyn h thng m tin trnh ang s dng.
- Ti nguyn to lp: danh sch cc ti nguyn c tin trnh to lp.
d/ Thng tin giao tip: phn nh cc thng tin v quan h ca tin trnh vi cc tin trnh khc
trong h thng gm c cc thng tin sau:
- Tin trnh cha: tin trnh to lp tin trnh ny.
- Tin trnh con: cc tin trnh do tin trnh ny to lp.
- u tin : gip b iu phi c thng tin la chn tin trnh c cp CPU.
e/ Thng tin thng k: y l nhng thng tin thng k v hot ng ca tin trnh, nh thi gian
s dng CPU, thi gian ch. Cc thng tin ny c th c ch cho cng vic nh gi tnh hnh
h thng v d on cc tnh hung tng lai.
Hnh 3.12: Cu trc ca khi qun l tin trnh (PCB)
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
53
C th lit k thng tin trong PCB theo chc nng qun l nh sau:
Qun l tin trnh
Cc thanh ghi
B m chng trnh
Trng thi chng trnh
Con tr Stack
Tnh trng ca tin trnh
u tin
Cc tham s iu phi
ID ca tin trnh
Tin trnh cha
Nhm tin trnh
Cc tn hiu
Thi im bt u tin trnh
Thi gian CPU s dng
Thi gian CPU ca tin trnh con
Thi gian ln cnh bo k tip
Qun l b nh
Con tr ti on vn bn
Con tr ti on d liu
Con tr ti on stack
Qun l tp tin
Th mc gc
Th mc lm vic
Cc m t tp tin
ID ngi dng
ID nhm
Hnh 3.13: thng tin trong khi PCB c lit k theo chc nng qun l
3.1.5 Cc thao tc trn tin trnh
a/ To lp tin trnh (create)
Trong qu trnh x l, mt tin trnh c th to lp nhiu tin trnh mi bng cch s dng mt li
gi h thng tng ng. Tin trnh gi li gi h thng to tin trnh mi s c gi l tin
trnh cha, tin trnh c to gi l tin trnh con. Mi tin trnh con n lt n li c th to cc
tin trnh miqu trnh ny tip tc s to ra mt cy tin trnh (trong Windows khng c khi
nim cy tin trnh, mi tin trnh l ngang cp). Khi mt tin trnh to lp mt tin trnh con, tin
trnh con c th s c h iu hnh trc tip cp pht ti nguyn hoc c tin trnh cha cho
tha hng mt s ti nguyn ban u. Khi tin trnh cha to tin trnh con, tin trnh cha c th
x l theo mt trong hai kh nng sau: tin trnh cha tip tc x l ng hnh vi tin trnh con,
hoc tin trnh cha ch n khi mt tin trnh con no , hoc tt c cc tin trnh con kt thc x
l. V d: tin trnh A to hai tin trnh con B v C, B to ba tin trnh con D, E, F.
Cc h iu hnh khc nhau c th chn la cc ci t khc nhau thc hin thao tc to lp
mt tin trnh.
+ Cc cng vic cn thc hin khi to lp tin trnh:
- nh danh cho tin trnh mi pht sinh
- a tin trnh vo danh sch qun l ca h thng
- Xc nh u tin cho tin trnh
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
54
- Cp pht cc ti nguyn ban u cho tin trnh
- To PCB lu tr thng tin tin trnh
+ Cc thi im tin trnh c to ra :
Tin trnh c to ra vo mt trong cc thi im sau:
- Thi im khi to h thng (System initialization)
- Thi im thc thi li gi to tin trnh
- Thi im ngi s dng yu cu to tin trnh mi
- Thi im khi u mt cng vic theo l (batch job)
b/ Kt thc tin trnh (destroy)
Mt tin trnh kt thc x l khi n hon tt lnh cui cng v s dng mt li gi h thng
yu cu h iu hnh hy b n. Mt tin trnh c th yu cu h iu hnh kt thc x l ca mt
tin trnh khc.
+ Khi mt tin trnh kt thc h iu hnh cn thc hin cc cng vic sau:
- Thu hi cc ti nguyn cp pht cho tin trnh
- Hy tin trnh khi tt c cc danh sch qun l ca h thng
- Hy b PCB ca tin trnh
Hu ht cc h iu hnh khng cho php cc tin trnh con tip tc tn ti nu tin trnh cha
kt thc. Trong nhng h thng nh th, h iu hnh s t ng pht sinh mt lot cc thao tc
kt thc tin trnh con. Tin trnh c th t kt thc bnh thng (Normal exit ) do thc thi
xong hoc c li v t kt thc (Error exit) hoc c li nng v b h iu hnh kt thc (Fatal
exit) hoc b kt thc bi tin trnh khc (Killed by another process ).
c/ Tm dng tin trnh (suspend)
d/ Ti kch hot tin trnh (resume)
e/ Thay i u tin tin trnh (change priority)
3.1.6 Khi qun l ti nguyn ( Resource Control Block: RCB)
Mi ti nguyn c h iu hnh qun l bng mt cu trc gi l khi qun l ti nguyn RCB.
RCB khc nhau v chi tit cho tng loi ti nguyn, nhng c bn c cc thng tin sau:
a/ nh danh ti nguyn: dng phn bit ti nguyn ny vi ti nguyn khc.
b/ Trng thi ti nguyn: m t chi tit trng thi ti nguyn, phn no ca ti nguyn cp pht
cho tin trnh, phn no cn c th s dng.
c/ Hng i trn ti nguyn: danh sch cc tin trnh ang ch c cp pht ti nguyn tng
ng.
d/ B cp pht ti nguyn: l on m m nhim vic cp pht ti nguyn. Mt s ti nguyn
i hi cc gii thut c bit (nh CPU, b nh chnh, h thng tp tin), trong khi nhng ti
nguyn khc (nh cc thit b nhp/xut) c th cn cc gii thut cp pht v gii phng tng
qut hn.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
55
RCB ngha
nh danh ti nguyn rid
Trng thi ti nguyn Danh sch cc phn ca ti nguyn c th s dng
Hng i Danh sch cc tin trnh ang i ti nguyn
B cp pht Con tr n b cp pht ti nguyn
Hnh 3.14: thng tin trong khi RCB
+ Mc tiu ca b cp pht ti nguyn :
- Bo m mt s lng hp l cc tin trnh truy xut ng thi n cc ti nguyn khng th
chia s c.
- Cp pht ti nguyn cho tin trnh c yu cu trong mt khong thi gian tr hon c th chp
nhn c.
- Ti u ha s s dng ti nguyn.
3.2 IU PHI TIN TRNH
H iu hnh iu phi tin trnh thng qua b iu phi (scheduler) v b phn phi (dispatcher).
B iu phi s dng mt gii thut thch hp la chn tin trnh c x l tip theo. B phn
phi chu trch nhim cp nht ng cnh ca tin trnh b tm ngng v trao CPU cho tin trnh
c chn bi b iu phi tin trnh thc thi.
3.2.1 Mc tiu ca b iu phi
a/ S cng bng (Fairness): Cc tin trnh chia s CPU mt cch cng bng, khng c tin trnh
no phi ch i v hn c cp pht CPU.
b/ Tnh hiu qa (Efficiency): H thng phi tn dng c CPU 100% thi gian.
c/ Thi gian p ng hp l (Response time): Cc tiu ho thi gian hi p cho cc tng tc
ca ngi s dng.
d/ Thi gian lu li trong h thng (Turnaround Time): Cc tiu ha thi gian hon tt cc tc
v x l theo l.
e/ Thng lng ti a (Throughput ): Cc i ha s cng vic c x l trong mt n v
thi gian.
Thng h iu hnh kh th tha mn tt c cc mc tiu k trn m ch c th dung ha.
vic iu phi c hiu qa, h iu hnh cn quan tm n c tnh ca tin trnh.
3.2.2 Cc c tnh ca tin trnh
a/ Tnh hng nhp/xut( I/O-boundedness):
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
56
Tin trnh khi thc thi, ch yu thc hin thao tc nhp xut, rt t lnh x l. Tin trnh c
khuynh hng khng s dng CPU n ht thi gian dnh cho n. Hot ng ca cc tin trnh
nh th thng bao gm nhiu lt s dng CPU, mi lt trong mt thi gian kh ngn.
b/ Tnh hng x l( CPU-boundedness):
Tin trnh khi thc thi, ch yu thc hin thao tc x l, rt t thao tc nhp/xut. Tin trnh c
khuynh hng s dng CPU n khi ht thi gian dnh cho n. Hot ng ca cc tin trnh nh
th thng bao gm mt s t lt s dng CPU, nhng mi lt trong mt thi gian di.
c/ Tin trnh tng tc hay x l theo l :
Ngi s dng theo kiu tng tc thng yu cu c hi p tc thi i vi cc yu cu ca
h, trong khi cc tin trnh ca tc v c x l theo l ni chung c th tr hon trong mt thi
gian chp nhn c.
d/ u tin ca tin trnh
Cc tin trnh c th c phn cp u tin theo mt s tiu chun no . Cc tin trnh c u
tin cao cn thc hin trc.
e/ Thi gian s dng CPU ca tin trnh
Mt s quan im u tin chn nhng tin trnh s dng CPU nhiu thi gian nht v hy vng
chng s cn t thi gian nht hon tt v ri khi h thng . Tuy nhin cng c quan im cho
rng cc tin trnh nhn c CPU trong t thi gian l nhng tin trnh phi ch lu nht, do
vy u tin chn chng.
f/ Thi gian cn li tin trnh cn hon tt
C th gim thiu thi gian ch i trung bnh ca cc tin trnh bng cch cho cc tin trnh cn
t thi gian nht hon tt c thc hin trc. Tuy nhin ng tic l rt him khi bit c
tin trnh cn bao nhiu thi gian na kt thc x l.
Khi thc hin iu phi, cn quyt nh thi im chuyn i CPU gia cc tin trnh, h iu
hnh c th da vo cc nguyn l sau:
3.2.3 Cc nguyn l iu phi
3.2.3.1 iu phi c quyn (preemptive):
Tin trnh khi nhn c CPU s c c chim CPU n khi hon tt x l hoc t nguyn gii
phng CPU. Cc gii thut c quyn thng n gin v d ci t nhng khng thch hp vi
cc h thng nhiu ngi dng, v nu cho php mt tin trnh c quyn x l bao lu ty , tin
trnh ny c th gi CPU mt thi gian khng xc nh, c th ngn cn nhng tin trnh cn li
trong h thng c mt c hi x l. iu phi c quyn cng c th xy ra tnh trng cc tc
v cn thi gian x l ngn phi ch tc v x l vi thi gian rt di hon tt.
3.2.3.2 iu phi khng c quyn (nopreemptive):
Khi mt tin trnh nhn c CPU, n vn c s dng CPU n khi hon tt hoc t nguyn
gii phng CPU, nhng nu xut hin mt tin trnh khc c u tin cao hn th h iu hnh
s cho tin trnh c u tin cao hn dnh quyn s dng CPU ca tin trnh ban u.
Cc thut ton iu phi khng c quyn trnh c tnh trng mt tin trnh c chim CPU,
nhng vic tm dng mt tin trnh c th dn n cc mu thun trong truy xut, i hi phi s
dng mt phng php ng b ha thch hp gii quyt.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
57
i vi cc h thng tng tc, cc h thi gian thc (real time), cn iu phi khng c quyn
cc tin trnh quan trng c c hi hi p kp thi. Tuy nhin thc hin iu phi khng c
quyn i hi nhng c ch phc tp trong vic phn nh u tin, v pht sinh thm chi ph
khi chuyn i CPU qua li gia cc tin trnh. Vn t ra cho h iu hnh l thi im no
cn thc hin iu phi.
+ Thi im thc hin iu phi
H iu hnh thc hin vic iu phi tin trnh khi c mt trong cc tnh hung sau:
a/ Tin trnh chuyn t trng thi running sang trng thi blocked: v d ch mt thao tc nhp
xut hay ch mt tin trnh con kt thc
b/ Tin trnh chuyn t trng thi running sang trng thi ready: v d xy ra mt ngt.
c/ Tin trnh chuyn t trng thi blocked sang trng thi ready: v d mt thao tc nhp/xut hon
tt.
d/ Tin trnh kt thc.
e/ Tin trnh c u tin cao hn xut hin: ch p dng i vi iu phi khng c quyn
3.2.4 T chc iu phi
3.2.4.1 Cc danh sch iu phi
thc hin iu phi, h iu hnh s dng ba loi danh sch l: danh sch tc v (job list),
danh sch sn sng (ready list), danh sch ch i (waiting list).
Khi mt tin trnh c to, PCB ca tin trnh s c chn vo danh sch tc v (job list). Khi
b nh ch, mt tin trnh trong danh sch tc v c chn, np t a vo b nh v PCB
ca tin trnh c chuyn sang danh sch sn sng (ready list). B iu phi s chn mt tin
trnh trong danh sch sn sng v cp CPU cho tin trnh . Tin trnh c cp CPU s thi hnh,
v s chuyn sang danh sch ch i (waiting list) khi xy ra cc s kin v d nh i mt thao
tc nhp/xut hon tt hoc yu cu ti nguyn m cha c tha mn hoc c yu cu tm
dng ...
Tin trnh ang thi hnh c th b bt buc tm dng x l do mt ngt xy ra, khi tin trnh
c a tr li vo danh sch sn sng ch c cp CPU cho lt tip theo.
H iu hnh ch s dng mt danh sch tc v, mt danh sch sn sng nhng mi mt ti
nguyn (thit b ngoi vi, file,) c mt danh sch ch i ring bao gm cc tin trnh ang ch
c cp pht ti nguyn .
Hnh 3.15: Mi ti nguyn c mt hng i lu danh sch cc tin trnh ang i ti nguyn.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
58
Hnh 3.16: khi c yu cu ti nguyn m cha c p ng, tin trnh c a vo hng i ti
nguyn.
3.2.4.2 Cc loi iu phi
a) iu phi tc v (job scheduling)
L la chn tc v no c a vo b nh chnh thc hin. Chc nng iu phi tc v
quyt nh mc a chng ca h thng (s lng tin trnh trong b nh chnh). Khi h thng
to lp mt tin trnh, hay c mt tin trnh kt thc x l th chc nng iu phi tc v mi c
kch hot. V mc a chng tng i n nh nn chc nng iu phi tc v c tn sut
hot ng thp . cn bng hot ng ca CPU v cc thit b ngoi vi, b iu phi tc v nn
la chn cc tin trnh np vo b nh sao cho l s pha trn hp l gia cc tin trnh hng
nhp xut v cc tin trnh hng x l.
b) iu phi tin trnh ( process scheduling)
Chn mt tin trnh trng thi sn sng ( c np vo b nh chnh, v c ti nguyn
hot ng ) v cp pht CPU cho tin trnh thc hin. B iu phi tin trnh c tn sut hot
ng cao, sau mi ln xy ra ngt (do ng h bo gi, do cc thit b ngoi vi...), thng l 1 ln
trong khong 100ms. Do vy nng cao hiu sut ca h thng, b iu phi tin trnh cn s
dng cc thut ton tt nht.
3.2.4.3 Cc thut ton iu phi
a/ Thut ton FIFO
CPU c cp pht cho tin trnh u tin trong danh sch sn sng, tin trnh ny l tin trnh
c a vo h thng sm nht. y l thut ton iu phi theo nguyn tc c quyn.
Hnh 3.17: m hnh iu phi theo FIFO
V d: H thng ln lt c ba tin trnh P1, P2, P3 vo ready list. Thi im vo RL v thi gian
x l ca mi tin trnh cho trong bng sau:
ds sn sng
CPU
ds i ti nguyn
I/O
Yu cu
ti nguyn
Ht
thi gian
i 1 ngt
Ngt xy ra
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
59
Tin trnh Thi im vo RL Thi gian x l
P1 0 24
P2 1 3
P3 2 3
Theo thut ton FIFO, th t cp pht CPU cho cc tin trnh l :
P1 P2 P3
0 24 27 30
Thi gian ch i c x l l 0 i vi P1, (24 -1) vi P2 v (27-2) vi P3. Thi gian ch trung
bnh l ( 0+23+25)/3 = 16 miliseconds.
Nhn xt:
- C th mt tin trnh c thi gian x l ngn phi ch mt tin trnh c thi gian x l di thc
thi xong.
- Thi gian ch trung bnh ph thuc vo th t ca cc tin trnh trong danh sch sn sng.
b/ Thut ton phn phi xoay vng (Round Robin)
B iu phi ln lt cp pht cho mi tin trnh trong danh sch RL mt khong thi gian s
dng CPU gi l quantum. Khi mt tin trnh s dng CPU n ht thi gian quantum dnh cho
n, h iu hnh thu hi CPU v cp cho tin trnh k tip trong danh sch. Nu tin trnh b kha
(blocked) hay kt thc trc khi s dng ht thi gian quantum, h iu hnh cng lp tc cp
pht CPU cho tin trnh khc. Khi tin trnh tiu th ht thi gian CPU dnh cho n m cha hon
tt, tin trnh c a tr li vo cui danh sch sn sng i c cp CPU trong lt k
tip. y l mt gii thut iu phi khng c quyn
Hnh 3.18: m hnh iu phi theo round robin
V d:
Tin trnh Thi im vo RL Thi gian x l
P1 0 24
P2 1 3
P3 2 3
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
60
Nu s dng quantum l 4 miliseconds, th t cp pht CPU s l :
P1 P2 P3 P1 P1 P1 P1 P1
0 4 7 10 14 18 22 26 30
Thi gian ch i trung bnh s l (6+3+5)/3 = 4.66 milisecondes.
Nhn xt:
- Nu c n tin trnh trong danh sch sn sng v s dng quantum q, th mi tin trnh s khng
phi i qu (n-1)q n v thi gian trc khi nhn c CPU cho lt k tip.
- Nu thi lng quantum qu b s pht sinh nhiu s chuyn i gia cc tin trnh v khin cho
vic s dng CPU km hiu qa. Nhng nu s dng quantum qu ln s lm gim kh nng
tng tc ca h thng.
c/ Thut ton u tin
Mi tin trnh c gn cho mt u tin, tin trnh c u tin cao nht s c chn cp
pht CPU u tin. u tin c th c nh ngha nh vo cc yu t bn trong hay bn
ngoi. Yu t bn trong nh l gii hn thi gian, nhu cu b nhYu t bn ngoi nh l tm
quan trng ca tin trnh, loi ngi s dng s hu tin trnh
Gii thut iu phi vi u tin c th theo nguyn tc c quyn hay khng c quyn. Khi
mt tin trnh c a vo danh sch cc tin trnh sn sng, u tin ca n c so snh vi
u tin ca tin trnh hin hnh ang x l.
Gii thut khng c quyn s thu hi CPU t tin trnh hin hnh cp pht cho tin trnh mi
nu u tin ca tin trnh mi cao hn tin trnh hin hnh. Gii thut c quyn s ch n
gin chn tin trnh mi vo danh sch sn sng theo th t u tin, v tin trnh hin hnh vn
tip tc x l ht thi gian dnh cho n.
V d : gi s u tin 1 > u tin 2> u tin 3
Tin trnh Thi im vo RL u tin Thi gian x l
P1 0 3 24
P2 1 1 3
P3 2 2 3
S dng thut gii u tin c quyn, th t cp pht CPU nh sau :
P1 P2 P3
0 24 27 30
Thi gian ch i trung bnh s l (0+23+25)/3 =16 milisecondes.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
61
Nu s dng thut gii u tin khng c quyn, th t cp pht CPU nh sau :
P1 P2 P3 P1
0 1 4 7 30
Thi gian ch i trung bnh s l (6+0+2)/3 = 2.7 milisecondes.
Nhn xt:
- Tnh trng i CPU (starvation) l mt vn chnh yu ca cc gii thut s dng u tin.
Cc gii thut ny c th cc tin trnh c u tin thp ch i CPU v hn!
- ngn cn cc tin trnh c u tin cao chim dng CPU v thi hn, b iu phi s gim
dn u tin ca cc tin trnh ny sau mi ngt ng h (khong 100ms). Nu u tin ca
tin trnh ny gim xung thp hn tin trnh c u tin cao th nh, s xy ra s chuyn i
quyn s dng CPU. Qu trnh ny gi l s lo ha (aging) tin trnh.
d/ Thut ton cng vic ngn nht (Shortest-job-first SJF)
y l mt trng hp c bit ca gii thut iu phi vi u tin. Trong gii thut ny,
u tin p c gn cho mi tin trnh l nghch o ca thi gian x l t m tin trnh cn yu
cu (p = 1/t), vi qui c p ln th u tin ln. Khi CPU ri, n s c cp pht cho tin trnh
yu cu thi gian x l cn li t nht kt thc- tin trnh ngn nht. Gii thut ny cng c th
c quyn hay khng c quyn. S iu phi xy ra khi c mt tin trnh mi c a vo danh
sch sn sng trong khi mt tin trnh khc ang x l. Tin trnh hin c trong RL c th yu cu
thi gian s dng CPU (CPU-burst) ngn hn thi gian cn li m tin trnh hin hnh cn x l.
Khi gii thut SJF khng c quyn s dng hot ng ca tin trnh hin hnh, trong khi gii
thut c quyn s cho php tin trnh hin hnh tip tc x l.
V d :
Tin trnh Thi im vo RL Thi gian x l
P1 0 6
P2 1 8
P3 2 4
P4 3 2
S dng thut gii SJF c quyn, th t cp pht CPU nh sau:
P1 P4 P3 P2
0 6 8 12 20
Thi gian ch i trung bnh s l (0+11+6+3)/4 = 5 milisecondes.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
62
Nu s dng thut gii SJF khng c quyn, th t cp pht CPU nh sau:
P1 P4 P1 P3 P2
0 3 5 8 12 20
Thi gian ch i trung bnh s l (2+11+6+0)/3 = 6.33 milisecondes.
Nhn xt:
Gii thut ny cho php t c thi gian ch trung bnh cc tiu. Kh khn thc s ca gii
thut SJF l thng khng th bit c thi gian yu cu x l cn li ca tin trnh.
e/ Thut ton nhiu mc u tin
Danh sch sn sng c chia thnh nhiu danh sch, mi danh sch gm cc tin trnh c cng
u tin v c p dng mt gii thut iu phi ring. Ngoi ra, cn c mt gii thut iu
phi gia cc danh sch, thng gii thut ny l gii thut khng c quyn v s dng u
tin c nh. Mt tin trnh thuc v mt danh sch no ch c cp pht CPU khi cc danh
sch c cp u tin cao hn trng.
Hnh 3.19: m hnh iu phi theo nhiu mc u tin
Nhn xt:
- C th dn n tnh trng "i CPU" cho cc tin trnh thuc v nhng danh sch c u tin
thp. Do vy c th xy dng gii thut iu phi nhiu cp u tin v xoay vng (Multilevel
Feedback). Gii thut ny s chuyn dn mt tin trnh t danh sch c u tin cao xung danh
sch c u tin thp hn sau mt khong thi gian no . Cng vy, mt tin trnh ch qu
lu trong cc danh sch c u tin thp cng c chuyn dn ln cc danh sch c u tin
cao hn.
- Khi xy dng gii thut iu phi nhiu cp u tin v xoay vng cn quan tm cc vn sau :
- S lng cc cp u tin
- Gii thut iu phi cho tng danh sch ng vi mt cp u tin.
- Phng php xc nh thi im di chuyn mt tin trnh ln danh sch c u tin cao hn v
phng php xc nh thi im di chuyn mt tin trnh xung danh sch c u tin thp hn.
- Phng php xc nh mt tin trnh mi c a vo h thng s thuc danh sch c tin
no.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
63
Hnh 3.20: m hnh iu phi theo nhiu mc u tin xoay vng.
+ Chin lc iu phi x s (Lottery)
Pht mt v s cho mi tin trnh khi vo h thng. Khi n thi im ra quyt nh iu phi, s
chn 1 v trng gii, tin trnh no s hu v ny s c nhn CPU. y l gii thut c
quyn.
Nhn xt: Gii thut Lottery n gin chi ph thp, bo m tnh cng bng cho cc tin trnh.
3.3. LIN LC GIA CC TIN TRNH
Mt tin trnh khng b nh hng bi mt tin trnh khc gi l tin trnh c lp, ngc li gi
l tin trnh hp tc (cooperating process). L do cc tin trnh hp tc, lin lc vi nhau l
chia s thng tin nh dng chung file, b nh, hoc hp tc hon thnh cng vic. H iu hnh
cn cung cp c ch cc tin trnh lin lc vi nhau, v thng thng c cc c ch lin lc sau:
3.3.1 Lin lc bng tn hiu (Signal)
Mt tn hiu c s dng thng bo cho tin trnh v mt s kin no xy ra. Vi mi tn
hiu s c mt hm x l tn hiu (signal handler) do phn cng hoc h iu hnh cung cp. V
d mt s tn hiu ca h iu hnh UNIX:
Tn hiu M t
SIGINT Ngi dng nhn phm Ctl-C ngt x l tin trnh
SIGILL Tin trnh x l mt ch th bt hp l
SIGKILL Yu cu kt thc mt tin trnh
SIGFPT Li chia cho 0
SIGSEGV Tin trnh truy xut n mt a ch bt hp l
SIGCLD Tin trnh con kt thc
Hnh 3.21: mt s tn hiu ca h iu hnh UNIX
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
64
+ Tn hiu c gi i bi:
- Phn cng: V d li do cc php tnh s hc
- H iu hnh: V d mt tin trnh no truy xut n mt a ch bt hp l.
- Tin trnh: V d tin trnh cha yu cu mt tin trnh con kt thc
- Ngi s dng: V d NSD nhn phm Ctl-C ngt x l ca tin trnh.
+ Khi tin trnh nhn tn hiu, n c th x l theo mt trong cc cch sau:
- X l tn hiu bng cch gi hm x l tn hiu.
- X l theo cch ring ca tin trnh.
- B qua tn hiu.
V d c 11 bc khi thc hin li gi h thng: read(fd,buffer,nbyte)
ghi s byte cn c (nbytes) vo thanh ghi; ghi a ch vng nh cha d liu (buffer) vo thanh
ghi; ghi s hiu a vo thanh ghi (fd=0 l a mm,); gi hm h thng read;
Hnh 3.22: cc bc thc hin li gi h thng read.
Nhn xt
- Tin trnh nhn tn hiu khng th xc nh trc thi im nhn tn hiu.
- Cc tin trnh ch c th thng bo cho nhau v mt s kin, khng th trao i d liu
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
65
Qun l tin trnh
Hm ngha
pid = fork() To mt tin trnh con ging ht tin trnh cha
pid = waitpid(pid,&statloc, options) i mt tin trnh con ngng thc thi
s = execve(name, argv, environp) Thay th 1 nh nhn tin trnh (process core image)
exit(status) Ngng thc thi tin trnh v nhn v trng thi
Qun tr tp tin
Hm ngha
fd = open(file, how, ) M 1 file c hoc ghi hoc c hai
s = close(fd) ng 1 file ang m
n = read(fd, buffer, nbytes) c d liu t 1 file vo 1 b m (buffer)
n = write(fd, buffer, nbytes) Ghi d liu t 1 b m vo 1 file
position = lseek(fd, offset, whence) Di chuyn con tr ca file
s = stat(name, &buf) Ly thng tin trng thi ca 1 file
Qun tr h thng th mc v tp tin
Hm ngha
s = mkdir(name, mode) To th mc mi
s = rmdir(name) Xa mt th mc rng
s = link(name1, name2) To mt mc mi gi l name2, ch ti name1.
s = unlink(name) Xa mt mc
s = mount(special, name, tag) Khi to h thng tp tin
s = unmount(special) ng h thng tp tin
Cc hm khc
Hm ngha
s = chdir(dirname) i th mc lm vic
s = chmod(name, mode) i cc bit bo v ca 1 file
s = kill(pid, signal) Gi 1 tn hiu ti 1 tin trnh
seconds = time(&seconds) Ly thi gian tri qua t ngy 1/1/1097
Hnh 3.23: mt s li gi h thng thng dng
3.3.2 Lin lc bng ng ng (Pipe)
ng ng l mt knh lin lc trc tip gia hai tin trnh, d liu xut ca tin trnh ny c
chuyn n lm d liu nhp cho tin trnh kia di dng mt dng cc byte. Th t d liu
truyn qua pipe c bo ton theo nguyn tc FIFO. Mt tin trnh ch c th s dng mt pipe
do n to ra hay k tha t tin trnh cha.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
66
Hnh 3.24: m hnh lin lc bng ng ng.
H iu hnh cn cung cp cc hm (li gi h thng) read/write cho cc tin trnh thc hin thao
tc c/ghi d liu trong pipe.
+ H iu hnh ng b ha vic truy xut pipe trong tnh hung sau:
- Tin trnh c pipe s b kha nu pipe trng, v i n khi pipe c d liu mi c truy xut.
- Tin trnh ghi pipe s b kha nu pipe y, v i n khi pipe c ch trng cha d liu.
Nhn xt:
Mt tin trnh kt ni vi mt pipe ch c th thc hin mt trong hai thao tc c hoc ghi.
Pipe cho php truyn d liu khng cu trc.
Pipe ch lin lc gia hai tin trnh c quan h cha-con, v trn cng mt my tnh.
3.3.3 Lin lc qua vng nh chia s (shared memory)
Nhiu tin trnh cng c th truy xut n mt vng nh dng chung, d liu m cc tin trnh
mun gi cho nhau, ch cn t vo vng nh ny. Vng nh chia s c lp vi cc tin trnh, khi
mt tin trnh no mun truy xut n vng nh dng chung, tin trnh phi gn kt vng nh
chung vo khng gian a ch ring ca tin trnh, v thao tc trn vng nh chung ging nh
vng nh ca tin trnh.
Hnh 3.25: M hnh lin lc bng vng nh chia x
Nhn xt:
- Vng nh chia s l phng php nhanh nht trao i d liu gia cc tin trnh.
- Vng nh chia s cn c bo v bng nhng c ch ng b ha.
- Vng nh chia s khng th p dng hiu qu trong cc h phn tn
3.3.4 Lin lc bng thng ip (Message)
Hai tin trnh mun lin lc vi nhau, cn thit lp mt mi lin kt gia hai tin trnh, sau s
dng cc hm send, receive do h iu hnh cung cp trao i thng ip. Khi s lin lc chm
dt mi lin kt gia hai tin trnh s b hy.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
67
* C hai cch lin lc bng thng ip:
a/ Lin lc gin tip (indirect communication)
Hai tin trnh ch c th lin lc nu c hp th/cng (mailbox/port) dng chung. Mi cng (port)
c mt s hiu duy nht phn bit. Thng ip s c gi v nhn thng qua cng dng
chung.
- Send(A, message): gi mt thng ip ti port A
- Receive(A, message): nhn mt thng ip t port A
Tnh cht: Mt lin kt c thit lp gia hai tin trnh nu v ch nu chng dng chung port.
Mt lin kt c th phc v nhiu tin trnh.
b/ Lin lc trc tip (direct communication)
Send(P, message) : gi mt thng ip n tin trnh P
Receive(Q,message) : nhn mt thng ip t tin trnh Q
Tnh cht: Mt lin kt duy nht, hai chiu c thit lp t ng gia hai tin trnh P,Q v lin
kt ny ch dng cho P v Q.
V d: Bi ton nh sn xut - ngi tiu th (producer-consumer)
Hai tin trnh nsx, ntt thc thi ng thi. Nsx sn xut mt sn phm, ntt tiu th sn phm ,
nu cha c sn phm th ntt ch.
void nsx()
{ while(1)
{ to_sp();
send(ntt,sp); //gi sp cho ntt
}
}
void ntt()
{ while(1)
{ receive(nsx,sp); //ntt ch nhn sp
tiu_th(sp);
}
}
Nhn xt:
Cc tin trnh c th trao i d liu dng c cu trc. Lin kt trc tip nh trn cn gi l lin
kt trc tip i xng (symmetric), ta c th c lin kt trc tip khng i xng (asymmetric)
nh sau:
- Send(P, message) : gi mt thng ip n tin trnh P
- Receive(id,message): nhn mt thng ip t tin trnh bt k c m s id.
3.3.5 Lin lc qua socket
Socket l knh lin lc hai chiu. Hai tin trnh mun lin lc vi nhau, mi tin trnh cn to mt
socket ring, mi socket c kt buc vi mt cng khc nhau . Cc thao tc c/ghi ln socket
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
68
chnh l s trao i d liu gia hai tin trnh. C ch socket c th s dng chun ho mi lin
lc gia cc tin trnh vn khng lin h vi nhau, v c th hot ng trong nhng h thng khc
nhau v trong mi trng phn tn.
* C hai cch lin lc qua socket:
a/ Lin lc kiu th tn (socket ng vai tr bu cc):
Hai tin trnh khng cn kt ni, tin trnh gi ghi d liu vo socket ca mnh, d liu s c
chuyn cho socket ca tin trnh nhn, tin trnh nhn s nhn d liu bng cch c d liu
t socket ca tin trnh nhn. D liu c gi theo tng gi c cha thng tin IP ca my nhn
v port ca tin trnh nhn (port dng phn bit cc tin trnh trn cng mt my)
Nhn xt:
. tin trnh gi khng chc chn thng ip c gi n tin trnh nhn
Hai thng ip c gi theo mt th t no c th n tin trnh nhn theo mt th t
khc.
. Mt tin trnh sau khi to mt socket c th s dng n lin lc vi nhiu tin trnh khc
nhau.
. Giao thc UDP s dng kiu lin lc ny
b/ Lin lc kiu in thoi (socket ng vai tr tng i):
Hai tin trnh cn kt ni trc khi truyn/nhn d liu v kt ni c duy tr sut qu trnh
truyn nhn d liu.
Nhn xt:
. D liu truyn nhn bo m chnh xc v ng th t gi, nu sai s c gi li.
. Giao thc TCP s dng kiu lin lc ny
3.4. NG B CC TIN TRNH
3.4.1. Yu cu ng b
ng b cc tin trnh l bo m cc tin trnh x l song song khng tc ng sai lch n
nhau. Vic ng b cc tin trnh l do cc yu cu sau:
a/ Yu cu c quyn truy xut (Mutual exclusion): ti mt thi im, ch c mt tin trnh c
quyn truy xut mt ti nguyn khng th chia s.
b/ Yu cu phi hp (Synchronization): cc tin trnh cn hp tc vi nhau hon thnh cng
vic. V d chng trnh in xut k t vo buffer, k t c ly v in bi chng trnh iu khin
my in (printer driver). Hai tin trnh ny phi phi hp vi nhau nh l chng trnh in khng
c xut k t vo buffer khi buffer y m phi ch printer driver ly bt d liu.
T hai yu cu trn, ta c hai bi ton ng b cn gii quyt l bi ton c quyn truy
xut (hay cn gi l bi ton min gng) v bi ton phi hp thc hin.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
69
3.4.2. Min gng (critical section)
on m ca mt tin trnh c kh nng xy ra li khi truy xut ti nguyn dng chung (bin, tp
tin,) c gi l min gng.
V d gi s c hai tin trnh P1 v P2 s dng vng nh dng chung lu tr bin taikhoan. Mi
tin trnh mun rt mt khon tin l tienrut t ti khon bng on m sau:
if (taikhoan >= tienrut) taikhoan = taikhoan - tienrut;
else Thong bao khong the rut tien ! ;
Gi s ti khon hin cn 800, P1 mun rt 500 v P2 mun rt 400, c th xy ra tnh hung li
nh sau: gi s P1 sau khi kim tra iu kin (800 >=500) l ng, P1 ht thi gian s dng
CPU, h iu hnh cp pht CPU cho P2, P2 kim tra iu kin (800>=400) cng vn ng, bin
taikhoan c cp nht li l 400. Khi P1 c tip tc x l, n s khng kim tra li iu kin
(taikhoan>= tienrut) m thc hin rt tin, gi tr ca bin taikhoan s cp nht thnh -100 !
on m:
if (taikhoan >= tienrut ) taikhoan = taikhoan - tienrut;
gi l mt min gng.
V d hai tin trnh chy trn hai b x l, cng ghi d liu vo mt hng i dng chung, s xy
ra li trong trng hp sau: tin trnh A thm d liu vo hng i ti v tr tail (tail l v tr ct d
liu) nhng cha kp tng tail th ht quantum v n lt tin trnh B x l, tin trnh B thm d
liu ti v tr tail v nh vy s ghi chng ln d liu do tin trnh A va ghi, li xy ra!
Hnh 3.26: hai tin trnh A v B dng chung mt hng i, c th xy ra li.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
70
C th gii quyt li nu bo m ti mt thi im ch c mt tin trnh c x l lnh trong
min gng, ngha l ti mt thi im ch c mt tin trnh truy xut ti nguyn dng chung.
Hnh 3.27: Khi A trong min gng th nu B mun vo min gng , B s b kho ch A ra khi
min gng, B mi c vo min gng.
* Khi gii quyt bi ton min gng cn ch 4 iu kin sau:
a/ Khng c hai tin trnh cng trong min gng cng lc.
b/ Khng c gi thit v tc ca cc tin trnh, cng nh v s lng b x l.
c/ Mt tin trnh bn ngoi min gng khng c ngn cn cc tin trnh khc vo min gng.
d/ Khng c tin trnh no phi ch v hn c vo min gng.
3.4.3 Cc gii php ng b
C 5 nhm gii php gii quyt bi ton ng b l: Busy Waiting, Sleep And Wakeup,
Semaphore, Monitor, Message.
3.4.3.1 Nhm gii php Busy Waiting (bn th i)
Nhm gii php Busy Waiting li chia thnh hai loi: cc gii php s dng phn mm v cc
gii php s dng phn cng.
A/ Gii php phn mm:
Vic ng b l do chng trnh thc hin, gii php ny l kh v lp trnh vin khng lng
trc c mi tnh hung c th xy ra. Thc vy, chng ta th xt mt s thut ton ng b sai
sau y:
a) Thut ton 1: S dng bin c hiu, thut ton mong i dng cho nhiu tin trnh nhng vn
cn trng hp sai. tng nh sau:
Cc tin trnh dng chung bin c hiu lock , vi ngha lock=0 l khng c tin trnh trong min
gng, lock=1 l c mt tin trnh trong min gng. lock c gn tr ban u l 0. Mt tin trnh
mun vo min gng trc tin kim tra gi tr ca bin lock. Nu lock = 0, tin trnh t li gi
tr cho lock = 1 v i vo min gng. Nu lock ang c gi tr 1, tin trnh phi ch bn ngoi
min gng cho n khi lock c gi tr 0.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
71
lock=0; //bin dng chung cho mi tin trnh
while (1) //mt tin trnh c th truy xut min gng nhiu ln
{ // nu lock=1 l c tin trnh no trong min gng, dng vng lp while i
while (lock == 1);
//nu lock=0 thot khi while, trc khi vo mg gn lock=1 khng cho cc tin trnh
khc vo mg (c quyn vo mg).
lock = 1;
critical-section (); //on m truy xut d liu dng chung m c th gy ra li.
lock = 0; //cho php cc tin trnh khc vo mg.
noncritical-section(); //on m khng phi mg
}
Nhn xt: Gii php ny vn c th vi phm iu kin th nht l hai tin trnh c th cng
trong min gng ti mt thi im. Thc vy, gi s mt tin trnh nhn thy lock = 0 v chun b
vo min gng, nhng trc khi n c th t li gi tr cho lock l 1, n b tm dng mt tin
trnh khc hot ng. Tin trnh th hai ny thy lock vn l 0 th t li lock = 1 v vo min
gng. Sau tin trnh th nht c ti kch hot, n gn lock = 1 ri va min gng. Nh vy
ti thi im c hai tin trnh u trong min gng.
b) Thut ton 2: S dng bin lun phin, thut ton dng cho hai tin trnh nhng vn cn
trng hp sai. tng nh sau:
Hai tin trnh A, B s dng chung bin turn vi ngha sau: turn = 0, tin trnh A c vo min
gng, turn=1 th B c vo min gng. Turn c gn tr ban u l 0, tc l A c vo trc.
Nu turn = 0, tin trnh A c vo min gng. Nu turn = 1, tin trnh A i vo mt vng lp ch
n khi turn nhn gi tr 0 th A c vo min gng. Khi tin trnh A ri khi min gng, n t
gi tr turn v 1 cho php tin trnh B i vo min gng.
// tin trnh A
while (1)
{
while (turn == 1); // neu turn=1 thi A vao vong while de doi
critical-section (); //turn=0 thi A duoc vao mien gang
turn = 1; //gan turn=1 de cho B vao mg
Noncritical-section ();
}
// tin trnh B
while (1)
{
while (turn == 0); //neu turn=0 thi B vao vong while de doi
critical-section (); //turn=1 thi B duoc vao mien gang
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
72
turn = 0; //gan turn=0 de cho A vao mg
Noncritical-section ();
}
Nhn xt: Hai tin trnh chc chn khng th vo min gng cng lc, v ti mt thi im turn
ch c mt ga tr. Nhng c th vi phm iu kin th ba l mt tin trnh c th b ngn chn vo
min gng bi mt tin trnh khc khng trong min gng. Thc vy gi s tin trnh A ang
trong phn Noncritical-section(), th B khng th vo min gng hai ln lin tip. Nh vy, gii
php ny ph thuc vo tc thc hin ca hai tin trnh, n vi phm c iu kin th hai.
c) Thut ton Peterson: y l gii php ng v dng cho hai tin trnh P0 v P1. tng nh
sau:
Hai tin trnh dng chung hai bin turn v flag[2] (kiu int). Gn tr ban u flag [0]=flag
[1]=FALSE v gi tr ca turn c khi ng l 0 hay 1. Nu flag [i] = TRUE (i=0,1) c ngha
l tin trnh Pi mun vo min gng v turn=i l n lt Pi.
c th vo c min gng, trc tin tin trnh Pi t gi tr flag [i]=TRUE thng bo rng
tin trnh Pi mun vo min gng, sau t turn=j th ngh tin trnh Pj vo min gng.
Nu tin trnh Pj khng quan tm n vic vo min gng ngha l flag [j] = FALSE, th Pi c th
vo min gng, nu flag [j]=TRUE th Pi phi ch n khi flag [j]=FALSE. Khi tin trnh Pi ri
khi min gng, n t li gi tr cho flag [i] l FALSE.
// tin trnh P0 (i=0)
while (TRUE)
{
flag [0]= TRUE;//P0 thng bo l P0 muon vao mg
turn = 1; //thu de nghi P1 vao
while (turn == 1 && flag [1]==TRUE); //neu P1 muon vao thi P0 ch
critical_section();
flag [0] = FALSE; //P0 ra ngoai mg
noncritical_section ();
}
// tin trnh P1 (i=1)
while (TRUE)
{
flag [1]= TRUE; //P1 thng bo l P1 muon vao mg
turn = 0;//th de nghi P0 vao
while (turn == 0 && flag [0]==TRUE); //neu P0 muon vao thi P1 ch
critical_section();
flag [1] = FALSE;//P1 ra ngoai mg
Noncritical_section ();
}
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
73
Nhn xt: Nu c hai tin trnh u mun vo min gng th flag [0] = flag [1] =TRUE nhng gi
tr ca turn ti mt thi im ch c th hoc l 0 hoc l 1, do vy ch c mt tin trnh c vo
min gng v d dng kim tra l gii php cng tha cc iu kin cn li.
B/ Cc gii php phn cng:
a) Cm ngt:
Tin trnh cm tt c cc ngt trc khi vo min gng, v phc hi ngt khi ra khi min gng.
Khi ngt ng h cng khng th xy ra, do vy h thng khng th tm dng hot ng ca
tin trnh ang x l cp pht CPU cho tin trnh khc, nh tin trnh hin hnh yn tm
thao tc trn min gng m khng s b tin trnh no khc tranh chp, tc l h iu hnh c
quyn truy xut min gng.
Nhn xt:
+ D ci t nhng cm tt c cc ngt l nguy him .
+ Nu h thng c nhiu b x l, lnh cm ngt ch c tc dng trn b x l ang x l tin
trnh, cn cc tin trnh hot ng trn cc b x l khc vn c th truy xut n min gng.
b) S dng lnh TSL (Test and Set Lock):
a s phn cng cung cp lnh TSL cho php kim tra v cp nht mt vng nh trong mt thao
tc c quyn. Nu c hai lnh TSL x l ng thi trn hai CPU khc nhau th chng s c x
l tun t. Lnh TSL c cu trc nh sau:
boolean Test_And_Set_Lock (boolean lock)
{
boolean temp=lock;
lock = TRUE;
return temp; //tr v gi tr ban u ca bin lock
}
C th ci t gii php truy xut c quyn vi TSL bng cch s dng thm mt bin lock dng
chung c khi gn l FALSE. Tin trnh phi kim tra gi tr ca bin lock trc khi vo min
gng, nu lock = FALSE, tin trnh c th vo min gng.
boolean lock=FALSE; //bin dng chung
while (TRUE)
{
while (Test_And_Set_Lock(lock));
critical_section ();
lock = FALSE;
noncritical_section ();
}
Nhn xt: Nhm gii php busy and waiting u phi thc hin mt vng lp kim tra xem
c c vo min gng hay khng nn tin trnh ang ch vn chim dng CPU. Do cn trnh
cc gii php busy waiting nu c th.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
74
3.4.3.2. Nhm gii php SLEEP and WAKEUP (ng v nh thc)
a) S dng lnh SLEEP V WAKEUP
H iu hnh cung cp hai lnh SLEEP V WAKEUP. Nu tin trnh gi lnh SLEEP, h iu
hnh s chuyn tin trnh sang danh sch sn sng, ly li CPU cp cho tin trnh khc. Nu
tin trnh gi lnh WAKEUP, h iu hnh s chn mt tin trnh trong ready list, cho thc hin
tip. Khi mt tin trnh cha iu kin vo min gng, n gi SLEEP t kha, n khi c
mt tin trnh khc gi WAKEUP gii phng cho n. Mt tin trnh gi WAKEUP khi ra khi
min gng nh thc mt tin trnh ang ch, to c hi cho tin trnh ny vo min gng.
Vic s dng hai lnh SLEEP V WAKEUP thc khng n gin, rt d b li. Thc vy, ta xt
mt chng trnh gii quyt bi ton min gng nh sau:
//busy v blocked l hai bin dng chung.
int busy=FALSE; // TRUE l c tin trnh trong min gng, FALSE l khng c tin trnh trong
min gng.
int blocked=0; // m s lng tin trnh ang b kha
while (TRUE) // cho mt tin trnh c th vo mg nhiu ln
{
if (busy)
{
blocked = blocked + 1;
sleep();
}
else busy = TRUE;
critical-section ();
busy = FALSE;
if (blocked>0)
{
wakeup(); //nh thc mt tin trnh ang ch
blocked = blocked - 1;
}
Noncritical-section ();
}
Nhn xt:
- C th vi phm iu kin th 1 l c hai tin trnh trong min gng cng lc. Thc vy, gi s
tin trnh A kim tra bin busy, thy busy=FALSE, nhng cha kp gn busy=TRUE th n lt
tin trnh B. B thy busy=FALSE, B gn busy=TRUE v vo min gng. Trong khi B cha ra
khi min gng th n lt A, A gn busy=TRUE v vo min gng!
- C th vi phm iu kin th ba l mt tin trnh c th b ngn chn vo min gng bi mt tin
trnh khc khng trong min gng. V d gi s tin trnh A vo min gng, v trc khi n ri
khi min gng th tin trnh B c kch hot. Tin trnh B th vo min gng nhng n nhn
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
75
thy A ang trong , do vy B tng gi tr bin blocked v chun b gi SLEEP t kho.
Tuy nhin trc khi B c th thc hin SLEEP, tin trnh A li c ti kch hot v ra khi min
gng. Khi ra khi min gng A nhn thy c mt tin trnh ang ch (blocked=1) nn gi
WAKEUP v gim gi tr ca blocked. Khi tn hiu WAKEUP s lc mt do tin trnh B cha
tht s ng nhn tn hiu nh thc ! Khi tin trnh B c tip tc x l, n mi goi
SLEEP v t ng vnh vin !
Li ny xy ra do vic kim tra bin busy v vic gi SLEEP l nhng hnh ng tch bit, c th
b ngt gia chng trong qu trnh x l. trnh nhng tnh hung tng t, h iu hnh cung
cp nhng c ch ng b ha nh Semaphore, Monitor da trn tng ca chin lc SLEEP
and WAKEUP nhng vic kim tra iu kin vo min gng v vic ch xy dng thnh mt
hnh ng c quyn, gip vic gii quyt bi ton min gng an ton, hiu qa hn.
b) S dng cu trc Semaphore:
Semaphore l cu trc c Dijkstra xut vo 1965, semaphore s l mt bin c cc thuc tnh
sau:
- Mt gi tr nguyn dng e
- Mt hng i f lu danh sch cc tin trnh ang ch trn semaphore s
- C hai thao tc c nh ngha trn semaphore s:
Down(s): e=e-1. Nu e < 0 th tin trnh phi ch trong f, ngc li tin trnh tip tc.
Up(s): e=e+1. Nu e<=0 th chn mt tin trnh trong f cho tip tc thc hin (nh thc).
Gi P l tin trnh thc hin thao tc Down(s) hay Up(s):
Down(s)
{ e = e - 1;
if (e < 0)
{ status(P)= blocked; //chuyn P sang trng thi b kho (ch)
enter(P,f); //cho P vo hng i f
}
}
Up(s)
{ e = e + 1;
if (e<= 0 )
{
exit(Q,f); //ly mt tt Q ra khi hng i f theo mt thut ton no (FIFO,)
status (Q) = ready; //chuyn Q sang trng thi sn sng
enter(Q,ready-list); //a Q vo danh sch sn sng ca h thng
}
}
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
76
Nhn xt:
- H iu hnh cn ci t cc thao tc Down, Up l c quyn. ci t s c quyn c th
dng k thut cm ngt (1 cpu) hoc cc gii php phn mm, hoc lnh TSL (nhiu cpu). Nu
dng gii php phn mm th gii php semaphore vn l gii php "busy and waiting" nhng tch
vng lp ch ra khi chng trnh.
- Hng i c th ci t l mt con tr tr ti danh sch cc khi PCB ca cc tin trnh ang
ch trn s, khi semaphore c dng:
class semaphore
{
int e;
PCB * f; //ds ring ca semaphore
public:
down();
up();
};
|e| = s tin trnh ang ch trn f.
C th dng semaphore gii quyt bi ton min gng hay ng b cc tin trnh.
* Gii quyt bi ton min gng bng Semaphores:
Dng mt semaphore s, e c khi gn l 1. Tt c cc tin trnh p dng cng cu trc chng
trnh sau:
semaphore s=1; //ngha l e ca s=1
while (1)
{
Down(s);
critical-section ();
Up(s);
Noncritical-section ();
}
* Gii quyt bi ton ng b bng Semaphores:
V d c hai tin trnh ng hnh P1 v P2, P1 thc hin cng vic 1, P2 thc hin cng vic 2.
Gi s mun cv1 lm trc ri mi lm cv2, ta c th cho hai tin trnh dng chung mt
semaphore s, khi gn e(s)= 0:
semaphore s=0; //dng chung cho hai tin trnh
P1:
{
job1();
Up(s); //nh thc P2
}
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
77
P2:
{
Down(s); // ch P1 nh thc
job2();
}
Nhn xt: Nh lnh down, up l c quyn, semaphore gii quyt c vn tn hiu "nh
thc" b tht lc. Tuy nhin s dng semaphore cng khng n gin, chng trnh d b li m
khng d on c. Ta xt mt s tnh hung gy ra li sau:
- Nu t Down v Up sai v tr hoc thiu th c th b sai. V d nu P1 Up() ln trc lnh
job1() th nu P1 thc hin trc P2, c th job1 cha thc hin xong m job2 c thc hin.
Xt v d khc
e(s)=1;
while (1)
{
Down(s); critical-section (); Noncritical-section ();
}
Tin trnh qun gi Up(s), v kt qu l khi ra khi min gng n s khng cho tin trnh khc vo
min gng!
- S dng semaphore c th gy ra tnh trng tc nghn. V d c hai tin trnh P1, P2 s dng
chung hai semaphore s1=s2=1
P1:
{
down(s1); down(s2);
.
up(s1); up(s2);
}
P2:
{
down(s2); down(s1);
.
up(s2); up(s1);
}
Nu th t thc hin nh sau: P1: down(s1), P2: down(s2) , P1: down(s2), P2: down(s1) khi
s1=s2=-1 nn P1,P2 u ch mi
- S dng semaphore c th gy ra tnh trng i CPU khi gii thut chn tin trnh ang i l
gii thut LIFO.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
78
Semaphore xy dng nh trn gi l semaphore m (counting semaphore) gi tr e khng gii
hn. Semaphore nh phn (binary semaphore) c e=0,1 d ci t hn v c s h tr ca phn
cng. Semaphore m c th ci t bng semaphore nh phn nh sau:
//cc bin dng chung
binary semaphore s1=1, s2=0;
int c=gi tr ban u e ca semaphore m;
down() //down of counting semaphore
{
down(s1); //down of binary semaphore
c--;
if (c<0) down(s2); //down of binary semaphore
up(s1); //up of binary semaphore
}
up() //up of counting semaphore
{
down(s1); //down of binary semaphore
c++;
if (c<=0) up(s2); //up of binary semaphore
up(s1);
}
down(s1); up(s1); m bo c quyn truy xut min gng .
c) S dng cu trc Monitors
c th d vit ng cc chng trnh ng b ha hn, Hoare(1974) v Brinch & Hansen
(1975) ngh mt c ch cao hn c cung cp bi ngn ng lp trnh l monitor.
Monitor l mt cu trc c bit (lp) bao gm cc phng thc c quyn (chnh l cc critical-
section) v cc bin c tnh cht sau :
+ Cc bin trong monitor ch c th c truy xut bi cc phng thc trong monitor, y chnh
l cc bin c dng chung cho cc tin trnh.
+ Ti mt thi im, ch c mt tin trnh duy nht c hot ng bn trong mt monitor.
+ Trong monitor c th khai bo cc bin iu kin (thuc lp condition) dng ng b vic s
dng cc bin trong monitor. Vic s dng bao nhiu bin iu kin l do ngi lp trnh quyt
nh. Bin iu kin c hai lnh Wait v Signal:
- Wait(c): chuyn trng thi tin trnh gi sang ch (blocked) v t tin trnh ny vo hng i
trn bin iu kin c.
- Signal(c): nu c mt tin trnh ang ch trong hng i ca c, ti kch hot tin trnh v tin
trnh gi s ri khi monitor. Nu khng c tin trnh no ang ch trong hng i ca c th lnh
signal(c) b b qua.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
79
Wait(c)
{ status(P)= blocked; //chuyn P sang trng thi ch
enter(P,f(c)); //t P vo hng i f(c) ca bin iu kin c
}
Signal(c)
{
if (f(c) != NULL)
{
exit(Q,f(c)); //Ly tin trnh Q ang ch trn c
statusQ) = ready; //chuyn Q sang trng thi sn sng
enter(Q,ready-list); //a Q vo danh sch sn sng.
}
}
+ Mi bin kiu monitor c mt hng i ton cc lu cc tin trnh ang ch c s dng
monitor.
+ Bin kiu monitor dng chung cho cc tin trnh dng chung ti nguyn.
Hnh 3.28: m hnh cu trc monitor
monitor <tn monitor > //khai bo monitor dng chung cho cc tin trnh
{
<cac bien dung chung>;
<cc bin iu kin>;
<cac phuong thuc c quyn>;
}
//tin trnh Pi:
while (1) //cu trc tin trnh th i
{
Noncritical-section ();
<ten monitor>.Phngthc_i; //thc hin cng vic c quyn th i
Noncritical-section ();
}
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
80
Nhn xt:
- Vic truy xut c quyn c bo m bi trnh bin dch m khng do lp trnh vin, do vy
nguy c thc hin ng b ha sai gim rt nhiu.
- Gii php monitor i hi ngn ng lp trnh ang s dng c kiu d liu l monitor, hin cc
ngn ng ny cha c nhiu.
- Gii php "busy and waiting" khng phi thc hin vic chuyn i ng cnh trong khi gii php
"sleep and wakeup" s tn thi gian cho vic ny.
V d: Bi ton 5 trit gia n ti.
C 5 trit gia n ti mn m ng, ngi xung quanh mt bn trn, trc mt mi ngi c mt
chic a. Bit rng mun n c phi cn hai chic a, nu mi ngi u ly chic a trc
mt mnh cng lc th s xy ra trng hp l khng trit gia no n c (deadlock). Hy ng
b vic n ti ca 5 trit gia sao cho tt c u n c.
Hnh 3.29: bi ton nm trit gia n ti
monitor philosopher
{ enum {thinking, hungry, eating} state[5];// cac bien dung chung cho cc trit gia
condition self[5]; //cac bien dieu kien dung de dong bo viec an toi
//cac pt doc quyen (cac mien gang), viec doc quyen do nnlt ho tro.
void init();//phng thc khoi tao
void test(int i); //phng thc kim tra iu kin trc khi cho trit gia th i n
void pickup(int i); //phng thc ly a
void putdown(int i); //phng thc tr a
}
void philosopher()//phng thc khi to (constructor)
{ //gn trng thi ban u cho cc trit gia l "ang suy ngh"
for (int i = 0; i < 5; i++) state[i] = thinking;
}
void test(int i)
{ //nu tg_i i v cc tg bn tri, bn phi khng ang n th cho tg_i n
if ( (state[i] == hungry) && (state[(i + 4) % 5] != eating) &&(state[(i + 1) % 5] != eating))
0
1
2
3
4
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
81
{
self[i].signal();//nh thc tg_i, nu tg_i ang ch
state[i] = eating; //ghi nhn tg_i ang n
}
}
void pickup(int i)
{
state[i] = hungry; //ghi nhn tg_i i
test(i); //kim tra k trc khi cho tg_i n
if (state[i] != eating) self[i].wait(); //doi tai nguyen
}
void putdown(int i)
{
state[i] = thinking; //ghi nhn tg_i ang suy ngh
test((i+4) % 5); //kt tg bn phi, nu hp l th cho tg ny n
test((i+1) % 5);//kt tg bn tri nu hp l th cho tg ny n
}
// Cu trc tin trnh Pi thc hin viec n ca trit gia th i
philosopher pp; //bien monitor dung chung
Pi:
while (1)
{
Noncritical-section ();
pp.pickup(i); //pickup l min gng v c truy xut c quyn
eat(); //triet gia an
pp.putdown(i);//putdown l min gng v c truy xut c quyn
Noncritical-section ();
}
d) S dng thng ip:
C mt tin trnh kim sot vic s dng ti nguyn v nhiu tin trnh khc yu cu ti nguyn.
Tin trnh cn ti nguyn s gi mt thng ip yu cu ti nguyn n tin trnh kim sot, sau
t chuyn sang trng thi blocked (ch trong hng i ti nguyn). Tin trnh kim sot , khi
nhn c thng ip yu cu ti nguyn, i n khi ti nguyn sn sng th gi mt thng ip
n mt tin trnh ang i ti nguyn nh thc v cho s dng ti nguyn. Khi s dng xong
ti nguyn , tin trnh s dng ti nguyn gi mt thng ip khc n tin trnh kim sot bo
kt thc truy xut ti nguyn.
//Cu trc tin trnh yu cu ti nguyn trong gii php message
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
82
while (1)
{
Send(process controler, request message); //goi td yc tn va chuyen sang trang thai blocked
Receive(process controler, accept message); //nhan td chap nhan su dung tn
critical-section (); //doc quyen su dung tai nguyen dung chung
Send(process controler, end message); //goi td ket thuc su dung tn.
Noncritical-section ();
}
Nhn xt: Semaphore v monitor c th gii quyt c vn truy xut c quyn trn cc my
tnh c mt hoc nhiu b x l chia s mt vng nh chung. Nhng khng thun li trong cc h
thng phn tn, khi m mi b x l s hu mt b nh ring bit v lin lc thng qua mng.
Trong nhng h thng phn tn, c ch trao i thng ip s n gin hn v c dng gii
quyt bi ton ng b ha.
3.5 TNH TRNG TC NGHN (DEADLOCKS)
3.5.1 Khi nim tc nghn:
Mt tp hp cc tin trnh gi l tnh trng tc nghn nu mi tin trnh trong tp hp u ch
i ti nguyn m tin trnh khc trong tp hp ang chim gi. V d ti mt thi dim, tin trnh
1 ang gi ti nguyn R1, yu cu R2 v tin trnh 2 ang gi ti nguyn R2, yu cu R1, nh vy
yu cu v ti nguyn khng th p ng cho c hai tin trnh. Khi khng c tin trnh no c
th tip tc x l, cng nh gii phng ti nguyn cho tin trnh khc s dng, tt c cc tin trnh
trong tp hp u b kha vnh vin!
Hnh 3.30: (a) mt tnh trng tc nghn tim n; (b) mt tnh trng tc nghn thc s.
v d: Ba n ti ca cc trit gia. C 5 nh trit gia cng ngi n ti. Mi nh trit gia cn dng 2
ci a c th n. Nhng trn bn ch c tng cng 5 ci a, nu c 5 ngi u cm ci a
bn tri cng lc, th s khng c ai c c ci a bn phi c th bt u n . Tnh trng ny
gi l tnh trng tc nghn.
Ti nguyn c th l ti nguyn vt l (my in, b nh, cpu, a, ) hoc ti nguyn logic (file,
semaphore, monitor,). Ti nguyn li phn thnh hai loi: loi ti nguyn c th ly li t mt
tin trnh ang chim gi m khng nh hng n tin trnh ang chim gi v loi ti nguyn
khng th thu hi li t tin trnh ang chim gi.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
83
3.5.2 iu kin xut hin tc nghn
H thng s xut hin tc nghn khi v ch khi c 4 iu kin sau:
+ iu kin 1: C s dng ti nguyn khng th chia s
Mi thi im, mt ti nguyn khng th chia s c h thng cp pht ch cho mt tin trnh ,
khi tin trnh s dng xong ti nguyn ny, h thng mi thu hi v cp pht ti nguyn cho tin
trnh khc.
+ iu kin 2: S chim gi v yu cu thm ti nguyn khng th chia s
C tin trnh chim gi cc ti nguyn trong khi li ch c cp pht thm ti nguyn b chim
gi bi tin trnh khc.
+ iu kin 3: Khng thu hi ti nguyn t tin trnh ang gi chng
Ti nguyn khng th c thu hi t tin trnh ang chim gi chng trc khi tin trnh ny s
dng chng xong.
+ iu kin 4: Tn ti mt chu trnh trong th cp pht ti nguyn
C t nht hai tin trnh ch i ln nhau: tin trnh ny ch c cp pht ti nguyn ang b tin
trnh khc chim gi v ngc li.
3.5.3 th cp pht ti nguyn:
hnh trn l tin trnh, hnh vung l ti nguyn. i vi tin trnh, mi tn i ra l chim gi ti
nguyn, mi tn vo l yu cu ti nguyn. V d tin trnh A ang gi ti nguyn R, tin trnh B
yu cu ti nguyn S. Tin trnh C gi U, yu cu T, tin trnh D gi T, yu cu U. Tp hp tin
trnh {C,D} gi l tnh trng tc nghn.
Hnh 3.31: m hnh th cp pht ti nguyn
Hnh 3.32: mt v d v tc nghn
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
84
3.5.3 Cc phng php x l tc nghn v ngn chn tc nghn
* Cc phng php x l tc nghn
+ S dng mt thut ton cp pht ti nguyn no m bo m khng bao gi xy ra tc nghn.
+ Hoc cho php xy ra tc nghn v tm cch sa cha tc nghn.
+ Hoc b qua vic x l tc nghn, xem nh h thng khng bao gi xy ra tc nghn. Thng
p dng phng php ny khi h thng rt t khi b tc nghn v chi ph kim tra tc nghn cao
(UNIX v WINDOWS s dng phng php ny)
* Ngn chn tc nghn
khng xy ra tc nghn, cn bo m ti thiu mt trong 4 iu kin nu trn khng xy
ra:
+ iu kin 1 gn nh khng th trnh c iu kin ny v bn cht ti nguyn gn nh c nh.
+ iu kin 2 khng xy ra, th c th p dng mt trong hai nguyn tc sau :
- Tin trnh phi yu cu tt c cc ti nguyn cn thit trc khi cho bt u x l. Phng php
ny gp kh khn l h iu hnh kh c th bit trc cc ti nguyn tin trnh cn s dng v
nhu cu ti nguyn cn ph thuc vo qu trnh tin trnh thc hin. Ngoi ra nu cho tin trnh
chim gi sn cc ti nguyn cha cn s dng ngay th vic s dng ti nguyn s km hiu qu.
- Khi tin trnh yu cu mt ti nguyn mi v b t chi, n phi gii phng cc ti nguyn ang
chim gi , sau li c cp pht tr li cng ln vi ti nguyn mi. Phng php ny s gp
kh khn trong vic bo v tnh ton vn d liu ca h thng.
+ iu kin 3 khng xy ra, h iu hnh cn cho php h thng c thu hi ti nguyn t cc
tin trnh b kho v cp pht tr li cho tin trnh khi n thot khi tnh trng b kha. Tuy nhin
vi mt s loi ti nguyn, vic thu hi s rt kh khn v vi phm s ton vn d liu.
+ iu kin 4 khng xy ra, c th cp pht ti nguyn theo mt s phn cp nh sau :
Gi R = {R1, R2,...,Rm} l tp cc loi ti nguyn. Cc loi ti nguyn c nh s th t . V
d : F(a) = 2, F(my in) = 12,
Khi tin trnh ang chim gi ti nguyn Ri th ch c th yu cu cc ti nguyn Rj nu F(Rj) >
F(Ri).
Ta c th trnh tc nghn khi cp pht ti nguyn bng cch s dng gii thut cp pht ti
nguyn nh sau:
3.5.4 Gii thut cp pht ti nguyn (gii thut banker)
3.5.4.1 Gii thut xc nh trng thi an ton
Nu h thng c th tha mn cc nhu cu ti nguyn ti a ca mi tin trnh theo mt th t cp
pht no m khng b tc nghn th gi l h thng trng thi l an ton. H thng trng
thi khng an ton c th dn n tnh trng tc nghn. Ta c gii thut xc nh trng thi an ton
nh sau:
int NumResources;//s ti nguyn, mt ti nguyn c th c nhiu th hin (instance)
int NumProcs;//s tin trnh trong h thng
int Available[NumResources]; // Available[r]= s lng cc th hin cn t do ca ti nguyn r
int Max[NumProcs, NumResources]; //Max[p,r]= nhu cu ti a ca tin trnh p v ti nguyn r
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
85
int Allocation[NumProcs, NumResources];// Allocation[p,r] = s ti nguyn r cp pht cho tin
trnh p
int Need[NumProcs, NumResources]; // Need[p,r] = Max[p,r] - Allocation[p,r]= s ti nguyn r
m tin trnh p cn cn s dng
int Finish[NumProcs] = false; //Finish[p]=true l tin trnh p thc thi xong;
B1.Tm tin trnh i tho cc iu kin sau:
- Tin trnh i cha thc thi xong:
Finish[i] = false
- Mi nhu cu v ti nguyn ca tin trnh i u c th p ng:
Need[i,j] <= Available[j], vi mi ti nguyn j
Nu khng c tin trnh i nh th th n bc 3, nu c xung bc 2
B2. Cp pht mi ti nguyn m tin trnh i cn
- Cp pht ti nguyn cho tin trnh i.
Allocation[i,j]= Allocation[i,j]+Need[i,j];
j
need[i,j]=0 ;
j
Available[j]= Available[j] - Need[i,j];
- nh du tin trnh i thc hin xong
Finish[i] = true;
- Thu hi li tt c ti nguyn cp cho tin trnh i, cp nht li s ti nguyn j kh dng
Available[j]= Available[j] + Allocation[i,j];
- Quay li bc 1
B3. Nu Finish[i] = true vi mi i, th h thng trng thi an ton, ngc li l khng an ton.
3.5.4.2 Gii thut Banker
Khi c tin trnh yu cu cc ti nguyn, h iu hnh th cp pht, sau xc nh h thng c
an ton khng (dng gii thut xc nh trng thi an ton). Nu h thng an ton th cp pht thc
s cc ti nguyn m tin trnh yu cu, ngc li tin trnh phi i.
Gi s tin trnh Pi yu cu kr th hin ca ti nguyn r. Gii thut cp pht c thc hin nh
sau:
B1. Nu kr <= Need[i,r] vi mi r, n bc 2, ngc li, xy ra tnh hung li
B2. Nu kr <= Available[r] vi mi r, n bc 3 , ngc li Pi phi ch
B3. Gi s h thng cp pht cho Pi cc ti nguyn m n yu cu v cp nht tnh trng h
thng nh sau:
Available[r]=Available[r]-kr; vi mi r
Allocation[i,r] =Allocation[i,r]+ kr; vi mi r
Need[i,r] = Need[i,r] - kr; vi mi r
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
86
B4: Kim tra trng thi an ton ca h thng.
Dng gii thut xc nh trng thi an ton xc nh trng thi ca h thng sau khi th
cp ti nguyn cho Pi. Nu trng thi l an ton th cc ti nguyn s c cp pht tht s cho
Pi. Ngc li, Pi phi ch.
V d gi s tnh trng hin hnh ca h thng c m t nh trong bng di y. Ct Max l
nhu cu ti a v mi ti nguyn ca mi tin trnh, Allocation l s lng ca mi loi ti
nguyn cp cho mi tin trnh, Available l s lng ca mi loi ti nguyn cn c th s
dng.
Nu tin trnh P2 yu cu 4 R1, 1 R3. hy cho bit yu cu ny c th p ng m khng xy ra
deadlock hay khng?
Max Allocation Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 3 2 2 1 0 0 4 1 2
P2 6 1 3 2 1 1
P3 3 1 4 2 1 1
P4 4 2 2 0 0 2
p dng Gii thut banker
+ B0: Tnh Need l nhu cu cn li v mi ti nguyn j ca mi tin trnh i:
Need[i,j]=Max[i,j]-Allocation[i,j]
Need Allocation Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 2 2 2 1 0 0 4 1 2
P2 4 0 2 2 1 1
P3 1 0 3 2 1 1
P4 4 2 0 0 0 2
+ B1+B2: yu cu ti nguyn ca P2 tho k B1, B2.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
87
+ B3: Th cp pht cho P2, cp nht tnh trng h thng
Need Allocation Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 2 2 2 1 0 0 0 1 1
P2 0 0 1 6 1 2
P3 1 0 3 2 1 1
P4 4 2 0 0 0 2
+ B4: Kim tra trng thi an ton ca h thng (dng gii thut xc nh trng thi an ton). Ln
lt chn tin trnh th cp pht:
- Chn P2, th cp pht, g/s P2 thc thi xong thu hi:
Available[j]= Available[j] + Allocation[i,j];
Need Allocation Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 2 2 2 1 0 0 6 2 3
P2 0 0 0 0 0 0
P3 1 0 3 2 1 1
P4 4 2 0 0 0 2
+ Chn P1
Need Allocation Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 0 0 0 0 0 0 7 2 3
P2 0 0 0 0 0 0
P3 1 0 3 2 1 1
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
88
P4 4 2 0 0 0 2
+ Chn P3:
Need Allocation Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 0 0 0 0 0 0 9 3 4
P2 0 0 0 0 0 0
P3 0 0 0 0 0 0
P4 4 2 0 0 0 2
+ Chn P4:
Need Allocation Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 0 0 0 0 0 0 9 3 6
P2 0 0 0 0 0 0
P3 0 0 0 0 0 0
P4 0 0 0 0 0 0
Mi tin trnh c cp pht ti nguyn vi yu cu cao nht, nn trng thi ca h thng l an
ton, do c th cp pht cc ti nguyn theo yu cu ca P2.
3.5.5 Gii thut pht hin tc nghn
Nu khi tin trnh yu cu ti nguyn m h thng c cp pht th tnh trng tc nghn c th xy
ra, khi h thng cn cung cp gii thut pht hin tc nghn v gii thut phc hi tnh trng
trc khi tc nghn. Ta c hai loi ti nguyn, mi loi s c gii thut pht hin tc nghn tng
ng.
a/ Ti nguyn ch c mt th hin
Dng th i ti nguyn (wait-for graph), th ny c xy dng t th cp pht ti
nguyn (resource allocation graph) bng cch b nhng nh biu din loi ti nguyn, khi mt
cnh t PI ti PJ ngha l PJ ang i PI gii phng mt ti nguyn m PJ cn. H thng b tc
nghn nu v ch nu th i ti nguyn c chu trnh, do pht hin tc nghn ta ch cn
dng mt gii thut pht hin chu trnh (xem l thuyt th).
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
89
V d: Cc tin trnh ang chim gi v ng thi yu cu cc ti nguyn nh cho trong bng di
y. Hi h thng c b tc nghn khng?
Tin trnh Chim gi Yu cu
P1 R1 R2
P2 R3, R4 R1
P3 R5 R4
P4 R2 R5
P5 R3
HD:Xy dng th i ti nguyn:
Do th c chu trnh nn h thng b tc nghn.
b/ Ti nguyn c nhiu th hin
th i ti nguyn khng th p dng cho trng hp ny. Ta c th p dng gii thut sau
pht hin tc nghn (kh ging gii thut cp pht ti nguyn) :
Bc 1: Chn Pi u tin sao cho c yu cu ti nguyn c th c p ng, nu khng c th
h thng b tc nghn, ngc li xung Bc 2
Bc 2: Th cp pht ti nguyn cho Pi v kim tra trng thi h thng, nu h thng an ton th
ti Bc 3, ngc li th quay ln Bc 1 tm Pi k tip.
Bc 3: Cp pht ti nguyn cho Pi. Nu tt c Pi c p ng th h thng khng b tc nghn,
ngc li quay li Bc 1.
Gii thut pht hin tc nghn c th c gi mi khi mt yu cu cp pht ti nguyn khng
c p ng ngay, khi c th xc nh c tp hp cc tin trnh b tc nghn v cng xc
nh c tin trnh gy ra tc nghn nhng s tn nhiu thi gian khi gi gii thut qu nhiu ln
nh vy. Cch khc l gi gii thut theo mt chu k nh trc, v d 1 gi gi mt ln hoc gi
khi hiu sut s dng CPU di 40%
R1
P1
R3 R4
P5
P2 P3
P4
R2 R5
th th cp pht ti nguyn
theo yu cu
P5
P1
P2
P3
P4
th i ti nguyn
R1
P1
R3 R4
P5
P2
P3
P4
R2 R5
th cp pht ti nguyn
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
90
3.5.6 Hiu chnh tc nghn
Khi pht hin c tc nghn, c hai la chn chnh hiu chnh tc nghn :
a/ Hy tin trnh trong tnh trng tc nghn:
Hy tt c cc tin trnh trong tnh trng tc nghn hay hy tng tin trnh lin quan cho n khi
khng cn chu trnh gy tc nghn (tin trnh b hy s b thu hi tt c ti nguyn c cp
pht). chn c tin trnh thch hp b hy, phi da vo cc yu t nh u tin, thi gian
x l, s lng ti nguyn ang chim gi , s lng ti nguyn cn yu cu thm...
b/ Thu hi ti nguyn:
C th hiu chnh tc nghn bng cch thu hi mt s ti nguyn t cc tin trnh v cp pht cc
ti nguyn ny cho nhng tin trnh khc cho n khi loi b c chu trnh tc nghn. Khi thu
hi ti nguyn cn gii quyt 3 vn sau:
+ Chn la mt nn nhn: tin trnh no s b thu hi ti nguyn? v thu hi nhng ti nguyn
no?
+ Tr li trng thi trc tc nghn (rollback): khi thu hi ti nguyn ca mt tin trnh, cn phi
phc hi trng thi ca tin trnh tr li trng thi gn nht trc m cha b tc nghn.
+ Tnh trng i ti nguyn : lm sao bo m rng khng c mt tin trnh no lun lun b
thu hi ti nguyn?
TM TT
+ Tin trnh l mt chng trnh ang x l, mi tin trnh c mt khng gian a ch, mt con tr
lnh, mt tp cc thanh ghi v stack ring. Cc tin trnh ch c th lin lc vi nhau thng qua cc
c ch do h iu hnh cung cp.
+ Mc ch cho nhiu tin trnh hot ng ng thi l tng hiu sut s dng CPU, tng mc
a nhim, tng tc x l.
+ Mt tin trnh c th to nhiu tiu trnh, mi tiu trnh thc hin mt chc nng no v thc
thi ng thi cng bng cch chia s CPU. Cc tiu trnh trong cng mt tin trnh dng chung
khng gian a ch tin trnh nhng c con tr lnh, tp cc thanh ghi v stack ring. Cc tiu trnh
lin lc vi nhau thng qua cc bin ton cc ca tin trnh.
+ Cc trng thi ca tin trnh : New, Ready, Running, Blocked, End
+ Tp lnh ca CPU c phn thnh tp lnh c quyn (cc lnh nu s dng khng chnh xc,
c th nh hng xu n h thng) v tp lnh khng c quyn (khng nh hng ti h thng).
Phn cng ch cho php cc lnh c quyn c thc hin trong ch c quyn. H iu hnh
hot ng trong ch c quyn, cc tin trnh ca ngi dng s hot ng trong ch khng
c quyn
+ H iu hnh qun l cc tin trnh thng qua bng tin trnh, mi mc trong bng gi l khi
qun l tin trnh lu thng tin v mt tin trnh gm c: nh danh ca tin trnh , trng thi tin
trnh, ng cnh ca tin trnh, thng tin giao tip, thng tin thng k.
+ Cc thao tc trn tin trnh: to tin trnh, kt thc tin trnh, tm dng tin trnh, ti kch hot
tin trnh, thay i u tin tin trnh.
+ Mi ti nguyn c qun l bng mt cu trc gi l khi qun l ti nguyn cha cc thng
tin sau : nh danh ti nguyn, trng thi ti nguyn, hng i trn mt ti nguyn, b cp pht.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
91
+ Mt s c tnh ca tin trnh: tnh hng nhp/xut, tnh hng x l, tin trnh tng tc hay
x l theo l, u tin ca tin trnh, thi gian s dng CPU ca tin trnh, thi gian cn li
tin trnh cn hon tt.
+ Tin trnh c iu phi thng qua b iu phi v b phn phi. B iu phi s dng mt
gii thut thch hp la chn tin trnh c x l tip theo. B phn phi chu trch nhim cp
nht ng cnh ca tin trnh b tm ngng v trao CPU cho tin trnh c chn bi b iu phi
tin trnh thc thi.
+ Mc tiu ca b iu phi: s cng bng, tnh hiu qa, thi gian p ng hp l, thi gian lu
li trong h thng, thng lng ti a. Cc nguyn l iu phi: iu phi c quyn, iu phi
khng c quyn.
+ Thi im thc hin iu phi: tin trnh chuyn t trng thi running sang trng thi blocked,
hoc tin trnh chuyn t trng thi running sang trng thi ready, hoc tin trnh chuyn t trng
thi blocked sang trng thi ready, hoc tin trnh kt thc, hoc tin trnh c u tin cao hn
xut hin.
+ thc hin iu phi, h iu hnh s dng ba loi danh sch l: danh sch tc v , danh sch
sn sng, danh sch ch i. Cc thut ton iu phi: FIFO, Round Robin, u tin, SJF, nhiu
mc u tin,iu phi x s.
+ C ch lin lc gia cc tin trnh: lin lc bng tn hiu, lin lc bng ng ng, lin lc qua
vng nh chia s, lin lc bng thng ip, lin lc qua socket.
+ ng b cc tin trnh, min gng. Cc gii php ng b: semaphore, monitor, trao i thng
ip.
+ Tnh trng tc nghn, iu kin xut hin tc nghn, cc phng php x l tc nghn. Gii
thut cp pht ti nguyn.
CU HI V BI TP
1. Xt gii php phn mm do Dekker ngh t chc truy xut c quyn cho hai tin trnh.
Hai tin trnh P0, P1 chia s cc bin sau :
int turn; // n phin i hay j (i,j=0..1)
int flag [2]; // khi ng l FALSE
//cu trc tin trnh Pi
While (TRUE)
{
flag[i] = TRUE;
while (flag[j])
if (turn == j)
{
flag[i]= FALSE;
while (turn == j) ;
flag[i]= TRUE;
}
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
92
critical_section();
turn= j; flag[i]= FALSE;
non_critical_section();
}
Gii php ny c tha mn 4 yu cu ca bi ton min gng khng ?
2. Xt gii php ng b ho sau:
while (TRUE)
{
int j = 1-i;
flag[i]= TRUE; turn = i;
while (turn == j && flag[j]==TRUE);
critical-section ();
flag[i] = FALSE;
Noncritical-section ();
}
y c phi l mt gii php bo m c c quyn truy xut khng ?
3. Gi s mt my tnh khng c lnh TSL, nhng c lnh swap hon i ni dung ca hai t nh
bng mt thao tc c quyn :
void swap(int &a, int &b)
{
int temp=a;
a= b; b= temp;
}
S dng lnh ny c th t chc truy xut c quyn khng ? Nu c xy dng cu trc chng
trnh tng ng.
4. Trong gii php peterson b bin turn c c khng?
5. Pht trin gii php Peterson cho nhiu tin trnh
6. Chng t rng nu cc lnh Down v Up trn semaphore khng thc hin mt cch khng th
phn chia, th khng th dng semaphore gii quyt bi ton min gng.
7. Xt hai tin trnh x l on chng trnh sau:
process P1 { A1 ; A2 }
process P2 { B1 ; B2 }
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
93
ng b ho hot ng ca hai tin trnh ny sao cho c A1 v B1 u hon tt trc khi A2 hay
B2 bt u .
8. Tng qut ho bai 6: cho cc tin trnh x l on chng trnh sau:
process P1 { for ( i = 1; i <= 100; i ++) Ai ;}
process P2 { for ( j = 1; j <= 100; j ++) Bj ;}
ng b ho hot ng ca hai tin trnh ny sao cho c vi k bt k ( 2 <= k <= 100), Ak ch c
th bt u khi B(k-1) kt thc, v Bk ch c th bt u khi A(k-1) kt thc.
9. S dng semaphore vit li chng trnh sau theo m hnh x l ng hnh:
w = x1 * x2 (1) v = x3 * x4 (2) y = v * x5 (3) z = v * x6 (4)
y = w * y (5) z = w * z (6) ans = y + z (7)
(x1,x2,x3,x4,x5,x6 l cc hng s)
10. Vit li bi 9 dng monitor
11. Xt hai tin trnh sau:
process A
{ while (1) na = na +1;}
process B
{ while (1) nb = nb +1;}
a) ng b ho x l ca hai tin trnh trn, sao cho ti bt k thi im no cng c nb < na <=
nb +10
b) Nu gim iu kin ch l na <= nb +10, gii php ca bn s c sa cha nh th no ?
c) Gii php ca bn c cn ng nu c nhiu tin trnh loi A v B cng thc hin?
12. Bi ton Ngi sn xut Ngi tiu th (Producer-Consumer)
Hai tin trnh cng chia s mt b m c kch thc gii hn. Mt tin trnh to d liu, t d
liu vo b m (ngi sn xut) v mt tin trnh ly d liu t b m x l (ngi tiu
th).
Hai tin trnh cn tho cc iu kin sau :
- K1: Tin trnh sn xut khng c ghi d liu vo b m y.
- K2: Tin trnh tiu th khng c c d liu t b m ang trng.
- K3: Hai tin trnh cng loi hoc khc loi u khng c truy xut b m cng lc.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
94
13. Bi ton Readers-Writers
Khi cho php nhiu tin trnh truy xut c s d liu dng chung cc h qun tr CSDL cn m
bo cc iu kin sau :
- k1: khi c reader th khng c writer nhng c th c cc reader khc tx dl
- k2: Khi c writer th khng c writer hoc reader no khc tx dl.
(Cc iu kin ny cn c m bo tnh nht qun ca d liu.)
14. Bi ton To phn t H2O
ng b hot ng ca mt phng th nghim s dng nhiu tin trnh ng hnh sau to cc
phn t H2O:
MakeH()
{
while (true)
Make-Hydro(); // to 1 nguyn t H
}
MakeO()
{
while (true)
Make-Oxy(); //to 1 nguyn t O
}
/* Tin trnh MakeWater hot ng ng hnh vi cc tin trnh MakeH, MakeO, ch c 2 H
v 1 O to H2O */
MakeWater()
{
while (True)
Make-Water(); //To 1 phn t H2O
}
15. Xt mt gii php semaphore ng cho bi ton Dining philosophers :
#define N 5
#define LEFT (i-1)%N
#define RIGHT (i+1)%N
#define THINKING 0
#define HUNGRY 1
#define EATING 2
int state[N];
semaphore mutex = 1;
semaphore s[N];//gan tri ban dau =0
//tin trnh m phng trit gia th i
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
95
void philosopher( int i) // i l trit gia th i : 0..N-1
{
while (TRUE)
{
think(); // Suy ngh
take_forks(i); // yu cu n khi c 2 na
eat(); // yum-yum, spaghetti
put_forks(i); // t c 2 na ln bn li
}
}
//kim tra iu kin c n
void test ( int i) // i l trit gia th i : 0..N-1
{
if(state[i]==HUNGRY && state[LEFT]!=EATING && state[RIGHT]!= EATING)
{
state[i] = EATING;
up(s[i]);
}
}
//yu cu ly 2 na
void take_forks ( int i) // i l trit gia th i : 0..N-1
{
while (TRUE)
{
down(mutex); // vo min gng
state[i] = HUNGRY; // ghi nhn trit gia i i
test(i); // c gng ly 2 na
up(mutex); // ra khi min gng
down(s[i]); // ch nu khng c 2 na
}
}
//t 2 na xung
void put_forks ( int i) // i l trit gia th i : 0..N-1
{
while (TRUE)
{
down(mutex); // vo min gng
state[i] = THINKING; // ghi nhn trit gia i n xong
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
96
test(LEFT); // kim tra ngi bn tri c th n?
test(RIGHT); // kim tra ngi bn phi c th n?
up(mutex); // ra khi min gng
}
}
a) Ti sao phi t state[i] = HUNGRY trong take_forks ?
b) Gi s trong put_forks, lnh gn state[i] = THINKING c thc hin sau hai lnh test(LEFT),
test(RIGHT). iu ny nh hng th no n gii php cho 3 trit gia? Cho 100 trit gia?
16. Mt ca hiu ct tc c mt th, mt gh ct tc v N gh cho khch i. Nu khng c
khch, th ct tc s ngi vo gh ct tc v ng thip i. Khi mt khch hng vo tim, anh ta
phi nh thc ngi th. Nu mt khch hng vo tim khi ngi th ang bn ct tc cho khch
hng khc, ngi mi vo s ngi ch nu c gh i trng, hoc ri khi tim nu c N ngi
i (ht gh). Xy dng mt gii php vi semaphore thc hin ng b ho hot ng ca th
v khch hng trong ca hiu ct tc ny.
17. Bi ton Cy cu c
Ngi ta ch c cho php ti a 3 xe lu thng ng thi qua mt cy cu rt c. Hy xy dng
th tc ArriveBridge(int direction) v ExitBridge() kim sot giao thng trn cu sao cho :
- Ti mi thi im, ch cho php ti a 3 xe lu thng trn cu.
- Ti mi thi im, ch cho php ti a 2 xe lu thng cng hng trn cu.
Mi chic xe khi n u cu s gi ArriveBridge(direction) kim tra iu kin ln cu, v khi
qua cu c s gi ExitBridge() bo hiu kt thc. Gi s hot ng ca mi chic xe c
m t bng mt tin trnh Car() sau y:
Car(int direction) /* direction xc nh hng di chuyn ca mi chic xe.*/
{
ArriveBridge(direction); //ti cu
OnBridge(); //ln cu
ExitBridge();// Qua cu
}
18. Bi ton Qua sng
vt qua sng, cc nhn vin Microsof v cc Linux hacker cng s dng mt bn sng v
phi chia s mt s thuyn c bit. Mi chic thuyn ny ch cho php ch 1 ln 4 ngi, v phi
c 4 ngi mi khi hnh c. bo m an ton cho c 2 pha, cn tun th cc lut sau :
a. Khng chp nhn 3 nhn vin Microsoft v 1 Linux hacker trn cng mt chic thuyn.
b. Ngc li, khng chp nhn 3 Linux hacker v 1 nhn vin Microsoft trn cng mt chic
thuyn.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
97
c. Tt c cc trng hp kt hp khc u hp php.
d. Thuyn ch khi hnh khi c 4 hnh khch.
Cn xy dng 2 th tc HackerArrives() v EmployeeArrives() c gi tng ng bi 1 hacker
hoc 1 nhn vin khi h n b sng kim tra iu kin c cho php h xung thuyn khng ?
Cc th tc ny s sp xp nhng ngi thch hp c th ln thuyn. Nhng ngi c ln
thuyn khi thuyn cha y s phi ch n khi ngi th 4 xung thuyn mi c th khi hnh
qua sng. (Khng quan tm n s lng thuyn hay vic thuyn qua sng ri tr liXem nh
lun c thuyn sp xp theo cc yu cu hp l)
Gi s hot ng ca mi hacker c m t bng mt tin trnh Hacker() sau y:
Hacker()
{
RuntoRiver(); // i n b sng
HackerArrives (); // Kim tra iu kin xung thuyn
CrossRiver(); // Khi hnh qua sng
}
v hot ng ca mi nhn vin c m t bng mt tin trnh Employee() sau y:
Employee()
{
RuntoRiver(); // i n b sng
EmployeeArrives (); // Kim tra iu kin xung thuyn
CrossRiver(); // Khi hnh qua sng
}
19. Bi ton iu phi hnh khch xe bus ti mt trm dng
Mi xe bus c 10 ch, 4 ch dnh cho khch ngi xe ln, 6 ch dnh cho khch bnh thng, khi
xe y khch th s khi hnh. C th c nhiu xe v nhiu hnh khch vo bn cng lc, nguyn
tc iu phi s xp khch vo y mt xe, cho xe ny khi hnh ri mi iu phi cho xe khc.
Gi s hot ng iu phi khch cho 1 chic xe bus c m t qua tin trnh GetPassengers();
hot ng ca mi loi hnh khch c m t bng tin trnh WheelPassenger() v
NonWheelPassenger(). Hy sa cha cc on code, s dng semaphore ng b ho .
GetPassenger() //chng trnh iu phi khch cho 1 xe
{
ArriveTerminal(); // tip nhn mt xe vo bn
OpenDoor(); // m ca xe
for (int i=0; i<4; i++) // tip nhn cc khch ngi xe ln
{
ArrangeSeat(); // a 1 khch ngi xe ln vo ch
}
for (int i=0; i<6; i++) // tip nhn cc khch bnh thng
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
98
{
ArrangeSeat(); // a 1 khch bnh thng vo ch
}
CloseDoor(); // ng ca xe
DepartTerminal(); // cho mt xe ri bn
}
WheelPassenger() //chng trnh to khch ngi xe ln
{
ArriveTerminal(); // n bn
GetOnBus(); // ln xe
}
NonWheelPassenger() // chng trnh to khch bnh thng
{
ArriveTerminal(); // n bn
GetOnBus(); // ln xe
}
20. Nh my sn xut thit b xe hi, c 2 b phn hot ng song song
- B phn sn xut 1 khung xe :
MakeChassis()
{
Produce_chassis();// to khung xe
}
- B phn sn xut 1 bnh xe :
Make_Tires()
{
// to bnh xe v gn vo khung xe
Produce_tire();
Put_tire_to_Chassis();
}
Hy ng b hot ng trong vic sn xut xe hi theo nguyn tc sau :
- Sn xut mt khung xe, trc khi to bnh xe.
- Cn c 4 bnh xe cho 1 khung xe c sn xut ra, sau mi tip tc sn xut khung xe
khc
21. Thut ton cc trit gia n ti sau ng hay sai?
semaphore s[5]; //c cc gi ban tr u bng 1
//tin trnh trit gia th i:
{
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
99
down(s[i]); //ly a
down(s[(i+1)%5]); //ly a ca ngi bn cnh
eat();
up(s[i]); //b a
up(s[(i+1)%5]); //tr a cho ngi bn cnh
}
22. Xt trng thi h thng:
Max Allocation Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 3 2 2 1 0 0 4 1 2
P2 6 1 3 2 1 1
P3 3 1 4 2 1 1
P4 4 2 2 0 0 2
Nu tin trnh P2 yu cu 4 cho R1, 1 cho R3. hy cho bit yu cu ny c th p ng m bo
m khng xy ra tnh trng deadlock hay khng ?
23. Xt trng thi h thng sau:
Max Allocation Available
A B C D A B C D A B C D
P1 0 0 1 2 0 0 1 2 1 5 2 0
P2 1 7 5 0 1 0 0 0
P3 2 3 5 6 1 3 5 4
P4 0 6 5 2 0 6 3 2
P5 0 6 5 6 0 0 1 4
a) Cho bit ni dung ca bng Need.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
100
b) H thng c trng thi an ton khng?
c) Nu tin trnh P2 c yu cu ti nguyn ( 0,4,2,0), yu cu ny c c p ng tc thi
khng?
TI LIU THAM KHO
[1]. Gary J. Nutt, University of Colorado. Centralized And Distributed Operating Systems.
Second Edition, 2000.
[2]. Robert Switzer. Operating Systems, A Practical Approach. Prentice-Hall International, Inc.
1993.
[3]. Andrew S. Tanenbaum. Modern Operating Systems. Prentice-Hall International, Inc. Second
Edition, 2001.
[4]. Abraham Silberschatz & Peter Baer Galvin. Operating System concepts. John Wiley & Sons,
Inc. Fifth Edition, 1999.
[5]. H. M. Deitel. Operating Systems. Addison-Wesley Inc. Second Edition, 1999.
[6]. Trn Hnh Nhi & L Khc Nhin n & Hong Kim. Gio trnh h iu hnh (tp 1 & 2).
HKHTN 2000.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
101
CHNG 4
QUN L B NH
Chng QUN L B NH" s gii thiu v gii thch cc vn sau:
4.1 Cc vn pht sinh khi qun l b nh.
4.2 Cc m hnh cp pht b nh.
4.3 B nh o
4.1 CC VN PHT SINH KHI QUN L B NH
+ Chuyn i a ch tng i trong chng trnh thnh a ch thc trong b nh chnh.
+ Qun l b nh cp pht v cha cp pht.
+ Cc k thut cp pht b nh sao cho:
- Ngn chn cc tin trnh xm phm n vng nh c cp pht cho tin trnh khc.
- Cho php nhiu tin trnh c th dng chung mt phn b nh ca nhau.
- M rng b nh c th lu tr c nhiu tin trnh ng thi.
4.1.1 Chuyn i a ch tng i sang tuyt i
Cc a ch trong chng trnh thc thi (dng exe) l a ch tng i, v cn c chuyn i
cc a ch ny thnh cc a ch tuyt i trong b nh chnh. Vic chuyn i c th xy ra vo
mt trong nhng thi im sau:
+ Thi im bin dch (compile time):
Nu ti thi im bin dch, c th bit v tr m tin trnh s c np vo trong b nh, trnh
bin dch c th pht sinh ngay m vi cc a ch tuyt i. Tuy nhin, nu v sau c s thay i
v tr ca chng trnh, cn phi bin dch li chng trnh. V d cc chng trnh .com chy
trn h iu hnh MS-DOS c m tuyt i ngay khi bin dch.
+ Thi im np (load time):
Nu ti thi im bin dch, cha th bit v tr m tin trnh s c np vo trong b nh, trnh
bin dch ch pht sinh m tng i. Khi np chng trnh vo b nh, h iu hnh s chuyn
cc a ch tng i thnh a ch tuyt i do bit v tr bt u lu tr tin trnh. Khi c s
thay i v tr lu tr, cn np li chng trnh thc hin li vic chuyn i a ch, khng cn
bin dch li chng trnh.
+ Thi im x l (execution time):
Nu c nhu cu di chuyn tin trnh t vng nh ny sang vng nh khc trong qu trnh tin trnh
x l, th vic chuyn i a ch s c thc hin vo lc tin trnh thc thi. Chc nng chuyn
i a ch do phn cng cung cp gi l MMU (memory management unit). Cc h iu hnh
thng dng vic chuyn i theo cch ny.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
102
4.1.2 Khng gian a ch o v khng gian a ch vt l
+ a ch o (a ch logic): l a ch do b x l (CPU) to ra.
+ a ch vt l (a ch physic): l a ch thc trong b nh chnh, a ch vt l cn gi l a
ch tuyt i/a ch thc.
+ Khng gian a ch o ca tin trnh: l tp hp tt c cc a ch o ca mt tin trnh.
+ Khng gian i ch vt l ca tin trnh: l tp hp tt c cc a ch vt l tng ng vi cc
a ch o.
Khi chng trnh np vo b nh cc a ch tng i trong chng trnh c CPU chuyn
thnh a ch o, khi thc thi, a ch o c h iu hnh kt hp vi phn cng MMU chuyn
thnh a ch vt l .Tm li ch c khi nim a ch o nu vic chuyn i a ch xy ra vo
thi im x l, khi tin trnh ch thao tc trn cc a ch o, a ch vt l ch c xc nh
khi thc hin truy xut b nh vt l.
Hnh 4.1: CPU gi a ch o ti MMU, MMU chuyn a ch o thnh a ch vt l
4.1.3 Qun l b nh cp pht v cha cp pht
H iu hnh cn lu tr thng tin v phn b nh cp pht v phn b nh cha cp pht. Nu
cp pht th cp cho tin trnh no. Khi cn cp pht b nh cho mt tin trnh th lm sao tm
c phn b nh trng thch hp nhanh chng v khi b nh b phn mnh th cn dn b nh
li tn dng b nh v tin trnh thc thi nhanh hn.
4.1.3.1 Cc phng php qun l vic cp pht b nh:
a/ S dng dy bit : bt th i bng 1 l khi th i cp pht, bng 0 l cha cp pht.
b/ S dng danh sch lin kt: mi nt ca danh sch lin kt lu thng tin mt vng nh cha
tin trnh (P) hay vng nh trng gia hai tin trnh (H).
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
103
Hnh 4.2: qun l vic cp pht b nh bng dy bit hoc danh sch lin kt
Trc khi tin trnh X kt thc, c 4 trng hp c th xy ra v khi tin trnh X kt thc, h iu
hnh cn gom nhng nt trng gn nhau.
Hnh 4.3: cc trng hp c th xy ra trc khi tin trnh X kt thc
4.1.3.2 Cc thut ton chn mt on trng:
+ First-fit: chn on trng u tin ln.
+ Best-fit: chn on trng nh nht nhng ln tha mn nhu cu.
+ Worst-fit : chn on trng ln nht.
4.2 CC M HNH CP PHT B NH
C hai m hnh dng cp pht b nh cho mt tin trnh l:
+ Cp pht lin tc: tin trnh c np vo mt vng nh lin tc.
+ Cp pht khng lin tc: tin trnh c np vo mt vng nh khng lin tc
4.2.1 M hnh cp pht lin tc
C hai m hnh cp pht b nh lin tc l m hnh Linker-Loader hoc m hnh Base & Limit.
4.2.1.1 M hnh Linker_Loader:
Chng trnh c np vo mt vng nh lin tc ln cha ton b chng trnh. H iu
hnh s chuyn cc a ch tng i v a ch tuyt i (a ch vt l ) ngay khi np chng
trnh, theo cng thc:
a ch tuyt i = a ch bt u np tin trnh + a ch tng i.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
104
V d: xt chng trnh P.EXE c lnh Jump 0X200, . Gi s chng trnh c np ti a ch
0X300, khi a ch tng i 0X200 s c chuyn thnh a ch vt l l
0X300+0X200=0X500
Hnh 4.4: Mt v d v chuyn i a ch tng i thnh a ch vt l trong m hnh linker-
loader
Chng trnh khi np vo b nh cho thc thi th gi l tin trnh, vy trng hp ny cc a ch
trong tin trnh l a ch tuyt i, cn a ch trong chng trnh l a ch tng i.
Nhn xt:
+ V vic chuyn i a ch ch thc hin vo lc np nn sau khi np khng th di chuyn tin
trnh trong b nh
+ Do khng c c ch kim sot a ch m tin trnh truy cp, nn khng th bo v mt tin
trnh b mt tin trnh khc truy xut b nh ca tin trnh mt cch tri php.
4.2.1.2 M hnh Base & Limit
Ging nh m hnh Linker-Loader nhng phn cng cn cung cp hai thanh ghi, mt thanh ghi
nn (base register) v mt thanh ghi gii hn (limit register). Khi mt tin trnh c cp pht
vng nh, h iu hnh ct vo thanh ghi nn a ch bt u ca vng nh cp pht cho tin trnh,
v ct vo thanh ghi gii hn kch thc ca tin trnh.
Hnh 4.5: mt v d v m hnh base&limit
Khi tin trnh thc thi, mi a ch o (a ch o cng chnh l a ch tng i) s c MMU
so snh vi thanh ghi gii hn bo m tin trnh khng truy xut ngoi phm vi vng nh
JUMP
0X5000
HH
B nh vt l
JUMP
0X2000
P.EXE
0X3000
(base)
0X6000
(bound)
0X3000
0X0000
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
105
c cp cho n. Sau a ch o c cng vi gi tr trong thanh ghi nn cho ra a ch
tuyt i trong b nh.
Hnh 4.6: c ch MMU trong m hnh base&limit
Nhn xt:
+ C th di chuyn cc chng trnh trong b nh v do tin trnh c np dng a ch o, khi
tin trnh c di chuyn n mt v tr mi, h iu hnh ch cn np li gi tr cho thanh ghi
nn, v vic chuyn i a ch c MMU thc hin vo thi im x l.
+ C th c hin tng phn mnh ngoi vi (external fragmentation ): tng vng nh trng
tho mn yu cu, nhng cc vng nh ny li khng lin tc nn khng cp cho mt tin
trnh khc. C th p dng k thut dn b nh (memory compaction ) kt hp cc mnh b
nh nh ri rc thnh mt vng nh ln lin tc, tuy nhin k thut ny i hi nhiu thi gian x
l. V d v s phn mnh ngoi vi ca b nh, cc tin trnh lin tc vo ra b nh, sau mt thi
gian s li cc vng nh nh m khng th cha bt k tin trnh no.
Hnh 4.7: mt v d v s phn mnh ngoi vi trong m hnh cp pht lin tc
* Vn ny sinh khi kch thc ca tin trnh tng trng trong qa trnh x l m khng
cn vng nh trng gn k m rng vng nh cho tin trnh. C hai cch gii quyt:
+ Di ch tin trnh: di chuyn tin trnh n mt vng nh khc ln tha mn nhu cu
tng trng ca tin trnh.
+ Cp pht d vng nh cho tin trnh : cp pht d phng cho tin trnh mt vng nh ln hn
yu cu ban u ca tin trnh.
D D D D D
C C
E E E
B B B B B B B
A A A A A A
F
OS OS OS OS OS OS OS OS
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
106
Hnh 4.8: dnh ch trng tin trnh c th pht trin trong m hnh cp pht lin tc
+ Tin trnh lun c lu tr trong b nh sut qu trnh x l ca n nn tnh a chng ca h
iu hnh s b hn ch bi kch thc b nh v kch thc ca cc tin trnh trong b nh. Cch
gii quyt l khi tin trnh b kha (i ti nguyn, i mt s kin,) hoc tin trnh s dng ht
thi gian CPU dnh cho n, n c th c chuyn tm thi ra b nh ph (a,) v sau ny
c np tr li vo b nh chnh tip tc x l (k thut swapping).
trnh tnh trng b nh b phn mnh v do phi cp pht mt vng nh lin tc cho tin trnh,
h iu hnh c th cp pht cho tin trnh nhng vng nh t do bt k, khng cn lin tc.
4.2.2 M hnh cp pht khng lin tc
C ba m hnh cp pht b nh khng lin tc l m hnh phn on, m hnh phn trang v m
hnh phn on kt hp phn trang.
4.2.2.1 M hnh phn on (Segmentation)
Mt chng trnh c ngi lp trnh chia thnh nhiu phn on, mi phn on c ng ngha
khc nhau v h iu hnh c th np cc phn an vo b nh ti cc v tr khng lin tc.
V d: chng trnh chia lm 5 phn on (segment), mi phn on c np vo vng nh
trng c th khng lin tc.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
107
Hnh 4.9: m hnh phn on trong k thut cp pht b nh khng lin tc
* C ch MMU trong k thut phn on:
Khi chng trnh c np vo b nh, MMU ghi cc v tr lu tr v kch thc cc phn on
vo bng phn on cn CPU lm nhim v chuyn i tt c cc a ch tng i trong chng
trnh thnh a ch o.
Phn t th s trong bng phn on gm hai phn (base, limit), base l a ch vt l bt u phn
on s, limit l chiu di ca phn on s. Mi a ch o gm hai phn (s,d) vi s l s hiu phn
on , d l a ch tng i trong phn on s.
chuyn a ch o (s,d) thnh a ch vt l, MMU truy xut phn t th s trong bng phn
on, ly c gi tr limit v base ca phn on s, sau kim tra iu kin (d<limit), nu sai
th thng bo li truy xut a ch khng hp l, nu ng th tnh i ch vt l theo cng thc:
cvl =base + d.
Theo v d trn, gi s tin trnh truy xut a ch o (s,d)=(4,1500) th MMU s thng bo li!.
Nu tin trnh truy xut a ch o (4,100) th MMU s chuyn thnh a ch vt l l
4700+100=4800.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
108
Hnh 4.10: c ch MMU trong m hnh phn on
* Ci t bng phn on:
C th s dng cc thanh ghi lu tr bng phn on nu c t phn on. Nu chng trnh c
nhiu phn on, bng phn on phi c lu trong b nh chnh. Phn cng cn cung cp mt
thanh ghi nn STBR (Segment Table Base Register) lu a ch bt u ca bng phn on v
mt thanh ghi STLR lu s phn on (Segment Table Limit Register) m chng trnh s dng.
Vi mt a ch logic (s,d), trc tin s hiu phn on s c kim tra tnh hp l (s<STLR). K
tip, cng gi tr s vi STBR (STBR+s) c c a ch ca phn t th s trong bng phn
on v i ch vt l cui cng l (base + d)
Hnh 4.11: c ch MMU trong m hnh phn on. s dng thanh ghi STLR v STBR
* Bo v phn on
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
109
V mi phn on do ngi lp trnh xc nh v ngi lp trnh bit c mt phn on cha
nhng g bn trong, do vy h c th ch nh cc thuc tnh bo v thch hp cho mi phn on.
Khi mi phn t ca bng phn on cn c thm mt thnh phn gi l thuc tnh bo v.
MMU s kim tra gi tr ca thuc tnh ny ngn chn cc thao tc x l bt hp l n phn
on. Gi tr ca thuc tnh c th l R (ch c), X (thc thi), W (ghi),
Hnh 4.12: Cu trc mt phn t trong bng phn on c s dng thuc tnh bo v
* Chia s phn on
Mun hai tin trnh dng chung mt phn on no , MMU ch cn gn hai phn t trong hai
bng phn on ca hai tin trnh cng gi tr.
Hnh 4.13: hai tin trnh P1,P2 dng chung phn on 0 (phn on editor)
+ Nhn xt
Trong h thng s dng k thut phn on , hin tng phn mnh ngoi vi vn xy ra khi cc
khi nh trng u qu nh, khng cha mt phn on. u im ca k thut phn on l
m chng trnh v d liu c tch ring thnh nhng khng gian a ch c lp nn d dng
bo v m chng trnh v d dng dng chung d liu hoc hm.
4.2.2.2 M hnh phn trang (Paging)
B nh vt l c chia thnh cc khi c kch thc c nh v bng nhau gi l khung trang
(page frame). Khng gian a ch o cng c chia thnh cc khi c cng kch thc vi khung
trang v gi l trang (page). Khi mt tin trnh c a vo b nh x l, cc trang ca tin
trnh s c ct vo nhng khung trang cn trng, nh vy mt tin trnh kch thc N trang s
cn N khung trang trng.
Limit Base Attribute
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
110
Hnh 4.14: khng gian a ch o oc chia thnh nhiu trang v lu vo cc khung trang
V d mi khung trang 1KB, mt tin trnh 3.5KB s c chia lm 4 trang. Ga s trang 0 c
ct khung trang 5, trang 1 khung trang 7,
Hnh 4.15: s dng bng trang lu cc s hiu khung trang cha trang.
* Cu trc a ch o:
d dng phn tch a ch o thnh s hiu trang v a ch tng i, phn cng qui nh kch
thc ca trang l ly tha ca 2
n
(9<=n<= 13). Nu kch thc ca khng gian a ch o l 2
m
(CPU dng a ch o m bt) v kch thc trang l 2
n
th m-n bit cao ca a ch o s biu din s
hiu trang, v n bit thp biu din a ch tng i trong trang. Khi mi a ch o m bit s c
dng (p,d) vi p chim m-n bit v p l s hiu trang, d chim n bit v l a ch tng i trong
trang p.
a ch o dng (p,d) c m bit
p l s hiu trang v chim m-n bit cao
d l a ch tng i trong trang v chim n bt thp
Page 3
Page 2
Page 1
Page 0
Khng
gian a
ch o
3 2
2 0
1 7
0 5
Bng
trang
7 Page 1 7168
6 6144
5 Page 0 5120
4 4096
3 3072
2 Page 3 2048
1 1024
0 Page 2 0000
Khng gian a ch
vt l
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
111
Hnh 4.16: cu trc a ch o gm hai phn: cc bit cao lu s hiu trang, cc bit thp lu a ch
tng i trong trang.
* C ch MMU trong m hnh phn trang:
Khi chng trnh c np vo b nh, MMU ghi nhn li s hiu khung trang cha trang vo
bng trang (pages table), cn CPU lm nhim v chuyn i tt c cc a ch tng i trong
chng trnh thnh a ch o. Phn t th p trong bng trang lu s hiu khung trang trong b
nh vt l ang cha trang p. chuyn a ch o (p,d) thnh a ch vt l, MMU truy xut
phn t th p trong bng trang, ly c gi tr f l s hiu khung trang cha trang p v t tnh
c i ch vt l = v tr bt u ca khung trang f + d.
Hnh 4.17: c ch MMU trong m hnh phn trang
Theo v d trn, gi s tin trnh truy xut a ch o (p,d) = (3,500), MMU s truy xut phn t
th 3 trong bng trang v bit c trang 3 khung trang 2 v chuyn a ch o thnh a ch vt
l l 2x 2
10
+500 = 2548 (2x 2
10
= 2048 l a ch bt u ca khung trang 2).
Trong thc t, vic chuyn i a ch o (p,d) c MMU thc hin nh sau: MMU truy xut
phn t th p trong bng trang, ly c gi tr f l s hiu khung trang cha trang p v tnh i
ch vt l bng cch chp d vo n bit thp ca a ch vt l v chp f vo (m-n) bit cao ca a
ch vt l.
V d: Mt h thng c a ch o 16 bit dng (p,d) vi p c 4 bt, d c 12 bt (h thng c 16
trang, mi trang 4 KB) . Bt Present/absent =1 ngha l trang hin trong b nh v =0 l b
nh ph.
Xt a ch o 8196
10
= 0010.0000.0000.0100
2
=> p = 0010
2
= 2
10
, d = 0000.0000.0100
2
= 4
10
.
Do trang p=2 khung trang f=110
2
= 6
10
, nn a ch vt l l 0110.0000.0000.0100
2
= 6x2
12
+ 4
= 24580
CPU
p d f d
f
p
B
nh
vt l
a ch o a ch vt l
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
112
Hnh 4.18: c ch chuyn i a ch ca MMU
* Ci t bng trang
Nu bng trang c kch thc nh c th dng mt tp cc thanh ghi ci t bng trang. Nu
bng trang c kch thc ln, cn phi c lu tr trong b nh chnh, v phn cng cung cp
mt thanh ghi PTBR (Page Table Base Register) lu a ch bt u ca bng trang v thanh ghi
PTLR (Page Table Limit Register) lu s phn t trong bng trang.Vi mt a ch logic (p,d),
trc tin s hiu trang p c kim tra tnh hp l (p<PTLR). K tip, cng gi tr p vi PTBR
(PTBR+s) c c a ch ca phn t th p trong bng phn on v MMU truy xut phn t
th p trong bng trang, ly c gi tr f l s hiu khung trang cha trang p v t tnh c
i ch vt l = v tr bt u ca khung trang f + d.
Hnh 4.19: c ch MMU trong m hnh phn trang, s dng hai thanh ghi PTLR v PTBR
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
113
* B nh kt hp (Translation Lookaside Buffers:TLBs)
Trong k thut phn trang, mi ln truy xut n d liu hay ch th u cn hai ln truy xut b
nh: mt cho truy xut n bng trang tm s hiu khung trang v mt cho bn thn d liu. C
th gim bt vic truy xut b nh hai ln bng cch s dng thm b nh kt hp (TLBs). B
nh kt hp c tc truy xut rt nhanh v cho php tm kim song song. Mi thanh ghi trong
b nh kt hp gm mt t kha v mt gi tr, khi a n b nh kt hp mt t kho cn tm,
t kho ny s c so snh cng lc vi cc t kha trong b nh kt hp tm ra gi tr tng
ng.
Trong k thut phn trang, TLBs c s dng lu tr cc s hiu trang c truy cp gn
hin ti nht. Khi tin trnh truy xut mt a ch o, s hiu trang ca a ch s c so snh vi
cc s hiu trang trong TLBs, nu tm thy th s xc nh c ngay s hiu khung trang tng
ng, nu khng c th mi cn tm kim trong bng trang.
Hnh 4.20: c ch MMU trong m hnh phn trang c s dng b nh kt hp.
Hnh 4.21: mt v d v bng trang c thuc tnh bo v (protection) v thuc tnh cp nht
(modified): 1 l mi oc cp nht, 0 l cha cp nht.
V d mt h thng my tnh 32 bit, c kch thc 1 khung trang l 4K. Hi h thng qun l
c tin trnh kch thc ti a l bao nhiu?
HD: My tnh 32 bit => a ch o (p,d) c 32 bit => s bt ca p + s bt ca d = 32, m 1 trang
4K=2
12
bytes => d c 12 bit =>p c 20 bit => 1 bng trang c 2
20
phn t => h thng qun l
c tin trnh c ti a 2
20
trang => kch thc tin trnh ln nht l 2
20
x 2
12
byte = 2
32
byte =4
GB. Nhn xt: My tnh n bit qun l c tin trnh kch thc ln nht l 2
n
byte.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
114
* T chc bng trang
Thng thng h iu hnh cp cho mi tin trnh mt bng trang v phi dng bng trang kch
thc ln qun l tin trnh ln nht nn rt tn b nh. C ba gii php cho vn ny l
s dng phn trang a cp hoc bng trang bm hoc bng trang nghch o.
a/ Phn trang a cp
Bn thn bng trang cng s c phn trang. Xt trng hp phn trang nh cp, khi bng
trang cp 1 lu s hiu khung trang cha bng trang cp 2, cc bng trang cp 2 lu s hiu khung
trang tin trnh s dng. Thng thng trong phn trang a cp mi bng trang chim 1 khung
trang, ring bng trang cp 1 c th lu tr trn a v c th c kch thc ln hn 1 khung trang.
Hnh 4.22: mt v d v phn trang nh cp.
Nu mt my tnh 32 bt, vi kch thc trang 4K th a ch logic c th biu din nh sau: dng
p=20 bt lu s hiu trang, d=12 bt lu v tr tng i trong trang. Nu dng bng trang nh cp
th p c chia ra thnh p1, p2 (p=p1+p2): p1=10 bt lu ch mc ca bng trang cp 1, p2=10 bt
lu ch mc ca bng trang cp 2 (vic phn chia p1, p2 l bao nhiu bt th do phn cng qui
nh). Ta c: BTC1[p1] lu s hiu khung trang cha bng trang cp 2, BTC2[p2] lu s hiu
khung trang cha trang ca tin trnh.
Hnh 4.23: cu trc ca mt a ch o trong phn trang nh cp
Bng trang cp 1
Bng trang cp 2
page number page offset
p
i
p
2
d
10
10 12
p1 ch mc ca bng trang cp mt. p2 ch mc ca bng trang cp 2
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
115
Hnh 4.24: c ch chuyn i a ch trong bng trang nh cp.
b/ Bng trang bm
Khi khng gian a ch o ln (> 32 bt) thng h iu hnh dng bng bm lu tr bng
trang. Ga s trang p, lu khung trang r, th thng tin ny c lu tr nh sau: p c bm v
lu tr trong mt danh sch xung t tng ng ca bng bm.
V d: Mt my tnh 64 bt, c RAM 256MB, kch thc 1 khung trang l 4KB. Bng trang thng
thng phi c 2
52
mc, nu dng bng trang bm c th s dng bng c s mc bng s khung
trang vt l l 2
16
(<<2
32
) vi hm bm l hasfunc(p)=p mod 2
16
.
Hnh 4.25: s dng bng bm lu tr bng trang
Khi tm khung trang cha trang p, h iu hnh dng hm bm tm ra danh sch cha trang p, sau
tm tuyn tnh trn danh sch ny tm ra khung trang cha trang p.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
116
Hnh 4.26: c ch chuyn i a ch khi s dng bng trang bm
c/ Bng trang nghch o
H iu hnh c th dng mt bng trang duy nht qun l b nh ca tt c cc tin trnh v
gi l bng trang nghch o. Mi phn t ca bng trang nghch o l cp (pid, p), pid l m s
ca tin trnh, p l s hiu trang v mi a ch o l mt b ba (pid, p, d).
Khi mt truy xut b nh c pht sinh, mt phn a ch o l (pid, p) c a n cho trnh
qun l b nh tm phn t tng ng trong bng trang nghch o, nu tm thy ti phn t
th i, th i chnh l s hiu khung trang cha trang p v a ch vt l tng ng l (i,d). Trong cc
trng hp khc, xem nh truy xut mt a ch bt hp l.
Nhn xt: s phn t trong bng trang nghch o bng vi s khung trang vt l
Hnh 4.27: c ch chuyn i a ch khi s dng bng trang nghch o
* Bo v trang
C ch bo v trong h thng phn trang c thc hin vi cc bit bo v (protection) c lu
trong mi phn t ca bng trang, v mi truy xut n b nh u phi tham kho n bng trang
pht sinh a ch vt l, khi , h thng c th kim tra cc thao tc truy xut trn khung trang
tng ng c hp l vi thuc tnh bo v ca n khng. Ngoi ra, c th thm mt s bt khc
vi cc mc ch khc nhau.
Hnh 4.28: cu trc tng qut ca mt phn t trong bng trang
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
117
Hnh 4.29: mt v d v m hnh phn trang
* Chia x b nh:
Trong k thut phn trang, h iu hnh cng c th cho php cc tin trnh dng chung mt s
khung trang, bng cch ghi cng s hiu khung trang vo bng trang ca mi tin trnh.
v d: Hai tin trnh P1, P2 sinh ra t chng trnh word.exe c th dng chung on code (gm 3
trang) nhng mi tin trnh c on data ring.
Hnh 4.30: hai tin trnh P1,P2 dng chung ba trang 0,1,2
Nhn xt:
+ K thut phn trang loi b c hin tng phn mnh ngoi vi v mi khung trang u c th
c cp pht cho mt tin trnh no c yu cu. Tuy nhin hin tng phn mnh ni vi vn
c th xy ra khi kch thc ca tin trnh khng ng bng bi s ca kch thc mt trang, khi
trang cui cng s khng c s dng ht.
+ S phn trang khng phn nh ng cch thc ngi s dng cm nhn v b nh. K thut
phn on tha mn c nhu cu th hin cu trc logic ca chng trnh nhng n dn n tnh
hung phi cp pht cc khi nh c kch thc khc nhau cho cc phn on. iu ny lm rc
ri vn hn rt nhiu so vi vic cp pht cc trang c kch thc c nh v bng nhau. Mt
3 data1
2 code3
1 code2
0 code1
P1
3 0
2 6
1 3
0 2
Bng trang
P1
3 data2
2 code3
1 code2
0 code1
P2
3 4
2 6
1 3
0 2
Bng trang
P2
7
6 code3
5
4 data2
3 code2
2 code1
1
0 data1
B nh
Vt l
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
118
gii php dung ho l kt hp c hai k thut phn trang v phn on: chng ta tin hnh phn
trang cc phn on.
4.2.2.3 M hnh phn on kt hp phn trang (Paged segmentation)
Mt tin trnh gm nhiu phn on, mi phn on c chia thnh nhiu trang, lu tr vo cc
khung trang c th khng lin tc.
Hnh 4.31: m hnh phn on kt hp phn trang
* C ch MMU trong m hnh phn on kt hp phn trang
Mi a ch logic l mt b (s,d) vi s l s hiu phn on, d l a ch tng i trong phn
on. Tch d thnh p v d' (s bt ca d = s bt ca p + s bt ca d) vi p l ch s trang, d' l
a ch tng i trong trang (s bt ca d' do phn cng qui nh).
chuyn cc a ch o 2 chiu thnh a ch vt l mt chiu, MMU dng mt bng phn on,
mi phn on cn c mt bng phn trang tng ng. Mi phn t trong bng phn on gm
hai phn (base,limit), base lu a ch vt l ni bt u ca bng trang ca phn on ny, limit
lu chiu di ca phn on. H thng cn cung cp mt thanh ghi STBR lu v tr bt u ca
bng phn on, khi tin trnh truy xut mt a ch logic (s,d)=(s,p,d), MMU ly STBR cng vi
s truy xut phn t th s trong bng phn an. Phn t th s ca bng phn on lu hai ga
tr (segment length, page-table base): segment length l kch thc phn on, page-table base l
v tr lu tr bng trang tng ng vi phn on s. Nu segment length <d th thng bo truy
xut a ch khng hp l ngc li phn tch d thnh p v d v cng page-table base vi p
truy xut phn t th p trong bng phn trang ly c gi tr f l s hiu khung trang cha trang
p. Sau cng f vi d s cho a ch vt l tng ng.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
119
Hnh 4.32: cu trc mt phn t ca bng trang trong m hnh phn on kt hp phn trang.
Hnh 4.33: c ch chuyn i a ch trong m hnh phn on kt hp phn trang
Hnh 4.34: h iu hnh MULTICS dng phn on kt hp phn trang v b nh kt hp
Nhn xt:
+ Tt c cc m hnh t chc b nh trn y u c khuynh hng cp pht cho tin trnh ton
b cc trang yu cu trc khi tht s x l. V b nh vt l c kch thc rt gii hn, iu ny
dn n hai im bt tin sau :
+ Kch thc tin trnh b gii hn bi kch thc ca b nh vt l.
+ Kh nng cao mc a chng ca h thng.
4.3 B NH O
B nh o l k thut dng b nh ph lu tr tin trnh, cc phn ca tin trnh c chuyn
vo-ra gia b nh chnh v b nh ph cho php thc thi mt tin trnh m khng cn np
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
120
ton b vo b nh vt l. Vi k thut b nh o, h iu hnh s tng c mc a chng
ca h thng, c th thc thi c nhng chng trnh kch thc rt ln so vi kch thc b nh
vt l v ngi lp trnh khng cn quan tm my tnh c RAM thc thi chng trnh hay
khng. C hai phng php ci t k thut b nh o l phn trang theo yu cu (Demand
paging) hoc phn on theo yu cu (Demand segmentation)
4.3.1 Phn trang theo yu cu (Demand paging)
Mt tin trnh c chia thnh nhiu trang, thng tr trn b nh ph (thng l a cng) v
mt trang ch c np vo b nh chnh khi c yu cu. Vng khng gian a dng lu tr
tm cc trang gi l khng gian swapping.
4.3.1.1 Cu trc mt phn t trong bng trang
Mi phn t trong bng trang s gm hai trng: Mt trng cha bit "kim tra" c gi tr 1
(valid) l trang ang trong b nh chnh , 0 (invalid) l trang ang c lu trn b nh ph
hoc trang khng thuc tin trnh, khi u tt c bit kim tra trong bng trang u bng 0. Mt
trng cha s hiu khung trang (nu bit kim tra l valid) hoc cha a ch ca trang trn b
nh ph (nu bit kim tra l invalid).
Hnh 4.35: m hnh phn trang theo yu cu
4.3.1.2 Chuyn a ch o (p,d) thnh a ch vt l
+ Bc 1: MMU truy xut phn t th p trong bng trang ly cc thng tin cn thit cho vic
chuyn i a ch.
+ Bc 2: Nu phn t th p c bit kim tra bng 1 (valid), th trang ang yu cu truy xut hp
l, tc l c sn trong b nh, khi vic chuyn i a ch o thnh a ch vt l xy ra bnh
thng, a ch vt l = s hiu khung trang * kch thc ca mt khung + d. Nu phn t th p
c bit kim tra bng 0 (invalid), th MMU s pht sinh mt ngt bo cho h iu hnh c li
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
121
trang. Khi h iu hnh s kim tra trang truy xut c thuc tin trnh khng, nu trang khng
thuc tin trnh th h iu hnh kt thc tin trnh, ngc li chuyn n bc 3
+ Bc 3: Tm v tr trn a cha trang mun truy xut v tm mt khung trang trng trong b
nh chnh: nu c khung trang trng th n bc 4, nu khng cn khung trang trng, chn mt
khung trang "nn nhn" (victim) v chuyn trang "nn nhn " ra b nh ph , ri n bc 4
+ Bc 4: Chuyn trang mun truy xut t b nh ph vo khung trang trng chn.
+ Bc 5: Cp nht ni dung bng trang.
+ Bc 6: Ti kch hot tin trnh ngi s dng.
Hnh 4.36: c ch chuyn i a ch trong m hnh phn trang theo yu cu
4.3.1.3 Thay th trang
Nu khng c khung trang trng, th mi khi xy ra li trang cn phi thc hin hai thao tc
chuyn trang : chuyn mt trang ra b nh ph v np mt trang khc vo b nh chnh. C th
gim bt s ln chuyn trang bng cch s dng thm mt bit "cp nht" (dirty bit). Gi tr ca bit
c phn cng t l 1 nu ni dung trang c b sa i. Khi cn thay th mt trang, nu bit cp
nht c gi tr l 1 th trang ny cn c lu li trn a, ngc li, nu bit cp nht l 0, ngha l
trang khng b thay i, th khng cn lu tr trang tr li a.
s hiu khung trang cha trang
hoc a ch trn a ca trang
bit nhn din trang c trong b
nh (bit valid-invalid)
bit nhn din trang c
thay i (bit dirty)
Hnh 4.37: cu trc mt phn t ca bng trang trong k thut phn trang theo yu cu.
4.3.1.4 Thi gian thc hin mt yu cu truy xut b nh
Gi xc sut xy ra li trang l p: 0 p 1.0, nu p = 0 ngha l khng c li trang , nu p = 1
ngha l mi ln truy xut u xy ra li. Memory access (ma) l thi gian mt ln truy xut b
nh. Effective Access Time (EAT) l thi gian thc hin mt yu cu truy xut b nh. Page fault
overhead (pfo) l thi gian x l mt li trang. Swap page in (spi) l thi gian chuyn trang t a
vo b nh. Swap page out (spo) l thi gian chuyn trang ra a (swap page out c th bng 0).
Restart overhead (ro) l thi gian ti khi ng li vic truy xut b nh.
Ta c:
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
122
EAT = (1 p) x ma+ p (pfo+ [spo]+ spi+ ro)
V d:
Gi s thi gian mt ln truy xut b nh l 1 micro second v gi s 40% trang c chn
thay i ni dung v thi gian hon chuyn trang ra/vo l 10 mili second . Tnh ETA.
Ta c:
ma=1 micro second
spo= spin = 10 milisecond = 10000 micro second
=> EAT = (1 p) + p (pfo+10000*0.4+10000+ro) micro second
4.3.1.5 Cc thut ton chn trang nn nhn
Mc tiu ca cc thut tan l chn trang nn nhn l trang m sau khi thay th s gy ra t li
trang nht. Thng thng s li trang t l nghch vi s khung trang dnh cho tin trnh (s
khung trang tng th s li trang gim).
Hnh 4.38: biu minh ha s li trang s gim khi s khung trang dnh cho tin trnh tng
C th nh gi thut ton bng cch xt mt chui cc trang m tin trnh s ln lt truy xut
vi s khung trang cp cho tin trnh bit v tnh s li trang pht sinh. V d tin trnh truy
xut cc a ch theo th t : 0100, 0432, 0101, 0611. Nu kch thc ca mt trang l 100 bytes
th c th vit li chui a ch thnh chui trang m tin trnh truy xut l 1, 4, 1, 6.
4.3.1.5.1 Thut ton FIFO (First In First Out)
Trang trong b nh lu nht s c chn lm trang nn nhn (vo trc ra trc)
V d: Mt tin trnh c cp 3 khung trang, ban u c 3 khung u trng, tin trnh ln lt
truy xut ti cc trang theo th t sau: 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1. Tnh s
li trang khi p dng thut ton FIFO chn trang nn nhn.
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
123
7 7 7 2 2 2 2 4 4 4 0 0 0 0 0 0 0 7 7 7
0 0 0 0 3 3 3 2 2 2 2 2 1 1 1 1 1 0 0
1 1 1 1 0 0 0 3 3 3 3 3 2 2 2 2 2 1
* * * * * * * * * * * * * * *
K hiu * l c li trang v c 15 li trang
Nhn xt:
Khng cn ghi nhn thi im trang c np vo b nh, m ch cn qun l cc trang trong b
nh bng mt danh sch FIFO, khi nu c li trang th trang truy xut c a vo cui danh
sch v nu ht khung trang th trang u danh sch s c chn lm trang nn nhn.
Thut ton FIFO n gin, d ci t, nhng nu trang c chn l trang thng xuyn c s
dng, th khi b chuyn ra b nh ph s nhanh chng gy ra li trang.
S lng li trang c th tng ln khi s lng khung trang s dng tng, hin tng ny gi l
nghch l Belady.
V d: Xt tin trnh truy xut chui trang theo th t sau: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
+ Nu s dng 3 khung trang, s c 9 li trang
1 2 3 4 1 2 5 1 2 3 4 5
1 1 1 4 4 4 5 5 5 5 5 5
2 2 2 1 1 1 1 1 3 3 3
3 3 3 2 2 2 2 2 4 4
* * * * * * * * *
+ Nu s dng 4 khung trang, s c 10 li trang
1 2 3 4 1 2 5 1 2 3 4 5
1 1 1 1 1 1 5 5 5 5 4 4
2 2 2 2 2 2 1 1 1 1 5
3 3 3 3 3 3 2 2 2 2
4 4 4 4 4 4 3 3 3
* * * * * * * * * *
4.3.1.5.2 Thut ton ti u (Optimal Page Replacement Algorithm)
Chn trang lu c s dng nht trong tng lai. V d:
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
124
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 2 2 2 2 2 2 2 2 2 2 2 7 7 7
0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 0 0 0 0
1 1 1 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1
* * * * * * * * *
Nhn xt:
C 9 li trang, FIFO 15 li => tt hn FIFO nhiu.
Thut ton ny bo m s lng li trang pht sinh l thp nht, n cng khng b nghch l
Belady, tuy nhin y l mt thut ton kh ci t v thng khng th bit trc chui truy xut
ca tin trnh.
i vi cc h iu hnh cho thit b gia dng, thng ch c mt s tin trnh c nh thc thi
nn c th cho tin trnh chy trc mt ln, ghi nhn li chui trang truy xut, cc ln thc thi
sau c th s dng thut ton ti u chn trang nn nhn.
4.3.1.5.3 Thut ton LRU ( Least-recently-used)
Thut ton FIFO s dng thi im np trang chn trang thay th, thut ton ti u dng thi
im trang s c s dng gn nht trong tng lai. V thi im ny thng kh xc nh trc
nn thut ton LRU s dng thi im cui cng trang c truy xut (dng qu kh gn d
on tng lai gn). Vi mi trang, ghi nhn thi im cui cng trang c truy cp, trang c
chn thay th s l trang lu nht cha c truy xut v vi suy ngh l trang ny c kh nng
t c s dng nht.
V d:
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 2 4 4 4 0 0 0 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0
1 1 1 3 3 3 2 2 2 2 2 2 2 2 2 7 7 7
* * * * * * * * * * * *
Nhn xt:
C 12 li trang, FIFO 15 li =>LRU tt hn FIFO.
OPT v LRU c s li trang khng i khi nghch o chui a ch truy xut.
* Ci t thut ton LRU: c th dng hai k thut sau
+ S dng b m:
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
125
Thm vo cu trc ca mi phn t trong bng trang mt trng ghi nhn thi im truy xut
gn nht, v thm vo cu trc ca CPU mt thanh ghi m (counter). Mi ln thc hin truy
xut n mt trang, gi tr ca counter tng ln 1 v ghi gi tr counter vo trng thi im truy
xut gn nht ca phn t tng ng vi trang trong bng trang. Khi trang nn nhn l trang
c gi tr trng thi im truy xut gn nht l nh nht.
s hiu khung trang cha trang
hoc a ch trang trn a
bit valid -
invalid
bit dirty thi im truy xut gn nht
+ S dng danh sch lin kt :
Dng mt mt dslk lu tr cc s hiu trang, trang cui danh sch l trang c truy xut gn
nht, v trang u danh sch l trang lu nht cha c s dng. Nu c li trang v nu c
khung trang trng th thm nt cha s hiu trang ang truy xut vo cui danh sch, nu khng
c khung trng th trang c chn lm trang nn nhn s l trang u danh sch, khi hy nt
u v thm nt cha s hiu trang ang truy xut vo cui danh sch. Nu khng c li trang th
chuyn nt cha s hiu trang hin hnh xung cui danh sch.
4.3.1.5.4 Cc thut ton xp x LRU
C t h thng c cung cp cc phn cng h tr ci t thut ton LRU tht s. Tuy
nhin, nhiu h thng c trang b thm mt bit tham kho (reference). Mi phn t trong bng
trang c thm bit reference c khi gn l 0 bi hh v c phn cng gn l 1 mi ln trang
tng ng c truy cp. Sau mi chu k qui nh trc, phn cng kim tra gi tr ca cc bit
reference xc nh c trang no c truy xut n v trang no khng, sau khi kim
tra xong, cc bit reference c phn cng gn tr v 0. Vi bit reference, c th bit c trang
no c truy xut, nhng khng bit c th t truy xut ca cc trang. Thng tin khng y
ny dn n nhiu thut ton xp x LRU khc nhau.
s hiu khung trang cha trang hoc
a ch trang trn a
bit valid-invalid bit dirty bit reference
Hnh 4.39: cu trc mt phn t ca bng trang trong thut ton xp x LRU
a/ Thut ton vi cc bt history
Mi trang s dng thm 8 bit lch s (history). Sau tng khong thi gian nht nh (thng l
100 milliseconds), mt ngt ng h c pht sinh v quyn iu khin c chuyn cho h iu
hnh. H iu hnh s cp nht cc bt history ca mi trang bng cch dch cc bit history sang
phi 1 v tr loi b bit thp nht v t bit reference ca mi trang vo bit cao nht trong 8 bit
history ca trang . 8 bit history s lu tr tnh hnh truy xut n trang trong 8 chu k cui
cng.
Nu 8 bit history l 00000000 th trang tng ng c kh nng khng c dng trong 8 chu k
cui, nu 8 bit history l 11111111 th trang tng ng c dng n t nht 1 ln trong mi 8
chu k cui. Nu xt 8 bit history nh mt s nguyn khng du th trang nn nhn l trang c
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
126
gi tr history nh nht. S lng cc bit history c th thay i ty theo phn cng, s bt history
nhiu th vic chn trang nn nhn s chnh xc hn.
b/ Thut ton c hi th hai
Tm mt trang theo nguyn tc FIFO, ri kim tra bit reference ca trang . Nu bit reference l
0, chn trang ny, nu bit reference l 1 th gn li l 0 ri tm trang FIFO tip theo (cho trang ny
mt c hi th hai). Mt trang c cho c hi th hai s khng b thay th cho ti khi tt c
nhng trang khc c thay th hoc c cho c hi th hai. Nu trang thng xuyn c s
dng, bit reference ca n s duy tr c gi tr 1 v trang hu nh khng bao gi b thay th.
Nu tt c cc bt reference l 1 th thut ton tr thnh FIFO. Thut ton c th ci t bng dslk
vng.
Hnh 4.40: c ch chn trang nn nhn trong thut ton chn trang nn nhn th hai.
V d:
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2 2 2 2 4 4 4 0 0 0 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0
1 1 1 3 3 3 2 2 2 2 2 2 2 2 2 7 7 7
* * * * * * * * * * * *
Xem danh sch lin kt vng ca v d trn
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7(1) 7(1) 7(1) 0(0) 1(0) 2(1) 2(1) 3(0) 0(0) 4(1) 2(0) 2(0) 0(1) 3(0) 3(0) 1(0) 2(1) 0(0) 1(0) 7(1)
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
127
0(1) 0(1) 1(0) 2(1) 0(1) 3(1) 0(0) 4(1) 2(1) 3(0) 0(1) 3(1) 2(0) 1(0) 2(1) 0(1) 1(0) 7(1) 0(1)
1(1) 2(1) 0(1) 3(1) 0(1) 4(1) 2(1) 3(1) 0(1) 3(1) 2(1) 1(0) 2(1) 0(1) 1(1) 7(1) 0(1) 1(1)
c/ Thut ton c hi th hai nng cao (Not Recently Used Page Replacement Algorithm: NRU)
Xem cc bit reference v dirty bit nh mt cp c th t v to thnh 4 lp sau :
- Lp 1 (0,0): gm nhng trang c (ref,dirty)=(0,0). Nhng trang thuc lp ny khng c truy
xut gn y v khng b sa i, y l nhng trang tt nht thay th.
- Lp 2 (0,1): trang khng truy xut gn y nhng b sa i. Trng hp ny khng tht tt,
v trang cn c lu tr li trc khi thay th.
- Lp 3 (1,0): trang c truy xut gn y, nhng khng b sa i. Trang c th nhanh chng
c tip tc c s dng.
- Lp 4 (1,1): trang c truy xut gn y, v b sa i. Trang c th nhanh chng c tip tc
c s dng v trc khi thay th cn phi c lu tr li.
Lp 1 c u tin thp nht, v lp 4 c u tin cao nht. Mt trang s thuc v mt trong
bn lp trn v trang c chn lm trang nn nhn l trang u tin tm thy trong lp c
u tin thp nht.
4.3.1.5.5 Cc thut ton thng k
S dng mt bin m lu s ln truy xut n mt trang.
+ Thut ton LFU (least frequently used): Thay th trang c gi tr bin m nh nht, ngha l
trang t c s dng nht.
+ Thut ton MFU (most frequently used): Thay th trang c gi tr bin m ln nht, ngha l
trang c s dng nhiu nht.
4.3.2 Cp pht s lng khung trang v thay th trang
Vi mi tin trnh, cn phi cp pht mt s khung trang ti thiu no tin trnh c th hot
ng. S khung trang ti thiu ny c quy nh bi kin trc ca ca mt ch th. V d my
IBM 370 lnh MOVE c th thc hin ti thiu phi c hai trang: mt trang from , mt trang
to. Khi mt li trang xy ra trc khi ch th hin hnh hon tt, ch th cn c ti khi ng,
lc cn phi c cc khung trang np tt c cc trang m mt ch th cn s dng. S
khung trang ti thiu c qui nh bi kin trc my tnh, trong khi s khung trang ti a c
xc nh bi dung lng b nh vt l c th s dng.
4.3.2.1 Cp pht s lng khung trang
C ba cch cp pht s lng khung trang l: cp pht ngang bng, cp pht theo t l kch thc,
cp pht theo t l u tin.
a/ Cp pht ngang bng:
Nu c m khung trang v n tin trnh, mi tin trnh c cp m/n khung trang. Cp pht ny n
gin nhng khng hiu qu.
O
P
E
N
.
P
T
I
T
.
E
D
U
.
V
N
128
b/ Cp pht theo t l kch thc
Ty vo kch thc ca tin trnh cp pht s khung trang. Gi s
i
l kch thc ca tin trnh p
i
S =
i
s