Bài giảng Hệ điều hành: Chương 2.3 do TS. Ngô Hữu Dũng biên soạn nhằm mục đích phục vụ cho việc giảng dạy. Nội dung bài giảng gồm có: Liên lạc giữa các tiến trình, các cơ chế liên lạc, khái niệm đồng bộ tiến trình, tranh đoạt điều khiển,...
Trang 1HỆ ĐIỀU HÀNH
(OPERATING SYSTEM CONCEPTS)
Wiley - Operating System Concepts(Silberschatz).9th
Trang 2Giới thiệu môn học
Trang 3CHƯƠNG 2:
QUẢN LÝ TIẾN TRÌNH – P3
ĐỒNG BỘ TIẾN TRÌNH
Process Management
Trang 4Nội dung
Các khái niệm
chương trình và tiến trình
các thao tác & trạng thái của tiến trình
khối điều khiển tiến trình ProcessControlBlock
Điều phối tiến trình
Liên lạc giữa các tiến trình
Đồng bộ tiến trình
Deadlock
Trang 5Liên lạc giữa các tiến trình
communication – IPC )
Trang 6Liên lạc giữa các tiến trình
cung cấp cơ chế liên lạc giữa các tiến trình
lạc giữa các tiến trình giữa các máy tính khác nhau
Trang 8Communication models
Trang 9ĐỒNG BỘ TIẾN TRÌNH
Trang 10Khái niệm
tiến trình có khả năng liên lạc với nhau
Trang 11Ví dụ 1
characters = characters + 1;
read characters into register r1
increment r1
write register r1 to characters
Trang 12Ví dụ 1
Trang 13error (“khong the rut !”);
Trang 14error (“hettien , ko the rut !”);
Taikhoan = 800
Trang 15 Mutual exclusion: cơ chế đồng bộ đảm bảo chỉ có một tiểu trình duy nhất được thực hiện trong miền găng tại một thời điểm
Deadlock: tình trạng các tiểu trình bị khóa mãi mãi
Starvation: đang thực thi nhưng không có tiến triển.
Trang 16Tranh đoạt điều khiển
Tranh đoạt điều khiển là gì? (Race condition)
if (taikhoan – tien_rut >= 0)
taikhoan = taikhoan – tien_rut;
else
cout << “Không đủ tiền trong tài khoản”;
Là tình huống mà kết quả của chương trình phụ thuộc vào sự điều phối của hệ thống
Trang 17Tranh đoạt điều khiển
và Phương pháp giải quyết
Miền găng: là đoạn mã nguồn truy cập tới vùng nhớ dùng chung
…
//bắt đầu miền găng
If(taikhoan – tienrut >= 0) taikhoan = taikhoan – tienrut;
Else cout<<“Không đủ tiền trong tài khoản”
Trang 18Bài toán đồng bộ hóa
Mô hình đảm bảo độc
quyền truy xuất
Mô hình tổ chức phối hợp giữa 2 tiến trình
Kiểm tra và dành quyền vào CS
Từ bỏ quyền sử dụng CS
CS:
Trang 19Bài toán đồng bộ hóa
điểm
tiến trình khác vào miền găng
Trang 20 Nhóm giải pháp Busy Waiting
Trang 21Nhóm giải pháp Busy Waiting
Dùng biến cờ hiệu
Trang 22Nhóm giải pháp Busy Waiting
Kiểm tra luân phiên
Trang 23Nhóm giải pháp Busy Waiting
Giải pháp của Peterson
Trang 24Nhóm giải pháp Busy Waiting
Trang 25Nhóm giải pháp Busy Waiting
enter_region:
TSL RX, LOCK | chép giá trị lock vào RX và gán lock = 1
JNE enter_region | jump nếu khác 0
leave_region:
Chỉ thị TSL (Test-and-Set)
Trang 26 Giải pháp Peterson và TSL đều đúng, tuy nhiên chiếm thời gian CPU vì vòng lặp kiểm tra liên tục
giải pháp sleep and wakeup
Trang 27Ý tưởng chính
while (TRUE) {
if (busy){
blocked = blocked + 1; sleep();
noncritical-section ();
Trang 28Nhóm giải pháp Sleep & Wakeup
có 2 thao tác là wait và signal
Down ( Wait hay P): giảm S đi một, và kiểm tra xem process có
bị blocked hay tiếp tục run?
Up (Signal hay V): tăng S lên một, và kiểm tra xem có 1
process đang blocked thì đánh thức nó
-bị ngắt giữa chừng
Semaphore
Trang 29Nhóm giải pháp Sleep & Wakeup
Cài đặt Semaphore
Semaphore có thể khởi tạo 1 hoặc 0
Semaphore
Trang 30Nhóm giải pháp Sleep & Wakeup
Sử dụng Semaphore
Tổ chức độc quyền truy xuất
Semaphore
Trang 31Nhóm giải pháp Sleep & Wakeup
(1) Sử dụng semaphore để đảm bảo độc quyền truy suất :
(Khởi tạo 1)
Nguyên tắc :
được vào miền găng => độc quyền truy suất
Semaphore
Trang 32Nhóm giải pháp Sleep & Wakeup
(2) Sử dụng semaphore để phối hợp hoạt động giữa các
tiến trình :
job2() Trình tự thực hiện là : job2() chỉ được thực hiện sau khi job1() hoàn tất
0 , và cấu trúc chương trình như hình 2
Semaphore
Trang 33Bài toán sản xuất – tiêu thụ
( hay Vùng đệm có giới hạn )
Trang 34Bài toán sản xuất – tiêu thụ
( hay Vùng đệm có giới hạn )
Cấu trúc 1 : đảm bảo đồng bộ (phối hợp) giữa 2 tiến trình
đảm bảo đồng bộ giữa 2 tiến trình = đảm bảo 2 ràng buộc
Trang 35Bài toán sản xuất – tiêu thụ
( hay Vùng đệm có giới hạn )
• Cấu trúc 2 : đảm bảo đồng bộ (phối hợp) giữa 2 tiến trình + độc quyền truy suất
Trang 37Khái niệm
=> Tất cả các tiến trình trong tập hợp bị khóa vĩnh viễn !
Trang 38Bữa ăn tối của các triết gia
Trang 39Mô hình hệ thống
sẻ cho các tiến trình có nhu cầu
tiến trình phải đợi
Trang 40Các điều kiện xảy ra Deadlock
thể làm xuất hiện deadlock
mang bản chất không chia sẻ được
cho nó trong khi chờ được cấp phát thêm một số tài nguyên mới
nắm giữ tự nguyên trao trả
nguyên
Hội đủ 4 điều kiện trên Deadlock có thể xảy ra
Trang 41Đồ thị cấp phát tài nguyên
Trang 42Đồ thị cấp phát tài nguyên
Trang 43Đồ thị cấp phát tài nguyên
Trang 44Đồ thị cấp phát tài nguyên
Trang 45Bài toán ngăn ngừa deadlock
Trang 47Giải thuật cấp phát tài nguyên kiểu cũ
Trang 48Thuật toán nhà băng
Banker’s Algorithm
Trang 49Thuật toán nhà băng Banker’s Algorithm
TestSafe()
Trang 50Ví dụ
Trang 53Tóm tắt