Bài giảng Hệ Điều Hành

58 402 0
Bài giảng Hệ Điều Hành

Đ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

Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Chương 6: ĐỒNG BỘ HOÁ TIẾN TRÌNH 6.2 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Tóm tắt nội dung  Giới thiệu  Tổng quan về đồng bộ hóa tiến trình  Vấn đề đoạn găng  Các giải pháp  Các bài toán đồng bộ hóa nguyên thủy 6.3 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Giới thiệu Một tiến trình cộng tác là một tiến trình ảnh hưởng hay bị ảnh hưởng tới các tiến trình khác đang thực thi trong hệ thống. Các tiến trình hợp tác có thể chia sẽ trực tiếp không gian địa chỉ vật lý, hay được phép chia sẽ dữ liệu thông qua tập tin. 6.4 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Tổng quan  Sự truy cập đồng thời để chia sẽ dữ liệu có thể đem lại kết quả không nhất quán.  Tính nhất quán của việc duy trì dữ liệu yêu cầu cơ chế để đảm bảo thứ tự thi hành của việc điều độ tiến trình.  Giả định rằng chúng ta muốn cung cấp một giải pháp để bài toán người tiêu dùng - người sản xuất mà nó làm tràn vùng đệm.  Chúng ta nên tạo một biến count kiểu nguyên để giữ đoạn mã của vùng đệm bị tràn.  Ban đầu, count =0. Count được tăng lên khi người sản xuất thêm một sản phẩm tới vùng đệm và giảm khi lấy một sản phẩm ra khỏi vùng đệm. 6.5 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Mã của tiến trình người sản xuất 6.6 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Mã của tiến trình người tiêu thụ 6.7 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Điều kiện cạnh tranh (race condition)  count++ được cài đặt trên ngôn ngữ máy : register1 = count register1 = register1 + 1 count = register1  Tương tự cài đặt count - - như sau: register2 = count register2 = register2 - 1 count = register2  Giả thiết thực thi ban đầu với “count = 5” : T0: producer thực thi register1 = count {register1 = 5} T1: producer thực thi register1 = register1 + 1 {register1 = 6} T2: producer thực thi register2 = count {register2 = 5} T3: producer thực thi register2 = register2 - 1 {register2 = 4} T4: producer thực thi count = register1 {count = 6 } T5: producer thực thi count = register2 {count = 4} 6.8 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Đoạn găng Xét một hệ thống gồm n tiến trình (P 0 ,P 1 ,…,P n-1 ). Mỗi tiến trình có một phân đoạn mã gọi là đoạn găng (critical section), trong đó tiến trình này có thể thay đổi những biến dùng chung, cập nhật một bản, ghi đến tập tin,… 6.9 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Đoạn găng 1. Điều kiện cạnh tranh - Nhiều quá trình truy xuất cùng thao tác dữ liệu đồng hành để chia sẽ dữ liệu và kết quả của việc thực thi phụ thuộc vào thứ tự xác định ở đó việc truy xuất xảy ra. 2. Đoạn găng – Phân đoạn mã chia sẽ dữ liệu được truy cập trong các tiến trình đồng thời. 3. Phần đi vào – Vùng mã thực hiện yêu cầu quyền để đi vào đoạn găng của nó. 4. Phần kết thúc – Vùng mã được chạy sau khi ra khỏi đoạn găng. 6.10 Silberschatz, Galvin and Gagne ©2007 Operating System Concepts with Java – 7 th Edition, Nov 15, 2006 Đoạn găng [...]... Nov 15, 2006 6.12 Silberschatz, Galvin and Gagne ©2007 Giải pháp “chờ đợi bận”: Giải pháp hai tiến trình (two process Solution)    Hai tiến trình chia thành hai biến :  Int turn;  Boolean flag[2] Biến turn cho biết quá trình diễn biến được tiến hành trong đoạn găng Mảng flag được dùng để hiển thị một tiến trình sẵn sàng đi vào đoạn găng flag[i] = true nghĩa là process Pi đang sẵn sàng! Operating... Concepts with Java – 7th Edition, Nov 15, 2006 6.28 Silberschatz, Galvin and Gagne ©2007 Giải pháp “SLEEP và WAKEUP” SLEEP là một lời gọi hệ thống có tác dụng làm “nghẽn” hoạt động của tiến trình gọi nó và chờ đến khi được một tiến trình khác “đánh thức” Lời gọi hệ thống WAKEUP nhận một tham số duy nhất: tiến trình sẽ được kích hoạt trở lại (đặt về trạng thái sẵn sàng) Operating System Concepts with... găng và ở đó tồn tại vài tiến trình mà muốn tham gia vào đoạn găng, sau đó chọn lựa những tiến trình sẽ đi vào đoạn găng tiếp theo không thể trì hoãn vô hạn định 3 Chờ đợi có giới hạn – Một giới hạn hiện hành số lần các quá trình khác được phép đi vào đoạn găng sau khi một quá trình thực hiện yêu cầu để đi vào đoạn găng của nó và trước khi yêu cầu đó được gán  Giả sử rằng mỗi tiến trình đang thực thi . cầu cơ chế để đảm bảo thứ tự thi hành của việc điều độ tiến trình.  Giả định rằng chúng ta muốn cung cấp một giải pháp để bài toán người tiêu dùng - người. th Edition, Nov 15, 2006 Đoạn găng 1. Điều kiện cạnh tranh - Nhiều quá trình truy xuất cùng thao tác dữ liệu đồng hành để chia sẽ dữ liệu và kết quả của

Ngày đăng: 29/11/2013, 06:11

Từ khóa liên quan

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

Tài liệu liên quan