Tải bản đầy đủ (.docx) (35 trang)

TÌM HIỂU PHƯƠNG PHÁP ĐỒNG bộ hóa TIẾN TRÌNH SEMAPHORES – VIẾT ỨNG DỤNG MINH họa bài TOÁN TIẾN TRÌNH đọc GHI (READERS – WRITERS)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.75 MB, 35 trang )

Tiểu luận HĐH

Nhóm 11

TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP THỰC PHẨM TP. HCM KHOA
CƠNG NGHỆ THƠNG TIN
----------

NHĨM 11
TÌM HIỂU PHƯƠNG PHÁP ĐỒNG BỘ HĨA TIẾN TRÌNH
SEMAPHORES – VIẾT ỨNG DỤNG MINH HỌA BÀI TỐN
TIẾN TRÌNH ĐỌC - GHI (READERS – WRITERS)

BÀI TẬP NHĨM MƠN: HỆ ĐIỀU HÀNH

TP.HCM, NĂM 2022

TIEU LUAN MOI download :


Tiểu luận HĐH

Nhóm 11

TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP THỰC PHẨM TP. HCM KHOA
CƠNG NGHỆ THƠNG TIN
----------

NHĨM 11

TÌM HIỂU PHƯƠNG PHÁP ĐỒNG BỘ HĨA TIẾN TRÌNH


SEMAPHORES – VIẾT ỨNG DỤNG MINH HỌA BÀI TỐN
TIẾN TRÌNH ĐỌC - GHI (READERS – WRITERS)

BÀI TẬP NHĨM MƠN: HỆ ĐIỀU HÀNH

GVHD: Lê Anh Tuấn
Lớp danh nghĩa: 12DHBM2
TKB chính thức: Tiết 1-3, thứ 7
NHĨM THỰC HIỆN: NHÓM 11

TP.HCM, NĂM 2022

TIEU LUAN MOI download :


Tiểu luận HĐH

Nhóm 11

BẢNG ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN CƠNG VIỆC NHĨM
STT
1
2
3
4

LỜI CẢM ƠN
Đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến Trường Đại học Công
nghiệp thực phẩm đã đưa môn học Hệ điều hành vào chương trình giảng dạy. Đặc
biệt, chúng em xin gửi lời cảm ơn sâu sắc đến giảng viên bộ môn - Thầy Lê Anh

Tuấn đã dạy dỗ, truyền đạt những kiến thức quý báu cho em trong suốt thời gian
học tập vừa qua. Trong thời gian tham gia lớp học Hệ điều hành của thầy, chúng em
đã có thêm cho mình nhiều kiến thức bổ ích. Đây chắc chắn sẽ là những kiến thức
quý báu, là hành trang để chúng em có thể vững bước sau này.
Bộ mơn Hệ điều hành là mơn học thú vị, vơ cùng bổ ích và có tính thực tế
cao. Đảm bảo cung cấp đủ kiến thức, gắn liền với nhu cầu thực tiễn của sinh viên.
Tuy nhiên, do vốn kiến thức còn nhiều hạn chế và khả năng tiếp thu thực tế còn
nhiều bỡ ngỡ. Mặc dù chúng em đã cố gắng hết sức nhưng chắc chắn bài tiểu luận
khó có thể tránh khỏi những thiếu sót và nhiều chỗ cịn chưa chính xác, kính mong
thầy xem xét và góp ý để bài tiểu luận của chúng em được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!

TIEU LUAN MOI download :

1


Tiểu luận HĐH

Nhóm 11

MỤC LỤC
LỜI CẢM ƠN......................................................................................................................................................................1
LỜI MỞ ĐẦU......................................................................................................................................................................3
CHƯƠNG 1: CÁC KHÁI NIỆM LIÊN QUAN.............................................................................................................4
I.
II.

KHÁI NIỆM ĐỒNG BỘ HÓA GIỮA CÁC TIẾN TRÌNH............................................................................................. 4
VẤN ĐỀ ĐOẠN GĂNG...................................................................................................................................... 4

1. Tài nguyên găng (Critical Resource)............................................................................................................4
2. Đoạn găng (Critical Section)........................................................................................................................5
3. Điều kiện thỏa mãn đoạn găng.....................................................................................................................5

CHƯƠNG 2: CÁC GIẢI PHÁP ĐỒNG BỘ...................................................................................................................6
I.

GIẢI PHÁP SEMAPHORE................................................................................................................................. 6
Định nghĩa.....................................................................................................................................................6
Hoạt động......................................................................................................................................................7
Phân loại Semaphora....................................................................................................................................8
Tổ chức truy xuất độc quyền.......................................................................................................................11
Tổ chức đồng bộ hóa phối hợp hoạt động:.................................................................................................11
Nhận xét......................................................................................................................................................12
Một số chú ý khi sử dụng semaphore..........................................................................................................13
II. GIẢI PHÁP “BUSY - WAITING”................................................................................................................. 13
1. Giải pháp phần cứng...................................................................................................................................13
2. Giả pháp phần mềm....................................................................................................................................14
III.
GIẢI PHÁP “SLEEP AND WAKE UP”...................................................................................................... 17
1. Giải pháp Monitor......................................................................................................................................18
2. Giải pháp trao đổi thông điệp (message passing):.....................................................................................21
1.
2.
3.
4.
5.
6.
7.


CHƯƠNG 3: BÀI TOÁN READER/WRITER............................................................................................................23
I.
II.

GIỚI THIỆU BÀI TOÁN................................................................................................................................... 23
GIẢI QUYẾT BÀI TOÁN.................................................................................................................................. 26
1. Cấu trúc của Reader...................................................................................................................................26
2. Cấu trúc của Writer.....................................................................................................................................27
3. Chương trình bài tốn Readers/Writers......................................................................................................27
4. Kết quả chương trình..................................................................................................................................30

TÀI LIỆU THAM KHẢO................................................................................................................................................31

TIEU LUAN MOI download :

2


Tiểu luận HĐH

Nhóm 11

LỜI MỞ ĐẦU
Sự phát triển khơng ngừng của khoa học kỹ thuật ngày nay, theo đó là sự phát
triển của Công nghệ thông tin đã tạo ra rất nhiều ứng dụng phục vụ cho đời sống
xã hội. Khơng những hỗ trợ trong việc quản lý mà cịn thuận tiện trong kinh doanh,
giúp phát triển kinh tế và các ngành nghề liên quan.
Thực tế, việc thúc đẩy phát triển hoàn toàn phụ thuộc nhu cầu sử dụng cho đời
sống xã hội. Bên cạnh đó, phổ biến trong việc sử dụng công nghệ thông tin đã ảnh
hưởng đến tất cả ngành nghề. Từ đó cũng đặt ra những vấn đề liên quan làm thế

nào để có thể vận hành một cách an tồn mà khơng xảy ra các trở ngại.
Một trong những trở ngại cần được quan tâm đó chính là vấn đề đồng bộ hóa
trong hệ điều hành. Việc ảnh hưởng đến quán trình thực thi trong hệ thống có thể
tổn hại đến cả hệ thống, gây sự khơng đồng nhất dữ liệu. Vì thế ta cần giải pháp,
các cơ chế để đảm bảo việc thực thi có thứ tự của các quá trình chia sẻ tài nguyên
để hệ thống được duy trì.
Semaphore ln là lời giả kinh điển cho bài tốn về việc chia sẻ tài ngun.
Thơng qua việc tìm hiểu bài tốn có thể giúp chúng ta hiểu rõ hơn về cách thức
hoạt động vấn đề này của hệ điều hành.

TIEU LUAN MOI download :

3


Tiểu luận HĐH

Nhóm 11

CHƯƠNG 1: CÁC KHÁI NIỆM LIÊN QUAN
I. Khái niệm đồng bộ hóa giữa các tiến trình
Đồng bộ tiến trình là gì?
Đồng bộ các tiến trình là bảo đảm các tiến trình xử lý song song khơng tác
động sai lệch đến nhau. Đồng tiến trình có lẽ hoặc trực tiếp chia sẻ một khơng gian
địa chỉ (có nghĩ là, cả mã nguồn và dữ liệu), hoặc được cho phép để chia sẻ dữ liệu
chỉ thông qua các file. Một trường hợp chính tắc đạt được khi sử dụng các tiến trình
đơn giản hoặc các tuyển. Cùng nhập vào chia sẻ dữ liệu có thể kết quả sẽ dẫn đến
xung khắc dữ liệu.
Tại sao phải dồng bộ giữa các tiến trình?
Yêu cầu độc quyền truy xuất (mutual exclusion): tại một thời điểm, chỉ có

một tiến trình được quyền truy xuất một tài nguyên không thể chia sẻ.
Yêu cầu phối hợp (synchroniztion): các tiến trình cần hợp tác với nhau để
hồn thành cơng việc. Ví dụ chương trình in sẽ xuất kí tự vào buffer, chương trình
điều khiển máy in (printer driver) sẽ lấy kí tự trong buffer ra để in. hai tiến trình
này phải phối hợp với nhau để làm sao chương trình in khơng được xuất kí tự vào
buffer khi buffer đầy mà phải chời printer driver lấy bớt dữ liệu trong buffet ra.
II. Vấn đề đoạn găng
1. Tài nguyên găng (Critical Resource)
- Các tiến trình hoạt động đồng thời thường cạnh tranh nhau trong việc sử
dụng tài nguyên dùng chung (cùng ghi vào không ghi nhớ chung hay cùng
ghi dữ liệu vào một file chia sẻ).
- 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 này được gọi là tài nguyên găng.
- Tài nguyên găng có thể là tài nguyên phần cứng, tài nguyên phần mềm, tài
nguyên không phân chia được hoắc đa số là tài nguyên phân chia được (các
biến chung, file chia sẻ).

TIEU LUAN MOI download :

4


Tiểu luận HĐH

Nhóm 11

2. Đoạn găng (Critical Section)
Xem xét một hệ thống bao gồm n tiến trình. Mỗi tiến trình có một
đoạn mã lệnh, được gọi là đoạn găng, trong đó tiến trình có lẽ đang thay đổi
biến chung, cập nhập một bảng, viết một tệp, những gì tương tự thế. Đặc

trưng quan trọng của một hệ thống là, khi một tiến trình đang thực thi trong
đoạn găng của nó. Vì vậy, việc thực thi của đoạn găng bởi tiến trình tranh
chấp đúng lúc. Vấn đề đoạn găng thiết kế một giao thức mà tiến trình có thể
sử dụng để hợp tác. Mỗi tiến trình phải chấp nhận yêu cầu để nhập vào đoạn
găng của nó. Phần mã lệnh thực hiện yêu cầu này được gọi là đoạn tiếp nhận
(entry section). Đoạn găng có lẽ được tiếp tục bởi một thốt đoạn. Đoạn mã
lệnh cịn phải là phần dư.

3. Điều kiện thỏa mãn đoạn găng
Yêu cẩu cho vấn đề đoạn găng cũng là u cầu của đồng bộ hóa tiến
trình. Theo đó cần thỏa mãn 3 điều kiện sau:
- Loại bỏ tranh chấp (Mutual Exclusion): Nếu một tiến trình đang thực thi
trong đoạn găng của nó thì khơng một tiến trình nào khác có thể thực thi
trong đoạn găng của nó.

TIEU LUAN MOI download :

5


Tiểu luận HĐH

Nhóm 11

- Tiến trình (Progress): Một tiến trình tạm dừng bên ngồ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. Nếu khơng có tiến trình
nào đang trong đoạn găng của nó và một số tiến trình khác muốn vào thì
những tiến trình mà đang khơng thực thi phần cịn lại mới có thể là ứng cử
viên. Việc lựa chọn này không thể định dạng postponed.
- Giới hạn đợi (Bounded wait): Khơng có tiến trình nào phải chờ đợi vô hạn

để được vào miền găng. Giới hạn số lần các tiến trình được phép vào đoạn
găng của chúng ta khi một tiến trình thực hiện yêu cầu đi vào đoạn găng và
trước khi yêu cầu đó được giảm.

CHƯƠNG 2: CÁC GIẢI PHÁP ĐỒNG BỘ
I. Giải Pháp Semaphore
1. Định nghĩa
a)

Khái niệm

- Là một trong những đóng góp quan trọng của nhà tốn học người Hà
Lan Edsger Wybe Dijkstra, Semaphore là một công cụ đồng bộ cung cấp
bởi OS mà không đỏi hỏi Busy Waiting.
- Semaphore về cơ bản là một biến khơng âm tính đến tốn tử khởi tạo,
nó chỉ có thể truy cập thơng qua hai toán tử nguyên tố là wait (Down hay
P) và signal (Up hay V)
b)

Đặc tính
- Có 1 giá trị: Semaphore s; // s>=0
- Hai thao tác được định nghĩa trên semaphore:
Down(s): giảm s đi 1 đơn vị. Nếu giá trị s âm process phỉa chờ,
ngược lại thì tiếp tục xử lý.

TIEU LUAN MOI download :

6



Tiểu luận HĐH

Nhóm 11

Up(s): tăng s lên 1 đơn vị. nếu có một hoặc nhiều tiến tình đang chờ
trên semaphore s bị khóa bởi thao tác Down thì hệ thống sẽ chọn một
trong các tiến trình này để kết thúc thao tác Down và chờ tiếp tục xử
lý.

Hai thao tác này có tính ngun tố, nghĩa là khơng bị ngắt giữa chừng.

2. Hoạt động

TIEU LUAN MOI download :

7


Tiểu luận HĐH

Nhóm 11

Hình 1 Hoạt động của giải pháp Semaphore

- Khi count đang lớn hơn 0, tức là semaphore đang ở trạng thái
AVAILABLE , nếu một thread gọi hàm down, thì biến count bị giảm đi 1
đơn vị (nếu hiệu bằng 0 thì semaphore chuyển sang trạng
thái UNAVAILABLE). Sau đó, CPU bắt đầu thực thi critical section của
thread (nói theo ngôn ngữ của CPU), hay thread bắt đầu sử dụng critical
resource (nói theo ngơn ngữ của Linux kernel).

Khi count đang bằng 0, tức là semaphore đang ở trạng
thái UNAVAILABLE, nếu một thread gọi hàm down, thì CPU tạm dừng
thực thi thread này rồi chuyển sang thực thi thread khác (nói theo ngơn ngữ
của CPU). Hay nói theo ngơn ngữ của Linux kernel, thread đó được thêm
vào hàng đợi wait_list và đi ngủ, sau đó Linux kernel sẽ lập lịch cho thread
khác. Do đó, ta nói rằng, semaphore áp dụng cơ chế sleep-waiting.
Khi wait_list vẫn cịn ít nhất một thread đang phải đợi, nếu một thread
A gọi hàm up, thì CPU sẽ chuyển sang thực thi thread B nằm ở vị trí đầu tiên
trong hàng đợi wait_list (nói theo ngơn ngữ của CPU). Hay nói theo ngơn
ngữ của Linux kernel, Linux kernel đánh thức thread B dậy, sau đó thread B
bắt đầu sử dụng critical resource.

TIEU LUAN MOI download :

8


Tiểu luận HĐH

Nhóm 11

Khi wait_list khơng cịn thread nào chờ đợi, nếu một thread gọi hàm
up, thì biến count được tăng thêm 1 đơn vị, tức là semaphore chuyển sang
trạng thái AVAILABLE.

3. Phân loại Semaphora
Semaphore có 2 thành phần chính: biến count và hàng đợi wait_list. Căn cứ
vào biến count mà semaphore được chia làm 2 loại:
a) Counting Semaphore (Đếm Semaphore)
Giá trị cực đại của biến count lớn hơn 1. Giá trị cực đại của biến

count thể hiện số lượng tiến trình tối đa được phép sử dụng criticalsection tại cùng một thời điểm.

TIEU LUAN MOI download :

9


Tiểu luận HĐH

Nhóm 11

Trong việc triển khai này, bất cứ khi nào tiến trình đợi, nó sẽ được
thêm vào một hàng đợi của các tiến trình được liên kết với semaphore
đó. Điều này được thực hiện thơng qua khối lệnh gọi hệ thống trên tiến
trình đó. Khi một q trình hồn thành, nó gọi hàm tín hiệu và một q
trình trong hàng đợi được tiếp tục. Nó sử dụng cuộc gọi hệ thống awup.

b) Binary Semaphore (Semaphore nhị phân)
Nếu biến count chỉ có hai giá trị 0 và 1, thì semaphore được gọi là
binary semaphore. Binary semaphore có một số nét tương đồng với mutex
lock.

10


TIEU LUAN MOI download :


Tiểu luận HĐH


Nhóm 11

Mơ tả ở trên dành cho semaphore nhị phân chỉ có thể nhận hai giá
trị 0 và 1 và đảm bảo loại trừ lẫn nhau. Có một loại semaphore khác được
gọi là semaphore đếm có thể nhận các giá trị lớn hơn một.
Bây giờ, giả sử có một tài nguyên có số lượng cá thể là 4. Bây giờ
chúng ta khởi tạo S = 4 và phần còn lại giống như đối với semaphore nhị
phân. Bất cứ khi nào q trình muốn tài ngun đó, nó sẽ gọi P hoặc đợi
hàm và khi nó được thực hiện, nó gọi V hoặc hàm tín hiệu. Nếu giá trị của
S trở thành 0 thì một quá trình phải đợi cho đến khi S trở thành dương. Ví
dụ, Giả sử có 4 tiến trình P1, P2, P3, P4 và chúng đều gọi thao tác chờ
trên S (được khởi tạo bằng 4). Nếu một tiến trình khác P5 muốn tài
nguyên thì nó phải đợi cho đến khi một trong bốn tiến trình gọi hàm tín
hiệu và giá trị của semaphore trở nên dương.

TIEU LUAN MOI download :

11


Tiểu luận HĐH

Nhóm 11

c) So sánh hai loại

4. Tổ chức truy xuất độc quyền
- Semaphore bảo đảm nhiều tiến trình cùng truy xuất mà khơng có sự mâu
thuẫn.
- Giả sử n tiến trình cùng sử dụng một semaphore s, được khởi tạo bằng 1.

- Để thực hiện đồng bộ hóa, tất cả các tiến trình cần phỉa áp dụng cùng cấu
trúc chương trình:

5. Tổ chức đồng bộ hóa phối hợp hoạt động:

TIEU LUAN MOI download :

12


Tiểu luận HĐH

Nhóm 11

- Sử dụng semaphore có thể đồng bộ hóa hoạt động của hai tiến trình trong
tình huống một tiến trình phải đợi một tiến trình khác hồn tất thao tác nào
đó mới có thể bắt đầu hay tiếp tục xử lý.
- Hai tiến trình chia sẻ một semaphore s, khởi tạo bằng 0. Cấu trúc:

6. Nhận xét
- Ưu điểm:
Nó cho phép nhiều hơn một luồng truy cập vào critical - section.
Có thể thiết lập khơng cho phép nhiều process vào critical-section.
Vì có q trình “busy waiting” trong semaphore, thời gian và tài ngun
sẽ khơng bị lãng phí.
Cho phép quản lý tài nguyên linh hoạt.
- Nhược điểm:
Một trong những hạn chế lớn nhất của semaphore là đảo ngược ưu tiên.
Hệ điều hành phải theo dõi tất cả các cuộc gọi để chờ và báo hiệu cho
semaphore.

Việc sử dụng chúng không bao giờ được thực thi mà chỉ là theo quy ước.
Để tránh deadlock trong semaphore, các hoạt động Wait và Signal yêu
cầu phải được thực hiện theo đúng thứ tự.
Lập trình Semaphore là một cơng việc phức tạp, vì vậy có khả năng
khơng đạt được loại trừ lẫn nhau.
Nó cũng khơng phải là một phương pháp thực tế để sử dụng trên quy mơ
lớn vì việc sử dụng chúng dẫn đến mất tính mơ đun.
Semaphore dễ bị lỗi lập trình viên hơn.

TIEU LUAN MOI download :

13


Tiểu luận HĐH

Nhóm 11

Nó có thể gây ra bế tắc hoặc vi phạm loại trừ lẫn nhau do lỗi của người
lập trình.
7. Một số chú ý khi sử dụng semaphore
Khi triển khai giải pháp này, ta cần chú ý đến một số điểm sau:
- Do semaphore áp dụng cơ chế chờ đợi sleep-waiting, nên ta chỉ sử dụng
kỹ thuật này khi khoảng thời gian chờ đợi dài. Thông thường, nếu critical
section chứa lời gọi hàm sleep/schedule hoặc gồm nhiều câu lệnh, thì có thể
áp dụng semaphore.
- Kỹ thuật này hồn toàn phù hợp để áp dụng trong các thread được phép đi
ngủ, ví dụ như các kernel thread thơng thường, hoặc bottom-half được triển
khai bằng workqueue.
- Ta không được phép gọi hàm down hoặc down_interruptible trong ISR,

hoặc bottom-half được triển khai bằng tasklet/softirq. Tuy vậy, hàm
down_trylock và up vẫn có thể được gọi từ ISR.
- Một thread có thể giải phóng semaphore mặc dù nó khơng phải là người
đã chiếm dụng. Điều này khác so với kỹ thuật spinlock và mutex lock.
- Trong khi đang chiếm dụng một spinlock, ta không được gọi hàm
down_interruptible hoặc down để lấy một semaphore.

II. Giải pháp “BUSY - WAITING”
1. Giải pháp phần cứng
a) Cấm tắt
Cho phép tiến trình cấm tất cả các ngắt trước khi vào miền
găng, và phục hồi ngắt khi ra khỏi miền găng. Khi đó, ngắt đồng
hồ cũng khơng xảy ra, do vậy hệ thống không thể tạm dừng hoạt
động của tiến trình đang xử lý để cấp phát CPU cho tiến trình
khác, nhờ đó tiến trình hiện hành n tâm thao tác trên miền găng
mà khơng sợ bị tiến trình nào khác tranh chấp.
Giải pháp này không được ưa chuộng vì rất thiếu thận trọng
khi cho phép tiến trình người dùng được phép thực hiện lệnh cấm
ngắt. Hơn nữa, nếu hệ thống có nhiều bộ xử lý, lệnh cấm ngắt chỉ
có tác dụng trên bộ xử lý đang xử lý tiến trình, cịn các tiến trình
hoạt động trên các bộ xử lý khác vẫn có thể truy xuất đến miền
găng!

TIEU LUAN MOI download :

14


Tiểu luận HĐH


Nhóm 11

b) Test and set
Đây là một giải pháp đòi hỏi sự trợ giúp của cơ chế phần
cứng. Nhiều máy tính cung cấp một chỉ thị đặc biệt cho phép kiểm
tra và cập nhật nội dung một vùng nhớ trong một thao tác không
thể phân chia, gọi là chỉ thị Test-and-Set Lock (TSL) và được định
nghĩa như sau:
Test-and-Setlock (boolean target)
{
Test-and-Setlock = target;
target = TRUE;
}
Nếu có hai chỉ thị TSL xử lý đồng thời (trên hai bộ xử lý
khác nhau), chúng sẽ được xử lý tuần tự. Có thể cài đặt giải pháp
truy xuất độc quyền với TSL bằng cách sử dụng thêm một biến
lock, được khởi gán là FALSE. Tiến trình phải kiểm tra giá trị của
biến lock trước khi vào miền găng, nếu lock = FALSE, tiến trình có
thể vào miền găng.
while (TRUE) {
while (Test-and-Setlock(lock));
critical-section ();
lock = FALSE;
Noncritical-section ();
}
Cũng giống như các giải pháp phần cứng khác, chỉ thị TSL
giảm nhẹ cơng việc lập trình để giải quyết vấn để, nhưng lại không
dễ dàng để cài đặt chỉ thị TSL sao cho được xử lý một cách khơng
thể phân chia, nhất là trên máy với cấu hình nhiều bộ xử lý.
2. Giả pháp phần mềm

a) Sử dụng cở biến hiệu:
Các tiến trình chia sẻ một biến chung đóng vai trị lock, được
khởi động bằng 0.
Một tiến trình muốn vào miền găng trước tiên phải kiểm tra
giá trị của biến lock. Nếu lock = 0, tiến trình đặt lock = 1 và đi vào
miền găng.
Nếu lock nhân giá trị 1, tiến trình phải chờ bên ngồi miền
găng cho đến khi lock = 0.

TIEU LUAN MOI download :

15


Tiểu luận HĐH

Nhóm 11

- Cấu trúc của tiến trình:

Nhận xét: có thể vi phạm điều kiện cả 2 tiến trình cùng ở
trong miền găng tại một thời điểm.
b) Sử dụng việc kiểm tra luân phiên
Giải pháp dành cho hai tiến trình
Hai tiến trình sử dụng chung biến turn (phản ánh phiên tiến
trình được vào miền găng), được khởi động với giá trị 0. Nếu turn
= 0, chỉ có tiến trình A được vào miền găng. Nếu turn = 1, chỉ có
tiến trình B được phép vào.
Cấu trúc:


Nhận xét: với biện pháp kiểm tra ln phiên có thể ngăn chặn
được tình trạng 2 tiến trình cùng vào miền găng. Tuy nhiên có thể
vi phạm điều kiện một tiến trình có thể bị ngăn vào miền găng bởi
một tiến trình khác khơng ở trong miền găng.

TIEU LUAN MOI download :

16


Tiểu luận HĐH

Nhóm 11

c) Giải pháp của Peterson
Kết hợp ý tưởng của hai giải pháp trên: P0, P1 chia sẻ hai
biến chung:
int turn; //đến phiên ai
boolean flag[2] = false; //flag[i] = true => Pi sẵn sàng vào đoạn
găng
-

Cấu trúc:

III.
Giải pháp “SLEEP and WAKE UP”
- Khắc phục được nhược điểm của các giải pháp “Busy-Waiting” bằng cách
cho một tiến trình chưa đủ điều kiện vào đoạn găng chuyển sang trang thái
waiting.
Tạm khóa tiến trình khơng cho sử dụng CPU ngay vì tiến tình chỉ sử dụng

CPU khi ở trạng thái running.
Tiến trình chỉ có thể chuyển sang trạng thái running khi đang ở trạng thái
ready.
- Tính chất:
Từ bỏ CPU khi chưa được vào Critical-section
Cần sự hỗ trợ từ hệ điều hành để đánh thức process và đưa process vào
trạng thái blocked.
- Ý tưởng:

TIEU LUAN MOI download :

17


Tiểu luận HĐH

Nhóm 11

Khi một tiến trình chưa đủ điều kiện vào đoạn găng, nó gọi sleep để tự
khóa cho đến khi một tiến trình khác gọi wakep để giải phóng nó.
Một tiến trình gọi wakup khi ra khỏi miền găng để đánh thức một tiến
trình đang chờ, tạo cơ hội cho tiến trình này vào miền găng.
- Cấu trúc:
int busy; //1 nếu miền găng đang bị chiếm, ngược lại là 0
int blocked; //đếm số lượng tiến trình đang bị tạm khóa

Các giải pháp
phổ biến: o Semaphore
o Monitors


TIEU LUAN MOI download :

18


Tiểu luận HĐH

Nhóm 11

o Trao đổi thơng điệp
1. Giải pháp Monitor
Được đề xuất bởi Hoare (1974) và Brinch (1975). Monitor là cơ chế cao hơn
được cung cấp bởi ngôn ngữ lập trình.
a) Định nghĩa
Thuật ngữ monitor: giám sát
Monitor là một cấu trúc dữ liệu có đặc điểm:
Các biến và cấu trúc dữ liệu bên trong monitor chỉ có thể được thao
tác bởi các thủ tục định nghĩa bên trong monitor đó.
Tại một thời điểm, chỉ có một tiến trình duy nhất được hoạt động bên
trong
Trong một monitor, có thể định nghĩa các biến điều kiện và hai thao
tác kèm theo là Wait và Signal như sau: gọi c là biến điều kiện được định
nghĩa trong monitor:
Wait(c): tiến trình gọi hàm sẽ bị blocked. Chuyển trạng thái tiến trình
gọi sang trạng thái waiting, và đặt tiến trình này vào hàng đợi trên biến
điều kiện c.
Signal(c): giải phóng 1 tiến trình đang bị blocked trên biến điều kiện c.
Nếu có một tiến trình đang bị khóa trong hàng đợi của c, tái kích hoạt
tiến trình đó và tiến trình đó sẽ rời khỏi monitor.
C.queue: danh sách các tiến trình blocked trên

c. (chú thích hình)

TIEU LUAN MOI download :

19


Tiểu luận HĐH

Nhóm 11

b) Cấu trúc:
Monitor thường gồm có:
Tập các procedure thao tác trên tài nguyên chung.
Khóa loại trừ lẫn nhau.
Các biến tương ứng với các tài nguyên chung.
Một số các giả định bất biến nhằm tránh các tình huống tương tranh.
Monitor Type:
Một kiểu type hoặc kiểu trừa tượng (abstract type) gồm các dữ liệu
private và các phương thức public.
Monitor type được đặc trưng bởi tập các toán tử của người sử dụng
định nghĩa.
Có các biến xác định các trạng thái; mã lệnh của các procedure thao
tác trên các biến này.

TIEU LUAN MOI download :


Tiểu luận HĐH


Nhóm 11

- Monitor condition:

TIEU LUAN MOI download :

21


Tiểu luận HĐH

Nhóm 11

Sử dụng monitor kiểu condition chỉ có 2 toán tử: wait và
signal Đặc điểm của signal():
o Chỉ đánh thức duy nhất 1 tiến trình đang chờ.
o Nếu khơng có tiến trình chờ, x.signal() khơng có tác dụng.
x.signal() khác với signal trong semaphore, signal của semaphore luôn
làm thay đổi giá trị (trạng thái) của semaphore.
c) Vấn đề sử dụng monitor:
- Monitor không đảm bảo rằng các thứ tự truy xuất trước sẽ được chú ý.
Một q trình có thể truy xuất tài nguyên mà không đạt được quyền
truy xuất trước đó.
Một q trình sẽ khơng bao giờ giải phóng tài nguyên một khi nó được
gán truy xuất tới tài ngun đó.
Một q trình có thể cố gắng giải phóng tài ngun mà nó khơng bao
giờ u cầu.
Một q trình có thể u cầu cùng tài ngun hai lần (khơng giải
phóng tài ngun đó trong lần đầu).
Việc sử dụng monitor cũng gặp những khó khăn như xây dựng miền

tương trục. khó khăn trong việc dử dụng đúng các thao tác được định
nghĩa của người lập trình cấp cap mà các trình biên dịch khơng cịn hỗ trợ
2. Giải pháp trao đổi thông điệp (message passing):

TIEU LUAN MOI download :

22


×