프로세스 스레드
100%

프로세스 활용 · 레슨 3

프로세스 스레드

리눅스 스레드가 프로세스 리소스를 공유하는 방식과 ps로 검사하는 방법을 알아봅니다.

스레드는 프로세스 안에서 스케줄링되는 실행 흐름입니다. 실행 중인 모든 프로세스에는 스레드가 하나 이상 있으며 다중 스레드 프로세스에는 동시에 진행할 수 있는 여러 흐름이 있습니다.

프로세스와 스레드

한 프로세스의 스레드는 가상 주소 공간과 열린 파일 디스크립터 같은 리소스를 공유합니다. 각 스레드는 레지스터와 스택을 포함한 자체 실행 상태도 가집니다. 공유하면 효율적으로 통신할 수 있지만 한 스레드의 동기화되지 않은 변경이 다른 스레드에 영향을 줄 수도 있습니다.

별도의 프로세스는 일반적으로 서로 다른 주소 공간을 가지며 명시적인 프로세스 간 메커니즘으로 통신합니다. 어느 설계도 자동으로 더 빠르거나 안전하지는 않습니다. 작업 부하와 구현에 따라 절충이 결정됩니다.

같은 프로세스의 스레드가 일반적으로 공유하는 리소스는 무엇입니까?

스레드 식별자

리눅스는 각 스레드를 자체 스레드 ID를 가진 스케줄 가능한 작업으로 표현합니다. 스레드 그룹 리더의 ID는 일반적으로 프로세스 ID로 표시되며 모든 멤버가 스레드 그룹 ID를 공유합니다. 도구는 PID, TID, LWPSPID 같은 레이블을 사용합니다. 모든 레이블의 의미가 같다고 가정하지 말고 도구의 필드 정의를 확인하십시오.

각 스레드가 독립적으로 유지하는 것은 무엇입니까?

ps로 스레드 나열하기

모호한 기본 레이아웃을 피하려면 출력 필드를 명시합니다.

$ ps -eLo pid,tid,psr,stat,comm

procps ps에서 -L은 스레드를 표시하고 -e는 모든 프로세스를 선택합니다. pid는 스레드 그룹을, tid는 개별 스레드를 식별합니다. psr은 마지막으로 실행된 CPU를, stat은 상태를 보고합니다. 프로세스 하나를 검사합니다.

$ ps -L -p 1234 -o pid,tid,stat,pcpu,comm

스레드 목록은 스냅샷입니다. 스레드는 그 직후 종료되거나 상태가 바뀔 수 있습니다.

명시적인 필드로 PID 1234에 속한 스레드를 나열하는 명령은 무엇입니까?

스레드 활동 해석하기

스레드 하나의 높은 CPU 사용량이 프로세스 전체 평균에 가려질 수 있습니다. 스레드 수준 CPU 표본을 애플리케이션 로그, 스택 추적 및 프로파일링 도구와 결합하십시오. 일시 정지, 권한 및 서비스 영향을 이해하지 않고 운영 작업에 디버거를 연결하거나 신호를 보내지 마십시오.

ps 스레드 목록을 영구 상태로 취급해서는 안 되는 이유는 무엇입니까?

레슨 완료

프로세스 스레드 완료

이제 프로세스 리소스와 스레드별 실행 상태를 구분할 수 있습니다.

  • 모든 프로세스에 스레드가 하나 이상 있음을 이해합니다.

  • 한 프로세스의 스레드가 공유하는 리소스를 식별합니다.

  • ps -L로 명시적인 프로세스 및 스레드 ID를 나열합니다.

  • 스레드 출력을 스냅샷으로 취급하고 다른 증거와 연결합니다.

학습 진행 상황 저장

무료 계정을 만들어 이 레슨을 저장하고 어떤 기기에서든 계속 학습하세요.

무료 계정 만들기
다음 수업
프로세스 활용(으)로 돌아가기