Giới thiệu về process Life Cycle và các loại process

Cùng Nhau Học Linux Kernel
Cùng Nhau Học Linux Kernel
24 bài viết — 32 Người theo dõi |
1
0

Tác giả: Võ Hải

Một chút về process Life Cycle và các loại process nhé các bác ^^
----------------------------------------------------------------------------------
***Process Priorities

Có thể chia ra process thời gian thực (real-time process) và process không thời gian thực (non-real-time process). Trong đó real-time process được chia thành:
Hard real-time processes: Phải tuân thủ các giới hạn thời gian nghiêm ngặt trong đó có một số nhiệm vụ nhất định phải hoàn thành. Đặc điểm chính của các hard real-time process là chúng phải được đảm bảo xử lý trong một khung thời gian. 
Soft real-time processes: Là một form real-time process nhưng mềm hơn hard real-time process. Dù yêu cầu kết quả nhanh chóng vẫn còn cần thiết nhưng cũng không quá nghiêm ngặt như hard real-time process. 
Hầu hết các normal process hay non-real-time process không có các ràng buộc thời gian cụ thể nhưng vẫn được phân loại quan trọng hay ít quan trọng hơn thông qua độ ưu tiên (priority)
Việc phân bố thời gian CPU được miêu tả qua hình dưới:
(Hình 1)
Lược đồ này được gọi là đa nhiệm ưu tiên (preemptive multitasking). Có thể thấy thời gian sử dụng CPU của các process khác nhau là khác nhau. Bất kể việc tác vụ cuối cùng của nó đã chạy hết chưa, nếu chạy hết time slice của mình thì process phải nhường lại cho process khác. Độ dài của time slice thay đổi phụ thuộc vào độ ưu tiên của process.

****Process Life Cycle
Process không phải lúc nào cũng sẵn sàng để chạy. Thi thoảng, nó phải chờ một số event từ nguồn khác. 
Bộ lập lịch phải biết trạng thái của mỗi process trong hệ thống khi chuyển đổi giữa các task. Một vấn đề quan trọng khác là sự tự thay đổi trạng thái của bản thân các process.
Process có thể có một trong các trạng thái sau:
Running: Process đang thực thi
Waiting: Process sẵn sàng để chạy nhưng chưa được phép vì CPU đang được cấp phát cho process khác. Bộ lập lịch có thể chọn process này để thực hiện vào lần chuyển đổi kế tiếp
Sleeping: Process đang ngủ và không thể chạy vì nó đang đợi một event. Bộ lập lịch không thể chọn process này vào lần chuyển đổi kế tiếp.
Hệ thống lưu toàn bộ process vào một bảng process table (bao gồm running, waiting hay sleeping). Tuy nhiên sleeping process được đánh dấu để bộ lập lịch biết rằng chúng không sẵn sàng để thực thi. Ngoài ra còn có một nhóm các hàng đợi chứa các sleeping process mà tại đó các chúng được đánh thức vào một thời điểm thích hợp
(Hình 2)
Bây giờ cùng xét lược đồ biểu diễn sự thay đổi giữa các trạng thái process. Đầu tiên, process nằm trong một hàng đợi runnable process được biết đến là hàng đợi chứa các process sẵn sàng thực thi nhưng chưa được phép. Do vậy trạng thái lúc này cuả nó là wating. Khi bộ lập lịch cho phép process chạy, nó sẽ chuyển sang Running. Và khi nó đã sử dụng hết tài nguyên được bộ lập lịch cấp phát process sẽ chuyển về trạng thái waiting và bắt đầu lại một chu kì mới. Nếu process phải đợi một event, trạng thái của nó thay đổi từ running thành sleeping. Và đương nhiên nó không thể thay đổi ngược lại từ sleeping sang running. Khi process nhận được event của mình nó sẽ thay đổi từ sleeping sang waiting và tham gia vào một chu trình bình thường.
Khi chương trình thực thi bị kết thúc, trạng thái process chuyển từ running thành stopped.
Có một trạng thái đặc biệt nhưng không được thể hiện trên lược đồ là “zombie” state. Như cái tên, các process không còn tồn tại, các tài nguyên của process đã được giải phóng nhưng hệ thống vẫn còn lưu giữ task struct được đưa vào zombie state.
Để giải phóng hoàn toàn zombie process, một chương trình chấm dứt khi 2 event xảy ra, đầu tiên chương trình phải bị kill bởi process khác hoặc bởi người dùng, tiếp đó, parent process phải gọi hoặc đã gọi wait4 system call khi child process kết thúc. Điều này xác nhận với kernel rằng parent process đã biết về cái chết của child process. System call cho phép kernel giải phóng mọi tài nguyên của child process. Zombie xảy ra khi chỉ xảy ra điều kiện đầu tiên.

Không có văn bản thay thế tự động nào.

Trong hình ảnh có thể có: văn bản

Các comment hay:

1. Hương Trần Bạn ơi. Trường hợp process cha được chấm dứt trước khi process con được chấm dứt thì process con đó sẽ được xử lý như thế nào. Hệ thống có tìm cha mới cho nó không và nếu có thì quá trình đó diễn ra như thế nào. Bạn giải thích giúp với. ^^

Trả lời 1: Nếu trong linux thì hệ thống sẽ lấy init process làm cha mới nhé bạn

Trả lời 2: OS sẽ lấy một process trong cùng thread group làm cha trước, nếu ko được thì mới lấy init process. Không biết về sau kernel version mới hơn có thay đổi gì ko ạ?

** Nếu bạn muốn viết các nội dung đặt biệt thì hãy làm theo hướng dẫn sau

Xem thêm 10 bình luận
Viết blog mới của bạn
Báo lỗi trang
Đang tải