Các giải pháp đồng bộ hóa

4 430 1
Các giải pháp đồng bộ hóa

Đang tải... (xem toàn văn)

Thông tin tài liệu

Các giải pháp đồng hóa Các giải pháp đồng hóa Bởi: Giảng viên Trần Hạnh Nhi Bài học giới thiệu giải pháp cụ thể để xử lý toán đồng hoá Có nhiều giải pháp để thực việc truy xuất miền găng, giải pháp phân biệt thành hai lớp tùy theo cách tiếp cận xử lý tiến trình bị khóa :các giải pháp « busy waiting » giải pháp « sleep and wakeup » Giải pháp « busy waiting » Các giải pháp phần mềm Sử dụng biến cờ hiệu: Tiếp cân : tiến trình chia sẻ biến chung đóng vai trò « chốt cửa » (lock) , biến khởi động 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ị biến lock Nếu lock = 0, tiến trình đặt lại giá trị cho lock = vào miền găng Nếu lock nhận giá trị 1, tiến trình phải chờ bên miền găng lock có giá trị Như giá trị lock mang ý nghĩa tiến trình miền găng, lock=1 có tiến trình miền găng while (TRUE) { while (lock == 1); // waitlock = 1; critical-section ();lock = 0;Noncritical-section (); } Hình 3.5 Cấu trúc chương trình sử dụng biến khóa để đồng Thảo luận : Giải pháp vi phạm điều kiện thứ nhất: hai tiến trình miền găng thời điểm Giả sử tiến trình nhận thấy lock = chuẩn bị vào miền găng, trước đặt lại giá trị cho lock 1, bị tạm dừng để tiến trình khác hoạt động Tiến trình thứ hai thấy lock vào miền găng đặt lại lock = Sau tiến trình thứ tái kích hoạt, gán lock = lần vaò miền găng Như thời điểm hai tiến trình miền găng 1/4 Các giải pháp đồng hóa Sử dụng việc kiểm tra luân phiên : Tiếp cận : Đây giải pháp đề nghị 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 vào miền găng), khởi động với giá trị Nếu turn = 0, tiến trình A vào miền găng Nếu turn = 1, tiến trình A vào vòng lặp chờ đến turn nhận giá trị Khi tiến trình A rời khỏi miền găng, đặt giá trị turn phép tiến trình B vào miền găng while (TRUE) { while (turn != 0); // waitcritical-section ();turn = 1;Noncritical-section (); } (a) Cấu trúc tiến trình A while (TRUE) { while (turn != 1); // waitcritical-section ();turn = 0;Noncritical-section (); } (b) Cấu trúc tiến trình B Hình 3.6 Cấu trúc tiến trình giải pháp kiểm tra luân phiên Thảo luận: Giải pháp dựa việc thực kiểm tra nghiêm nhặt đến lượt tiến trình vào miền găng Do ngăn chặn tình trạng hai tiến trình vào miền găng, lại vi phạm điều kiện thứ ba: tiến trình bị ngăn chặn vào miền găng tiến trình khác không miền găng Giả sử tiến trình B khỏi miền găng nhanh chóng Cả hai tiến trình miền găng, turn = Tiến trình A vào miền găng khỏi nhanh chóng, đặt lại giá trị turn là1, lại xử lý đoạn lệnh miền găng lần Sau đó, tiến trình A lại kết thúc nhanh chóng đoạn lệnh miền găng muốn vào miền găng lần Tuy nhiên lúc B xử lý đoạn lệnh miền găng mình, turn lại mang giá trị ! Như vậy, giải pháp giá trị có khác biệt lớn tốc độ thực hai tiến trình, vi phạm điều kiện thứ hai Giải pháp Peterson Tiếp cận : Petson đưa giải pháp kết hợp ý tưởng hai giải pháp kể Các tiến trình chia sẻ hai biến chung : int turn; // đến phiên 2/4 Các giải pháp đồng hóa int interesse[2]; // khởi động FALSE Nếu interesse[i] = TRUE có nghĩa tiến trình Pi muốn vào miền găng Khởi đầu, interesse[0]=interesse[1]=FALSE giá trị est khởi động hay Để vào miền găng, trước tiên tiến trình Pi đặt giá trị interesse[i]=TRUE ( xác định tiến trình muốn vào miền găng), sau đặt turn=j (đề nghị thử tiến trình khác vào miền găng) Nếu tiến trình Pj không quan tâm đến việc vào miền găng (interesse[j]=FALSE), Pi vào miền găng, không, Pi phải chờ đến interesse[j]=FALSE Khi tiến trình Pi rời khỏi miền găng, đặt lại giá trị cho interesse[i]= FALSE while (TRUE) { int j = 1-i; // j tiến trình lạiinteresse[i]= TRUE;turn = j;while (turn == j && interesse[j]==TRUE);critical-section ();interesse[i] = FALSE;Noncritical-section (); } Hình 3.7 Cấu trúc tiến trình Pi giải pháp Peterson Thảo luận: giải pháp ngăn chặn tình trạng mâu thuẫn truy xuất : tiến trình Pi vào miền găng interesse[j]=FALSE turn = i Nếu hai tiến trình muốn vào miền găng interesse[i] =interesse[j] =TRUE giá trị turn là 1, có tiến trình vào miền găng Các giải pháp phần cứng Cấm ngắt: Tiếp cân: cho phép tiến trình cấm tất ngắt trước vào miền găng, phục hồi ngắt khỏi miền găng Khi đó, ngắt đồng hồ không xảy ra, hệ thống tạm dừng hoạt động tiến trình xử lý để cấp phát CPU cho tiến trình khác, nhờ tiến trình hành yên tâm thao tác miền găng mà không sợ bị tiến trình khác tranh chấp Thảo luận: giải pháp không ưa chuộng thiếu thận trọng cho phép tiến trình người dùng phép thực lệnh cấm ngắt Hơn nữa, hệ thống có nhiều xử lý, lệnh cấm ngắt có tác dụng xử lý xử lý tiến trình, tiến trình hoạt động xử lý khác truy xuất đến miền găng ! 3/4 Các giải pháp đồng hóa Chỉ thị TSL (Test-and-Set): Tiếp cận: giải pháp đòi hỏi trợ giúp chế phần cứng Nhiều máy tính cung cấp thị đặc biệt cho phép kiểm tra cập nhật nội dung vùng nhớ thao tác phân chia, gọi thị Test-and-Set Lock (TSL) định nghĩa sau: Test-and-Setlock(boolean target){ Test-and-Setlock = target;target = TRUE; } Nếu có hai thị TSL xử lý đồng thời (trên hai xử lý khác nhau), chúng xử lý Có thể cài đặt giải pháp truy xuất độc quyền với TSL cách sử dụng thêm biến lock, khởi gán FALSE Tiến trình phải kiểm tra giá trị biến lock trước vào miền găng, lock = FALSE, tiến trình vào miền găng while (TRUE) { while (Test-and-Setlock(lock));critical-section ();lock = FALSE;Noncritical-section (); } Hình 3.8 Cấu trúc chương trình giải pháp TSL Thảo luận : giống giải pháp phần cứng khác, thị TSL giảm nhẹ công việc lập trình để giải vấn để, lại không dễ dàng để cài đặt thị TSL cho xử lý cách phân chia, máy với cấu hình nhiều xử lý Tất giải pháp phải thực vòng lặp để kiểm tra liệu có phép vào miền găng, điều kiện chưa cho phép, tiến trình phải chờ tiếp tục vòng lặp kiểm tra Các giải pháp buộc tiến trình phải liên tục kiểm tra điều kiện để phát thời điểm thích hợp vào miền găng gọi giải pháp « busy waiting » Lưu ý việc kiểm tra tiêu thụ nhiều thời gian sử dụng CPU, tiến trình chờ chiếm dụng CPU Xu hướng giải vấn đề đồng hoá nên tránh giải pháp « busy waiting » 4/4 ... Như vậy, giải pháp giá trị có khác biệt lớn tốc độ thực hai tiến trình, vi phạm điều kiện thứ hai Giải pháp Peterson Tiếp cận : Petson đưa giải pháp kết hợp ý tưởng hai giải pháp kể Các tiến.. .Các giải pháp đồng hóa Sử dụng việc kiểm tra luân phiên : Tiếp cận : Đây giải pháp đề nghị cho hai tiến trình Hai tiến trình sử dụng chung... tiến trình hoạt động xử lý khác truy xuất đến miền găng ! 3/4 Các giải pháp đồng hóa Chỉ thị TSL (Test-and-Set): Tiếp cận: giải pháp đòi hỏi trợ giúp chế phần cứng Nhiều máy tính cung cấp thị

Ngày đăng: 14/01/2016, 15:09

Mục lục

  • Các giải pháp đồng bộ hóa

  • Giải pháp « busy waiting »

    • Các giải pháp 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

      • Các giải pháp phần cứng

        • Cấm ngắt:

        • Chỉ thị TSL (Test-and-Set):

Tài liệu cùng người dùng

Tài liệu liên quan