14

Tôi đã đọc Vấn đề Phần quan trọng từ các khái niệm Hệ điều hành của Peter B. Galvin. Theo đóTiến độ và giới hạn chờ đợi trong phần quan trọng là gì?

1) Progress là: Nếu không có quá trình được thực hiện trong phần quan trọng của nó và một số quy trình muốn nhập phần quan trọng của họ, sau đó chỉ có những quá trình mà không phải thực hiện trong phần còn lại của họ có thể tham gia vào việc quyết định sẽ nhập phần quan trọng tiếp theo và lựa chọn này không thể bị trì hoãn vô thời hạn.

2) Bounded chờ đợi là: Có tồn tại một ràng buộc, hoặc hạn chế, trên số lần quá trình khác được phép vào phần quan trọng của họ sau một quá trình đã thực hiện yêu cầu nhập của nó phần quan trọng và trước khi yêu cầu đó được cấp.

Tôi không hiểu tác giả muốn nói gì trong cả hai trường hợp.

Bạn có thể vui lòng làm cho tôi hiểu bằng cách đưa ra một ví dụ thích hợp liên quan đến định nghĩa này.

Cảm ơn bạn.

Trả lời

56

Trước tiên, hãy để tôi giới thiệu một số thuật ngữ. Một phần quan trọng (CS) là một chuỗi các lệnh có thể được thực hiện bởi nhiều nhất một quá trình cùng một lúc. Khi sử dụng các phần quan trọng, mã có thể được chia nhỏ thành các phần sau:

// Some arbitrary code (such as initialization). 

EnterCriticalSection(cs); 

// The code that constitutes the CS. 
// Only one process can be executing this code at the same time. 

LeaveCriticalSection(cs); 

// Some arbitrary code. This is called the remainder section. 

Phần đầu tiên chứa một số mã như mã khởi tạo. Chúng tôi không có tên cho phần đó. Phần thứ hai là mã tìm cách nhập CS. Phần thứ ba là bản thân CS. Phần thứ tư là mã rời khỏi phần quan trọng. Phần thứ năm và cuối cùng được gọi là phần còn lại có thể chứa bất kỳ mã nào. Lưu ý rằng bản thân CS có thể khác nhau giữa các quy trình (xem xét ví dụ một quy trình nhận các yêu cầu từ một máy khách và chèn chúng vào một hàng đợi và một tiến trình khác xử lý các yêu cầu này).

Để đảm bảo rằng việc triển khai các phần quan trọng hoạt động bình thường, có ba điều kiện phải được thỏa mãn. Bạn đã đề cập đến hai trong số họ (mà tôi sẽ giải thích tiếp theo). Thứ ba là loại trừ lẫn nhau rõ ràng là rất quan trọng. Cần lưu ý rằng loại trừ lẫn nhau chỉ áp dụng cho CS và phần nghỉ phép. Tuy nhiên, ba phần khác không độc quyền.

Điều kiện đầu tiên là tiến trình. Mục đích của điều kiện này là để đảm bảo rằng một số quy trình hiện có trong CS và thực hiện một số công việc hoặc, nếu có ít nhất một quy trình muốn nhập CS, nó sẽ và sau đó thực hiện một số công việc. Trong cả hai trường hợp, một số công việc đang được thực hiện và do đó tất cả các quy trình đều đang tiến bộ tổng thể.

Tiến: Nếu không có quá trình được thực hiện trong phần quan trọng của nó và một số quy trình muốn nhập phần quan trọng của họ, sau đó chỉ những quá trình không được thực hiện trong phần còn lại của họ có thể tham gia vào việc quyết định sẽ tham gia vào nó phần quan trọng tiếp theo, và lựa chọn này không thể bị trì hoãn vô thời hạn.

Hãy hiểu câu định nghĩa này bằng câu.

Nếu không có quá trình được thực hiện trong phần quan trọng của nó

Nếu có một quá trình thực hiện trong phần quan trọng của nó (mặc dù không quy định rõ ràng, điều này bao gồm phần nghỉ cũng), sau đó phương tiện này rằng một số công việc đang được thực hiện. Vì vậy, chúng tôi đang tiến bộ. Ngược lại, nếu đây không phải là trường hợp ...

và một số quy trình muốn nhập phần quan trọng của họ

Nếu không có quá trình muốn nhập phần quan trọng của họ, sau đó không có nhiều việc phải làm . Nếu không, nếu có ít nhất một quá trình mà có nhu cầu nhập phần quan trọng của nó ...

sau đó chỉ có những quá trình mà không phải thực hiện trong phần còn lại của họ

Điều này có nghĩa chúng ta đang nói về những quá trình đang thực hiện ở một trong hai phần đầu (hãy nhớ, không có quá trình được thực hiện trong phần quan trọng của nó hoặc phần nghỉ) ...

có thể tham gia vào việc quyết định sẽ bước vào phần quan trọng của nó tới,

Vì có ít nhất một quá trình muốn nhập CS của nó, bằng cách nào đó chúng ta phải chọn một trong số họ để nhập CS của nó. Nhưng ai sẽ đưa ra quyết định này? Những quá trình đã yêu cầu sự cho phép để vào các phần quan trọng của họ có quyền tham gia vào việc đưa ra quyết định này. Ngoài ra, các quy trình đó có thể muốn nhập CS của họ nhưng chưa yêu cầu sự cho phép để làm như vậy (điều này có nghĩa là chúng đang thực hiện trong phần đầu tiên) cũng có quyền tham gia đưa ra quyết định này.

và lựa chọn này không thể bị trì hoãn vô thời hạn.

Điều này cho biết sẽ mất một khoảng thời gian giới hạn để chọn quá trình nhập CS của nó. Cụ thể, không có deadlock or livelock sẽ xảy ra. Vì vậy, sau khoảng thời gian giới hạn này, một quá trình sẽ đi vào CS của nó và thực hiện một số công việc, do đó tiến bộ.

Bây giờ tôi sẽ giải thích điều kiện cuối cùng, cụ thể là bị giới hạn chờ đợi. Mục đích của điều kiện này là để đảm bảo rằng mọi quá trình đều có cơ hội thực sự nhập phần quan trọng của nó để không có quá trình starves forever. Tuy nhiên, xin lưu ý rằng điều kiện và tiến độ này cũng không đảm bảo sự công bằng. Việc triển khai CS không cần phải công bằng.

Bounded chờ: Có tồn tại một ràng buộc, hoặc hạn chế, về số lượng lần quá trình khác được phép vào phần quan trọng của họ sau một quá trình đã thực hiện yêu cầu để nhập phần quan trọng của nó và trước yêu cầu đó là được cấp.

Hãy hiểu câu định nghĩa này bằng câu, bắt đầu từ câu cuối cùng.

sau khi quá trình đã yêu cầu nhập phần quan trọng và trước khi yêu cầu đó được cấp.

Nói cách khác, nếu có quy trình yêu cầu nhập CS nhưng chưa nhập. Hãy gọi quá trình này là P.

Có tồn tại một ràng buộc, hoặc hạn chế, về số lượng lần quá trình khác được phép vào phần quan trọng của họ

Trong khi P đang chờ để nhập CS của nó, các quy trình khác cũng có thể chờ đợi và một số tiến trình đang thực thi trong CS của nó. Khi nó rời CS của nó, một số quy trình khác phải được chọn để vào CS có thể hoặc không thể là P. Giả sử một quá trình khác với P được chọn. Tình huống này có thể xảy ra lặp đi lặp lại. Nghĩa là, các quy trình khác đang có cơ hội nhập CS nhưng không bao giờ P. Lưu ý rằng tiến trình đang được thực hiện, nhưng bởi các quá trình khác, không phải bởi P. Vấn đề là P không có cơ hội làm bất kỳ công việc nào. Để ngăn chặn nạn đói, phải có một đảm bảo rằng P cuối cùng sẽ nhập CS của nó. Để điều này xảy ra, số lần các quá trình khác nhập CS của chúng phải bị giới hạn. Trong trường hợp này, P chắc chắn sẽ có cơ hội nhập CS của nó.

Tôi muốn đề cập rằng định nghĩa của CS có thể được khái quát để hầu hết các quy trình N đang thực hiện trong các phần quan trọng của chúng trong đó N là bất kỳ số nguyên dương nào. Ngoài ra còn có các biến thể của các phần quan trọng của người đọc.

+2

Dòng lời giải thích tuyệt vời –

+1

Bạn thật tuyệt vời. Giải thích tuyệt vời! – void

1

Nhìn chung, một giải pháp cho phần vấn đề quan trọng phải có đủ ba điều kiện:

  1. Mutual Exclusion: Độc quyền tiếp cận của mỗi tiến trình vào bộ nhớ chia sẻ. Chỉ có một quy trình có thể ở trong phần quan trọng của nó tại bất kỳ thời điểm nào.

  2. Tiến trình: Nếu không có quy trình nào trong phần quan trọng và nếu một hoặc nhiều chủ đề muốn thực thi phần quan trọng thì bất kỳ chủ đề nào trong số này phải được phép đi vào phần quan trọng của nó.

  3. Bounded Waiting: Sau khi một quy trình đưa ra yêu cầu để vào phần quan trọng, có giới hạn về số lượng quy trình khác có thể tham gia vào phần quan trọng của họ trước khi yêu cầu của quy trình này được cấp. Vì vậy, sau khi đạt đến giới hạn, hệ thống phải cấp quyền cho quá trình vào phần quan trọng của nó. Mục đích của điều kiện này là để đảm bảo rằng mọi quá trình đều có cơ hội thực sự bước vào phần quan trọng của nó để không quá trình nào tồn tại mãi mãi.

2

loại trừ lẫn nhau

Không có hai tiến trình có thể cùng một lúc có mặt bên phần quan trọng tại bất kỳ thời điểm, chỉ có một quá trình có thể tham gia vào phần quan trọng tại bất kỳ thời điểm.

hình ảnh cho Progress:

Progress

Progress

Không có quá trình chạy bên ngoài phần quan trọng nên chặn quá trình quan tâm khác tham gia vào đó là phần quan trọng trong khi thực tế các quan trọng phần là miễn phí.

Bounded chờ

Không quá nên phải chờ đợi mãi mãi để tham gia vào phần quan trọng. nên có ranh giới để có cơ hội tham gia vào phần quan trọng. Nếu chờ đợi bị ràng buộc không hài lòng thì có khả năng bị đói.

Lưu ý
Không có giả thiết nào liên quan đến tốc độ xử lý hoặc tốc độ xử lý.

Các vấn đề liên quan