TÌM HIỂU GIẢI PHÁP ĐỒNG BỘ SEMAPHORE ỨNG DỤNG GIẢI QUYẾT BÀI TOÁN DINING- PHILOSOPHER

33 2.9K 6
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

TÌM HIỂU GIẢI PHÁP ĐỒNG BỘ SEMAPHORE ỨNG DỤNG GIẢI QUYẾT BÀI TOÁN DINING- PHILOSOPHER

ĐẠ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 ĐÀ NẴNG – 11/2014 LỜI CAM ĐOAN Tôi xin cam đoan : 1 Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của thầy Nguyễn Văn Nguyên 2 Mọi tham khảo dùng trong đồ án đều được 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ố. 3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm. Sinh viên MỤC LỤC CHƯƠNG 1 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 1.2.1. Vấn đề đoạn găng 1 1.2.2. Các điều kiện thỏa mãn đoạn găng 2 1.2.2.1. Loại bỏ tranh chấp 2 1.2.2.2. Tiến trình 2 1.2.2.3. Giới hạn đợi 2 1.3. CÁC GIẢI PHÁP ĐỒNG BỘ 2 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 7 1.3.3. Giải pháp kiểm tra luân phiên 8 1.3.4. Giải pháp sleep and wakeup 9 1.3.5. Giải pháp semaphore 13 1.3.6. Giải pháp monitor: 15 CHƯƠNG 2 BÀI TOÁN 19 2.1. BÀI TOÁN DINING-PHILOSOPHER THEO GIẢI PHÁP SEMAPHORE 19 2.1.1. Yêu cầu bài toán: 19 2.1.2. Giải pháp 20 2.2. KẾT QUẢ 21 [2] NGUYỄN PHƯƠNG LAN - HOÀNG ĐỨC HẢI.LẬP TRÌNH LINUX-TẬP 1, NXB GIÁO DỤC.2001 30 [3] HTTP://WWW.EN.WIKIPEDIA.ORG/WIKI/PRODUCER-CONSUMER_PROBLEM 30 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 GIỚI THIỆU 1.1. Khái niệm đồng bộ Một tiến trình đông bộ là một tiến trình mà nó có thể tương tác hoặc bị tác động bởi 1 tiến trình khác đang thực thi trong hệ thống. Đồng tiến trình có lẽ hoặc trực tiếp chia sẻ 1 không gian địa chỉ ( có nghĩa 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 files. 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ả dẫn đến xung khắc dữ liệu. Trong đồ án này, em muốn đề cập đến các kỹ thuật khác nhau để đảm bảo sự thực thi của đa tiến trình, đó là chia sẻ một không gian địa chỉ lôgic có nghĩa là làm cho dữ liệu xử lý không bị gián đoạn. 1.2. Các khái niệm liên quan 1.2.1. Vấn đề đoạn găng Xem xét một hệ thống bao gồm n tiến trình {P 0 , P 1 , …, P n-1 }. 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ật 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 hệ thống là, khi một tiến trình đang thực thi trong đoạn găng của nó, không có một tiến trình nào khác được phép 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 GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn 1 Đồ án HDH 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 thoát đoạn. Đoạn mã lệnh còn lại là 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 P i đ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ó. 1.2.2.2. Tiến trình Nếu không có tiến trình nào đang thực thi đoạn găng và một vài tiến trình đang muốn nhập vào đoạn găng, thì chỉ những tiến trình nào đang không thực thi trong đoạn lệnh của chúng có thể tham gia vào quyết định trên tiến trình sẽ nhập vào đoạn găng của nó tiêp theo, và sự lựa chọn này không thể định dạng postponed. 1.2.2.3. Giới hạn đợi Sự tồn tại của một giới hạn trên số lần mà tiến trình được cho phép nhập vào đoạn găng của chúng sau khi tiến trình khác yêu cầu nhập vào đoạn găng và trước khi mà yêu cầu đó được cấp. 1.3. Các giải pháp đồng bộ 1.3.1. Giải pháp phần cứng Như một diện mạo khác của phần mềm, phần cứng đặc trưng có thể tạo chương trình tác vụ dễ dàng hơn và chứng minh hệ thông hiệu quả. Bây giờ ta biểu diễn một vài cấu trúc phần cứng đơn giản mà thông dụng trên nhiều hệ thống, và thể hiện làm cách nào chúng ta có thể sử dụng chúng hiệu quả trong vấn đề đoạn găng. GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn 2 Đồ án HDH 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 có thể được giải thích một cách đơn giản trong một môi trường đơn tiến trình nếu chúng ta có thể ngăn cấm gián đoạn xảy ra trong khi một biến dùng chung bị thay đổi. Ở dạng này ta có thể chắc chắn rằng thứ tự hiện tại của cấu trúc sẽ được phép thực thi không cần đến quyền ưu tiên. Không có cấu trúc nào khác có thể chạy, nên không có thay đổi bất ngờ được làm nên để biến chia sẻ. Tiếc thay, giải pháp này không khả thi trong môi trường đa tiến trình. Vô hiệu hoá ngắt trên một đa tiến trình có thể mất nhiều thời gian, như 1 thông báo bị chặn đến tất cả các tiến trình. Thông báo này làm dừng độ trễ đi vào mỗi đoạn găng, và hệ thống bị giảm hiệu quả. Còn về vấn đề tương tác trên đồng hồ hệ thống, nếu đồng hồ được cập nhật bởi ngắt. Nhiều máy móc vì vậy đưa ra cấu trúc phần cứng đặc biệt cho phếp chúng ta hoặc kiểm tra và thay đổi nội dung của một từ hoặc trao đổi nội dung của hai từ, tự động- có nghĩa là, như một dơn vị không ngắt. Chúng ta có thể sử dụng cấu trúc dặc biệt đó để giải quyết vấn đề đoạn găng trong mối quan hệ kiểu đơn giản. thêm vào đó thảo luận một cấu trúc dặc biệt cho một máy đặc biệt, chúng ta trừu tượng hoá khái niệm chính bên cạnh loại cấu trúc. Cấu trúc TestAndSet có thể được định nghĩa GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn 3 Đồ án HDH Do {While (TestAndSet (lock)); Critical section Lock = false; remainder section } while(1); Thực hiện loại bỏ tranh chấp với TestAndSet Void Swap(boolean &a, boolean &b) { Boolean temp = a; a = b; b = temp; } Định nghĩa cấu trúc Swap Nếu máy có hỗ trợ cấu trúc TestAndSet thì chúng ta có thể thi hành loại bỏ tranh chấp bằng cách khai báo một biến lock, khởi tạo là false. Cấu trúc của tiến trình P i được biểu diễn ở trên. Cấu trúc của Swap định nghĩa như mô tả ở trên, điều hành trên nội dung của 2 words; như cấu trúc TestAndSet, nó được thực thi tự động. Nếu máy có mục đích cấu trúc Swap, thì thì loại bỏ tranh chấp được đưa ra như tiếp sau đó. Một biến toàn cục lock được khai báo và được khởi tạo là false. Thêm vào đó mỗi tiến tình còn có một biến cục bộ key. Cấu trúc của tiến ttrình P i được biểu diễn ở dưới. GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn 4 Đồ án HDH Do { Key = true; While (key == true) Swap(lock,key); Critical section Lock = false; Remainder section } while(1); Thực hiện loại bỏ tranh chấp với cấu trúc Swap Thuật toán này không thoả mãn yêu cầu bouded-waiting. Chúng ta biểu diễn một thuật toán mà sử dụng cấu trúc TestAndSet. Thuật toán này thoả mãn tất cả các yêu cầu của đoạn găng. Cấu trúc dữ liệu thông thường là boolean waiting[n]; boolean lock; những cấu trúc dữ liệu trên được khởi tạo là false. để giải quyết yêu cầu loại bỏ tranh chấp gặp phải, chúng ta chú ý răng tiến trình P i có thẻ nhập vào đoạn găng chỉ nếu hoặc waiting[i]== false hoặc key == false. Giá trị của key có thể trở thành false chỉ nếu TestAndSet được thực thi. Tiến trình đầu tiên thực thi TestAndSet sẽ tìm key == false; tất cả các tiến trình khác phải đợi. Biến waiting[i] là false chỉ nếu các tiến trình khác rời khỏi đoạn găng của nó; chỉ đuy nhất waiting[i] thiêt lập là false, đang duy trì yêu cầu tranh chấp. GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn 5 Đồ án HDH Để giải thích yêu cầu tiến trình đã gặp, chúng ta chú ý rằng đối số biểu diễn cho tranh chấp còn ứng dụng tại đây, từ một tiến trình thoát ra khỏi đoạn găng hoặc thiết lập lock là false, hoặc thiết lập waiting[j] là 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, chúng ta chú ý rằng khi một tiến trình rời khỏi đoạn găng của nó, nó quét trên mảng đang đợi trong chu kỳ lệnh (i+1,i+2,…,n-1,0,…,i-1). Nó được thiết kế tiến trình đầu tiên trong tập lệnh này nhập vào đoạn (waiting[j] == true) như tăng lên môt để nhập vào đoạn găng. Bất kỳ một tiến trình đang đợi nào nhập vào đoạn găng của nó sẽ cho kết quả trong vòng n- 1 trở lại. Không may thiết kế phần cứng, thi hành tự động cấu trúc TestAndSet trên đa tiến trình là tác vụ không quan trọng. Như bổ sung thi hành được xảy ra trong những cuốn sách trên cấu trúc máy tính. Do { 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; GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn 6 Đồ án HDH 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 một biến lock là biến toàn cục, lock có hai giá trị tương ứng với hai trạng thái. Lock có giá trị = 0 khi không có tiến trình nào ở bên trong đoạn găng, và = 1khi trong đoạn găng có tiến trình. Ban đầu lock có giá trị khởi tạo = 0. Khi một tiến trình muốn đi vào đoạn găng của nó, ta kiểm tra tình trạng của lock, nếu lock khác không thì tiến trình sẽ chờ cho đến khi lock có giá trị bằng một thì nhập vào đoạn găng, sau khi hoàn thành công việc nó thiết lập lock bằng không và thoát ra khỏi đoạn găng nhường chỗ cho tiến trình khác vào. While (true) { While (lock != 0); Lock = 1; Critical_section(); Lock = 0; Non critical_section(); GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn 7 [...]... xác định các tín hiệu wakeup 1.3.5 Giải pháp semaphore Đây là giải pháp do Dịjkstra đưa ra năm 1965, semaphore là một biến số nguyên (integer) được truy xuất chỉ thông qua 2 thao tác nguyên tử:wait và signal.Các thao tác này được đặt tên P(wait-chờ để kiểm tra) và V(signal-báo hiệu để tăng) Nhược điểm chính của giải pháp semaphore là đòi hỏi sự chờ đợi bận.Để giải quyết yêu cầu cho việc chờ đợi bận,chúng... nối của một mạng cục bộ, thì không thể kết hợp được các tình năng riêng tư của chúng được GVHD: Nguyễn Văn Nguyên SVTH: Mai Phước Tuấn Đồ án HDH 19 Chương 2 2.1 BÀI TOÁN Bài toán dining -philosopher theo giải pháp semaphore 2.1.1 Yêu cầu bài toán: Có 5 triết gia vừa suy nghĩ vừa ăn tối.Các triết gia ngồi trên một bàn tròn xung quanh có 5 chiếc ghế,mỗi chiếc ghế được ngồi bởi một triết gia.Chính giữa... Văn Nguyên SVTH: Mai Phước Tuấn Đồ án HDH 2.1.2 20 Giải pháp • Cách giải quyết bài toán Thể hiện mỗi chiếc đũa bởi một biến semaphore, mỗi triết gia cố gắng lấy một chiếc đũa bằng cách thực thi thao tác wait trên biến semaphore đó.Sau khi ăn xong triết gia đặt 2 chiếc đũa xuống bằng cách thực thi thao tác signal trên các biến semaphore tương ứng • Giải thuật  Khai báo số lượng hiền triết  Khai báo... đồ án này em đã cài đặt bài toán và cho ra kết quả theo phương pháp semaphore nhưng chưa tạo được giao diện cho chương trình b Trong khuôn khổ bài toán em chỉ giải được bài toán khi số triết gia là 5.Số lượng triết gia là được mặc định không thể thay đổi - GVHD: Nguyễn Văn Nguyên  - SVTH: Mai Phước Tuấn Đồ án HDH 30 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Tô Tuấn, Slide Bài Giảng Môn Công Nghệ... alarm(1); while(1){ printf("\n\n%2d\tPhilosophers: %s\n\tChopsticks: ",t+1,PhState); for(i=0;i . 2 1.3. CÁC GIẢI PHÁP ĐỒNG BỘ 2 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 7 1.3.3. Giải pháp kiểm tra luân phiên 8 1.3.4. Giải pháp sleep and wakeup 9 1.3.5. Giải pháp semaphore. 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 ĐÀ NẴNG – 11/2014 LỜI. pháp semaphore 13 1.3.6. Giải pháp monitor: 15 CHƯƠNG 2 BÀI TOÁN 19 2.1. BÀI TOÁN DINING -PHILOSOPHER THEO GIẢI PHÁP SEMAPHORE 19 2.1.1. Yêu cầu bài toán: 19 2.1.2. Giải pháp 20 2.2. KẾT QUẢ 21 [2]

Ngày đăng: 21/07/2015, 15:17

Từ khóa liên quan

Mục lục

  • Chương 1 GIỚI THIỆU

    • 1.1. Khái niệm đồng bộ

    • 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

        • 1.3. Các giải pháp đồng bộ

          • 1.3.1. Giải pháp phần cứng

          • 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

          • 1.3.6. Giải pháp monitor:

          • Chương 2 BÀI TOÁN

            • 2.1. Bài toán dining-philosopher theo giải pháp semaphore

              • 2.1.1. Yêu cầu bài toán:

              • 2.1.2. Giải pháp

              • 2.2. Kết quả

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

Tài liệu liên quan