Giáo trình Hệ điều hành - Chương 2: Quản lý tiến trình - Phạm Ngọc Hưng

HỆ ĐIU HÀNH  
Chương 2  
QUN LÝ TIN TRÌNH  
4. Tiến trình  
4.1. Khái nim tiến trình  
Mt tiến trình là mt chương trình trong quá trình thc hin. Mt  
tiến trình có thcó nhiu đon mã chương trình.  
Mt chương trình tnó không phi là mt tiến trình. Mt chương  
trình chlà mt thc ththụ động, chlà ni dung ca mt file được lưu  
trên đĩa. Trong khi đó, mt tiến trình là mt thc thtích cc, hot động.  
Hai tiến trình có thể được sinh tcùng mt đon mã hoc thai  
đon mã khác nhau.  
Trng thái tiến trình  
Tiến trình trong quá trình thc hin, nó thay đổi trng thái. Trng  
thái ca mt tiến trình được định nghĩa bi hot động hin thi ca tiến  
trình. Mi tiến trình có thể ở mt trong các trng thái sau:  
Mi  
Kết thúc  
Np vào  
Thoát  
Bngt  
Sn sàng  
Thc hin  
Blp lch gi đến  
Chờ đợi  
Đợi  
sự  
kin  
Skin  
vào ra  
hoàn tt  
Hình 4.1: Sơ đồ chuyn đổi trng thái ca tiến trình  
Phm Ngc Hưng  
41  
Qun lý tiến trình  
- Mi (new): Tiến trình bt đầu được to ra  
- Đang thc hin (running): Các lnh đang được thc hin  
- Chờ đợi (waiting): Tiến trình đang chờ đợi mt sskin xut  
hin  
- Sn sàng (ready): Tiến trình đang chờ đợi để được cp phát bộ  
- Kết thúc (terminated): Tiến trình va kết thúc quá trình thc hin  
xlý  
Khi điu khin tiến trình  
Mi tiến trình được biu din trong hệ điu hành bng mt khi  
điu khin tiến trình (PCB - Process Control Block), còn được gi là khi  
điu khin tác v. Mt PCB được thhin hình 4.2. Nó cha các phn  
thông tin liên quan đến mt tiến trình, bao gm:  
Con trỏ  
Trng thái tiến trình  
Shiu tiến trình  
Bộ đếm chương trình  
Các thanh ghi  
Danh sách các file đã mở  
....  
Hình 4.2: Khi điu khin tiến trình (PCB)  
- Trng thái tiến trình: Trng thái có thmi, sn sàng, thc hin,  
chờ đợi hay dng.  
- Bộ đếm chương trình: Bộ đếm chương trình xác định địa chcâu  
lnh kế tiếp sẽ được thc hin cho tiến trình này.  
- Các thanh ghi CPU: Có nhiu loi thanh ghi vi các loi khác  
nhau, tuthuc vào kiến trúc ca máy tính. Chúng bao gm thanh ghi  
cha kết qutrung gian, thanh ghi chs, con trngăn xếp, và các thanh  
ghi công dng chung.  
42  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
- Thông tin qun lý bnh: Thông tin này có thlà thông tin ging  
như giá trthanh ghi cơ svà thanh ghi gii hn, bng trang, hoc bng  
đon, tuthuc vào hthng nhớ được hệ điu hành sdng.  
- Thông tin tính toán: Thông tin này bao gm thi lượng ca CPU  
và thi gian thc được sdng, gii hn thi gian, slượng các tính toán,  
slượng các tiến trình hay nhim v.  
- Thông tin trng thái vào ra: Thông tin bao gm danh sách các  
thiết bvào ra được cp phát cho tiến trình này, mt danh sách các file  
m.  
Các Lung (Threads)  
Mô hình tiến trình đã tho lun phn trước là mt tiến trình sinh từ  
mt chương trình thc hin trong mt lung xlý. Ví d, nếu mt chương  
trình đang chy như Word, mt lung đơn các chthlnh đang được thc  
hin. Lung đơn này là mt lung điu khin tiến trình để thc hin duy  
nht mt nhim vtrong mt thi đim. Ví d, người sdng không thể  
va gõ chva thc hin chc năng kim tra li chính ttrong cùng mt  
tiến trình. Nhiu hệ điu hành cho mrng khái nim tiến trình cho phép  
mt tiến trình có nhiu lung thc hin. Chúng cho phép tiến trình thc  
hin nhiu nhim vtrong mt thi đim.  
4.2. Lp lch tiến trình  
Mc tiêu ca đa chương trình là cho phép nhiu chương trình cùng  
chy trong mt thi đim vì thế làm gia tăng hiu quca làm vic ca  
CPU. Mc tiêu ca hthng chia sthi gian chuyn đổi CPU qua các tiến  
trình mt cách thường xuyên vì vy người sdng có thtương tác vi  
mi tiến trình trong khi nó thc hin.  
Hàng đợi lch làm vic  
Khi các tiến trình được nhp vào hthng, chúng được đưa vào  
mt hàng đợi các công vic. Các tiến trình đó được lưu trú trong bnhớ  
chính, đã sn sàng và đang chờ đợi để thc hin được gitrong mt danh  
sách được gi là hàng đợi sn sàng. Hàng đợi này là mt danh sách liên  
kết cha các con trtrti PCBs đầu tiên và cui cùng trong danh sách.  
Phm Ngc Hưng  
43  
Qun lý tiến trình  
Mi PCB có mt trường con trtrti PCB kế tiếp trong hàng đợi sn  
sàng.  
Hệ điu hành cũng có các hàng đợi khác. Khi mt tiến trình được  
cp phát CPU, nó thc hin cho đến khi dng hoc bngt hoc đợi cho  
đến khi mt skin cthxut hin như hoàn tt mt yêu cu vào ra.  
Trong trường hp có mt yêu cu vào ra, như yêu cu đến mt bộ điu  
khin băng hay mt thiết bị được chia snhư mt đĩa. Vi hệ điu hành  
có nhiu tiến trình, đĩa có thbbn vi các yêu cu vào ra bi các tiến  
trình khác. Các tiến trình vì vy phi đợi đĩa. Danh sách các tiến trình đợi  
mt thiết bvào ra cthể được gi là hàng đợi thiết b. Mi thiết bcó  
riêng mt hàng đợi ca mình.  
Mt thhin ca lch làm vic ca tiến trình dưới dng sơ đồ hàng  
đợi như hình 4.3. Mi hp chnht thhin cho mt hàng đợi. Hai kiu  
hàng đợi được trình bày: hàng đợi sn sàng và mt tp các hàng đợi thiết  
bcác hình tròn thhin cho tài nguyên phc vcho các hàng đợi và các  
mũi tên chỉ định lung ca các tiến trình trong hthng.  
Hàng đợi sn sàng  
CPU  
Hàng đợi I/O  
Yêu cu I/O  
Hết hn  
I/O  
Tiến trình con  
Phân nhánh cho tiến trình con  
thc hin  
Đợi mt ngt  
Ngt xut hin  
Hình 4.3: Sơ đồ hàng đợi biu din slp lch tiến trình  
44  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
Khi mt tiến trình mi được khi động và đưa vào hàng đợi sn  
sàng nó chờ đợi trong hàng đợi sn sàng cho đến khi được la chn để  
thc hin. Khi tiến trình được liên kết vi CPU và trong quá trình thc  
hin, có thxy ra mt sskin sau:  
- Tiến trình có thphát sinh mt yêu cu vào ra và sau đó nó được  
đặt vào hàng đợi và ra.  
- Tiến trình có thto mt tiến trình con mi và đợi cho đến khi nó  
kết thúc.  
- Tiến trình có thbloi bkhi CPU khi mt ngt xut hin và bị  
đưa trli hàng đợi sn sàng.  
hai trường hp đầu, tiến trình cui cùng schuyn sang trng  
thái chờ đợi ri đến trng thái sn sàng và sau đó sẽ được đưa trli  
hàng đợi sn sàng.  
Các blp lch  
Mt tiến trình schuyn qua li gia các hàng đợi lch khác nhau  
trong sut thi gian thc hin. Hệ điu hành phi la chn tiến trình từ  
các hàng đợi theo mt scách và công vic này được thc hin bi blp  
lch thích hp.  
Có hai blp lch: Blp lch dài hn (long-term scheduler) và bộ  
lp lch ngn hn (short-term scheduler). Skhác nhau cơ bn gia hai hệ  
thng lp lch là mc độ thường xuyên thc hin ca chúng.  
Blp lch ngn hn phi la chn mt tiến trình mi cho CPU mt  
cách thường xuyên hơn. Thi gian để hthng này chn tiến trình thường  
là rt ngn để gim slãng phí thi gian thc hin ca CPU.  
Blp lch dài hn li làm vic ít thường xuyên hơn. Nó có thphi  
mt vài phút để to mt tiến trình mi trong hthng. Trong khi đó, bộ  
lp lch ngn hn chmt vài chc mini giây. Hthng lp lch dài hn  
điu khin mc độ đa chương trình (slượng tiến trình trong bnh).  
Chuyn ngcnh  
Vic chuyn CPU sang phc vcho mt tiến trình khác đòi hi phi  
lưu li trng thái ca tiến trình cũ và np các trng thái đã được ghi ca  
tiến trình mi. Nhim vnày được gi là chuyn ngcnh (Context Switch  
Phm Ngc Hưng  
45  
Qun lý tiến trình  
- CS). Khi xut hin schuyn đổi ngcnh, nhân hthng slưu li ngữ  
cnh ca tiến trình cũ trong PCB ca nó và np ngcnh đã được ct giữ  
ca tiến trình mi được lp lch để thc hin. Thi gian chuyn ngcnh  
là mt thi gian vô nghĩa, vì hthng skhông làm được gì trong khng  
thi gian này. Tuthuc vào tc độ bbnhvà slượng thanh ghi phi  
sao chép mà thi gian này có thể được thay đổi. Thông thường, tc độ  
đạt trong khong t1 đến 100 micro giây.  
Thi gian chuyn ngcnh cao hay thp thuthuc vào shtrợ  
phn cng máy tính. Ví d, mt sbxlý (như Sun UltraSPARC) cung  
cp nhiu tp các thanh ghi. Vic chuyn ngcnh chỉ đơn thun là  
chuyn con trỏ đến tp thanh ghi hin thi, tc độ chuyn ngcnh sẽ  
din ra nhanh hơn.  
4.3. Sthc hin ca các tiến trình  
Các tiến trình trong hthng có ththc hin song song, và chúng  
phi được to và xoá mt cách tự động. Vì vy, hệ điu hành phi cung  
cp mt mt cơ chế (khnăng) cho phép to và kết thúc các tiến trình.  
To các tiến trình  
Mt tiến trình có thto nhiu tiến trình mi bng li gi hthng  
to tiến trình. Tiến trình thc hin vic to ra mt tiến trình được gi là  
tiến trình cha. Tiến trình được to ra gi là tiến trình con ca tiến trình đã  
thc hin vic to tiến trình đó. Đến lượt tiến trình mi, nó li có thto  
ra các tiến trình con ca nó. Theo cách này, mt cây tiến trình sxut  
hin trong quá trình thc hin ca các tiến trình.  
Mt tiến trình cn ti các tài nguyên như thi gian CPU, bnh, các  
file, các thiết bvào ra để hoàn thành công vic ca mình. Khi mt tiến  
trình con được to, tiến trình đó có thnhn tài nguyên trc tiếp thệ  
điu hành, hoc có thbuc phi chia smt phn tài nguyên ca tiến  
trình cha. Tiến trình cha phi chia scác phn tài nguyên ca nó cho các  
tiến trình con.  
Khi mt tiến trình được to nó nhn bsung nhiu tài nguyên logic  
và vt lý khi to dliu nhng điu này có thể được tiến trình cha  
chuyn cho.  
46  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
Ví d:  
Mt tiến trình con có chc năng hin thtrng thái ca mt file  
được gi là F1 trên mà hình ca thiết bị đầu cui. Khi nó được to nó sẽ  
tiếp nhn, như là mt đầu vào ttiến trình cha tên ca file F1, và nó sẽ  
thc hin vic phân tích các thông tin ca file đó. Nó cũng có thly tên  
ca thiết bra. Mt vài hệ điu hành chuyn các tài nguyên cho các tiến  
trình con.  
Khi mt tiến trình to ra mt tiến trình con mi, hai khnăng tn  
ti trong thi gian thc hin:  
-
-
-
Tiến trình cha tiếp tc thc hin song song vi tiến trình con  
ca nó.  
Tiến trình cha đợi cho đến khi mt shoc tt ccác tiến trình  
con đã kết thúc mi tiếp tc thc hin.  
Vì vy cũng có hai đặc tính đối vi các tiến trình con vkhông  
gian địa ch:  
-
-
Tiến trình con là mt bn sao ca tiến trình cha.  
Tiến trình con có mt chương trình được np vào cho nó.  
Kết thúc tiến trình  
Khi mt tiến trình kết thúc nó sngng quá trình thc hin và yêu cu  
hthng xoá nó bng cách sdng li gi hthng ”thoát”. thi đim  
đó tiến trình có thtrli dliu cho tiến trình cha ca nó. Tt ccác  
tài nguyên ca tiến trình (bao gm bnhvt lý, bnhớ ảo, các file  
được mvà bộ đệm vào ra) đều được hệ điu hành gii phóng.  
Mt tiến trình cha có thkết thúc quá trình thc hin ca các tiến  
trình con ca nó bi mt slý do ví dnhư:  
- Tiến trình con đã xâm phm mt scác tài nguyên. Điu này đòi  
hi tiến trình cha phi có kthut để nhn biết trang thái ca các tiến  
trình con.  
-
Nhim vụ được giao cho tiến trình con không cn thiết na.  
Phm Ngc Hưng  
47  
Qun lý tiến trình  
Tiến trình cha kết thúc và hệ điu hành không cho phép các tiến  
-
trình con được kết thúc nếu như tiến trình cha ca nó được kết  
thúc.  
4.4. Tiến trình cng tác  
Trong khi các tiến trình thc hin song song trong hthng, chúng  
có thlà các tiến trình độc lp hoc cng tác vi nhau. Mt tiến trình được  
gi là độc lp nếu nó không thể ảnh hưởng hoc bị ảnh hưởng bi shot  
động ca các tiến trình khác trong hthng. Mt cách rõ ràng hơn các  
tiến trình không chia sbt cdliu gì vi nhng tiến trình độc lp  
khác. Trong khi đó, mt tiến trình gi là cng tác nếu như nó có thể ảnh  
hưởng hoc bị ảnh hưởng bi sthc hin ca các tiến trình khác trong  
hthng. Nói khác đi, các tiến trình chia sdliu ca mình vi các tiến  
trình cng tác khác.  
Chúng ta có thmong mun htrmt môi trường cho phép các  
tiến trình cng tác hot động vì mt slý do sau:  
-
Chia scác thông tin: mt sngười dung có thtruy nhp vào  
cùng mt phn thông tin (ví dnhư mt file dùng chung),  
chúng ta phi cung cp mt môi trường truy nhp song song ti  
các kiu tài nguyên đó.  
-
Tăng tc độ tính toán: để công vic tính toán thc hin nhanh  
hơn chúng ta phi chia mt nhim vthành nhiu nhim vnhỏ  
hơn, mi nhim vcó ththc hin song song vi các nhim vụ  
khác.  
-
-
Tính linh hot  
Hiu qu: chvi mt người dùng cũng có ththc hin nhiu  
công vic trong cùng mt thi đim  
4.5. Giao tiếp trong các hthng khách chủ  
Sdng Socket  
Mt socket là mt thiết btruyn thông hai chiu tương tnhư tp  
tin, chúng ta có thể đọc hay ghi lên nó, tuy nhiên mi socket là mt thành  
phn trong mt mi ni nào đó gia các máy trên mng máy tính và các  
48  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
thao tác đọc/ghi chính là strao đổi dliu gia các ng dng trên nhiu  
máy khác nhau.  
Sdng socket có thmô phng hai phương thc liên lc trong  
thc tế : liên lc thư tín (socket đóng vai trò bưu cc) và liên lc đin  
thoi (socket đóng vai trò tng đài) .  
Các thuc tính ca socket:  
- Domain: định nghĩa dng thc địa chvà các nghi thc sdng.  
Có nhiu domaines, ví dUNIX, INTERNET, XEROX_NS, ...  
- Type: định nghĩa các đặc đim liên lc:  
a) Stin cy  
b) Sbo toàn thtdliu  
c) Lp li dliu  
d) Chế độ ni kết  
e) Bo toàn gii hn thông đip  
f) Khnăng gi thông đip khn  
Để thc hin liên lc bng socket, cn tiến hành các thao tác ::  
- To lp hay mmt socket  
- Gn kết mt socket vi mt địa chỉ  
- Liên lc : có hai kiu liên lc tùy thuc vào chế độ ni kết:  
Sdng li gi thtc txa  
Mt trong scác kiu dch vtxa phbiến nht là mô hình RPC  
(Remote Procedure Calls). Mô hình này được thiết kế theo cách tru  
tượng hoá các kthut gi thtc gia các hthng vi kết ni mng.  
Ý nghĩa ca RPCs là cho phép mt máy khách có thyêu cu mt  
thtc trên mt máy chtxa như nó có thyêu cu mt thtc cc  
b. Hthng RPC thc hin vic này bng cách cung cp mt stub phía  
máy khách. Thông thường thì mi mt thtc txa có mt stub riêng.  
Khi máy khách yêu cu đến mt thtc txa, hthng RPC sgi stub  
tương ng, chuyn các tham số được cung cp cho thtc txa. Stub  
này stìm cng trên máy dch vvà kết ni các tham s. Các tham số  
được đóng gói theo khuôn mu thích hp và truyn đi qua mt mng.  
Stub truyn thông đip đến máy dch vbng phương pháp gi thông  
Phm Ngc Hưng  
49  
Qun lý tiến trình  
đip. Tương t, stub trên máy dch vsau khi nhn được thông đip này  
syêu cu đến thtc trên máy dch v. Nếu cn thiết, giá trtrli sẽ  
được gi vcho máy khách bng kthut tương t.  
5. Lung  
5.1. Gii thiu  
Lung, đôi khi còn được gi là Lightweight process (LWP) hay tiu  
trình, là mt đơn vcơ bn ng dng ca CPU; nó bao gm mt chsố  
lung (thread ID), mt bố đếm chương trình, mt tp thanh ghi và mt  
ngăn xếp. Nó chia svi các lung khác liên quan đến cùng mt xlý.  
Mt tiến trình truyn thng (heavyweight) có mt lung điu khin. Nếu  
mt tiến trình có nhiu lung điu khin, nó có ththc hin được nhiu  
vic trong cùng mt thi đim.  
Các tiến trình to thành nhng thc thể độc lp. Mi tiến trình có  
mt tp tài nguyên và mt môi trường riêng (mt con trlnh, mt Stack,  
các thanh ghi và không gian địa ch). Các tiến trình hoàn toàn độc lp vi  
nhau, chcó thliên lc thông qua các cơ chế thông tin gia các tiến trình  
mà hệ điu hành cung cp. Ngược li, các tiu trình trong cùng mt tiến  
trình li chia smt không gian địa chchung, điu này có nghĩa là các  
tiu trình có thchia scác biến toàn cc ca tiến trình. Mt tiu trình có  
thtruy xut đến ccác stack ca nhng tiu trình khác trong cùng tiến  
trình. Cu trúc này không đòi hi mt cơ chế bo vnào, và điu này  
cũng không tht cn thiết vì các tiu trình trong cùng mt tiến trình thuc  
vcùng mt chshu đã to ra chúng trong ý định cho phép chúng  
hp tác vi nhau.  
Động cơ để phát trin đa lung  
Rt nhiu các gói phn mm chy trên mô hình máy tính để bàn là  
đa lung. Mt chương trình thông thường được thc hin như mt tiến  
trình riêng bit vi vài lung điu khin. Mt trình duyt web có thcó  
mt lung hin thcác tranh nh trong khi đó li có mt lung khác đang  
nhn dliu tmng. Mt trình xlý văn bn có thcó mt lung hin  
50  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
thị đồ ho, trong khi lung khác đang nhn phím được gõ tngười dùng,  
lung th3 li đang tiến hành kim tra li chính tphía sau.  
Tt nhiên là trong mt strường hp, mt ng dng đơn lung có  
ththc nhiu nhim vtương t. Ví dmt trình dch vweb, nó chp  
nhn các yêu cu vcác trang web, tranh nh, âm thanh,... tphía người  
dùng. Mt trình dch vweb đang bn nó có thể đang phi xđến hàng  
trăm các yêu cu ca nhiu người dùng trong cùng mt thi đim. Nếu  
trình dch vweb chy như mt tiến trình đơn lung truyn thng thì nó  
chcó thể đáp ng được yêu cu ca mt máy khách trong mt thi đim.  
Khi đó các máy khách khác phi chờ đợi. Thi gian các máy khách phi  
chờ đợi có thrt ln.  
Mt gii pháp để xlý cho trình dch vụ đơn lung chp nhn nhiu  
yêu cu là khi nhn được yêu cu, server to ra mt tiến trình mi để dáp  
ng yêu cu đó. Trong thc tế, gii pháp to tiến trình mi đã được sử  
dng phbiến trước khi các lung trlên phbiến. Gii pháp to tiến  
trình mi cho mi dch vnhư vy skhiến cho hthng phi chu mt ti  
trng rt ln. Trong khi đó, mt tiến trình đa lung có thể đáp ng được  
yêu cu này rt ddàng mà không phi lãng phí nhiu tài nguyên ca hệ  
thng.  
Li ích ca đa lung  
Li ích ca lp trình đa lung có thể được chia thành 4 nhóm sau:  
- Đáp ng nhanh (Responsveness): Đa lung mt ng dng tương  
tác cho phép mt chương trình tiếp tc chy trong khi mt phn ca nó bị  
ngăn cn hoc đang thc hin mt xlý kéo dài, bng cách y khnăng  
đáp ng yêu cu người dùng được gia tăng.  
- Chia stài nguyên: Mc định, các tiến trình chia sbnhvà các  
ngun tài nguyên ca các tiến trình có liên quan. Li ích ca đon mã chia  
slà nó cho phép mt ng dng có mt vài lung khác nhau cùng hot  
động trong mt không gian địa ch.  
- Kinh tế: Cp phát bnh, tài nguyên cho mt tiến trình được to  
ra là cmt chi phí đáng k. Thay vào đó, các lung chia stài nguyên  
Phm Ngc Hưng  
51  
Qun lý tiến trình  
ca tiến trình có liên quan, điu đó skinh tế hơn trng vic to và chuyên  
đổi ngcnh các lung. Thi gian để to ra mt tiến trình ln hơn so vi  
thi gian để to ra mt lung và chuyn ngcnh. Trong hthng Solaris  
2, to ra mt tiến trình chm hơn đến 30 ln so vi vic to ra mt lung,  
chuyn ngcnh chm hơn khong 5 ln.  
- Khai thác được các hthng đa xlý: Li ích ca đa lung li  
càng được gia tăng trong các hthng đa xlý. Trong hthng này các  
lung có thể được thc hin song song, mi lung trên mt bxlý  
riêng. Trong khi đó, mt tiến trình đơn lung chkhai thác được mt bộ  
xlý.  
Các lung người dùng và lung nhân hthng  
Shtrcác lung có thhoc là mc người dùng, lung người  
dùng (user threads), hoc mc nhân hthng (kernel), lung nhân hệ  
thng (kernel threads).  
User threads là mt htrbên trên kernel, và được thc hin bng  
mt thư vin lung ti mc người dùng (user level). Thư vin này cung  
cp các htrcho vic to lung, lp lch, và qun lý các lung không  
được htrtkernel.  
Kernel threads được htrtrc tiếp bi hệ điu hành. Kernel thc  
hin vic to lung, lp lch và qun lý các lung trong không gian ca  
kernel. Các lung này được to và qun lý bi hệ điu hành nên thường  
to và qun lý chm hơn so vi lung người dùng.  
5.2. Các mô hình đa lung  
Mô hình nhiu-mt  
Mô hình này ánh xnhiu lung người dùng vào mt lung nhân.  
Qun lý lung được thc hin trong không gian người dùng nên khá hiu  
qu, nhưng toàn btiến trình skhkhoá nếu có mt lung to ra mt li  
gi hthng bcm. Trong mô hình này, chmt lung có thtruy nhp  
kernel trong mt thi đim.  
52  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
user thread  
kernel thread  
Hình 5.1: Mô hình nhiu-mt  
Mô hình mt-mt  
Mô hình này ánh xmi mt lung ca người dùng vi mt lung  
nhân. Nó gia tăng khnăng chy song song so vi mô hình nhiu-mt  
bng cách cho phép các lung khác có thchy trong khi mt lung to  
ra mt li gi hthng bcm. Nó cũng cho phép nhiu lung chy song  
song trên các đa xlý. Trong mô hình này, slung được to ra là hn  
chế. Windows NT, Windows 2000 và OS/2 thc hin trong mô hình này.  
user thread  
kernel thread  
Hình 5.2: Mô hình mt-mt  
Phm Ngc Hưng  
53  
Qun lý tiến trình  
Mô hình nhiu-nhiu  
Mô hình này dn nhiu các lung mc người dùng vào mt số  
lượng tương ng hoc nhhơn các lung nhân. Mô hình này cho phép to  
ra nhiu lung vi slượng tuthích. Solaris 2, IRIX, HP-UX, Tru64 UNIX  
htrmô hình này.  
user thread  
kernel thread  
Hình 5.3: Mô hình nhiu-nhiu  
5.3. Lung trong Window 2000  
Mt ng dng trong windows được thc hin như mt tiến trình  
riêng bit, mi tiến trình có thcó nhiu lung. windows 2000 sdng  
mô hình mt-mt.  
Các thành phn chính ca mt lung bao gm:  
- Thread UD: xác định duy nht lung  
- Tp các thanh ghi: thhin trng thái ca bxlý  
- Ngăn xếp người dùng: được sdng khi thc hin trong chế độ  
người dùng  
- Vùng lưu trriêng: được sdng bi nhiu các run-time libraries  
và dynamic link libraries.  
Tp các thanh ghi, ngăn xếp và vùng lưu trriêng cho biế ngữ  
cnh ca lung, là mt cu trúc chỉ định phn cng mà hệ điu hành dang  
chy. Cu trúc dliu chính ca mt lung bao gm:  
ETHREAD (execitive thread block)  
54  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
KTHREAD (kernel thread block)  
TEB (thread environment block)  
Các thành phn ca ETHREAD bao gm mt con trtrti tiến  
trình liên quan đến lung và địa chỉ đon mã lung bt đầu thc hin.  
Ngoài ra nó còn cha mt con trtrỏ đến KTHREAD.  
KTREAD bao gm các thông tin vslp lch và đồng bcho  
lung. Ngoài ra nó còn cha ngăn xếp kernel (được sdng khi lung  
chy trong chế độ kernel) và mt con trtrỏ đến TEB.  
ETHREAD và KTHREAD tn ti trong không gian kernel, điu đó có  
nghĩa là kernel có thtruy nhp đến chúng. TEB là mt cu trúc dliu  
trong không gian người dùng, nó được truy nhp bi lung chy trong chế  
độ người dùng. Các trường trong TEB cha ngn xếp người dùng và mt  
mng dliu xác định ca lung.  
5.4. Lung trong Linux  
Linux cho phép to ra các bn sao ca tiến trình, ngoài khnăng  
này, nó còn cho phép to ra nhiu tiến trình cùng chia smt không gian  
địa chca tiến trình gi. Vic cho phép chia skhông gian địa chvi tiến  
trình cha ca tiến trình được sao chép khá ging vi nhiu lung.  
Schia skhông gia địa chlà cho phép bi vì mt tiến trình được  
biu din trong nhân ca Linux. Mt cu trúc dliu nhân duy nht tn  
ti cho mi tiến trình trong hthng. Cu trúc dliu này không chcha  
dliu ca tiến trình mà nó còn cha mt con trtrỏ đến cu trúc khác  
nơi mà dliu này được lưu tr.  
5.5. Bài tp  
1. Hãy đưa ra hai ví dcho thy đa lung ci thin khnăng thc  
hin ca hthng hơn đơn lung.  
2. Hãy đưa ra hai ví dcho thy đa lung không ci thin khnăng  
thc hin ca hthng hơn đơn lung.  
3. Hai skhác nhau gia lung mc người dùng và lung mc hệ  
thng là gì?  
4. Nhng tài nguyên nào được sdng khi mt lung được to ra?  
Phm Ngc Hưng  
55  
Qun lý tiến trình  
6. Lp lch CPU  
6.1. Các khái nim cơ bn  
CPU-I/O Burst Cycle  
Sthành công ca vic lp lch cho CPU phthuc vào các đặc tính  
ca tiến trình được chú ý đến. Sthc hin ca các tiến trình bao gm  
mt chu kthc hin CPU và đợi vào ra. Mt tiến trình thc hin bt đầu  
vi mt CPU Burst, tiếp theo là mt I/O Burst, ri li đến CPU Burst và cứ  
tiếp tc như vy. CPU Burst cui cùng skết thúc quá trình thc hin ca  
tiến trình vi mt li gi hthng kết thúc tiến trình.  
....  
CPU  
Burst  
I/O  
Burst  
CPU  
Burst  
I/O  
Burst  
CPU  
Burts  
I/O  
Burst  
....  
Đọc file  
Đợi I/O  
Ghi file  
Đợi I/O  
Đọc file  
Đợi I/O  
CPU Scheduler  
Ngay khi CPU ri, hệ điu hành phi la chn mt tiến trình trong  
hàng đợi sn sàng để thc hin. Sla chn các tiến trình này được thc  
hin bng blp lch ngn hn. Blp lch la chn mt trong scác tiến  
trình trong bnhvà cp phát CPU cho nó.  
Hàng đợi sn sàng không nht thiết phi có dng FIFO, mà nó có  
thlà hàng đợi ưu tiên, mt cây hoc chỉ đơn gin là mt danh sách liên  
kết không sp xếp. Tt ccác tiến trình trong hàng đợi sn sàng đều  
được xếp hàng và chcơ hi được thc hin. Các bn ghi trong hàng đợi  
này thông thường là các PCBs ca các tiến trình.  
Preemptive Scheduling  
Slp lch CPU quyết định vào mt trong 4 trường hp sau:  
- Khi mt tiến trình chuyn ttrng thái thc hin sang trng thái  
chờ đợi (đợi I/O)  
- Khi mt tiến trình chuyn ttrng thái thc hin sang trng thái  
sn sàng (khi có ngt)  
- Khi mt tiến trình chuyn ttrng thái chờ đợi sang trng thái  
sn sàng (hoàn tt I/O)  
56  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
- Khi mt tiến trình kết thúc  
các thi đim 1 và 4 không được chn trong thi gian lp lch.  
Vi mt tiến trình mi, nếu tn ti trong hàng đợi sn sàng, nó phi được  
chn để thc hin. Vic quyết định chn la thường chdin ra thi  
đim 2 và 3.  
Khi blp lch chthc hin thi đim 1 và 4 thì slp lch đó  
được gi là lược đồ nonpreemtive (không dng), còn li là lược đồ  
preemtive (có dng). Trong lược đồ không dng, khi CPU được cp phát  
cho mt tiến trình, tiến trình đó sgiCPU liên tc và chtrli khi kết  
thúc hoc chuyn sang trng thái chờ đợi. Phương pháp lp lch này được  
sdng trong Microsoft Windows 3.1 và hệ điu hành Apple Macintosh.  
Không may là lp lch có dng li phi chp nhn mt chi phí. Hãy  
xem xét trường hp hai tiến trình cùng chia sdliu. Mt tiến trình đang  
cp nht dliu thì bdng và tiến trình thhai chy. Tiến trình thhai  
có thli đọc dliu hin đang trng thái cp nht gia chng (trng  
thái lp lng).  
Dispatcher  
Mt thành phn khác liên quan đến chc năng lp lch CPU đó là  
Dispatcher. Dispatcher là mt module trao quyn điu khin CPU ti tiến  
trình được la chn bi blp lch ngn hn. Chc năng này bao gm:  
- Chuyn ngcnh  
- Chuyn chế độ người dùng  
- Chuyn đến vtrí thc hin ca chương trình người dùng để thc  
hin  
Dispatcher làm vic càng nhanh càng tt.  
6.2. Các tiêu chun lp lch  
Các thut toán lp lch khác nhau có các đặc đim khác nhau. Vic  
la chn gii thut sdng trong mt tình hung cthphi căn cvào  
các đặc đim ca các thut toán khác nhau. Rt nhiu các tiêu chun đã  
được để nghị để so sánh các gii thut lp lch cho CPU. Các đặc tính  
được dùng để so sánh có thto nên skhác nhau đáng ktrong vic  
xác định gii thut tt nht. Các tiêu chun bao gm:  
Phm Ngc Hưng  
57  
Qun lý tiến trình  
- Khai thác CPU: làm cho CPU càng bn càng tt, tính toán, xlý  
nhiu  
- Thông sut: CPU mc bn trong sut quá trình tiến trình thc  
hin cho đến khi tiến trình hoàn tt công vic. Mt thước đo công vic là  
slượng tiến trình hoàn tt trên mt đơn vthi gian được gi là  
throughtput.  
- Thi gian luân chuyn (quay vòng): tng thi gian tiến trình phi  
chbên được np vào bnh, chờ đợi, thc hin CPU, thc hin I/O  
- Thi gian chờ đợi: tng thi gian tiến trình phi chờ đợi trong  
hàng đợi sn sàng  
- Thi gian trli: là khong thi gian chờ đợi để được sbt  
đầu trli yêu cu.  
6.3. Các thut toán lp lch  
Đến trước phc vtrước (First come, first served)  
Đây là thut toán lp lch CPU đơn gin nht, gi tt là FCFS. Vi  
lược đồ này, tiến trình yêu cu CPU đầu tiên sẽ được cp phát CPU trước.  
Vic cài đặt gii thut này cũng khá đơn gin, chcn dùng mt hàng đợi  
dng FIFO. Khi mt tiến trình được đưa vào hàng đợi sn sàng, PCB ca  
nó sẽ được liên kết vào cui hàng đợi. Khi CPU ri, nó sẽ được cp phát  
cho tiến trình trên đầu hàng đợi. Tiến trình đang chy sau đó sbloi bỏ  
khi hàng đợi.  
Thi gian chờ đợi trung bình ca chính sách FCFS nói chung là khá  
dài. Hãy xem xét tp các tiến trình đến vào thi đim 0 sau, vi độ dài  
CPU-burst time là mini giây:  
Process  
P1  
Burst time  
24  
3
P2  
P3  
3
58  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
Nếu các tiến trình đến theo trt t: P1,P2,P3 và được phc vtheo  
thtFCFS biu đồ Gantt thhin như sau:  
P1 P2  
P3  
0
24  
27  
30  
- Thi gian chờ đợi ca P1: 0 mini giây  
- Thi gian chờ đợi ca P2: 24 mini giây  
- Thi gian chờ đợi ca P3: 27 mini giây  
Thi gian chờ đợi trung bình: (0+24+27)/3=17 mini giây  
Nếu các tiến trình này đến theo trt t: P2, P3, P1 thì  
P2  
0
P3  
3
P1  
6
30  
Thi gian chờ đợi trung bình: (6+0+3)/3=3 mini giây  
Lp lch hàng đợi nhiu mc  
Trong quá trình thc hin, hthng có thcó nhiu loi tiến trình  
khác nhau. Có tiến trình chy vi giao din trên Desktop, có tiến trình  
chy Background. Các tiến trình này có mc ưu tiên khác nhau. Tiến trình  
chy trên Desktop thường có mc ưu tiên cao hơn tiến trình chy  
background. Để đáp ng tt nht cho các loi tiến trình này, cn thiết  
phi có mt thut toán lp lch khác có quan tâm ti mc ưu tiên ca các  
tiến trình.  
Thut toán lp lch cho nhiu mc hàng đợi chia hàng đợi sn sàng  
thành nhiu hàng đợi khác nhau. Các tiến trình được liên kết cố định vào  
mt hàng đợi nào đó da trên mt sthông số đặc trưng như kích thước  
bnhchiếm dng, độ ưu tiên ca tiến trình hoc kiu tiến trình. Mi  
hàng đợi có mt thut toán lp lch riêng. Thêm vào đó, cn phi có thut  
toán lp lch gia các hàng đợi.  
Ví d: thut toán lp lch cho các hàng đợi vi hthng có nhiu  
hàng đợi như sau:  
1. Các tiến trình hthng  
2. Các tiến trình tương tác  
3. Các tiến trình son tho tương tác  
Phm Ngc Hưng  
59  
Qun lý tiến trình  
4. Các tiến trình xlý gói  
5. Các tiến trình người dùng  
Ti mi hàng đợi có mc ưu tiên cao hơn so vi hàng đợi bên dưới  
nó. Mi hàng đợi được cung cp mt khong thi gian sdng CPU, sau  
đó mi hàng đợi ssdng thi gian này lp lch cho các tiến trình trong  
hàng đợi đó.  
Trong gii thut trên, các tiến trình được liên kết cố định ti mt  
hàng đợi, không được phép chuyn sang hàng đợi khác. Điu này làm  
gim tính linh hot ca hthng. Khi mt hàng đợi có ít tiến trình (do đã  
có mt stiến trình hoàn tt công vic và kết thúc) khi đó thi gian dành  
cho hàng đợi đó có thblãng phí. Các tiến trình trong hàng đợi đó có  
nhiu thi gian để thc hin trong khi các tiến trình nhng hàng đợi  
đông khác chcó ít thi gian thc hin. Để gii quyết vn đề này, người ta  
cho phép điu chnh, sp xếp li các tiến trình các hàng đợi, chuyn tiến  
trình qua li gia các hàng đợi để phân bti trng đều cho các hàng đợi,  
khai thác hiu qutài nguyên tính toán ca hthng hơn. Gii thut thc  
hin như vy được gi là gii thut Mutilevel Feedback Queue. Thông  
thường gii thut này được định nghĩa bi mt sthông ssau:  
- Shiu hàng đợi  
- Thut toán lp lch cho mi hàng đợi  
- Phương pháp sdng để xác định để chuyn mt tiến trình lên  
hàng đợi có mc ưu tiên cao hơn.  
- Phương pháp sdng để xác định tiến trình cn chuyn đến hàng  
đợi có mc ưu tiên thp hơn  
- Phương pháp xác định hàng đợi mt tiến trình snhp vào khi  
tiến trình cn dch vụ  
6.4. Lp lch cho hthng đa xlý  
Có hai phương pháp để lp trình cho hthng có nhiu CPU:  
- Mi CPU có mt blp lch riêng, mi CPU có mt shàng đợi sn  
sàng ca mình và tla chn tiến trình trong đó để thc hin. Vi gii  
pháp này có thcó hai tiến trình cùng cgng truy nhp vào mt cu trúc  
60  
Phm Ngc Hưng  
Tải về để xem bản đầy đủ
pdf 54 trang Thùy Anh 05/05/2022 3740
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hệ điều hành - Chương 2: Quản lý tiến trình - Phạm Ngọc Hưng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_he_dieu_hanh_chuong_2_quan_ly_tien_trinh_pham_ngo.pdf