You are on page 1of 95

CHƯƠNG 2

ĐỒNG BỘ HÓA TIẾN TRÌNH


Process Synchronization

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10h Edition

MỤC TIÊU
Hiểu được vấn đề tranh chấp giữa các tiến trình trong hệ điều
hành Biết được các giải pháp để giải quyết tranh chấp
Hiểu được các vấn đề trong giải quyết tranh chấp
Biết được các yêu cầu của các giải pháp trong việc giải quyết tranh chấp và
phân nhóm các giải pháp
Giới thiệu về race condition
Giới thiệu các giải pháp tổng quát để giải quyết tranh chấp
Phân tích các chi tiết các vấn đề trong việc giải quyết tranh chấp
Yêu cầu của giải pháp trong việc giải quyết tranh chấp
Phân nhóm các giải pháp

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.2
VẤN ĐỀ CẦN ĐỒNG BỘ

◼Khảo sát các process/thread thực thi đồng thời và chia sẻ dữ liệu
(qua shared memory, file).
◼Nếu không có sự kiểm soát khi truy cập các dữ liệu chia sẻ thì có
thể đưa đến ra trường hợp không nhất quán dữ liệu (data
inconsistency).
◼Để duy trì sự nhất quán dữ liệu, hệ thống cần có cơ chế bảo đảm
sự thực thi có trật tự của các process đồng thời.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.3

NỘI DUNG
I. Tổng quan giao tiếp tiến trình
II. Tài nguyên găng, đoạn găng
III. Vấn đề đồng bộ hóa
IV. Nhóm giải pháp Busy Waiting
V. Nhóm giải pháp Sleep & Wake up
VI. Semaphore
VII. Monitors
VIII.Các ví dụ kinh điển
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.4

I. TỔNG QUAN GIAO TIẾP TIẾN TRÌNH ➢Tiến trình


độc lập: không ảnh hưởng và không bị ảnh hưởng bởi việc thực
thi của các tiến trình khác.
➢Tiến trình hợp tác (không độc lập): có thể
ảnh hưởng và bị ảnh hưởng bởi việc thực
thi của các tiến trình khác.
➢Ưu điểm của việc hợp tác tiến trình:
▪ Chia sẻ thông tin
▪ Tăng tốc tính toán (xử lý
song song): thời gian I/O và thời gian CPU ▪ Tính module hóa

▪ Tiện lợi
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.5

CÁC CƠ CHẾ THÔNG TIN LIÊN LẠC

• Tín hiệu (Signal)


• Pipe
• Vùng nhớ chia sẻ
• Trao đổi thông điệp (Message)
• Sockets
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.6

CÁC CƠ CHẾ THÔNG TIN LIÊN LẠC


Signal: Không truyền được dữ liệu
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 Tiế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 trình
SIGFPT Lỗi floating – point xảy ra ( chia cho 0)
SIGPIPE Tiến trình ghi dữ liệu vào pipe mà không có reader
SIGSEGV Tiến trình truy xuất đến một địa chỉ bất hợp lệ
SIGCLD Tiế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

7
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.7

CÁC CƠ CHẾ THÔNG TIN LIÊN LẠC Pipe:


Truyền dữ liệu không cấu trúc
8
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.8

CÁC CƠ CHẾ THÔNG TIN LIÊN LẠC


Shared Memory: Mâu thuẫn truy xuất => nhu cầu đồng bộ hoá
9
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.9

CÁC CƠ CHẾ THÔNG TIN LIÊN LẠC


Message: Liên lạc trong môi trường phân tán
◼ Liên kết tiềm ẩn
◼ Send(message) : gởi một thông điệp
◼ Receive(message) : nhận một thông điệp

◼ Liên kết tường minh

◼ 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

10
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.10

CÁC CƠ CHẾ THÔNG TIN LIÊN LẠC


Socket: là một thiết bị truyền thông hai chiều như tập tin
◼ Mỗi Socket là một thành phần trong một mối nối giữa các máy trong mạng
◼ 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) độ tin cậy

◼ b) độ 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

11
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.11

CÁC CƠ CHẾ THÔNG TIN LIÊN LẠC


◼ Để thực hiện liên lạ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ên lạc tùy thuộc vào chế độ nối kết:

◼ Liên lạc trong chế độ không liên kết - UDP

◼ Liên lạc trong chế độ nối kết - TCP

◼ Hủy một

socket

VD: Giao tiếp


trong TCP Liên kết
tiềm ẩn

12
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.12
NHIỀU TIẾN TRÌNH CHUNG SỐNG HÒA BÌNH
TRONG CÙNG MỘT HỆ THỐNG

• ÑÖØNG HY VOÏNG
• An toaøn khi caùc tieán trình hoaøn toaøn ñoäc laäp
– Laøm sao coù ñöôïc ??
• Thöïc teá
– Caùc tieán trình chia seû taøi nguyeân chung (File system,
CPU...) – Concurrent access => bugs.
• Ví duï : Deâ con qua caàu

◼ Xöû lyù ñoàng haønh = ...nhöùc ñaàu


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.13

HỢP TÁC BẰNG VIỆC CHIA SẺ


➢Các tiến trình sử dụng và cập nhập dữ liệu chia sẻ như các biến,
file và cơ sở dữ liệu dùng chung.
➢Thao tác ghi phải độc lập từng đôi một để ngăn ngừa tình
trạng đụng độ, có thể dẫn đến tính không toàn vẹn dữ liệu.
➢Các miền găng dùng để cung cấp sự toàn vẹn dữ liệu.
➢Một tiến trình đòi hỏi miền găng phải không bị chờ mãi mãi:
deadlock hoặc starvation.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.14

HỢP TÁC BẰNG VIỆC GIAO TIẾP ➢Giao tiếp cung


cấp phương cách để đồng bộ hóa nhiều hoạt động. ➢Có khả năng
deadlock
▪ Mỗi tiến trình đều chờ thông điệp từ một tiến trình khác.
➢Có khả năng xảy ra tình trạng đói (starvation)
▪ Hai tiến trình gởi thông điệp cho nhau trong khi một tiến trình khác
chờ thông điệp.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.15

CÁC VẤN ĐỀ
➢Tranh chấp
▪ Nhiều tiến trình truy xuất đồng thời một tài nguyên mang bản chất
không chia sẻ được.
• Vấn đề tranh đoạt điều khiển (race condition)
▪ Kết quả?
• Khó biết, nhưng thường là sai.
▪ Luôn luôn nguy hiểm?
• Nếu cân nhắc kỹ càng có thể giảm bớt sự nguy hiểm.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.16

CÁC VẤN ĐỀ
➢Phối hợp
▪ Các tiến trình không biết tương quan xử lý của nhau để điều chỉnh
hoạt động nhịp nhàng.
• Phối hợp xử lý (Rendez-vous)
▪ Kết quả: khó biết, thường không ăn khớp.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.17

TRANH ĐOẠT ĐIỀU KHIỂN➢Ai sẽ


thắng?
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.18

PHỐI HỢP HÀNH ĐỘNG


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.19
PHỐI HỢP HÀNH ĐỘNG

Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.20

II. TÀI NGUYÊN GĂNG – ĐOẠN GĂNG ➢Những tài


nguyên có nguy cơ bị hư hỏng, sai lệch khi được hệ điều hành chia
sẻ đồng thời cho nhiều tiến trình được gọi là tài nguyên găng
(critical resource).
➢Tài nguyên găng có thể là thiết bị vật lý hoặc dữ liệu dùng
chung
➢Ví dụ:
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.21

TÀI NGUYÊN GĂNG


➢Trường hợp chỉ còn 1 vé (SCA=1):
➢Tài nguyên găng là biến SCA đã bị tranh chấp.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.22

ĐOẠN GĂNG
➢Đoạn găng (Critical Section) hay miền găng là đoạn mã có tác
động đến các tài nguyên găng, chỉ cho phép một tiểu trình (tiến
trình) thi hành tại một thời điểm.
▪ Tiểu trình (tiến trình) được gọi là đi vào miền găng.
▪ Loại trừ hỗ tương và miền găng là hai khái niệm cùng một mục đích.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.23

ĐOẠN GĂNG
➢Cấu trúc chương trình khi có đoạn găng
<noncritical section>
<enter critical section> {kiểm tra và xác lập quyền vào đoạn
găng} <critical section>
<exit critical section> {xác nhận khi rời đoạn găng}
<noncritical section>

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.24

III. VẤN ĐỀ ĐỒNG BỘ HÓA


➢Khi có nhiều tiến trình sử dụng tài nguyên găng thì phải đồng bộ.
➢Mục đích là để đảm bảo không có hơn một tiến trình nằm
trong đoạn găng.
➢Cần thỏa mãn 3 điều kiện:
▪ Loại trừ lẫn nhau (Mutual Exclusion).
▪ Tiến triển (Progress)
▪ Chờ đợi hữu hạn (Bounded waiting).

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.25
III. VẤN ĐỀ ĐỒNG BỘ HÓA
➢Mutual Exclusion: Không có hai tiến trình ở trong miền găng
cùng lúc.
➢Progess: Một tiến trình tạm dừng bên ngoài miền găng không
được ngăn cản các tiến trình khác vào miền găng
➢Bounded Waiting: Không có tiến trình nào phải chờ vô hạn để
được vào miền găng.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.26

CÁC GIẢI PHÁP ĐỒNG BỘ HÓA ➢Nhóm giải pháp


Busy Waiting: tiếp tục tiêu thụ CPU trong khi chờ đợi vào miền
găng. Không đòi hỏi sự trợ giúp của hệ điều hành.
▪ Phần mềm
• Sử dụng các biến cờ hiệu
• Sử dụng việc kiểm tra luân phiên
• Giải pháp của Peterson
▪ Phần cứng
• Cấm ngắt
• Chỉ thị TSL
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.27

CÁC GIẢI PHÁP ĐỒNG BỘ HÓA


➢Nhóm giải pháp Sleep & Wakeup: từ bỏ CPU khi chưa được vào
CS (miền găng). Khi CS trống sẽ được đánh thức để vào CS. Cần
được hệ điều hành hỗ trợ.
▪ Semaphore
▪ Monitor
▪ Message
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.28

CÁC GIẢI PHÁP ĐỒNG BỘ HÓA


➢Nhóm giải pháp Busy Waiting: tiếp tục tiêu thụ CPU trong khi
chờ đợi vào miền găng. Không đòi hỏi sự trợ giúp của hệ điều
hành. ▪ Phần mềm
• Sử dụng các biến cờ
hiệu
• Sử dụng việc kiểm tra
luân phiên
• Giải pháp của Peterson
• Giải thuật Bakery
▪ Phần cứng
• Cấm ngắt
• Chỉ thị TSL

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.29

GIẢI PHÁP PHẦN MỀM


➢Sử dụng biến cờ hiệu: lock =0 (chưa có P nào trong CS) và ngược lại lock
=1 Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.30

GIẢI PHÁP PHẦN MỀM


➢Có thể mở rộng cho n tiến trình.
➢Không bảo đảm mutual exclusion.
➢Bản thân đoạn code kiểm tra và dành quyền cũng là miền găng(CS).

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.31

GIẢI PHÁP PHẦN MỀM


➢Kiểm tra luân phiên:
Silberschatz,
Operating System Concepts – 10th Edition 1.32
Galvin and Gagne ©2018

GIẢI PHÁP PHẦN MỀM


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.33

GIẢI PHÁP PHẦN MỀM


➢Chỉ dành cho 2 tiến trình
➢Bảo đảm mutual exclusion.
▪ Chỉ có 1 biến turn tại 1 thời điểm, chỉ cho 1 tiến trình vào CS.
➢Không bảo đảm progress.
▪ Mở cửa cho tiến trình khác thì tự đóng lấy chính mình.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.34
GIẢI PHÁP PHẦN MỀM
➢Giải pháp Peterson
➢Giải quyết P0, P1 chia sẻ 2 biến chung, kết hợp 2 ý tưởng ở
trên. ▪ int turn; //đến phiên ai
▪ int interest[2] = FALSE; //interest[i] = T : Pi muốn vào CS
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.35

GIẢI PHÁP PHẦN MỀM

Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.36
GIẢI PHÁP PHẦN MỀM
➢Giải pháp phần mềm Peterson đáp ứng được cả 3 điều
kiện: ➢Mutual Exclusion :
▪ Pi chỉ có thể vào CS khi: interest[j] == F hay turn == i
▪ Nếu cả 2 muốn về thì do turn chỉ có thể nhận giá trị 0 hay 1 nên chỉ có 1
tiến trình vào CS
➢Progress
▪ Sử dụng 2 biến interest[i] riêng biệt => trạng thái đối phương không khóa
được mình.
➢Bounded Wait : interest[i] và turn đều có thay đổi giá trị. ➢Không thể mở

rộng cho N tiến trình


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.37

GIẢI PHÁP PHẦN MỀM


➢Nhìn chung đối với các giải pháp phần mềm:
▪ Không cần sự hỗ trợ của hệ thống.
▪ Khó mở rộng.
▪ Dễ dẫn đến sai.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.38

GIẢI PHÁP PHẦN CỨNG


Giải pháp cấm ngắt:
➢Disable Interrupt: cấm mọi ngắt, kể cả ngắt đồng hồ
➢Enable Interrupt: cho phép ngắt.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.39

GIẢI PHÁP PHẦN CỨNG


➢Thiếu thận trọng
➢Nếu tiến trình bị khóa trong CS ?
▪ System Halt
➢Cho phép tiến trình sử dụng một đặc quyền
▪ Quá ...liều !
▪ Máy có N CPUs ?
➢Không bảo đảm được Mutual Exclusion

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.40

GIẢI PHÁP PHẦN CỨNG Giải pháp


chỉ thị TSL:
▪ CPU hỗ trợ primitive Test and Set Lock
• Trả về giá trị hiện hành của 1 biến, và đặt lại giá trị True cho
biến • Thực hiện một cách không thể phân chia
TSL (boolean &target)
{
TSL = target;
target = TRUE;

}
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.41

➢Áp dụng TSL


GIẢI PHÁP PHẦN CỨNG

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.42
GIẢI PHÁP PHẦN CỨNG
➢Nhìn chung đối với các giải pháp phần cứng:
▪ Dễ mở rộng cho n tiến trình.
▪ Cần được sự hỗ trợ của cơ chế phần cứng.
• Đối với các máy có nhiều vi xử lý, điều này không dễ.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.43

CÁC GIẢI PHÁP ĐỒNG BỘ HÓA


➢Nhóm giải pháp Sleep & Wakeup: từ bỏ CPU khi chưa được vào
CS (miền găng). Khi CS trống sẽ được đánh thức để vào CS. Cần
được hệ điều hành hỗ trợ.
▪ Semaphore
▪ Monitor
▪ Message
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.44

SEMAPHORE
➢Được đề nghị bởi Dijkstra năm 1965
➢Các đặc tính: Semaphore s;

▪ Có 1 giá trị không âm


▪ Chỉ được thao tác bởi 2 primitives :
• Down(s)
• Up(s)
▪ Các primitive Down và Up được thực hiện không thể phân chia

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.45

SEMAPHORE
➢Semaphore được xem như là một resource
▪ Các tiến trình “yêu cầu” semaphore : gọi Down(s)
• Nếu không hoàn tất được Down(s) : chưa được cấp
resource – Blocked, được đưa vào s.L
➢Cần có sự hỗ trợ của HĐH
▪ Sleep() &
Wakeup()

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.46

SEMAPHORE
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.47

SEMAPHORE
➢Tổ chức “độc quyền truy xuất”

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.48

➢Tổ chức “hò hẹn”


SEMAPHORE
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.49

SEMAPHORE
➢Là một cơ chế tốt để thực hiện đồng bộ
▪ Dễ dùng cho N tiến trình
➢Nhưng ý nghĩa sử dụng không rõ ràng
▪ MutualExclusion : Down & Up
▪ Rendez-vous : Down & Up
▪ Chưa phân biệt qua mô hình
➢Khó sử dụng đúng
▪ Dễ nhầm lẫn
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.50

MONITOR
➢Đề xuất bởi Hoare(1974) & Brinch (1975)
➢Là cơ chế đồng bộ hóa do NNLT cung cấp
▪ Hỗ trợ các chức năng như Semaphore
▪ Dễ sử dụng và kiểm soát hơn Semaphore
• Đảm bảo Mutual Exclusion một cách tự động
• Sử dụng biến điều kiện để thực hiện Synchronization
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.51

MONITOR: NGỮ NGHĨA VÀ TÍNH CHẤT


➢Là một module chương trình định nghĩa
▪ Các CTDL, đối tượng dùng chung
▪ Các phương thức xử lý các đối tượng
này
▪ Đảm bảo tính encapsulation
➢Các tiến trình muốn truy xuất dữ liệu
bên trong monitor phải dùng các phương
thức
của monitor :
▪ P1 : M.C() // i=5

▪ P2: M.B() // printf(j)


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.52

MONITOR: NGỮ NGHĨA VÀ TÍNH CHẤT


➢Tự động bảo đảm Mutual Exclusion
▪ Tại 1 thời điểm chỉ có 1 tiến trình thực hiện các phương thức của
Monitor
▪ Các tiến trình không vào được Monitor sẽ được đưa vào Entry queue
của Monitor
➢Ví dụ
▪P1 : M.A();
▪P6 : M.B();
▪P7 : M.A();
▪P8 : M.C();
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.53

MONITOR: NGỮ NGHĨA VÀ TÍNH CHẤT


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.54

MONITOR: NGỮ NGHĨA VÀ TÍNH CHẤT


➢Hỗ trợ Synchronization với
các condition variables
▪ Wait(c) : Tiến trình gọi hàm
sẽ bị blocked
▪ Signal(c): Giải phóng 1 tiến
trình đang bị blocked trên
biến điều kiện c
▪ C.queue: danh sách các tiến
trình blocked trên c

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.55

MONITOR: NGỮ NGHĨA VÀ TÍNH CHẤT


➢Trạng thái tiến trình sau khi
gọi Signal?
▪ Blocked. Nhường quyền
vào monitor cho tiến
trình được đánh thức.
▪ Tiếp tục xử lý hết chu kỳ,
rồi blocked

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.56
SỬ DỤNG MONITOR

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.57
GIẢI PHÁP TRAO ĐỔI THÔNG ĐIỆP
(MESSAGE) ➢Được hỗ trợ bởi HĐH
➢Đồng bộ hóa trên môi trường phân tán
➢2 primitive Send & Receive
▪ Cài đặt theo mode blocking

Operating System
Silberschatz, Galvin and Gagne ©2018
Concepts – 10th Edition 1.58
CÁC VÍ DỤ KINH ĐIỂN
➢Producer –Consumer
➢Readers –Writers
➢Dinning Philosophers
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.59

PRODUCER -CONSUMER (BOUNDED-BUFFER


PROBLEM) ➢Mô tả : 2 tiến trình P và C hoạt động đồng hành
▪ P sản xuất hàng và đặt vào Buffer
▪ C lấy hàng từ Buffer đi tiêu thụ
▪ Buffer có kích thước giới hạn
➢Tình huống
▪ P và C đồng thời truy cập Buffer ?
▪ P thêm hàng vào Buffer đầy ?
▪ C lấy hàng từ Buffer trống ?
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.60

PRODUCER –CONSUMMER: GIẢI PHÁP


SEMAPHORE ➢Các biến chung giữa P và C
▪ BufferSize = N; // số chỗ trong bộ đệm
▪ semaphore mutex = 1 ; // kiểm soát truy xuất độc quyền
▪ semaphore empty = BufferSize; // số chỗ trống
▪ semaphore full = 0; // số chỗ đầy
▪ int Buffer[BufferSize];// bộ đệm dùng chung
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.61

PRODUCER –CONSUMMER: GIẢI PHÁP


SEMAPHORE
Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.62

PRODUCER –CONSUMMER: GIẢI PHÁP


SEMAPHORE

Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.63
PRODUCER –CONSUMMER : GIẢI PHÁP

MONITOR
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.64

PRODUCER –CONSUMMER : GIẢI PHÁP


MONITOR

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.65
PRODUCER –CONSUMMER: GIẢI PHÁP

MESSAGE
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.66

truy cập nội dung CSDL ➢Tình


READERS & huống
WRITERS ➢Mô tả: N tiến trình ▪ Các Rs cùng truy cập CSDL ?
Ws và Rs hoạt động đồng hành ▪ Rs R1
và Ws chia sẻ CSDL W1 W2

Database

R2 R3
▪ W cập nhật nội dung CSDL ▪ Rs
▪ W đang cập nhật CSDL thì các Rs truy cập CSDL ?
▪ Các Rs đang truy cập CSDL thì W muốn cập nhật CSDL ?

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.67

READERS-WRITERS VỚI “ACTIVE READERS”


Operating System Concepts – 10th Edition
Silberschatz, Galvin and Gagne ©2018
1.68

READERS-WRITERS VỚI MỘT “ACTIVE


WRITER” Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.69

Ưu tiên ai hơn đây?


Operating System
Silberschatz, Galvin and Gagne ©2018
Concepts – 10th Edition 1.70

READERS & WRITERS


➢W độc quyền truy xuất CSDL
➢W hiện tại kết thúc cập nhật CSDL : ai vào?
▪ Cho W khác vào, các Rs phải đợi
• Ưu tiên Writer, Reader có thể starvation
▪ Cho các Rs vào, Ws khác phải đợi
• Ưu tiên Reader, Writer có thể starvation

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.71
READERS & WRITERS : GIẢI PHÁP
SEMAPHORE ➢Các biến dùng chung giữa Rs và Ws
▪ semaphore db = 1; // Kiểm tra truy xuất CSDL

Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.72
READERS & WRITERS : GIẢI PHÁP
SEMAPHORE

Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.73

READERS & WRITERS : GIẢI PHÁP


SEMAPHORE ➢Các biến dùng chung giữa Rs và Ws
▪ semaphore db = 1; // Kiểm tra truy xuất CSDL
➢Các biến dùng chung giữa Rs
▪ int rc; // Số lượng tiến trình Reader
▪ semaphore mutex = 1; // Kiểm tra truy xuất rc
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.74

READERS & WRITERS : GIẢI PHÁP SEMAPHORE


Operating System Concepts –
Silberschatz, Galvin and Gagne ©2018
10th Edition 1.75

R&W : Giải pháp Semaphore (Thinking...)


Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.76

R&W: GIẢI PHÁP MONITOR


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.77

R&W: GIẢI PHÁP MONITOR


Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.78
R&W: GIẢI PHÁP MONITOR

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.79
DINING PHILOSOPHERS ➢Năm triết gia ngồi
chung quanh bàn ăn món spaghetti
▪ Trên bàn có 5 cái đũa được đặt giữa 5 cái đĩa (xem hình)
▪ Để ăn món spaghetti mỗi người cần có 2 cái đũa

➢Triết gia thứ i: ▪


Thinking...
▪ Eating...
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.80

You might also like