Chúng tôi phải đảm bảo rằng tiến độ phải được cung cấp bởi cơ chế đồng bộ hóa của chúng tôi. Trong cơ chế biến theo lượt, process không được cung cấp do thực tế là process không muốn tham gia vào critical section cũng không xem xét process quan tâm khác.
Các bài viết liên quan:
- Tìm hiểu về Process trong hệ điều hành
- Turn Variable hay Strict Alternation Approach trong hệ điều hành
- Variable – biến trong JavaScript
- Plugin Restrict Content tốt nhất, hạn chế user
- FTP là gì?
process khác cũng sẽ phải chờ bất kể thực tế là không có ai bên trong critical section. Nếu hệ điều hành có thể sử dụng một biến phụ cùng với biến rẽ thì vấn đề này có thể được giải quyết và vấn đề của chúng ta có thể cung cấp process ở hầu hết các mức độ.
Cơ chế Interested Variable sử dụng một biến Boolean bổ sung để đảm bảo rằng process được cung cấp.
Đối với process Pi
Non CS Int[i] = T ; while ( Int[j] == T ) ; Critical Section Int[i] = F ;
Đối với Quy trình Pj
Non CS Int [1] = T ; while ( Int[i] == T ) ; Critical Section Int[j]=F ;
Trong cơ chế này, một Interested Variable bổ sung được sử dụng. Đây là một biến Boolean được sử dụng để lưu trữ sự quan tâm của các quy trình để đi vào bên trong critical section.
Một quy trình muốn tham gia vào critical section trước tiên sẽ kiểm tra trong phần nhập liệu quy trình khác có quan tâm đến việc vào bên trong hay không. Quy trình sẽ đợi thời gian cho đến khi quy trình khác được quan tâm.
Trong phần thoát, quy trình làm cho giá trị của Interested Variable của nó sai để quy trình khác có thể đi vào critical section.
Bảng hiển thị các giá trị có thể có của Interested Variable của cả process và process có cơ hội trong kịch bản.
Sở thích [Pi] | Sở thích [Pj] | Xử lý để có cơ hội |
True | True | process đầu tiên thể hiện sự quan tâm. |
True | False | Số Pi |
False | True | Pj |
False | False | X |
Hãy phân tích cơ chế trên cơ sở các yêu cầu.
Xem thêm Sử dụng process trong Node.js
Mutual Exclusion
Trong cơ chế Interested Variable, nếu một process quan tâm đến việc xâm nhập vào CPU thì process kia sẽ đợi cho đến khi nó trở nên không quan tâm. Do đó, không bao giờ có thể có nhiều hơn một quy trình trong critical section cùng một lúc, do đó cơ chế đảm bảo loại trừ lẫn nhau.
Progess
Trong cơ chế này, nếu một process không quan tâm đến việc đi vào critical section thì nó sẽ không ngăn process khác đi vào critical section. Do đó, tiến độ chắc chắn sẽ được cung cấp bởi phương pháp này.
Bounded Waiting
Để phân tích sự chờ đợi có giới hạn, chúng ta hãy xem xét hai process Pi và Pj, là những process hợp tác muốn thực hiện trong critical section. Các hướng dẫn được thực hiện bởi các quy trình được hiển thị dưới đây theo cách tương đối.
Xử lý Pi | Quy trình Pj | Xử lý Pi | Quy trình Pj |
1. Int [Pi] = True2. while (Int [Pj] == True);3. Critical Section | 1. Int [Pj] = True2. while (Int [Pi] == True); | 1. Int [Pi] = False2. Int [Pi] = True3. while (Int [Pj] == True); // wait Pj | 1. While (Int [Pi] == True); // đợi Pj |
Ban đầu, interest variable của cả hai quy trình đều sai . process Pi cho thấy sự quan tâm để vào bên trong critical section.
Nó đặt Interested Variable của nó thành true và kiểm tra xem Pj có quan tâm hay không. Vì Interested Variable của quy trình khác là sai nên Pi sẽ được đưa vào critical section.
Trong khi đó, process Pi được đặt trước và Pj được lên lịch. Pj là một process hợp tác và do đó, nó cũng muốn tham gia vào critical section. Nó thể hiện sự quan tâm của mình bằng cách đặt biến lãi suất thành true.
Nó cũng kiểm tra xem liệu process khác có được quan tâm hay không. Chúng ta nên nhận thấy rằng Pi được ưu tiên trước nhưng Interested Variable của nó là true, điều đó có nghĩa là nó cần phải thực thi thêm trong critical section. Do đó Pj sẽ không có được cơ hội và bị mắc kẹt trong vòng lặp while.
Trong khi đó, CPU thay đổi trạng thái của Pi từ bị chặn sang đang chạy. Pi vẫn chưa hoàn thành critical section của nó do đó nó kết thúc critical section và thoát ra bằng cách đặt Interested Variable thành Sai.
Bây giờ, một trường hợp có thể xảy ra khi Pi lại muốn nhập vào critical section và đặt Interested Variable của nó thành true và kiểm tra xem Interested Variable của Pj có đúng hay không. Ở đây, Interested Variable của Pj là True do đó Pi sẽ bị mắc kẹt trong vòng lặp while và chờ Pj trở nên không quan tâm.
Vì Pj vẫn bị mắc kẹt trong vòng lặp while chờ đợi Interested Variable Pi ‘trở thành sai. Do đó, cả hai quy trình đang chờ đợi nhau và không có quy trình nào đi vào critical section.
Đây là một điều kiện của deadlock và chờ đợi có giới hạn không bao giờ có thể được cung cấp trong trường hợp deadlock.
Do đó, chúng ta có thể nói rằng cơ chế Interested Variable không đảm bảo deadlock.
Architectural Neutrality
Cơ chế này là một cơ chế phần mềm hoàn chỉnh được thực thi ở chế độ người dùng, do đó nó đảm bảo tính di động hoặc tính trung lập về kiến trúc.