Tìm hiểu giải pháp đồng bộ semaphore ứng dụng giải quyết bài toán dining philosopher

34 4 0
Tìm hiểu giải pháp đồng bộ semaphore ứng dụng giải quyết bài toán dining philosopher

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CNTT  ĐỒ ÁN NGUYÊN LÝ HDH Đề tài: TÌM HIỂU GIẢI PHÁP ĐỒNG BỘ SEMAPHORE ỨNG DỤNG GIẢI QUYẾT BÀI TOÁN DINING- PHILOSOPHER GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn Lớp: 04T3 ĐÀ NẴNG – 11/2007 LỜI CAM ĐOAN Tôi xin cam đoan : Những nội dung luận văn thực hướng dẫn trực tiếp thầy Nguyễn Văn Nguyên Mọi tham khảo dùng đồ án trích dẫn rõ ràng tên tác giả, tên cơng trình, thời gian, địa điểm công bố Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tơi xin chịu hồn tồn trách nhiệm Sinh viên Mai Phước Tuấn MỤC LỤC CHƯƠNG GIỚI THIỆU .1 1.1 KHÁI NIỆM ĐỒNG BỘ .1 1.2 CÁC KHÁI NIỆM LIÊN QUAN 1.2.1 Vấn đề đoạn găng 1.2.2 Các điều kiện thỏa mãn đoạn găng 1.2.2.1 Loại bỏ tranh chấp 1.2.2.2 Tiến trình 1.2.2.3 Giới hạn đợi .2 1.3 CÁC GIẢI PHÁP ĐỒNG BỘ 1.3.1 Giải pháp phần cứng .2 1.3.2 Giải pháp sử dụng biến khóa 1.3.3 Giải pháp kiểm tra luân phiên 1.3.4 Giải pháp sleep and wakeup 1.3.5 Giải pháp semaphore 13 1.3.6 Giải pháp monitor: 15 CHƯƠNG 2.1 BÀI TOÁN .19 BÀI TOÁN DINING-PHILOSOPHER THEO GIẢI PHÁP SEMAPHORE .19 2.1.1 Yêu cầu toán: 19 2.1.2 Giải pháp .20 2.2 KẾT QUẢ 21 PHỤ LỤC………………………………………………………………………………… 22 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN…………………………………………………29 TÀI LIỆU THAM KHẢO…………………………………………………………………30 Đồ án HDH Chương 1.1 GIỚI THIỆU Khái niệm đồng Một tiến trình đơng tiến trình mà tương tác bị tác động tiến trình khác thực thi hệ thống Đồng tiến trình có lẽ trực tiếp chia sẻ khơng gian địa ( có nghĩa là, mã nguồn liệu), cho phép để chia sẻ liệu thông qua files Một trường hợp tắc đạt sử dụng tiến trình đơn giản tuyến Cùng nhập vào chia sẻ liệu kết dẫn đến xung khắc liệu Trong đồ án này, em muốn đề cập đến kỹ thuật khác để đảm bảo thực thi đa tiến trình, chia sẻ khơng gian địa lơgic có nghĩa làm cho liệu xử lý không bị gián đoạn GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn Đồ án HDH 1.2 Các khái niệm liên quan 1.2.1 Vấn đề đoạn găng Xem xét hệ thống bao gồm n tiến trình {P0, P1, …, Pn-1 } Mỗi tiến trình có đoạn mã lệnh, gọi đoạn găng, tiến trình có lẽ thay đổi biến chung, cập nhật bảng, viết tệp, tương tự đặc trưng quan trọng hệ thống là, tiến trình thực thi đoạn găng nó, khơng có tiến trình khác phép thực thi đoạn găng Vì vậy, việc thực thi đoạn găng tiến trình tranh chấp lúc Vấn đề đoạn găng thiết kế giao thức mà tiến trình 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 Phần mã lệnh thực yêu cầu gọi đoạn tiếp nhận (entry section) Đoạn găng có lẽ tiếp tục thoát đoạn Đoạn mã lệnh lại phần dư 1.2.2 Các điều kiện thỏa mãn đoạn găng 1.2.2.1 Loại bỏ tranh chấp Nếu tiến trình Pi thực thi đoạn găng khơng tiến trình khác thực thi đoạn găng 1.2.2.2 Tiến trình Nếu khơng có tiến trình thực thi đoạn găng vài tiến trình muốn nhập vào đoạn găng, tiến trình khơng thực thi đoạn lệnh chúng tham gia vào định tiến trình nhập vào đoạn găng tiêp theo, lựa chọn định dạng postponed GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn Đồ án HDH 1.2.2.3 Giới hạn đợi Sự tồn giới hạn số lần mà tiến trình cho phép nhập vào đoạn găng chúng sau tiến trình khác yêu cầu nhập vào đoạn găng trước mà yêu cầu cấp Các giải pháp đồng 1.3 1.3.1 Giải pháp phần cứng Như diện mạo khác phần mềm, phần cứng đặc trưng tạo chương trình tác vụ dễ dàng chứng minh hệ thông hiệu Bây ta biểu diễn vài cấu trúc phần cứng đơn giản mà thông dụng nhiều hệ thống, thể làm cách sử dụng chúng hiệu vấn đề đoạn găng Boolean TestAndSet(boolean &target) { Boolean rv = target; Target = true; Return rv; } Định nghĩa cấu trúc TestAndSet Vấn đề doạn găng giải thích cách đơn giản mơi trường đơn tiến trình ngăn cấm gián đoạn xảy biến dùng chung bị thay đổi Ở dạng ta chắn thứ tự cấu trúc phép thực thi không cần đến quyền ưu tiên Khơng có cấu trúc khác chạy, nên khơng có thay đổi bất ngờ làm nên để biến chia sẻ GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn Đồ án HDH Tiếc thay, giải pháp khơng khả thi mơi trường đa tiến trình Vơ hiệu hố ngắt đa tiến trình nhiều thời gian, thông báo bị chặn đến tất tiến trình Thơng báo làm dừng độ trễ vào đoạn găng, hệ thống bị giảm hiệu Còn vấn đề tương tác đồng hồ hệ thống, đồng hồ cập nhật ngắt Nhiều máy móc đưa cấu trúc phần cứng đặc biệt cho phếp kiểm tra thay đổi nội dung từ trao đổi nội dung hai từ, tự động- có nghĩa là, dơn vị khơng ngắt Chúng ta sử dụng cấu trúc dặc biệt để giải vấn đề đoạn găng mối quan hệ kiểu đơn giản thêm vào thảo luận cấu trúc dặc biệt cho máy đặc biệt, trừu tượng hố khái niệm bên cạnh loại cấu trúc Cấu trúc TestAndSet định nghĩa Do {While (TestAndSet (lock)); Critical section Lock = false; remainder section } while(1); Thực loại bỏ tranh chấp với TestAndSet Void Swap(boolean &a, boolean &b) { Boolean temp = a; a = b; b = temp; GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn Đồ án HDH } Định nghĩa cấu trúc Swap Nếu máy có hỗ trợ cấu trúc TestAndSet thi hành loại bỏ tranh chấp cách khai báo biến lock, khởi tạo false Cấu trúc tiến trình P i biểu diễn Cấu trúc Swap định nghĩa mô tả trên, điều hành nội dung words; cấu trúc TestAndSet, thực thi tự động Nếu máy có mục đích cấu trúc Swap, thì loại bỏ tranh chấp đưa tiếp sau Một biến toàn cục lock khai báo khởi tạo false Thêm vào tiến tình cịn có biến cục key Cấu trúc tiến ttrình Pi biểu diễn Do { Key = true; While (key == true) Swap(lock,key); Critical section Lock = false; Remainder section } while(1); Thực loại bỏ tranh chấp với cấu trúc Swap GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn Đồ án HDH Thuật toán không thoả mãn yêu cầu bouded-waiting Chúng ta biểu diễn thuật toán mà sử dụng cấu trúc TestAndSet Thuật toán thoả mãn tất yêu cầu đoạn găng Cấu trúc liệu thông thường boolean waiting[n]; boolean lock; cấu trúc liệu khởi tạo false để giải yêu cầu loại bỏ tranh chấp gặp phải, ý tiến trình Pi có thẻ nhập vào đoạn găng waiting[i]== false key == false Giá trị key trở thành false TestAndSet thực thi Tiến trình thực thi TestAndSet tìm key == false; tất tiến trình khác phải đợi Biến waiting[i] false tiến trình khác rời khỏi đoạn găng nó; đuy waiting[i] thiêt lập false, trì u cầu tranh chấp Để giải thích u cầu tiến trình gặp, ý đối số biểu diễn cho tranh chấp ứng dụng đây, từ tiến trình khỏi đoạn găng thiết lập lock false, thiết lập waiting[j] false Cả hai cho phép tiến trình nhập vào đoạn găng để xử lý Để giải thích yêu cầu bouded-waiting gặp phải, ý tiến trình rời khỏi đoạn găng nó, qt mảng đợi chu kỳ lệnh (i+1,i+2,…,n-1,0,…,i-1) Nó thiết kế tiến trình tập lệnh nhập vào đoạn (waiting[j] == true) tăng lên môt để nhập vào đoạn găng Bất kỳ tiến trình đợi nhập vào đoạn găng cho kết vịng n1 trở lại Khơng may thiết kế phần cứng, thi hành tự động cấu trúc TestAndSet đa tiến trình tác vụ khơng quan trọng Như bổ sung thi hành xảy sách cấu trúc máy tính Do { GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn Đồ án HDH waiting[i] = true; key = true; while (waiting[i] && key) key = TestAndSet(lock); waiting[i] = false; critical section j = (i+1) % n; while ((j != i) && !waiting[j]) j = (j+1) % n; if (j == i) lock = false; else waiting[j] = false; remainder section } while(1); Bounded-waiting loại bỏ tranh chấp với TestAndSet 1.3.2 Giải pháp sử dụng biến khóa Khai báo biến lock biến tồn cục, lock có hai giá trị tương ứng với hai trạng thái Lock có giá trị = khơng có tiến trình bên đoạn găng, = 1khi đoạn găng có tiến trình Ban đầu lock có giá trị khởi tạo = Khi GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn Đồ án HDH 17 end monitor; Giải pháp monitor cho tốn producer-consumer Các monitor có đặc tính quan trọng khả loại trừ lẫn nhau: nghĩa có TT hoạt động monitor thời điểm Các monitor cấu trúc ngơn ngữ lập trình, trình biên dịch biết chúng đoạn chương trình đặc biệt gọi thủ tục khác với thủ tục bình thường khác Diển hình, TT gọi thủ tục monitor, vài lệnh thủ tục kểm tra xem TT khác có hoạt động phạm vi monitor, có lời gọi TT bị trì hoãn TT khác rời khỏi monitor Nếu khơng có TT sử dụng monitor lời gọi TT thực Trình biên dịch có nhiệm vụ biên dịch, cài đặt loại trừ lẫn lối vào monitor, cách đơn giản sử dụng semaphore nhị phân Vì trình biên dịch ( khơng phải nhà lập trình) xếp việc loại trừ lẫn nhau, bị lỗi Trong tình nào, người lập trình khơng cần biết cách mà trình biên dịch xếp nguyên tắc loại trừ lẫn Trình biên dịch tự tất đoạn găng vào thủ tục monitor, khơng có hai TT thực đoạn găng lúc Mặc dù monitor cung cấp cách cài đặt loại trừ lẫn dễ dàng ta thấy trên, điều chưa đủ Chúng ta cần TT bị chặn khơng thể xử lí Trong vấn đề người sản xuất người tiêu thụ, dễ dàng để kiểm tra đệm đầy hay rỗng thủ tục monitor Nhưng làm để người sản xuất bị chặn lại nhận đệm đầy ? Giải pháp nằm biến điều kiện, vời hai phép toán chúng wait signal Khi thủ tục monitor nhận khơng thể tiếp tục (ví dụ : producer nhận thấy đệm đầy) đợi vài biến điều kiện Động tác GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn

Ngày đăng: 25/09/2023, 16:01

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

  • Đang cập nhật ...

Tài liệu liên quan