Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
503,55 KB
Nội dung
BÀI 4 : LIÊNLẠCGIỮACÁCTIẾNTRÌNH & VẤNĐỀĐỒNGBỘ
HOÁ
Nguồn:3c.com.vn
Các tiếntrình trên nguyên tắc là hoàn toàn độc lập, nhưng thực tế có thể như thế
không ? Trong bài này chúng ta sẽ tìm hiểu lý do cáctiếntrình có nhu cầu liên
lạc, các cơ chế hỗ trợ việc liênlạc này cũng như những vấnđề đặt ra khi cáctiến
trình trao đổi thông tin với nhau.
I. LIÊNLẠCGIỮACÁCTIẾNTRÌNH
I.1. Nhu c
ầu liênlạcgiữacáctiếntrình
Trong môi trường đa chương, một tiếntrình không đơn độc trong hệ thống , mà có thể
ảnh hưởng đến cáctiếntrình khác , hoặc bị cáctiếntrình khác tác động. Nói cách khác,
các tiếntrình là những thực thể độc lập , nhưng chúng vẫn có nhu cầu liênlạc với nhau
để :
Chia sẻ thông tin: nhiều tiếntrình có thể cùng quan tâm đến những dữ liệu nào đó, do
vậy hệ điều hành cần cung c
ấp một môi trường cho phép sự truy cập đồng thời đến các
dữ liệu chung.
Hợp tác hoàn thành tác vụ: đôi khi để đạt được một sự xử lý nhanh chóng, người ta
phân chia một tác vụ thành các công việc nhỏ có thể tiến hành song song. Thường thì các
công việc nhỏ này cần hợp tác với nhau để cùng hoàn thành tác vụ ban đầu, ví dụ dữ liệu
kết xuất của tiếntrình này lại là dữ liệu nhập cho tiếntrình khác …Trong các trường h
ợp
đó, hệ điều hành cần cung cấp cơ chế đểcáctiếntrình có thể trao đổi thông tin với nhau.
I.2. Cácvấnđề nảy sinh trong việc liênlạcgiữacáctiếntrình
Do mỗi tiếntrình sỡ hữu một không gian địa chỉ riêng biệt, nên cáctiếntrình không
thể liênlạc trực tiếp dễ dàng mà phải nhờ vào các cơ chế do hệ điều hành cung cấp. Khi
cung cấp cơ chế liênlạc cho cáctiến trình, hệ
điều hành thường phải tìm giải pháp cho
các vấnđề chính yếu sau :
Liên kết tường minh hay tiềm ẩn (explicit naming/implicit naming) : tiếntrình có cần
phải biết tiếntrình nào đang trao đổi hay chia sẻ thông tin với nó ? Mối liên kết được gọi
là tường minh khi được thiết lập rõ ràng , trực tiếp giữacáctiến trình, và là tiềm ẩn khi
các tiếntrìnhliênlạc với nhau thông qua một qui ước ngầm nào đó.
Liên lạc theo chế độ đồng bộ
hay không đồngbộ (blocking / non-blocking): khi một tiến
trình trao đổi thông tin với một tiếntrình khác, cáctiếntrình có cần phải đợi cho thao tác
liên lạc hoàn tất rồi mới tiếp tục các xử lý khác ? Cáctiếntrìnhliênlạc theo cơ chế đồng
bộ sẽ chờ nhau hoàn tất việc liên lạc, còn cáctiếntrìnhliênlạc theo cơ chế nonblocking
thì không.
Liên lạcgiữacáctiếntrình trong hệ thống tập trung và hệ thống phân tán: cơ chế liên
lạc giữacáctiếntrình trong cùng một máy tính có sự khác biệt với việc liênlạcgiữacác
tiến trìnhgiữa những máy tính khác nhau?
Hầu hế
t các hệ điều hành đưa ra nhiều cơ chế liênlạc khác nhau, mỗi cơ chế có những
đặc tính riêng, và thích hợp trong một hoàn cảnh chuyên biệt.
II. Các Cơ Chế Thông Tin Liênlạc
II.1. Tín hiệu (Signal)
Giới thiệu: Tín hiệu là một cơ chế phần mềm tương tự như các ngắt cứng tác động
đến cáctiến trình. Một tín hiệu được sử dụng để thông báo cho tiếntrình về một sự ki
ện
nào đó xảy ra. Có nhiều tín hiệu được định nghĩa, mỗi một tín hiệu có một ý nghĩa tương
ứng với một sự kiện đặc trưng.
Ví dụ :
Một số tín hiệu của UNIX
Tín hiệu Mô tả
SIGINT
Người dùng nhấn phím DEL để ngắt xử
lý tiến trình
SIGQUIT
Y
êu cầu thoát xử l
ý
SIGILL
T
iến trình xử lý một chỉ thị bất hợp lệ
SIGKILL
Y
êu cầu kết thúc một tiến t
r
ình
SIGFPT
Lỗi floating
–
point xảy ra ( chia cho 0)
SIGPIPE
T
iến trình ghi dữ liệu vào pipe mà
không có reader
SIGSEGV
T
iến trình truy xuất đến một địa chỉ bất
hợp lệ
SIGCLD
T
iến trình con
k
ết thúc
SIGUSR1
T
ín hiệu 1 do người dùng định nghĩa
SIGUSR2
T
ín hiệu 2 do người dùng định nghĩa
Mỗi tiếntrình sỡ hữu một bảng biễu diễn các tín hiệu khác nhau. Với mỗi tín hiệu sẽ có
tương ứng một trình xử lý tín hiệu (signal handler) qui định các xử lý của tiếntrình khi
nhận được tín hiệu tương ứng.
Các tín hiệu được gởi đi bởi :
Phần cứng (ví dụ lỗi do các phép tính số học)
Hạt nhân hệ điều hành gởi đến một tiếntrình ( ví dụ
lưu ý tiếntrình khi có một thiết bị
nhập/xuất tự do).
Một tiếntrình gởi đến một tiếntrình khác ( ví dụ tiếntrình cha yêu cầu một tiếntrình
con kết thúc)
Người dùng ( ví dụ nhấn phím Ctl-C để ngắt xử lý của tiến trình)
Khi một tiếntrình nhận một tín hiệu, nó có thể xử sự theo một trong các cách sau :
Bỏ qua tín hiệu
Xử lý tín hiệu theo kiểu mặc định
Tiếp nhậ
n tín hiệu và xử lý theo cách đặc biệt của tiến trình.
Hình 3.1 Liênlạc bằng tín hiệu
Thảo luận: Liênlạc bằng tín hiệu mang tính chất không đồng bộ, nghĩa là một tiến
trình nhận tín hiệu không thể xác định trước thời điểm nhận tính hiệu. Hơn nữa cáctiến
trình không thể kiểm tra được sự kiện tương ứng với tín hiệu có thật sự xảy ra ? Cuối
cùng, cáctiếntrình chỉ có thể thông báo cho nhau về một biến c
ố nào đó, mà không trao
đổi dữ liệu theo cơ chế này được.
II.2. Pipe
Giới thiệu: Một pipe là một kênh liênlạc trực tiếp giữa hai tiếntrình : dữ liệu xuất của
tiến trình này được chuyển đến làm dữ liệu nhập cho tiếntrình kia dưới dạng một dòng
các byte.
Khi một pipe được thiết lập giữa hai tiến trình, một trong chúng sẽ ghi dữ liệu vào pipe
và tiếntrình kia sẽ đọc dữ liệ
u từ pipe. Thứ tự dữ liệu truyền qua pipe được bảo toàn theo
nguyên tắc FIFO. Một pipe có kích thước giới hạn (thường là 4096 ký tự)
Hình 3.2 Liênlạc qua pipe
Một tiếntrình chỉ có thể sử dụng một pipe do nó tạo ra hay kế thừa từ tiếntrình cha. Hệ
điều hành cung cấp các lời gọi hệ thống read/write cho cáctiếntrình thực hiện thao tác
đọc/ghi dữ liệu trong pipe. Hệ điều hành cũng chịu trách nhiệ
m đồngbộhóa việc truy
xuất pipe trong các tình huống:
Tiến trình đọc pipe sẽ bị khóa nếu pipe trống, nó sẽ phải đợi đến khi pipe có dữ liệuđể
truy xuất.
Tiến trình ghi pipe sẽ bị khóa nếu pipe đầy, nó sẽ phải đợi đến khi pipe có chỗ trống để
chứa dữ liệu.
Thảo luận: Liênlạc bằng pipe là một cơ chế liênlạc một chiều (unidirectional), nghĩa
là một tiếntrình kết nối với một pipe ch
ỉ có thể thực hiện một trong hai thao tác đọc hoặc
ghi, nhưng không thể thực hiện cả hai. Một số hệ điều hành cho phép thiết lập hai pipe
giữa một cặp tiếntrìnhđể tạo liênlạc hai chiều. Trong những hệ thống đó, có nguy cơ
xảy ra tình trạng tắc nghẽn (deadlock) : một pipe bị giới hạn về kích thước, do vậy nếu cả
hai pipe nối kết hai tiế
n trình đều đầy(hoặc đều trống) và cả hai tiếntrình đều muốn ghi
(hay đọc) dữ liệu vào pipe(mỗi tiếntrình ghi dữ liệu vào một pipe), chúng sẽ cùng bị
khóa và chờ lẫn nhau mãi mãi !
Cơ chế này cho phép truyền dữ liệu với cách thức không cấu trúc.
Ngoài ra, một giới hạn của hình thức liênlạc này là chỉ cho phép kết nối hai tiếntrình có
quan hệ cha-con, và trên cùng một máy tính.
II.3. Vùng nhớ chia sẻ
Giới thiệu: Cách tiếp c
ận của cơ chế này là cho nhiều tiếntrình cùng truy xuất đến
một vùng nhớ chung gọi là vùng nhớ chia sẻ (shared memory).Không có bất kỳ hành vi
truyền dữ liệu nào cần phải thực hiện ở đây, dữ liệu chỉ đơn giản được đặt vào một vùng
nhớ mà nhiều tiếntrình có thể cùng truy cập được.
Với phương thức này, cáctiếntrình chia sẻ một vùng nhớ vật lý thông qua trung gian
không gian đị
a chỉ của chúng. Một vùng nhớ chia sẻ tồn tại độc lập với cáctiến trình, và
khi một tiếntrình muốn truy xuất đến vùng nhớ này, tiếntrình phải kết gắn vùng nhớ
chung đó vào không gian địa chỉ riêng của từng tiến trình, và thao tác trên đó như một
vùng nhớ riêng của mình.
Hình 3.3 Liênlạc qua vùng nhớ chia sẻ
Thảo luận:. Đây là phương pháp nhanh nhất để trao đổi dữ liệugiữacác ti
ến trình.
Nhưng phương thức này cũng làm phát sinh các khó khăn trong việc bảo đảm sự toàn vẹn
dữ liệu (coherence) , ví dụ : làm sao biết được dữ liệu mà một tiếntrình truy xuất là dữ
liệu mới nhất mà tiếntrình khác đã ghi ? Làm thế nào ngăn cản hai tiếntrình cùng đồng
thờighi dữ liệu vào vùng nhớ chung ?…Rõ ràng vùng nhớ chia sẻ cần được bảo vệ bằng
những cơ chế đồngbộhóa thích hợp
Một khuyết điểm của phương pháp liênlạc này là không thể áp d
ụng hiệu quả trong các
hệ phân tán , để trao đổi thông tin giữacác máy tính khác nhau.
II.4. Trao đổi thông điệp (Message)
Giới thiệu: Hệ điều hành còn cung cấp một cơ chế liênlạcgiữacáctiếntrình không
thông qua việc chia sẻ một tài nguyên chung , mà thông qua việc gởi thông điệp. Để hỗ
trợ cơ chế liênlạc bằng thông điệp, hệ điều hành cung cấp các hàm IPC chuẩn
(Interprocess communication), cơ bản là hai hàm:
Send(message) : gởi m
ột thông điệp
Receive(message) : nhận một thông điệp
Nếu hai tiếntrình P và Q muốn liênlạc với nhau, cần phải thiết lập một mối liên kết giữa
hai tiến trình, sau đó P, Q sử dụng các hàm IPC thích hợp để trao đổi thông điệp, cuối
cùng khi sự liênlạc chấm dứt mối liên kết giữa hai tiếntrình sẽ bị hủy. Có nhiều cách
thức để thực hiện sự liên kế
t giữa hai tiếntrìnhvà cài đặt các theo tác send /receive tương
ứng : liênlạc trực tiếp hay gián tiếp, liênlạcđồngbộ hoặc không đồngbộ , kích thước
thông điệp là cố định hay không … Nếu cáctiếntrìnhliênlạc theo kiểu liên kết tường
minh, các hàm Send và Receive sẽ được cài đặt với tham số :
Send(destination, message) : gởi một thông điệp đến destination
Receive(source,message) : nhận một thông điệp từ source
Thảo luận: Đơn vị truy
ền thông tin trong cơ chế trao đổi thông điệp là một thông
điệp, do đó cáctiếntrình có thể trao đổi dữ liệu ở dạng có cấu trúc.
II.5. Sockets
Giới thiệu: Một socket là một thiết bị truyền thông hai chiều tương tự như tập tin,
chúng ta có thể đọc hay ghi lên nó, tuy nhiên mỗi socket là một thành phần trong một mối
nối nào đó giữacác máy trên mạng máy tính vàcác thao tác đọc/ghi chính là sự trao đổi
dữ liệugiữacác ứ
ng dụng trên nhiều máy khác nhau.
Sử dụng socket có thể mô phỏng hai phương thức liênlạc trong thực tế : liênlạc thư tín
(socket đóng vai trò bưu cục) vàliênlạc điện thoại (socket đóng vai trò tổng đài) .
Các thuộc tính của socket:
Domaine:
định nghĩa dạng thức địa chỉ vàcác nghi thức sử dụng. Có nhiều domaines, ví
dụ UNIX, INTERNET, XEROX_NS,
Type
: định nghĩa các đặc điểm liên lạc:
a) Sự tin cậy
b) Sự bảo toàn thứ tự dữ liệu
c) Lặp lại dữ liệu
d) Chế độ nối kết
e) Bảo toàn giới hạn thông điệp
f) Khả năng gởi thông điệp khẩn
Để thực hiện liênlạc bằng socket, cần tiến hành các thao tác ::
Tạo lập hay mở một socket
Gắn kết m
ột socket với một địa chỉ
Liên lạc : có hai kiểu liênlạc tùy thuộc vào chế độ nối kết:
a) Liênlạc trong chế độ không liên kết
: liênlạc theo hình thức hộp thư:
hai tiếntrìnhliênlạc với nhau không kết nối trực tiếp
mỗi thông điệp phải kèm theo địa chỉ người nhận.
Hình thức liênlạc này có đặc điểm được :
người gởi không chắc chắn thông điệp của học được gởi đến người nhận,
một thông điệp có thể được gởi nhiều lần,
hai thông đ
iệp đượ gởi theo một thứ tự nào đó có thể đến tay người nhận theo một thứ
tự khác.
Một tiếntrình sau khi đã mở một socket có thể sử dụng nó đểliên
lạc với nhiều tiếntrình khác nhau nhờ sử hai primitive send và
receive.
b) Liênlạc trong chế độ nối kết
:
Một liên kết được thành lập giữa hai tiến trình. Trước khi mối liên kết này được thiết
lập, một trong hai tiếntrình phải đợi có một tiếntrình khác yêu cầu kết nối.Có thể sử
dụng socket đểliênlạc theo mô hình client-serveur. Trong mô hình này, server sử dụng
lời gọi hệ thống listen và accept để nối kết với client, sau đó , client và server có thể trao
đổi thông tin bằng cách sử dụng các primitive send và receive.
Hủy một socket
Ví dụ :
Trong nghi thức truyền thông TCP, mỗi mối nối giữa hai máy tính được xác
định bởi một port, khái niệm port ở đây không phải là một cổng giao tiếp
trên thiết bị vật lý mà chỉ là một khái niệm logic trong cách nhìn của người
lập trình, mỗi port được tương ứng với một số nguyên dương.
Hình 3.4 Các socket và port trong mối nối TCP.
Hình 3.4 minh họa một cách giao tiếp giữa hai máy tính trong nghi thức truyền thông
TCP. Máy A tạo ra một socket và kết buộc (bind) socket n
ầy với một port X (tức là một
số nguyên dương có ý nghĩa cục bộ trong máy A), trong khi đó máy B tạo một socket
khác và móc vào (connect) port X trong máy A.
Thảo luận: Cơ chế socket có thể sử dụng để chuẩn hoá mối liênlạcgiữacáctiếntrình
vốn không liên hệ với nhau, và có thể hoạt động trong những hệ thống khác nhau.
III. Nhu cầu đồngbộhóa (synchronisation)
Tron
g
cũng cầ
n
tiến trìn
h
III.1.
C
c
h
c
h
T
n
Đ
l
à
q
III.2.
N
l
à
x
C
n
c
ầ
x
III.3.
I
II.
3
G
s
ẻ
M
g
một hệ th
ố
n
cung cấp
h
đồng hàn
h
Yêu cầu
đ
C
ác tài ngu
y
h
o phép nh
h
ấp nhận
m
T
ính không
n
guyên nhâ
n
Đ
ể giải quy
ế
à
hệ thống
p
q
uyền truy
x
Yêu cầu
p
N
hìn chung
,
à
không th
ể
x
ảy ra các n
g
C
ó thể nói r
ằ
n
hững tình
h
ầ
n phải đồ
n
x
ử lý nếu m
ộ
Bài toán
đ
3
.1.
V
ấn đ
ề
G
iả sử có h
a
ẻ
một vùng
M
ỗi tiến trì
n
ố
ng cho ph
é
kèm theo
n
h
không tá
c
đ
ộc quyền
t
y
ên trong h
ệ
iều tiến trì
n
m
ột ( hay m
ộ
thể chia sẻ
n
sau đây:
Đặc tín
h
Nếu nhi
ề
ra các kế
t
trên tài n
g
ế
t vấn đề, c
ầ
p
hải kiểm s
x
uất một
t
à
i
p
hối hợp (
S
,
mối tươn
g
ể
biết t
r
ước,
g
ắt của từn
g
ằ
ng các tiế
n
h
uống các t
i
n
g bộhóa
h
ộ
t tiến t
r
ìn
h
đ
ồng bộ ho
ề
tranh đo
ạ
a
i tiến t
r
ình
nhớ chun
g
n
h muốn rú
t
i
f
é
p cáctiến
t
n
hững cơ c
h
c
động sai l
ệ
t
ruy xuất (
M
ệ
thống đư
ợ
n
h đồng th
ờ
ộ
t số lượn
g
của
t
ài ng
u
h
cấu tạo p
h
ề
u tiến t
r
ìn
h
t
quả khôn
g
g
uyên ảnh
h
ầ
n bảo đả
m
oát sao ch
o
i
nguyên k
h
S
ynchroniz
a
g
quan về t
ố
vì điều nà
y
g
tiến t
r
ình
,
n
t
r
ình hoạt
i
ến t
r
ình c
ầ
h
oạt động c
ủ
h
khác đã k
ế
á
ạ
t điều khi
ể
P
1
và P
2
th
ự
g
lưu trữ bi
ế
t
một khoả
n
f
(taikh
t
aikh
tr
ình liên l
ạ
h
ế đồngbộ
h
ệ
ch đến nh
a
M
utual ex
c
ợ
c phân thà
n
ờ
i truy xuất
,
g
hạn chế )
t
u
yên thườn
g
h
ần cứng c
ủ
h
sử dụng t
à
g
dự đoán đ
ư
h
ưởng lẫn
n
m
tiến t
r
ình
đ
o
tại một th
ờ
h
ông thể ch
i
a
tion)
ố
c độ thực
h
y
phụ thuộ
c
,
thời gian
t
động khô
n
ầ
n hợp tác t
r
ủ
a cáctiến
t
ế
t thúc một
ể
n (race co
n
ự
c hiện cô
n
ế
n
t
aikh
o
n
tiền
t
ie
n
oan -
ti
oan = t
a
ạ
c với nhau
h
óa để bảo
a
u vì các l
ý
c
lusion)
n
h hai loại:
,
vàtài ngu
y
t
iến t
r
ình s
ử
g
có nguồn
ủ
a
t
ài nguy
ê
à
i nguyên
đ
ư
ợc do ho
ạ
n
hau.
đ
ộc quyền
t
ờ
i điểm, ch
ỉ
i
a sẻ.
h
iện của ha
i
c
vào nhiều
t
iến t
r
ình đ
ư
n
g đồngbộ
v
r
ong việc h
o
tr
ình , ví d
ụ
công việc
n
n
dition)
n
g việc của
o
an phản á
n
n
rut từ tài
i
enrut
>
a
ikhoan
, bao giờ h
ệ
đảm hoạt
đ
ý
do sau đâ
y
t
ài nguyê
n
y
ên không
t
ử
dụng tại
m
gốc từ một
ê
n không c
h
đ
ồng thời,
c
ạ
t động của
t
ruy xuất
t
à
ỉ
có một ti
ế
i
tiến t
r
ình
t
yếu tố độn
ư
ợc cấp ph
á
v
ới nhau.
N
o
àn thành t
ụ
một tiến t
r
n
ào đó …
các kế toá
n
n
h thông ti
n
khoản:
>
=0)
-
t
ienr
ệ
điều hàn
h
đ
ộng của c
á
y
:
n
có thể chi
a
t
hể chia sẻ
m
ột thời điể
trong hai
h
o phép chi
a
c
ó nguy cơ
x
các tiến t
r
ì
n
à
i nguyên,
n
ế
n t
r
ình đư
ợ
t
rong hệ th
ố
g như tần s
á
t bộ xử lý
…
N
hư ng có
ác vụ, khi
đ
r
ình chỉ có
n
, và cùng
c
n
về
t
ài kho
ut;
h
á
c
a
sẻ
chỉ
m.
a
sẻ.
x
ảy
n
h
n
ghĩa
ợ
c
ố
ng
uất
…
đ
ó
thể
c
hia
ản.
G
r
a
C
v
p
(
r
I
II.
3
Đ
t
h
t
r
t
r
Đ
n
c
ủ
C
c
h
G
iả sử tron
g
a
tình huốn
g
C
ác tình hu
ố
v
à ghi dữ li
ệ
hối tiến trì
n
r
ace condit
3
.2. M
i
ền
g
Đ
ể ngăn ch
ặ
h
ời một tài
r
ên tài ngu
y
r
ình khác k
h
Đ
oạn chươ
n
n
guyên chu
n
ủ
a mỗi tiế
n
C
ó thể giải
q
h
ỉ có duy
n
e
l
g
t
ài khoản
h
g
như sau :
Sau khi
và nhận
k
hệ điều h
à
P
2
kiểm
vẫn chưa
là 400.
Khi P
1
đ
điều kiện
lượt xử l
ý
được cập
ố
ng
t
ương t
ự
ệ
u t
r
ên cùn
g
n
h của hệ t
h
ion) .
g
ăng (criti
c
ặ
n các
t
ình
h
nguyên kh
ô
y
ên đó : khi
h
ông được
n
g t
r
ình tro
n
n
g được gọ
i
n
t
r
ình tạo t
h
q
uyết vấn
đ
n
hất một tiế
n
l
se
e
rror
h
iện còn 8
0
đã kiểm tr
a
k
ết quả là 3
0
à
nh cấp ph
á
tra cùng đ
i
rút tiền) v
à
đ
ược tái kí
c
(taikho
a
ý
t
r
ước- mà
nhật thành
ự
như thế -
g
một vùng
h
ống- được
c
al section)
h
uống lỗi c
ó
ô
ng thể chi
a
một tiến t
r
truy xuất đ
ế
n
g đó có kh
ả
i
là miền g
ă
i
f (
t
t
aik
h
h
ành một
m
đ
ề mâu thu
ẫ
n
t
r
ình đượ
(«
k
hon
g
0
0, P
1
muố
n
a
điều kiện
0
0, P
1
hết t
h
á
t CPU ch
o
i
ều kiện trê
n
à
rút 400.
G
c
h hoạt và t
i
a
n -
t
i
e
thực hiện
r
-100. Tìn
h
có thể xảy
nhớ chung
gọi là các
t
ó
thể nảy s
i
a
sẻ, cần p
h
r
ình đang s
ử
ế
n
t
ài nguy
ả
năng xảy
ă
ng (critica
l
t
aikhoa
n
h
oan =
t
m
iền găng.
ẫ
n truy xuất
c xử lý lện
h
g
the r
u
n
rút 500 v
à
(
taikho
a
h
ời gian x
ử
o
P
2
.
n
, nhận đư
ợ
G
iá t
r
ị của t
a
i
ếp tục xử l
ý
e
nrut >
=
r
út tiền. Gi
á
h
huống lỗi
x
ra khi có n
, và kết qu
ả
t
ình huống
i
nh khi các
h
ải áp đặt
m
ử
dụng
t
ài
n
ên.
ra các mâ
u
l
section).
T
n
-
t
ien
r
t
aikhoan
nếu có thể
h
trong miề
u
t tien
à
P
2
muốn r
ú
a
n - ti
e
ử
lý mà hệ t
h
ợ
c kết quả
l
a
ikhoan đư
ợ
ý
, nó sẽ kh
ô
=
0)-vì đã
k
á
trị của tai
k
x
ảy ra !
hiều hơn h
a
ả
phụ thuộc
tranh đoạt
đ
tiến t
r
ình t
r
m
ột sự truy
x
n
guyên, thì
u
thuẫn truy
T
rong ví d
ụ
r
ut >=0
)
-
t
ien
r
bảo đảm t
ạ
n găng.
! »);
ú
t 400. Nế
u
e
nrut >=
h
ống cho p
h
l
à 400 (do
P
ợ
c cập nhật
ô
ng kiểm t
r
k
iểm tra tr
o
k
hoan sẽ l
ạ
a
i tiến trìn
h
vào sự điề
u
đ
iều khiển
r
uy xuất đồ
x
uất độc q
u
những tiến
xuất t
r
ên t
à
ụ
t
r
ên, đoạn
)
r
ut;
ạ
i một thời
đ
u
xảy
0)
h
ép,
P
1
lại
r
a lại
o
ng
ạ
i
h
đọc
u
ng
u
yền
à
i
mã :
đ
iểm
[...]... điều kiện sau : Không có hai tiếntrình cùng ở trong miền găng cùng lúc Không có giả thiết nào đặt ra cho sự liên hệ về tốc độ của các tiến trình, cũng như về số lượng bộ xử lý trong hệ thống Một tiếntrình tạm dừng bên ngoài miền găng không được ngăn cản các tiếntrình khác vào miền găng Không có tiếntrình nào phải chờ vô hạn để được vào miền găng IV Tóm tắt Một số tiếntrình trong hệ thống có nhu... một tiếntrình được vào miền găng Củng cố bài học Các câu hỏi cần trả lời được sau bài học này : 1 Các cơ chế trao đổi thông tin : tình huống sử dụng, ưu, khuyết ? 2 Các yêu cầu đồngbộhoá ? Bài tập Phân tích các bài toán sau đây và xác định những yêu cầu đồngbộ hoá, miền găng : Bài 1.Bài toán Tạo phân tử H2O Đồngbộ hoạt động của một phòng thí nghiệm sử dụng nhiều tiếntrìnhđồng hành sau để tạo các. .. động, do mỗi tiếntrình có một không gian địa chỉ độc lập nên viêc liênlạc chỉ có thể thực hiện thông qua các cơ chế do hệ điều hành cung cấp Một số cơ chế trao đổi thông tin giữa các tiếntrình : Tín hiệu : thông báo sự xảy ra của một sự kiện Pipe : truyền dữ liệu không cấu trúc Vùng nhớ chia sẻ : cho phép nhiều tiếntrình truy cập đến cùng một vùng nhớ Trao đổi thông điệp : truyền dữ liệu có cấu... thông điệp : truyền dữ liệu có cấu trúc, có thể vận dụng trong các hệ phân tán Socket : chuẩn hoán việc liênlạcgiữacác hệ thống khác biệt Khi các tiếntrình trao đổi thông tin, chia sẻ tài nguyên chung, cần phải đồngbộhoá hoạt động của chúng chủ yếu do yêu cầu độc quyền truy xuất hoặc phối hợp hoạt động Miền găng là đoạn lệnh trong chương trình có khả năng phát sinh mâu thuẫn truy xuất Để không xảy... MakeH() // Mỗi tiếntrình MakeH tạo 1 nguyên tử H { Make-Hydro(); } MakeO() // Mỗi tiếntrình MakeO tạo 1 nguyên tử O { Make-Oxy(); } MakeWater() /* Tiếntrình MakeWater hoạt độngđồng hành với các tiếntrình MakeH, MakeO, chờ có đủ 2 H và 1 O để tạo H2O */ { while (T) Make-Water(); //Tạo 1 phân tử H2O } Bài 2.Bài toán Cây cầu cũ Để tránh sụp đổ, người ta chỉ có cho phép tối đa 3 xe lưu thông đồng thời... có nhiều xe và nhiều hành khách vào bến cùng lúc, nguyên tắc điều phối sẽ xếp khách vào đầy một xe, cho xe này khởi hành rồi mới điều phối cho xe khác Giả sử hoạt động điều phối khách của bạn cho 1 chiếc xe bus được mô tả qua tiếntrình GetPassengers(); hoạt động của mỗi hành khách tùy loại được mô tả lần lượt bằng tiếntrình WheelPassenger() và NonWheelPassenger() sau đây , hãy sửa chữa các đoạn code,... semaphore để thực hiện các nguyên tắc đồngbộhoá cần thiết GetPassenger() { ArriveTerminal(); // tiếp nhận một xe vào bến OpenDoor(); // mở cửa xe, thủ tục này xem như đã có for (int i=0; i . tác
liên lạc hoàn tất rồi mới tiếp tục các xử lý khác ? Các tiến trình liên lạc theo cơ chế đồng
bộ sẽ chờ nhau hoàn tất việc liên lạc, còn các tiến trình. nhau.
I.2. Các vấn đề nảy sinh trong việc liên lạc giữa các tiến trình
Do mỗi tiến trình sỡ hữu một không gian địa chỉ riêng biệt, nên các tiến trình không