>  기사  >  운영 및 유지보수  >  Linux 프로세스의 상태는 무엇입니까?

Linux 프로세스의 상태는 무엇입니까?

青灯夜游
青灯夜游원래의
2022-04-12 19:33:1412882검색

5가지 상태가 있습니다: 1. 실행 가능 상태 2. 중단 가능 대기 상태 4. 중지됨 상태 "실행 가능 상태"의 상태 값은 TASK_RUNNING입니다. 이때 프로그램은 실행 큐에 배치되어 실행 준비가 완료된 상태입니다. 프로세서 사용 권한을 얻으면 실행 중으로 들어갈 수 있습니다. 상태.

Linux 프로세스의 상태는 무엇입니까?

이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.

운영 체제에 의해 정의되고 운영 체제에 의해 제어되는 특수 데이터 구조 인스턴스를 프로세스라고 합니다. 이는 사용자 코드에 연결되고, 코드 실행에 필요한 독립적인 메모리 공간을 가지며, 할당된 프로세서 시간 조각을 사용하여 스케줄러의 일정에 따라 실행됩니다.

Linux 프로세스의 5가지 상태

Linux 시스템에서는 프로세스가 생성된 후 시스템에서 다음 5가지 상태를 가질 수 있습니다. 프로세스의 현재 상태는 프로세스 제어 블록의 상태 멤버에 기록됩니다.

Ready 상태와 Running 상태(Executable 상태)

Ready 상태의 Status 플래그 상태 값은 TASK_RUNNING입니다. 이때 프로그램은 실행 큐에 배치되어 실행할 준비가 되었습니다. 프로세서 사용 권한을 획득하면 실행 상태로 들어갈 수 있습니다.

프로세스가 프로세서를 획득하고 실행될 때 상태 값은 여전히 ​​TASK_RUNNING이며 변경되지 않습니다. 그러나 Linux는 현재 실행 중인 작업을 가리키는 데 특별히 사용되는 포인터 current를 가리켜 실행 중인 프로세스임을 나타냅니다. .

인터럽트 대기 상태

상태 플래그 상태의 값은 TASK_INTERRUPTIBL입니다. 이때 프로세스는 요청한 리소스를 얻지 못하여 대기 상태에 있습니다. 리소스를 사용할 수 있거나 웨이크업 신호가 있으면 프로세스는 즉시 대기를 종료하고 준비 상태로 들어갑니다.

무정전 대기 상태

상태 플래그 상태의 값은 TASK_UNINTERRUPTIBL입니다. 이때 프로세스도 리소스를 기다리고 있습니다. 리소스가 사용 가능해지면 프로세스는 즉시 준비 상태로 들어갑니다. 이 대기 상태와 인터럽트 가능한 대기 상태의 차이점은 TASK_UNINTERRUPTIBL 상태의 프로세스는 세마포어나 인터럽트에 의해 깨울 수 없으며 적용되는 리소스가 유효한 경우에만 깨울 수 있다는 것입니다.

이 상태는 프로세스가 디스크를 읽고 써야 하는 경우, 데이터가 DMA의 메모리에 복사되는 경우 등 커널의 특정 시나리오에서 사용됩니다. 이때 프로세스가 중단된 경우( 강제 종료 신호 등) ) 그러면 문제가 발생할 가능성이 높으므로 프로세스는 중단할 수 없는 상태가 됩니다.

Stop 상태

상태 플래그 상태의 값은 TASK_STOPPED입니다. 프로세스는 SIGSTOP 신호를 받으면 실행 상태에서 중지 상태로 진입하고 SIGCONT 신호를 받으면 실행 상태로 돌아갑니다. 이 상태는 주로 프로그램 디버깅에 사용되며 "일시 중지 상태" 또는 "일시 중지 상태"라고도 합니다.

Abort 상태

상태 플래그 상태의 값은 TASK_DEAD입니다. 어떤 이유로 프로세스가 실행을 중지하고 task_struct 구조(및 일부 리소스)를 제외하고 프로세스가 차지한 모든 리소스가 재활용되며 시스템은 더 이상 이에 주의를 기울이지 않으므로 이 상태를 a라고도 합니다. "좀비 상태"이고 프로세스는 좀비 프로세스가 됩니다.

프로세스의 전체 수명 주기 동안 5가지 상태 간에 전환할 수 있습니다. Linux 프로세스의 다섯 가지 상태 간의 변환 관계는 아래 그림에 나와 있습니다.

Linux 프로세스의 상태는 무엇입니까?

관련 권장 사항: "Linux 비디오 튜토리얼"

위 내용은 Linux 프로세스의 상태는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.