Bài giảng chương 3 - Nguyên lý hệ điều hành

Bài giảng chương 3 môn Nguyên lý hệ điều hành là một tài liệu hay dành cho sinh viên khoa công nghệ thông tin. Giúp sinh viên tham khảo, dễ dàng ôn tập kiến thức để chuẩn bị cho các kỳ thi đạt kết quả cao. Mời bạn đọc đón xem!

H ĐIU HÀNH
(OPERATING SYSTEM)
Trình bày:Nguyn Hoàng Vit
Khoa Công Ngh Thông Tin
Đại Hc Cn Thơ
3.1
Chương 3: Quá trình (Process)
Khái nim v quá tnh
Định thi cho quá trình
Các thao tác trên quá trình
Giao tiếp liên quá tnh
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.2
Khoa Công Ngh Thông Tin ĐHCT (2007)
Khái nim v quá trình (1)
Định nghĩa
H điu hành th thc thi nhiu dng chương tnh:
Các chương trình HĐH system calls
H thng các công vic (jobs)
H thng chia thi gian - chương trình ngưi dùng (user program)
hay tác v (task)
H thng mt người dùng các chương trình ng dng khác nhau
Quá trình - mt chương trình đang thc thi. S thc thi ca
quá trình din ra theo cách thc tun t.
Mt quá trình bao gm:
lnh chương trình (program code)
B đếm chương trình (program counter) các thanh ghi ca CPU
Ngăn xếp (stack)
Phn d liu (data section)
th gm phn b nh cp phát đng khi quá trình chy (heap)
Nguyn Hoàng Vit 3.3
Khái nim v quá trình (2)
Trng thái ca quá trình (Process state)
Mt quá trình th mt trong các trng thái sau:
new:
quá trình đang đưc khi to.
running:
các ch th ca quá trình đang đưc thc thi.
waiting: quá trình đang ch đợi mt s kin nào đó xut
hin (hoàn thành xut/nhp, ch đi mt tín hiu).
ready:
quá trình đang đợi để đưc s dng CPU.
terminated:
quá trình đã kết thúc.
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.4
Khái nim v quá trình (3)
Lưu đồ trng thái ca quá trình
Khái nim v quá trình (4)
Khi điu khin quá trình (PCB - Process Control Block)
thông tin kết hp vi mi quá trình:
Trng thái ca quá trình
B đếm chương trình
Các thanh ghi
Thông tin v đnh thi s dng
CPU
Thông tin v qun b nh
Thông tin v chi phí
Thông tin v trng thái nhp/xut
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.6
Khoa Công Ngh Thông Tin ĐHCT (2007)
Khái nim v quá trình (5)
Chuyn CPU phc v các quá trình
PCB đưc xem
như một nơi ct
gi các thông tin
cho các quá trình.
Thông tin trng
thái phi đưc lưu
tr khi mt
interrupt xut hin,
nhm cho phép
quá trình th
tiếp tc chính xác
v sau.
Nguyn Hoàng Vit 3.7
Khái nim v quá trình (6)
Chuyn ng cnh (Context Switch)
Khi CPU chuyn sang mt quá trình khác, h thng phi lưu li
trng thái ca quá trình np trng thái đã lưu trước đây
ca quá trình. Tác v này gi context switch.
Thi gian cho context switch mt phí tn h thng thc
hin công vic ích.
Thi gian này ph thuc vào h tr ca phn cng:
Tc độ chuyn ph thuc vào tc độ b nh, s ng thanh ghi
phi đưc sao chép các ch th đặc bit (như chỉ th dùng np
lưu tr tt c các thanh ghi)
Tc độ thông thường t 1 đến 1000 μs
Thi gian này th mt tht c chai (bottleneck) trong HĐH
phc tp
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.8
Khoa Công Ngh Thông Tin ĐHCT (2007)
Định thi cho quá trình (1)
(Process Scheduling)
Các hàng đợi định thi:
Hàng đợi công vic (Job queue):
tp hp tt c các quá trình trong
h thng.
Hàng đợi sn sàng (Ready
queue): tp hp tt c các quá
trình đang nm trong b nh, sn
sàng đang ch để thc thi.
Hàng đợi thiết b (Device queue):
tp hp các quá trình đang đợi
s dng mt thiết b xut/nhp.
Quá trình th di chuyn gia
các hàng đợi khác nhau.
Nguyn Hoàng Vit 3.9
Định thi cho quá trình (2)
Hàng đợi sn sàng nhiu hàng đợi thiết b
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.10
Khoa Công Ngh Thông Tin ĐHCT (2007)
Định thi cho quá trình (3)
Các b định thi
B đnh thi dài k (Long-term scheduler/job scheduler) chn
quá trình nào s đưc đặt vào hàng đợi sn sàng (np vào b
nh).
B định thi ngn k (Short-term scheduler/CPU scheduler)
chn ra quá trình s đưc thc thi kế tiếp cp CPU cho nó.
B định thi trung k (Medium-term scheduling) thc hin
hoán v (swapping) các quá trình ra/vào b nhớ/đĩa do cnh
tranh CPU, b nh.
Nguyn Hoàng Vit 3.11
Định thi cho quá trình (4)
B định thi trung k
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.12
Khoa Công Ngh Thông Tin ĐHCT (2007)
Định thi cho quá trình (5)
Các b định thi
B định thi ngn k đưc gi rt thường xuyên (milliseconds)
(phi nhanh).
B định thi dài k đưc gi rt không thường xuyên (seconds,
minutes) ( th chm).
B định thi dài k khng chế cp đ đa chương (degree of
multiprogramming).
Nguyn Hoàng Vit 3.13
Các thao tác trên quá trình (1)
To quá trình
Quá trình cha to ra quá trình con, đến t quá trình con này li
to ra nhng quá trình khác, to nên cây quá trình.
Cây quá trình
trong h thng
UNIX.
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.14
Khoa Công Ngh Thông Tin ĐHCT (2007)
Các thao tác trên quá trình (2)
To quá trình (tt)
Chia s tài nguyên nhiu la chn:
Quá trình cha con chia s tt c tài nguyên.
Quá trình con chia s mt phn tài nguyên ca quá trình cha.
Quá trình cha con không chia s tài nguyên nào c.
D liu khi to:
Đưc chuyn theo t quá trình cha sang con.
Thc thi:
Quá trình cha con thc thi song song.
Quá trình cha đợi đến khi quá trình con hoàn thành.
Không gian địa ch:
Quá trình con sao chép không gian địa ch ca quá trình cha
(cùng chương trình d liu).
Quá trình con t np chương trình riêng ca nó.
Nguyn Hoàng Vit 3.15
Các thao tác trên quá trình (3)
To quá trình (tt)
UNIX:
fork li gi h thng dùng to quá trình mi
execlp li gi h thng đưc s dng sau fork bi mt trong 2
quá trình để thay thế không gian địa ch ca quá trình đã gi execlp
bng mt quá trình mi.
Windows NT: h tr c hai nh
Quá trình con sao chép t quá trình cha.
Quá trình cha xác định tên ca mt chương trình cho h điu hành
np vào không gian địa ch ca quá trình mi.
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.16
Các thao tác trên quá trình (4)
Minh ha lnh fork trong UNIX
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int pid;
/* fork another process */
pid = fork();
if (pid < 0) { /* error occurred */
fprintf(stderr, “Fork Failed”);
exit(-1);
}
else if (pid ==0) { /* child process */
execlp(“/bin/ls”, “ls”, NULL);
{
else { /* parent process will wait for the child to complete */
wait(NULL);
printf(“Child complete”);
exit (0);
}
}
Các thao tác trên quá trình (5)
Kết thúc quá trình
Quá trình thc hin câu lnh cui cùng yêu cu HĐH xóa
(dùng exit).
Xut d liu t quá trình con lên quá trình cha (dùng wait).
Tài nguyên ca quá trình b thu hi li bi h điu hành.
Quá trình cha th kết thúc s thc thi ca quá trình con
(dùng abort).
Quá trình con đã vượt quá s tài nguyên đưc cp.
Công vic giao cho quá trình con nay không còn cn thiết na.
Quá trình cha đang thoát.
H điu hành không cho phép quá trình con tiến hành khi quá
trình cha ca kết thúc.
S kết thúc hàng lot các quá trình con (cascading termination).
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.18
Khoa Công Ngh Thông Tin ĐHCT (2007)
Các thao tác trên quá trình (6)
Hp tác quá trình
Quá trình độc lp không th nh ng hoc không b nh
ng bi s thc thi ca quá trình khác.
Hp tác quá trình th nh ng hoc b nh ng bi
s thc thi ca quá trình khác.
Thun li ca s hp tác quá trình:
Chia s thông tin
Gia tăng tc độ tính toán (nếu máy nhiu CPU)
Module hóa
Tin dng
Các bài toán hp tác quá trình: người sn xut người tiêu
th, b đọc b ghi,
Nguyn Hoàng Vit 3.19
Giao tiếp liên quá trình (1)
(IPC Interprocess Communication)
IPC cung cp chế cho phép giao tiếp đồng b hat động
ca các quá trình không chia s cùng không gian địa ch (có th
nm trên các máy khác nhau).
Hu ích cho môi trường phân tán (ví d chat trên www).
IPC dùng h thng chuyn thông đip (Message Passing
System).
H thng chuyn thông đip th đưc định nghĩa theo nhiu
cách.
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.20
Giao tiếp liên quá trình (2)
H thng chuyn thông đip
H thng chuyn thông đip cho phép các quá trình giao tiếp
vi nhau không cn tham kho đến các biến dùng chung.
Cung cp ít nht 2 thao tác (operation):
send (message) kích thưc thông đip c định/biến đi.
receive(message)
Nếu P Q giao tiếp vi nhau, chúng cn:
Thiết lp ni kết giao tiếp (communication link) gia chúng;
Trao đổi thông đip thông qua send/receive.
i đặt ni kết giao tiếp:
Thuc tính vt lý: b nh chia s, bus phn cng,
Thuc tính lun lý: giao tiếp trc hay gián tiếp, đối xng hay
bt đối xng, bng bn sao hay tham chiếu, kích thưc thông
đip c định hay biến đổi.
Giao tiếp liên quá trình (3)
Giao tiếp trc tiếp
Các quá trình phi đưc đặt tên ràng:
Send (P, message) gi thông đip ti quá trình P.
Receive(Q, message) nhn thông đip t quá trình Q.
Thuc tính ca ni kết giao tiếp:
Các ni kết đưc thiết lp t động;
Mt ni kết kết hp vi chính xác mt cp quá trình;
Gia mi cp quá trình tn ti chính xác mt ni kết;
Ni kết th mt ng (unidirectional), nhưng thông thường
hai ng (bi-directional);
Đối xng trong vic đánh địa ch: 2 quá trình phi biết tên nhau đ
giao tiếp;
Thay đổi để thc hin tính bt đối xng trong đánh địa ch:
Send (P, message) gi thông đip ti quá trình P.
Receive(id, message) nhn thông đip t quá trình bt k.
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.22
Giao tiếp liên quá trình (4)
Giao tiếp gián tiếp
Các thông đip đưc gi nhn thông qua hp thư (mailbox),
cũng đưc xem như cỗng (port).
Mi mailbox mt định danh (id) duy nht;
Các quá trình ch th giao tiếp nếu chúng dùng chung mailbox.
Send (A, message) gi thông đip ti hp thư A.
Receive(A, message) nhn thông đip t hp thư A.
Thuc tính ca ni kết giao tiếp:
Ni kết ch đưc thiết lp nếu các quá trình chia s mt hp thư
chung;
Mt ni kết th kết hp vi nhiu quá trình;
Mi cp quá trình th dùng chung nhiu ni kết giao tiếp.
Ni kết th mt ng hay hai ng.
Giao tiếp liên quá trình (5)
Giao tiếp gián tiếp
Các thao c:
To hp thư mi;
Gi nhn thông đip thông qua hp thư;
Xóa hp thư.
Chia s hp t:
P
1
, P
2
, and P
3
chia s hp thư A.
P
1
, gi; P
2
and P
3
đang nhn t A
Quá trình nào nhn thông đip? Tùy vào chn 1 trong các gii
pháp.
Gii pháp:
Cho phép mt ni kết kết hp vi nhiu nht 2 quá trình.
Cho phép ch 1 quá trình thc hin thao tác nhn ti mt thi đim.
Cho phép h thng chn mt cách bt k quá trình nhn (không
phi c hai). Bên gi s đưc thông báo ai đã nhn.
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.24
Khoa Công Ngh Thông Tin ĐHCT (2007)
Giao tiếp liên quá trình (6)
Đồng b hóa (Synchronization)
Chuyn thông đip th nghn hoc không nghn
(blocking/non-blocking).
Nghn đưc xem đồng b, không nghn không đồng b.
Send Receive th nghn hoc không nghn:
Send nghn: quá trình gi b nghn đến khi thông đip đưc nhn.
Send không nghn: quá trình gi gi thông đip tiếp tc hat
động.
Receive nghn: quá trình nhn nghn cho đến khi thông đip sn
dùng.
Receive không nghn: quá trình nhn nhn li mt thông đip hp
l hay rng.
Nguyn Hoàng Vit 3.25
Giao tiếp liên quá trình (7)
To vùng đệm (Buffering)
To hàng đi để cha các thông đip liên quan đến mt ni
kết.
Ba cách cài đt:
Sc cha 0 (Zero capacity): quá trình gi b nghn đến khi thông
đip đưc nhn.
Sc cha gii hn (Bounded capacity): chiu dài gii hn n thông
đip. Quá trình gi nghn khi hàng đợi b đầy.
Sc cha không gii hn (Unbounded capacity): chiu dài không
gii hn. Quá trình gi không bao gi nghn.
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.26
Khoa Công Ngh Thông Tin ĐHCT (2007)
Giao tiếp khách-ch (1)
(Client-server communication)
Đưc dùng để truy cp d liu trên các server.
Các phương pháp shared memory message passing cũng
th đưc dùng cho giao tiếp khách-ch
Ba phương pháp khác thưng dùng cho giao tiếp dng y:
Sockets.
Remote Procedure Calls (RPCs)
Java’s Remote Method Invocation (RMI)
Nguyn Hoàng Vit 3.27
Giao tiếp khách-ch (1)
Sockets
Mt socket đưc định nghĩa như mt đim đầu cui cho giao
tiếp (endpoint for communication)
Mt cp quá trình giao tiếp qua mng dùng mt cp socket mt
cho mi quá trình
Mi socket đưc hình thành t 1 địa ch IP kết hp vi mt s
hiu cng (port number)
Socket 162.15.3.6:1625 cng 1625 trên máy 162.15.3.6
Các s hiu cng < 1024 đưc dành cho các dch v chun
như telnet (23), ftp (21) http (80)
Khi mt quá trình client khi to mt yêu cu ni kết, đưc
gán mt cng bi máy
Tt c ni kết phi duy nht vi mi quá trình mt s hiu cng
khác nhau
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.28
Giao tiếp khách-ch (2)
Sockets (tt)
Socket communication
Giao tiếp khách-ch (3)
Remote procedure Call (RPC)
RPC tru ng hóa các li gi th tc (procedure calls) gia
các quá trình trên h thng mng
cho phép mt client gi mt th tc trên mt máy xa như
gi mt th tc cc b
Message trao đổi trong giao tiếp RPC đưc sp xếp cu trúc
đưc chuyn đến mt RPC daemon lng nghe trên mt cng
ti máy xa.
Stub: đại din phía client cho mt th tc thc trên server
Khi client gi mt th tuc xa, h thng RPC s gi stub ơng
ng, chuyn cho các tham s đưc cung cp ti th tuc xa
Stub này s định v cng trên server sp xếp các tham s theo
mt định dang (đóng gói) gi đi bng message passing
Mt stub tương t trên server nhn message này, m gói các
tham s gi thc hin th tc trên server
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.30
Khoa Công Ngh Thông Tin ĐHCT (2007)
Giao tiếp khách-ch (4)
Remote procedure Call (tt)
Thc thi
ca RPC
Nguyn Hoàng Vit 3.31
Giao tiếp khách-ch (5)
Remote Method Invocation (RMI)
RMI mt chế Java tương t RPC
RMI cho phép mt chương trình Java trên mt máy gi thc
hin mt method trên mt remote object
Nguyn Hoàng Vit Khoa Công Ngh Thông Tin ĐHCT (2007) 3.32
Khoa Công Ngh Thông Tin ĐHCT (2007)
Giao tiếp khách-ch (6)
Remote Method Invocation (tt)
RMI cài đặt
remote object
da vào stub
skeleton.
Stub đại din
cho remote object
trên phía client
Skeleton đại din
cho remote object
phía server
Nguyn Hoàng Vit 3.33
| 1/33

Preview text:

HỆ ĐIỀU HÀNH (OPERATING SYSTEM)
Trình bày:Nguyễn Hoàng Việt Khoa Công Nghệ Thông Tin Đại Học Cần Thơ 3.1
Chương 3: Quá trình (Process)
▪ Khái niệm về quá trình
▪ Định thời cho quá trình
▪ Các thao tác trên quá trình
▪ Giao tiếp liên quá trình
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.2
Khái niệm về quá trình (1) Định nghĩa
▪ Hệ điều hành có thể thực thi nhiều dạng chương trình:
• Các chương trình HĐH – system calls
• Hệ thống bó – các công việc (jobs)
• Hệ thống chia thời gian - chương trình người dùng (user program) hay tác vụ (task)
• Hệ thống một người dùng – các chương trình ứng dụng khác nhau
▪ Quá trình - là một chương trình đang thực thi. Sự thực thi của
quá trình diễn ra theo cách thức tuần tự.
▪ Một quá trình bao gồm:
• Mã lệnh chương trình (program code)
• Bộ đếm chương trình (program counter) và các thanh ghi của CPU • Ngăn xếp (stack)
• Phần dữ liệu (data section)
• Có thể gồm phần bộ nhớ cấp phát động khi quá trình chạy (heap)
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.3
Khái niệm về quá trình (2)
Trạng thái của quá trình (Process state)
Một quá trình có thể có một trong các trạng thái sau:
new: quá trình đang được khởi tạo.
running: các chỉ thị của quá trình đang được thực thi.
waiting: quá trình đang chờ đợi một sự kiện nào đó xuất
hiện (hoàn thành xuất/nhập, chờ đợi một tín hiệu).
ready: quá trình đang đợi để được sử dụng CPU.
terminated: quá trình đã kết thúc.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.4
Khái niệm về quá trình (3)
Lưu đồ trạng thái của quá trình
Khái niệm về quá trình (4)
Khối điều khiển quá trình (PCB - Process Control Block)
Là thông tin kết hợp với mỗi quá trình:
▪ Trạng thái của quá trình
▪ Bộ đếm chương trình ▪ Các thanh ghi
▪ Thông tin về định thời sử dụng CPU
▪ Thông tin về quản lý bộ nhớ ▪ Thông tin về chi phí
▪ Thông tin về trạng thái nhập/xuất
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.6
Khái niệm về quá trình (5)
Chuyển CPU phục vụ các quá trình ▪ PCB được xem như một nơi cất giữ các thông tin cho các quá trình. ▪ Thông tin trạng thái phải được lưu trữ khi một interrupt xuất hiện, nhằm cho phép quá trình có thể tiếp tục chính xác về sau.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.7
Khái niệm về quá trình (6)
Chuyển ngữ cảnh (Context Switch)
▪ Khi CPU chuyển sang một quá trình khác, hệ thống phải lưu lại
trạng thái của quá trình cũ và nạp trạng thái đã lưu trước đây
của quá trình. Tác vụ này gọi là context switch.
▪ Thời gian cho context switch là một phí tổn – hệ thống thực hiện công việc vô ích.
▪ Thời gian này phụ thuộc vào hỗ trợ của phần cứng:
• Tốc độ chuyển phụ thuộc vào tốc độ bộ nhớ, số lượng thanh ghi
phải được sao chép và các chỉ thị đặc biệt (như chỉ thị dùng nạp và
lưu trữ tất cả các thanh ghi)
• Tốc độ thông thường từ 1 đến 1000 μs
• Thời gian này có thể là một thắt cổ chai (bottleneck) trong HĐH phức tạp
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.8
Định thời cho quá trình (1) (Process Scheduling)
Các hàng đợi định thời:
▪ Hàng đợi công việc (Job queue):
tập hợp tất cả các quá trình trong hệ thống.
▪ Hàng đợi sẵn sàng (Ready
queue): tập hợp tất cả các quá
trình đang nằm trong bộ nhớ, sẵn
sàng và đang chờ để thực thi.
▪ Hàng đợi thiết bị (Device queue):
tập hợp các quá trình đang đợi
sử dụng một thiết bị xuất/nhập.
▪ Quá trình có thể di chuyển giữa các hàng đợi khác nhau.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.9
Định thời cho quá trình (2)
Hàng đợi sẵn sàng và nhiều hàng đợi thiết bị
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.10
Định thời cho quá trình (3) Các bộ định thời
▪ Bộ định thời dài kỳ (Long-term scheduler/job scheduler) – chọn
quá trình nào sẽ được đặt vào hàng đợi sẵn sàng (nạp vào bộ nhớ).
▪ Bộ định thời ngắn kỳ (Short-term scheduler/CPU scheduler) –
chọn ra quá trình sẽ được thực thi kế tiếp và cấp CPU cho nó.
▪ Bộ định thời trung kỳ (Medium-term scheduling) – thực hiện
hoán vị (swapping) các quá trình ra/vào bộ nhớ/đĩa do cạnh tranh CPU, bộ nhớ.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.11
Định thời cho quá trình (4)
Bộ định thời trung kỳ
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.12
Định thời cho quá trình (5) Các bộ định thời
▪ Bộ định thời ngắn kỳ được gọi rất thường xuyên (milliseconds)  (phải nhanh).
▪ Bộ định thời dài kỳ được gọi rất không thường xuyên (seconds,
minutes)  (có thể chậm).
▪ Bộ định thời dài kỳ khống chế cấp độ đa chương (degree of multiprogramming).
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.13
Các thao tác trên quá trình (1) Tạo quá trình
Quá trình cha tạo ra quá trình con, đến lượt quá trình con này lại
tạo ra những quá trình khác, tạo nên cây quá trình. Cây quá trình trong hệ thống UNIX.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.14
Các thao tác trên quá trình (2) Tạo quá trình (tt)
▪ Chia sẻ tài nguyên – có nhiều lựa chọn:
• Quá trình cha và con chia sẻ tất cả tài nguyên.
• Quá trình con chia sẻ một phần tài nguyên của quá trình cha.
• Quá trình cha và con không chia sẻ tài nguyên nào cả. ▪ Dữ liệu khởi tạo:
• Được chuyển theo từ quá trình cha sang con. ▪ Thực thi:
• Quá trình cha và con thực thi song song.
• Quá trình cha đợi đến khi quá trình con hoàn thành. ▪ Không gian địa chỉ:
• Quá trình con sao chép không gian địa chỉ của quá trình cha
(cùng chương trình và dữ liệu).
• Quá trình con tự nạp chương trình riêng của nó.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.15
Các thao tác trên quá trình (3) Tạo quá trình (tt) ▪ UNIX:
fork – là lời gọi hệ thống dùng tạo quá trình mới
execlp – là lời gọi hệ thống được sử dụng sau fork bởi một trong 2
quá trình để thay thế không gian địa chỉ của quá trình đã gọi execlp
bằng một quá trình mới.
▪ Windows NT: hỗ trợ cả hai mô hình
• Quá trình con sao chép từ quá trình cha.
• Quá trình cha xác định tên của một chương trình cho hệ điều hành
nạp vào không gian địa chỉ của quá trình mới.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.16
Các thao tác trên quá trình (4)
Minh họa lệnh fork trong UNIX #include #include
int main(int argc, char *argv[]) { int pid;
/* fork another process */
pid = fork();
if (pid < 0) { /* error occurred */
fprintf(stderr, “Fork Failed”); exit(-1); }
else if (pid ==0) { /* child process */
execlp(“/bin/ls”, “ls”, NULL); {
else { /* parent process will wait for the child to complete */ wait(NULL);
printf(“Child
complete”); exit (0); } }
Các thao tác trên quá trình (5) Kết thúc quá trình
▪ Quá trình thực hiện câu lệnh cuối cùng và yêu cầu HĐH xóa nó (dùng exit).
• Xuất dữ liệu từ quá trình con lên quá trình cha (dùng wait).
• Tài nguyên của quá trình bị thu hồi lại bởi hệ điều hành.
▪ Quá trình cha có thể kết thúc sự thực thi của quá trình con (dùng abort).
• Quá trình con đã vượt quá số tài nguyên được cấp.
• Công việc giao cho quá trình con nay không còn cần thiết nữa.
• Quá trình cha đang thoát.
✓ Hệ điều hành không cho phép quá trình con tiến hành khi quá
trình cha của nó kết thúc.
✓ Sự kết thúc hàng loạt các quá trình con (cascading termination).
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.18
Các thao tác trên quá trình (6) Hợp tác quá trình
Quá trình độc lập không thể ảnh hưởng hoặc không bị ảnh
hưởng bởi sự thực thi của quá trình khác.
Hợp tác quá trình có thể ảnh hưởng hoặc bị ảnh hưởng bởi
sự thực thi của quá trình khác.
▪ Thuận lợi của sự hợp tác quá trình: • Chia sẻ thông tin
• Gia tăng tốc độ tính toán (nếu máy có nhiều CPU) • Module hóa • Tiện dụng
▪ Các bài toán hợp tác quá trình: người sản xuất – người tiêu
thụ, bộ đọc – bộ ghi, …
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.19
Giao tiếp liên quá trình (1)
(IPC – Interprocess Communication)
▪ IPC cung cấp cơ chế cho phép giao tiếp và đồng bộ họat động
của các quá trình không chia sẻ cùng không gian địa chỉ (có thể
nằm trên các máy khác nhau).
• Hữu ích cho môi trường phân tán (ví dụ chat trên www).
▪ IPC dùng hệ thống chuyển thông điệp (Message Passing System).
▪ Hệ thống chuyển thông điệp có thể được định nghĩa theo nhiều cách.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.20
Giao tiếp liên quá trình (2)
Hệ thống chuyển thông điệp
▪ Hệ thống chuyển thông điệp cho phép các quá trình giao tiếp
với nhau mà không cần tham khảo đến các biến dùng chung.
▪ Cung cấp ít nhất 2 thao tác (operation):
• send (message) – kích thước thông điệp cố định/biến đổi. • receive(message)
▪ Nếu P Q giao tiếp với nhau, chúng cần:
• Thiết lập nối kết giao tiếp (communication link) giữa chúng;
• Trao đổi thông điệp thông qua send/receive.
▪ Cài đặt nối kết giao tiếp:
• Thuộc tính vật lý: bộ nhớ chia sẻ, bus phần cứng, …
• Thuộc tính luận lý: giao tiếp trực hay gián tiếp, đối xứng hay
bất đối xứng, bằng bản sao hay tham chiếu, kích thước thông
điệp cố định hay biến đổi.
Giao tiếp liên quá trình (3) Giao tiếp trực tiếp
▪ Các quá trình phải được đặt tên rõ ràng:
• Send (P, message) – gởi thông điệp tới quá trình P.
• Receive(Q, message) – nhận thông điệp từ quá trình Q.
▪ Thuộc tính của nối kết giao tiếp:
• Các nối kết được thiết lập tự động;
• Một nối kết kết hợp với chính xác một cặp quá trình;
• Giữa mỗi cặp quá trình tồn tại chính xác một nối kết;
• Nối kết có thể một hướng (unidirectional), nhưng thông thường là
hai hướng (bi-directional);
• Đối xứng trong việc đánh địa chỉ: 2 quá trình phải biết tên nhau để giao tiếp;
• Thay đổi để thực hiện tính bất đối xứng trong đánh địa chỉ:
✓ Send (P, message) – gởi thông điệp tới quá trình P.
✓ Receive(id, message) – nhận thông điệp từ quá trình bất kỳ.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.22
Giao tiếp liên quá trình (4) Giao tiếp gián tiếp
▪ Các thông điệp được gởi và nhận thông qua hộp thư (mailbox),
cũng được xem như cỗng (port).
• Mỗi mailbox có một định danh (id) duy nhất;
• Các quá trình chỉ có thể giao tiếp nếu chúng dùng chung mailbox.
✓ Send (A, message) – gởi thông điệp tới hộp thư A.
✓ Receive(A, message) – nhận thông điệp từ hộp thư A.
▪ Thuộc tính của nối kết giao tiếp:
• Nối kết chỉ được thiết lập nếu các quá trình chia sẻ một hộp thư chung;
• Một nối kết có thể kết hợp với nhiều quá trình;
• Mỗi cặp quá trình có thể dùng chung nhiều nối kết giao tiếp.
• Nối kết có thể một hướng hay hai hướng.
Giao tiếp liên quá trình (5) Giao tiếp gián tiếp ▪ Các thao tác: • Tạo hộp thư mới;
• Gởi và nhận thông điệp thông qua hộp thư; • Xóa hộp thư. ▪ Chia sẻ hộp thư:
P , P , and P chia sẻ hộp thư A. 1 2 3
P , gởi; P and P đang nhận từ A 1 2 3
• Quá trình nào nhận thông điệp? Tùy vào chọn 1 trong các giải pháp. ▪ Giải pháp:
• Cho phép một nối kết kết hợp với nhiều nhất 2 quá trình.
• Cho phép chỉ 1 quá trình thực hiện thao tác nhận tại một thời điểm.
• Cho phép hệ thống chọn một cách bất kỳ quá trình nhận (không
phải cả hai). Bên gởi sẽ được thông báo ai đã nhận.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.24
Giao tiếp liên quá trình (6)
Đồng bộ hóa (Synchronization)
▪ Chuyển thông điệp có thể nghẽn hoặc không nghẽn (blocking/non-blocking).
▪ Nghẽn được xem là đồng bộ, không nghẽn là không đồng bộ.
▪ Send và Receive có thể là nghẽn hoặc không nghẽn:
• Send nghẽn: quá trình gởi bị nghẽn đến khi thông điệp được nhận.
• Send không nghẽn: quá trình gởi gởi thông điệp và tiếp tục họat động.
• Receive nghẽn: quá trình nhận nghẽn cho đến khi thông điệp sẵn dùng.
• Receive không nghẽn: quá trình nhận nhận lại một thông điệp hợp lệ hay rỗng.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.25
Giao tiếp liên quá trình (7)
Tạo vùng đệm (Buffering)
▪ Tạo hàng đợi để chứa các thông điệp liên quan đến một nối kết. ▪ Ba cách cài đặt:
• Sức chứa là 0 (Zero capacity): quá trình gởi bị nghẽn đến khi thông điệp được nhận.
• Sức chứa giới hạn (Bounded capacity): chiều dài giới hạn n thông
điệp. Quá trình gỡi nghẽn khi hàng đợi bị đầy.
• Sức chứa không giới hạn (Unbounded capacity): chiều dài không
giới hạn. Quá trình gỡi không bao giờ nghẽn.
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.26 Giao tiếp khách-chủ (1) (Client-server communication)
▪ Được dùng để truy cập dữ liệu trên các server.
▪ Các phương pháp shared memory và message passing cũng
có thể được dùng cho giao tiếp khách-chủ
▪ Ba phương pháp khác thường dùng cho giao tiếp dạng này: • Sockets.
• Remote Procedure Calls (RPCs)
• Java’s Remote Method Invocation (RMI)
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.27 Giao tiếp khách-chủ (1) Sockets
▪ Một socket được định nghĩa như một điểm đầu cuối cho giao
tiếp (endpoint for communication)
• Một cặp quá trình giao tiếp qua mạng dùng một cặp socket – một cho mỗi quá trình
▪ Mỗi socket được hình thành từ 1 địa chỉ IP kết hợp với một số hiệu cỗng (port number)
• Socket 162.15.3.6:1625 là cỗng 1625 trên máy 162.15.3.6
▪ Các số hiệu cỗng < 1024 được dành cho các dịch vụ chuẩn
như telnet (23), ftp (21) và http (80)
▪ Khi một quá trình client khởi tạo một yêu cầu nối kết, nó được gán một cỗng bởi máy
• Tất cả nối kết phải duy nhất với mỗi quá trình có một số hiệu cỗng khác nhau
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.28 Giao tiếp khách-chủ (2) Sockets (tt) Socket communication Giao tiếp khách-chủ (3) Remote procedure Call (RPC)
▪ RPC trừu tượng hóa các lời gọi thủ tục (procedure calls) giữa
các quá trình trên hệ thống mạng
• Nó cho phép một client gọi một thủ tục trên một máy ở xa như nó
gọi một thủ tục cục bộ
• Message trao đổi trong giao tiếp RPC được sắp xếp có cấu trúc
và được chuyển đến một RPC daemon lắng nghe trên một cỗng tại máy ở xa.
▪ Stub: đại diện phía client cho một thủ tục thực trên server
• Khi client gọi một thủ tuc ở xa, hệ thống RPC sẽ gọi stub tương
ứng, chuyển cho nó các tham số được cung cấp tới thủ tuc ở xa
• Stub này sẽ định vị cỗng trên server và sắp xếp các tham số theo
một định dang (đóng gói) và gởi nó đi bằng message passing
▪ Một stub tương tự trên server nhận message này, mở gói các
tham số và gọi thực hiện thủ tục trên server
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.30 Giao tiếp khách-chủ (4) Remote procedure Call (tt) Thực thi của RPC
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.31 Giao tiếp khách-chủ (5)
Remote Method Invocation (RMI)
▪ RMI là một cơ chế Java tương tự RPC
▪ RMI cho phép một chương trình Java trên một máy gọi thực
hiện một method trên một remote object
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.32 Giao tiếp khách-chủ (6) Remote Method Invocation (tt) ▪ RMI cài đặt remote object dựa vào stubskeleton. ▪ Stub là đại diện cho remote object trên phía client ▪ Skeleton đại diện cho remote object phía server
Nguyễn Hoàng Việt – Khoa Công Nghệ Thông Tin ĐHCT (2007) 3.33