Quản lí tiến trình

Màu nền
Font chữ
Font size
Chiều cao dòng

3.1.1 Tiến trình (Process)

Tiến trình là một chương trình đang xử lý, mỗi tiến trình có một không gian địa chỉ, một con trỏ lệnh, một tập các thanh ghi và stack riêng.  Tiến trình có thể cần đến một số tài nguyên  như CPU, bộ nhớ chính, các tập tin và thiết bị nhập/xuất. Hệ điều hành sử dụng bộ điều phối (scheduler) để quyết định thời điểm cần dừng hoạt động của tiến trình đang xử lý và lựa chọn tiến trình tiếp theo cần thực hiện. Trong hệ thống có những tiến trình của hệ điều hành và tiến trình của người dùng.

* Mục đích cho nhiều tiến trình hoạt động đồng thời:

a/ Tăng hiệu suất sử dụng CPU (tăng mức độ đa chương):

Phần lớn các tiến trình  khi thi hành đều trải qua nhiều chu kỳ xử lý (sử dụng CPU) và chu kỳ nhập xuất (sử dụng các thiết bị nhập xuất) xen kẽ như sau :

CPU

IO

CPU

IO

CPU

Nếu chỉ có 1 tiến trình duy nhất trong hệ thống, thì vào các chu kỳ IO của tiến trình, CPU sẽ  hoàn toàn nhàn rỗi. Ý tưởng tăng cường số lượng tiến trình trong hệ thống là để tận dụng CPU: nếu tiến trình 1 xử lý IO, thì hệ điều hành có thể sử dụng CPU để thực hiện tiến trình 2...

Tiến trình 1:

CPU

IO

CPU

IO

CPU

Tiến trình 2:

CPU

IO

CPU

IO

b/ Tăng mức độ đa nhiệm

Cho mỗi tiến trình thực thi luân phiên trong một thời gian rất ngắn, tạo cảm giác là hệ thống có nhiều tiến trình thực thi đồng thời.

 c/ Tăng tốc độ xử lý:

Một số bài toán có thể xử lý song song nếu được xây dựng thành nhiều đơn thể hoạt động đồng thời thì sẽ tiết kiệm được thời gian xử lý.

Ví dụ xét bài toán tính giá trị biểu thức kq = a*b + c*d . Nếu tiến hành tính đồng thời (a*b) và (c*d) thì thời gian xử lý sẽ ngắn hơn là thực hiện tuần tự.

3.1.2.1  Khái niệm tiểu trình

Một tiến trình có thể tạo nhiều tiểu trình, mỗi tiểu trình thực hiện một chức năng nào đó và thực thi đồng thời cũng bằng cách chia sẻ CPU. Các tiểu trình trong cùng một tiến trình dùng chung không gian địa chỉ tiến trình nhưng có con trỏ lệnh, tập các thanh ghi và stack riêng. Một tiểu trình cũng có thể tạo lập các tiến trình con, và nhận các trạng thái khác nhau như một tiến trình.

3.1.3 Các trạng thái của tiến trình

Việc chuyển trạng thái của tiến trình là do bộ điều phối (scheduler) thực hiện và tại một thời điểm, tiến trình có thể nhận một trong các trạng thái sau đây :

a/ New: tiến trình mới được tạo đang ở trong bộ nhớ tạm trên đĩa cứng.

b/ Ready: tiến trình trong bộ nhớ và chờ được cấp phát CPU.

c/ Running: tiến trình trong bộ nhớ đang thực thi.

d/ Blocked (wait): tiến trình trong bộ nhớ chờ được cấp phát tài nguyên, hoặc chờ thao tác nhập/xuất hoàn tất hoặc chờ một sự kiện nào đó.

e/ End: tiến trình trong bộ nhớ hoàn tất xử lý.

3.1.3.1  Sơ đồ chuyển trạng thái tiến trình 

Hình 3.11: sơ đồ chuyển trạng thái giữa các tiến trình.

Tại một thời điểm, chỉ có một tiến trình có thể nhận trạng thái running trên một bộ xử lý nào đó. Trong khi đó, có thể có nhiều tiến trình ở trạng thái blocked hay ready. Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy ra trong các điều kiện sau :

- Cung 1: Tiến trình mới tạo, nếu bộ nhớ còn trống, sẽ được đưa vào bộ nhớ và sẵn sàng nhận CPU, khi đó tiến trình từ trạng thái New được chuyển sang trạng thái Ready.

- Cung 2: Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU và cho tiến trình  thực hiện, khi đó tiến trình từ trạng thái Ready được chuyển sang trạng thái Running.

- Cung 3: Khi tiến trình kết thúc việc thực hiện, khi đó tiến trình từ trạng thái Running được chuyển sang trạng thái End.

- Cung 4: Khi tiến trình yêu cầu một tài nguyên nhưng chưa được đáp ứng vì tài nguyên chưa sẵn sàng hoặc tiến trình chờ thao tác nhập/xuất hoàn tất hoặc tiến trình chờ một sự kiện nào đó, khi đó tiến trình được chuyển từ trạng thái Running sang trạng thái Blocked.

- Cung 5: Khi tiến trình tạm dừng vì hết thời gian sử dụng CPU, bộ điều phối  sẽ chọn một tiến trình khác để cho xử lý, khi đó tiến trình được chuyển từ trạng thái Running sang trạng thái Ready.

- Cung 6: Khi tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp phát ; hay sự kiện hoặc thao tác nhập/xuất mà tiến trình đang đợi đã hoàn tất, khi đó bộ tiến trình được chuyển từ trạng thái Blocked sang trạng thái Ready.

3.2.1 Mục tiêu của bộ điều phối

a/ Sự công bằng (Fairness): Các tiến trình chia sẻ CPU một cách công bằng, không có tiến trình nào phải chờ đợi vô hạn để được cấp phát CPU.

b/ Tính hiệu qủa (Efficiency): Hệ thống phải tận dụng được CPU 100% thời gian.

c/ Thời gian đáp ứng hợp lý (Response time): Cực tiểu hoá thời gian hồi đáp cho các tương tác của người sử dụng.

d/ Thời gian lưu lại trong hệ thống (Turnaround Time): Cực tiểu hóa thời gian hoàn tất các tác vụ xử lý theo lô.

e/ Thông lượng tối đa (Throughput ): Cực đại hóa số công việc được xử lý trong một đơn vị thời gian.

Thường hệ điều hành khó thể thỏa mãn tất cả các mục tiêu kể trên mà chỉ có thể dung hòa. Để việc điều phối có hiệu qủa, hệ điều hành cần quan tâm đến đặc tính của tiến trình.

+ Thời điểm thực hiện điều phối

Hệ điều hành thực hiện việc điều phối tiến trình khi có một trong các tình huống sau:

a/ Tiến trình chuyển từ trạng thái running sang trạng thái blocked: ví dụ chờ một thao tác nhập xuất hay chờ một tiến trình con kết thúc…

b/ Tiến trình chuyển từ trạng thái running sang trạng thái ready: ví dụ xảy ra một ngắt.

c/ Tiến trình chuyển từ trạng thái blocked sang trạng thái ready: ví dụ một thao tác nhập/xuất hoàn tất.

d/ Tiến trình kết thúc.

e/ Tiến trình có độ ưu tiên cao hơn xuất hiện: chỉ áp dụng đối với điều phối không độc quyền

* Khi giải quyết bài toán miền găng cần chú ý 4 điều kiện sau:

a/  Không có hai tiến trình cùng ở trong miền găng cùng lúc.

b/  Không có giả thiết về tốc độ của các tiến trình, cũng như về số lượng bộ xử lý.

c/  Một tiến trình bên ngoài miền găng không được ngăn cản các tiến trình khác vào miền găng.

d/  Không có tiến trình nào phải chờ vô hạn để được vào miền găng. 

Bạn đang đọc truyện trên: Truyen2U.Pro

#don