BÀI 2: CÁC MÔ HÌNH XĐỒNG HÀNH
Ngun:3c.com.vn
Hu hết các h điu hành hin đại đều cho phép người dùng thi hành nhiu công vic
đồng thi trên cùng mt máy tính. Nhu cu xđồng hành (concurrency) này xut phát
t đâu, và h điu hành cn phi t chc h tr như thế nào cho các môi trường đa
nhim (multitask) như thế ? Đó là ni dung chúng ta s tìm hiu trong bài này.
I.NHU CU XĐỒNG HÀNH
Có 2 động lc chính khiến cho các h điu hành hin đại thường h tr môi trường đa
nhim (multitask) trong đó chp nhn nhiu tác v thc hin đồng thi trên cùng mt
máy tính :
Tăng hiu sut s dng CPU
Phn ln các tác v (job) khi thi hành đều tri qua nhiu chu k x lý (s
dng CPU) và chu k nhp xut (s dng các thiết b nhp xut) xen k như
sau :
CPU IO CPU IO CPU
Nếu ch có 1 tiến trình duy nht trong h thng, thì vào các chu k IO ca
tác v, CPU s hoàn toàn nhàn ri. Ý tưởng tăng cường s lượng tác v
trong h thng là để tn dng CPU : nếu tác v 1 x lý IO, thì có th s
dng CPU để thc hin tác v 2...
CPU IO CPU IO CPU
Tác v 1
CPU IO CPU IO
Tác v
Tăng tc độ x
Mt s bài toán có bn cht x lý song song nếu được xây dng thành
nhiu module hot động đồng thi thì s tiết kim được thi gian x lý.
Ví d : Xét bài toán tính giá tr biu thc kq = a*b + c*d . Nếu tiến hành
tính đồng thi (a*b) và (c*d) thì thi gian x lý s ngn hơn là thc hin
tun t.
Trong các trường hp đó, cn có mt mô hình xđồng hành thích hp.
Trên máy tính có cu hình nhiu CPU, h tr x lý song song
(multiprocessing) tht s, điu này s giúp tăng hiu qu thi hành ca ht
thng đáng k.
II. KHÁI NIM TIN TRÌNH(PROCESS) VÀ MÔ HÌNH ĐA TIN TRÌNH
(MULTIPROCESS)
Để h tr s đa chương, máy tính phi có kh năng thc hin nhiu tác v đồng thi.
Nhưng vic điu khin nhiu hot động song song cp độ phn cng là rt khó khăn. Vì
thế các nhà thiết kế h điu hành đề xut mt mô hình song song ga lp bng cách
chuyn đổi b x lý qua li gia các chương trình để duy trì hot động ca nhiu chương
trình cùng lúc, điu này to cm giác có nhiu hot động được thc hin đồng thi.
Trong mô hình này, tt c các phn mm trong h thng được t chc thành mt s
nhng tiến trình (process). Tiến trình là mt chương trình đang x lý, s hu mt con tr
lnh, tp các thanh ghi và các biến. Để hoàn thành tác v ca mình, mt tiến trình có th
cn đến mt s tài nguyên – như CPU, b nh chính, các tp tin và thiết b nhp/xut.
Cn phân bit hai khái nim chương trìnhtiến trình. Mt chương trình là mt thc th
th động, cha đựng các ch th điu khin máy tính để tiến hành mt tác v nào đó ; khi
cho thc hin các ch th này, chương trình chuyn thành tiến trình, là mt thc th hot
động, vi con tr lnh xác định ch th kế tiếp s thi hành, kèm theo tp các tài nguyên
phc v cho hot động ca tiến trình.
V mt ý nim, có th xem như mi tiến trình s hu mt b xo cho riêng nó,
nhưng trong thc tế, ch có mt b x lý tht s được chuyn đổi qua li gia các tiến
trình. S chuyn đổi nhanh chóng này đưc gi là s đa chương (multiprogramming) .
H điu hành chu trách nhim s dng mt thut toán điu phi để quyết định thi đim
cn dng hot động ca tiến trình đang xđể phc v mt tiến trình khác, và la chn
tiến trình tiếp theo s đưc phc v. B phn thc hin chc năng này ca h điu hành
được gi là b điu phi (scheduler).
III. KHÁI NIM TIU TRÌNH (THREAD) VÀ MÔ HÌNH ĐA TIU
TRÌNH(MULTITHREAD)
Trong hu hết các h điu hành, mi tiến trình có mt không gian địa ch và ch có mt
dòng x lý. Tuy nhiên, có nhiu tình hung người s dng mong mun có nhiu dòng x
lý cùng chia s mt không gian địa ch, và các dòng x lý này hot động song song tương
t như các tiến trình phân bit (ngoi tr vic chia s không gian địa ch).
Ví d : Mt server qun lý tp tin thnh thong phi t khóa để ch các thao tác truy xut
đĩa hoàn tt.Nếu server có nhiu dòng x lý, h thng có th x lý các yêu cu mi trong
khi mt dòng x lý b khoá. Như vy vic thc hin chương trình s có hiu qu hơn.
Điu này không th đạt được bng cách to hai tiến trình server riêng bit vì cn phi
chia s cùng mt vùng đệm, do vy bt buc phi chia s không gian địa ch.
Chính vì các tình hung tương t, người ta cn có mt cơ chế x lý mi cho phép có
nhiu dòng x lý trong cùng mt tiến trình.
Ngày nay đã có nhiu h điu hành cung cp mt cơ chế như thế và gi là tiu trình
(threads).
Nguyên lý chung :
Mt tiu trình là mt đơn v x lý cơ bn trong h thng . Mi tiu trình x lý tun t
đon code ca nó, s hu mt con tr lnh, tp các thanh ghi và mt vùng nh stack
riêng. Các tiu trình chia s CPU vi nhau ging như cách chia s gia các tiến trình:
mt tiu trình x lý trong khi các tiu trình khác ch đến lượtù. Mt tiu trình cũng có th
to lp các tiến trình con, và nhn các trng thái khác nhau như mt tiến trình tht s.
Mt tiến trình có th s hu nhiu tiu trình.
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 tr lnh, 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, ch có th liê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 s mt không gian địa ch chung , điu này có nghĩa là các
tiu trình có th chia s các biến toàn cc ca tiến trình. Mt tiu trình có th truy xut
đến c các stack ca nhng tiu trình khác trong cùng tiến trình. Cu trúc này không đề
ngh mt cơ chế bo v nà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 v cùng mt s hu ch đã to ra chúng trong ý định cho phép
chúng hp tác vi nhau.
Các tiu trình trong cùng mt tiu trình
Phân b thông tin lưu tr
Cu trúc mô t tiến trình và tiu trình
Kernel thread và user thread
Khái nim tiu trình có th được cài đặt trong kernel ca H điu hành, khi đó đơn v cơ
s s dng CPU để x lý là tiu trình, H điu hành s phân phi CPU cho các tiu trình
trong h thng. Tuy nhiên đối vi mt s h điu hành, khái nim tiu trình ch được h
tr như mt đối tượng người dùng, các thao tác tiu trình được cung cp kèm theo do mt
b thư vin x lý trong chế độ người dùng không đặc quyn (user mode). Lúc này H
điu hành s ch biết đến khái nim tiến trình, do vây cn co cơ chế để liên kết các tiu
trình cùng mt tiến trình vi tiến trình cha trong kernel_ đối tượng này đôi lúc được gi
là LWP (lightweight process).
IV. TÓM TT
Tiến trình là mt chương trình đang hot động.
Để s dng hiu qu CPU, s đa chương cn được đưa vào h thng
S đa chương được t chc bng cách lưu tr nhiu tiến trình trong b nh ti mt thi
đim, và điu phi CPU qua li gia các tiến trình trong h thng.
Mô hình đa tiu trình cho phép mi tiến trình có th tiến hành nhiu dòng xđồng
thi trong cùng mt không gian địa ch nhm thc hin tác v hiu qa hơn trong mt s
trường hp.
Cng c bài hc
Các câu hi cn tr li được sau bài hc này :