Mặc dù mỗi quá trình là một thực thể độc lập, với truy cập chương trình riêng của mình và trạng thái bên
quy trình thường cần phải tương tác với các quá trình khác. Một quá trình có thể tạo ra một số lượng tha
một quá trình sử dụng như đầu vào. Trong lệnh shell
mèo chapter1 chapter2 chapter3 | grep cây
quá trình đầu tiên, chạy mèo, móc nối và đầu ra ba tập tin. Quá trình thứ hai, chạy
grep, chọn tất cả các dòng có chứa từ "cây". Tùy thuộc vào tốc độ tương đối của hai
quá trình (mà phụ thuộc vào cả sự phức tạp tương đối của các chương trình và bao nhiêu CPU
thời gian mỗi người đã có), nó có thể xảy ra rằng grepis sẵn sàng để chạy, nhưng không có đầu vào chờ đợi
nó. Sau đó nó phải chặn cho đến khi một số đầu vào có sẵn.
Khi một khối xử lý, nó không như vậy bởi vì nó một cách hợp lý có thể không tiếp tục, thường bởi vì nó được
chờ đợi đầu vào mà không phải là chưa có sẵn. Nó cũng có thể cho một quá trình đó là khái niệm
đã sẵn sàng và có khả năng chạy được ngừng lại bởi vì hệ điều hành đã quyết định phân bổ CPU
đến một quá trình trong một thời gian. Hai điều kiện này là hoàn toàn khác nhau. Trong trường hợp đầu tiên
của hệ thống treo là vốn có trong các vấn đề (bạn không thể xử lý dòng lệnh của người sử dụng cho đến khi nó
đã được đánh máy). Trong trường hợp thứ hai, đó là một công nghệ của hệ thống (CPU không đủ để cung cấp cho
mỗi quá trình xử lý riêng). Trong hình. 2-2, chúng tôi thấy một sơ đồ trạng thái cho thấy ba
quốc gia một quá trình có thể là lĩnh vực:
Chạy (thực sự sử dụng CPU trong khoảnh khắc đó). 1.
Ready (Runnable; tạm thời dừng lại để cho một quá trình chạy). 2.
Bị chặn (không thể chạy cho đến khi một số sự kiện bên ngoài xảy ra). 3.
Một cách logic, hai trạng thái đầu tiên là tương tự. Trong cả hai trường hợp quá trình này là sẵn sàng để chạy, chỉ trong
một giây, có tạm thời là không có CPU có sẵn cho nó. Các nước thứ ba khác với linh sam
hai trong quá trình này không thể chạy, ngay cả khi CPU không có gì khác để làm.
Quá trình hình 2-2.A có thể là tại chạy, bị chặn, hoặc trạng thái sẵn sàng. Chuyển tiếp giữa các tiểu bang
như được hiển thị.
Bốn quá trình chuyển đổi có thể xảy ra giữa ba quốc gia, như được hiển thị. Transition 1 xảy ra khi một
quá trình phát hiện ra rằng nó không thể tiếp tục. Trong một số hệ thống quá trình này phải thực thi một hệ thống
gọi, như blockor tạm dừng, để có được vào trạng thái bị chặn. Trong các hệ thống khác, bao gồm cả UNIX, khi một
quá trình đọc từ một đường ống hoặc các tập tin đặc biệt (ví dụ, một thiết bị đầu cuối) và không có đầu vào có sẵn,
quá trình sẽ tự động khóa.
Transitions 2 và 3 là do lịch trình, một phần của hệ điều hành, không có
quá trình thậm chí biết về họ. Transition 2 xảy ra khi các scheduler quyết định rằng các
tiến trình đang chạy đã chạy đủ lâu, và đó là thời gian để cho một quá trình có một số CPU thời gian
chuyển tiếp 3 xảy ra khi tất cả các quá trình khác đã chia sẻ công bằng của họ và đó là thời gian cho
quá trình đầu tiên có được CPU chạy lại. Các chủ đề của kế hoạch, đó là, quyết định
quy trình cần chạy khi nào và trong bao lâu, là một quan trọng một; chúng tôi sẽ xem xét nó sau này trong
chương. Nhiều thuật toán đã được đặt ra để cố gắng để cân bằng nhu cầu cạnh tranh của
hiệu quả cho hệ thống như một toàn bộ và công bằng cho quá trình cá nhân. Chúng tôi sẽ nghiên cứu một số
chúng sau này trong chương này.
Transition 4 xảy ra khi các sự kiện bên ngoài mà là một quá trình được chờ đợi (chẳng hạn như các Arriva
của một số đầu vào) sẽ xảy ra. Nếu không có tiến trình khác đang chạy ở khoảnh khắc đó, quá trình chuyển đổi 3 sẽ được
kích hoạt và quá trình sẽ bắt đầu chạy. Nếu không thì nó có thể phải chờ đợi trong trạng thái sẵn sàng cho một
thời gian ngắn cho đến khi CPU có sẵn và đến lượt nó đến.
Sử dụng các mô hình quy trình, nó trở nên dễ dàng hơn nhiều để suy nghĩ về những gì đang xảy ra bên trong
hệ thống. Một số quá trình chạy chương trình mà thực hiện các lệnh gõ vào bởi người sử dụng. Khác
quá trình này là một phần của hệ thống và xử lý các tác vụ như thực hiện các yêu cầu cho các dịch vụ tập tin hoặc
quản lý các chi tiết của việc chạy một đĩa hoặc một ổ băng. Khi một ngắt xảy ra đĩa, hệ thống
ra quyết định ngừng chạy các quy trình hiện hành và chạy các quá trình đĩa, trong đó đã bị chặn
chờ ngắt đó. Vì vậy, thay vì nghĩ về ngắt, chúng ta có thể nghĩ về người sử dụng
các quy trình, quy trình đĩa, quá trình thiết bị đầu cuối, và như vậy, mà chặn khi họ đang chờ đợi
điều gì đó xảy ra. Khi đĩa đã được đọc hoặc các ký tự gõ, quá trình chờ đợi cho
nó là cấm và có đủ điều kiện để chạy một lần nữa.
Quan điểm này đưa đến các mô hình thể hiện trong hình. 2-3. Đây là mức thấp nhất của hành
hệ thống là lên lịch, với một loạt các quá trình trên đầu trang của nó. Tất cả việc xử lý ngắt và
chi tiết về thực sự bắt đầu và các quá trình dừng lại được ẩn đi trong những gì đang ở đây gọi là
lịch trình, mà thực sự là không nhiều mã. Phần còn lại của hệ điều hành là độc đáo có cấu trúc
trong hình thức trình. Vài hệ thống thực sự đang là độc đáo cấu trúc như này, tuy nhiên.
Hình 2-3.The lớp thấp nhất của một hệ điều hành quá trình cấu trúc xử lý ngắt và
lập kế hoạch. Trên lớp mà là những quá trình tuần tự.
2.1.6 Thực hiện các quy trình
đang được dịch, vui lòng đợi..
