Tiến trình là gì? Các dấu hiệu để nhận biết tiến trình

 Nguyễn Thị Hà    
Tiến trình là gì? Các dấu hiệu để nhận biết tiến trình
5 (100%) 3 votes

Tiến trình là gì? Các dấu hiệu để nhận biết tiến trình

1/ Tiến trình là gì?

Chương trình và tiến trình là những khái niệm khác nhau, một chương trình không phải là một tiến trình. Một chương trình là một thực thể bị động, chương trình chỉ là một tập tin chứa trên thiết bị lưu trữ thông tin. Trong khi tiến trình là một thực thể động, một tiến trình có một bộ đếm chương trình xác định lệnh thực hiện kế tiếp, các giá trị thanh ghi, ngăn xếp chứa các dữ liệu tạm thời và các tài nguyên kết hợp.

Vậy tiến trình là gì? Hiểu một cách đầy đủ một tiến trình là chương trình đang thực hiện. Chương trình được tiến hành theo phương pháp tuần tự: luôn có một lệnh đơn đang thực hiện trong tiến trình tại một thời điểm.

Đối với Linux, tất cả những gì đang thực hiện trên hệ thống đều là những tiến trình. Bao gồm cả những tiến trình do người sử dụng kính hoạt hay những tiến trình thực hiện ở chế độ nền của hệ điều hành. Khi một người sử dụng đăng nhập vào hệ thống cũng có nghĩa họ đã tạo ra một tiến trình và tiến trình này sẽ quản lý các hoạt động tiếp theo của người dùng. Hay khi một chương trình được thực hiện, thực chất là tạo ra một tiến trình với nhiệm vụ của tiến trình này là thực thi chương trình đó.

Trong hệ thống sử dụng Linux, các tiến trình cùng hoạt động song song hoặc nối tiếp nhau. Các tiến trình luôn ở một trạng thái nhất định trong những trạng thái chung được quy định cho các tiến trình.

Tiến trình là gì?

Tiến trình là gì?

2/ Trạng thái của các tiến trình là gì?

Trạng thái của mỗi tiến trình được xác định qua hoạt động hiện thời của tiến trình đó. Một tiến trình có thể là đang thực hiện, tạm dừng, hay đang ở một trong những trạng thái khác. Các trạng thái của một tiến trình có thể là những trạng thái sau:

– in execution: tiến trình đang được thực hiện.

– Ready: tiến trình đang đợi đến lượt khi có một tiến trình khác đang thực hiện.

– Suppended: tiến trình đang chờ tài nguyên hay đang chờ đợi một thao tác với các thiết bị.

– Stopped: tiến trình đã bị treo bởi một tiến trình khác.

– Zombie: tiến trình đã kết thúc nhưng hệ thống vẫn tham chiếu đến nó, vẫn trao tài nguyên và xem như tiến trình này đang còn hoạt động.

3/ Các dấu hiệu nhận biết tiến trình là gì?

Trong hệ thống Linux,  mỗi tiến trình có một dấu hiệu nhận biết đơn nhất gọi là pid. pid là một số nguyên. Khi một tiến trình được tạo ra hệ thống sẽ trao cho nó một giá trị xác định và hệ thống nhận biết và điều khiển các tiến trình thông qua dấu hiệu nhận biết này. Cũng như đối với người sử dụng, các tiến trình có thể nằm trong một nhóm.

Vì thế việc quản lý các tiến trình trong cùng một nhóm trở nên đơn giản là quản lý theo nhóm. Dấu hiệu của nhóm tiến trình gọi là gpid, giá trị này là dấu hiệu nhận biết của tiến trình trưởng nhóm.

Một số hàm ngôn ngữ C cho phép một tiến trình nhận lấy các dấu hiệu nhận biết đặc trưng có liên quan đến tiến trình:

#include <unistd.h>

pid_t getpid(void);

pid_t getppid(void);

uid_t getuid(void);

gid_t getgid(void);

getpid() có giá trị trả về là dấu hiệu nhận biết của tiến trình hiện tại. getppid() trả về dấu hiệu nhận biết của tiến trình cha đã tạo ra tiến trình hiện tại. getuid() trả về dấu hiệu của người sử dụng của tiến trình hiện hành. Như vậy, trong lúc thực hiện chương trình, chúng ta có thể dựa vào các dấu hiệu nhận biết của các tiến trình đã được tạo ra để quản lý các hoạt động của chúng.

Các dấu hiệu nhận biết tiến trình là gì?

Các dấu hiệu nhận biết tiến trình là gì?

4/ Tạo ra một tiến trình

Tiến trình hiện hành có tạo ra một tiến trình con nhờ sử dụng lệnh gọi hệ thống fork. Một khi lệnh này được thực hiện có nghĩa là một tiến trình sẽ được tạo ra và nó được gọi là tiến trình con của tiến trình hiện hành hay tiến trình hiện hành là tiến trình cha của tiến trình mới được tạo ra. Đối với ngôn ngữ C ta sử dụng hàm sau:

#include <unsitd.h>

pid_t fork(void);

Giá trị trả về khi hàm fork() được gọi là -1 nếu hệ thống đã hết tài nguyên và không thể tạo thêm một tiến trình mới. Giá trị 0 sẽ được gởi đến tiến trình mới tạo ra và dấu hiệu nhận biết của tiến trình mới sẽ được gới đến cho tiến trình đã tạo ra nó.

Nguyên tắc cơ bản của lệnh này là cho phép một tiến trình được tạo ra. Khi này tiến trình cha và tiến trình con sẽ chó chung đoạn mã, đoạn dữ liệu của tiến trình con là một bản sao chính xác từng bộ phận tương ứng của tiến trình cha. Tuy nhiên thành phần dữ liệu hệ thống có một số thành phần khác nhau như pid, thời gian xử lý, …

5/ Chấm dứt một tiến trình

Một chương trình được thực hiện khi kết thúc chương trình đồng nghĩa với tiến trình gắn với chương trình này sẽ tự động kết thúc và hệ thống sẽ lấy lại các tài nguyên đã cấp cho tiến trình. Cụ thể hơn, một chương trình viết bằng ngôn C sẽ kết thúc tự động khi kết thúc hàm main. Tuy nhiên chúng ta vẫn được cung cấp lệnh cho phép ngừng chương trình một cách đột ngột.

Lệnh exit gây ngừng tiến trình hiện hành. Tham số status xác định một giá trị trả về trong phạm vi từ 0 đến 255. Giá trị trả về là 0 trong trường hợp kết thúc bình thường và khác không trong trường hợp kết thúc do lỗi.

Nếu tiến trình có bao gồm các tiến trình con, các tiến trình con sẽ được gắn với tiến trình init có dấu hiệu nhận diện là 1. Tín hiệu SIGCHLD được gửi đến tiến trình cha để báo rằng có một tiến trình con của nó đã kết thúc. Các tín hiệu sẽ được nhắc đến trong phần sau.

Với những kiến thức trên về “Tiến trình là gì? Các dấu hiệu để nhận biết tiến trình”, hi vọng giúp ích cho bạn!

Hiện tại, chúng tôi đang cung cấp dịch vụ viết thuê tiểu luận, luận văn cao học, khóa luận tốt nghiệp, đồ án tốt nghiệp, dịch vụ chạy SPSS,… chuyên nghiệp nhất thị trường. Nếu bạn không có thời gian hoàn thành bài luận, hãy liên hệ ngay cho chúng tôi nhé!