ps
Linux 프로세스 상태 코드(예:)를 운영 체제 상태 다이어그램의 상태에 매핑 하려고 하는데 매핑할 수 없는 것 같습니다. Linux 프로세스 상태가 이론적 운영 체제 상태 다이어그램과 반드시 일치하지 않기 때문입니까? 특히 다이어그램에서 D
///가 어디에 S
있는지 잘 모르겠습니다 .T
I
ps
프로세스 상태 코드매뉴얼 페이지에서:PROCESS STATE CODES Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process: D uninterruptible sleep (usually IO) I Idle kernel thread R running or runnable (on run queue) S interruptible sleep (waiting for an event to complete) T stopped by job control signal t stopped by debugger during the tracing W paging (not valid since the 2.6.xx kernel) X dead (should never be seen) Z defunct ("zombie") process, terminated but not reaped by its parent
OS 프로세스 상태 다이어그램위키피디아에서:
~처럼"중지됨"은 "차단됨" 상태에 속합니까?그러나 대답은 다소 불완전합니다.
답변1
짧은 답변:
각 주의 지도는 대략 다음과 같습니다.
상태 | 중요성 |
---|---|
D |
금지된 |
I |
금지된 |
R |
기다리거나 달리거나 |
S |
금지된 |
T |
차단됨(다소) |
t |
차단됨(다소) |
W |
금지된(Linux 1.1.30부터 사용되지 않음) |
X |
종료됨 |
Z |
종료됨 |
긴 답변:
Linux에서 외부에 표시되는 프로세스 상태 코드는 시스템 관리자가 관심을 가질 수 있는 단일 문자 정보로 압축하려고 시도하므로 정보도 포함됩니다.왜프로세스가 차단되었습니다(따라서 차단 해제 가능 여부와 항목).
"대기"와 "실행 중"의 차이는 모호합니다. 프로세스가 실행되는 시간 조각이 너무 작아서 컴퓨터 앞에 앉아 있는 사람에게는 실행할 준비가 된 프로세스 사이에 큰 차이가 없기 때문입니다. 그리고 실행중인 프로세스.
또한 Linux는 전체 프로세스가 아니라 개별 메모리 페이지를 교체하지 않으므로 "스왑 아웃 및 대기" 또는 "스왑 아웃 및 차단"에 매핑된 상태를 찾을 수 없습니다.
상태 | 중요성 |
---|---|
D |
프로세스는 다음과 같습니다.금지된그리고 그 상태할 수 없다중단됩니다(예: kill ). 일반적으로 이 상태에서는 커널이 프로세스를 대신하여 I/O를 수행하고 관련 커널 코드는 인터럽트를 처리할 수 없습니다. |
I |
프로세스는 현재 할 일이 없고 현재 수행 중인 커널 스레드입니다.금지된새로운 작품을 기다리고 있습니다. 이 상태는 기술적으로 D (일반적으로 커널 스레드가 중단되지 않기 때문에)와 동일합니다. 그것은회계/미학적 이유로 도입됨, 해당 상태의 프로세스는 D 시스템 부하에 기여하는 것으로 간주되기 때문입니다. |
R |
프로세스는 다음과 같습니다.기다리다달리거나달리기. 이는 스케줄러가 사용 가능한 CPU에서 예약할 수 있고 예약할 모든 프로세스입니다. 내부적으로 커널은 실행 중인 프로세스와 대기 중인 프로세스를 구별할 수 있지만 이는 프로세스 상태 코드를 통해 노출되지 않습니다. |
S |
프로세스는 다음과 같습니다.금지된그리고 그 상태할 수 있는중단된 kill . 이벤트( sleep , select , 등)를 기다리는 대부분의 시스템 호출은 이 상태 poll 로 들어갑니다.wait |
T |
프로세스는 다음과 같습니다.금지된와 같은 신호에 의해 파견되지 않도록 하세요 SIGSTOP . 이 상태는 프로세스 자체가 이벤트를 기다리지 않고 일반적으로 다른 프로세스나 사용자( Ctrl+ Z) 의 개입으로 인해 추가 실행이 차단되므로 이론적 상태인 "차단됨"과 정확히 일치하지 않습니다. |
t |
위와 유사합니다. 프로세스는 다음과 같습니다.금지된이벤트 자체를 기다리지 않고 디버거 또는 추적 프로세스에 의해 전달됩니다. |
W |
더 이상 사용되지 않습니다. 프로세스는 다음과 같습니다.금지된스왑에서 RAM으로 메모리 페이지를 읽어오기를 기다리는 중입니다. 이 코드가 사용되었습니다Linux v1.1.30 이전. v2.3.43부터 프로세스는 더 이상 이 상태에 들어갈 수 없으며 v2.5.50부터 이 상태에 대한 모든 참조가 제거되었습니다. |
X |
프로세스는 다음과 같습니다.종료현재 프로세스 목록에서 제거되고 있습니다. 이 상태는 ps 커널이 다른 CPU 코어의 프로세스 항목을 정리하는 동안 잠시 동안 실행될 때만 발생하므로 자주 표시되지 않습니다 . |
Z |
프로세스는 다음과 같습니다.종료프로세스 목록의 항목은 상위 프로세스가 종료 상태 정보를 수집할 수 있도록 하기 위해서만 존재합니다. |