There are 5 states: 1. Executable state; 2. Interruptible waiting state; 3. Uninterruptible waiting state; 4. Stop state; 5. Abort state. The state value of "executable state" is TASK_RUNNING. At this time, the program has been placed in the run queue and is in a ready-to-run state. Once it obtains the right to use the processor, it can enter the running state.
#The operating environment of this tutorial: linux5.9.8 system, Dell G3 computer.
A special data structure instance defined by the operating system and controlled by the operating system is called a process. It is connected to the user code, has an independent memory space required for the code to run, and runs under the scheduler's schedule using the processor time slice assigned to it.
The 5 states of the Linux process
In the Linux system, after a process is created, the system can have the following 5 states: . The current state of the process is recorded in the state member of the process control block.
Ready state and running state (executable state)
The value of the state flag state of the ready state is TASK_RUNNING. At this time, the program has been placed in the run queue and is ready to run. Once the right to use the processor is obtained, it can enter the running state.
When the process obtains the processor and runs, the value of state is still TASK_RUNNING and does not change; but Linux will point a pointer current specifically used to point to the currently running task to it to indicate that it is a Running process.
Interruptible waiting state
The value of the status flag state is TASK_INTERRUPTIBL. At this time, the process is in a waiting state because it has not obtained the resources it requested. Once the resource is available or there is a wake-up signal, the process will immediately end waiting and enter the ready state.
Uninterruptible waiting state
The value of the status flag state is TASK_UNINTERRUPTIBL. At this time, the process is also waiting for resources. Once the resource is available, the process immediately enters the ready state. The difference between this waiting state and the interruptible waiting state is that a process in the TASK_UNINTERRUPTIBL state cannot be awakened by a semaphore or interrupt, and can only be awakened when the resources it applies for are valid.
This state is used in certain scenarios in the kernel. For example, when the process needs to read and write to the disk, and the data is being copied to the memory in the DMA, if the process sleep is interrupted at this time ( For example, force exit signal) then problems are likely to occur, so at this time the process will be in a state that cannot be interrupted.
Stop state
The value of the status flag state is TASK_STOPPED. When the process receives a SIGSTOP signal, it enters the stopped state from the running state. When it receives a SIGCONT signal, it returns to the running state. This state is mainly used for program debugging, and is also called "pause state" or "suspend state".
Abort status
The value of the status flag state is TASK_DEAD. The process stops running for some reason, and all the resources occupied by the process will be recycled, except for the task_struct structure (and a few resources), and the system will no longer pay attention to it, so this state is also called a "zombie state" and the process becomes Zombie process.
During the entire life cycle of a process, it can transition between 5 states. The conversion relationship between the five states of the Linux process is shown in the figure below:
Related recommendations: "Linux Video Tutorial"
The above is the detailed content of What are the states of the linux process?. For more information, please follow other related articles on the PHP Chinese website!