2010-10-04 28 views

Trả lời

19

Quá trình đang ngủ khi bị chặn, đang đợi thứ gì đó. Ví dụ: có thể gọi là read() và đang chờ dữ liệu đến từ luồng mạng.

sleep() thực sự là một cách để quá trình ngủ của bạn được một thời gian. Tuy nhiên, ngủ là trạng thái bình thường của tất cả các quá trình tính toán bị ràng buộc nặng nề - ngủ thực chất là quá trình thực hiện khi nó không làm bất cứ điều gì khác. Đó là trạng thái bình thường của các vấn đề đối với hầu hết các quy trình của bạn đang ngủ - nếu đó là không phải là trường hợp, nó có xu hướng chỉ ra rằng bạn cần thêm mã lực CPU.

2

Chúng là các quá trình hiện không chạy trên CPU ngay bây giờ. Điều này không nhất thiết phải là một điều xấu. Ví dụ:

Nếu bạn có số lượng lớn (10.000 trên hệ thống máy chủ), lượng bộ nhớ, vv được sử dụng để theo dõi chúng có thể làm cho hệ thống kém hiệu quả hơn cho các quy trình không ngủ.

Nếu không, không sao.

Hầu hết các hệ thống máy chủ thông thường đều có từ 100 đến 1000 phần lớn thời gian; Đây không phải là vấn đề lớn.

Chỉ vì họ không làm bất cứ điều gì ngay bây giờ không có nghĩa là họ sẽ không, rất sớm. Giữ chúng trong bộ nhớ, sẵn sàng, giảm độ trễ khi chúng được yêu cầu.

8

Quy trình ngủ giống như quy trình bị tạm ngưng. Một quá trình ngủ khi:

  1. Nó đang làm một hoạt động I/O (chặn cho I/O)
  2. Khi bạn đặt nó vào giấc ngủ bằng cách ngủ()

Tình trạng của bất kỳ quá trình nào có thể là:

  • Sẵn sàng: khi nó sẵn sàng để thực hiện và trong hàng chờ cuộc gọi xử lý có mức độ ưu tiên cụ thể
  • Ngủ: Khi nó đang chạy và nó đã bị chặn cho hoạt động I/O hoặc khi thực hiện chế độ ngủ()
  • Chạy: Khi bộ xử lý thực thi quy trình nó sẽ chạy.

Status Ý nghĩa

  • R Runnable

  • T Ngưng

  • P Chờ trên Pagein

  • D Chờ trên I/O

  • S Ngủ < 20 giây

  • tôi Nhàn rỗi - ngủ> 20 giây

  • Z Zombie hoặc không còn tồn tại

2

Để đi sâu vào chi tiết hơn một chút ở đây, tình trạng S nghĩa quá trình đang đợi trên bộ hẹn giờ hoặc thiết bị chậm, trong khi trạng thái D có nghĩa là thiết bị đang chờ thiết bị nhanh. Thiết bị nhanh và thiết bị chậm không được xác định rõ ràng, nhưng nhìn chung, tất cả các thiết bị nối tiếp, mạng và thiết bị đầu cuối đều là thiết bị chậm, trong khi đĩa là thiết bị nhanh.

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