프로세스 스레드란 무엇인가요?
단일 스레드 (single-threaded) 와 다중 스레드 (multi-threaded) 라는 용어를 들어보셨을 수 있습니다. 스레드는 프로세스 내의 실행 단위이며 종종 "경량 프로세스 (lightweight process)"라고 불립니다. 프로세스는 자체 격리된 시스템 리소스를 가지고 작동하는 반면, 동일 프로세스 내의 스레드들은 메모리와 같은 이러한 리소스를 공유할 수 있습니다. 이러한 공유 리소스 모델은 별도의 프로세스 간 통신보다 스레드 간 통신을 훨씬 빠르고 효율적으로 만듭니다.
단일 스레드 대 다중 스레드
모든 프로세스는 최소한 하나의 스레드를 가집니다. 스레드가 하나만 있는 프로세스를 단일 스레드 프로세스라고 하며, 둘 이상 있는 프로세스를 다중 스레드 프로세스라고 합니다.
예를 들어, 최신 텍스트 편집기를 사용할 때, 이는 단일 프로세스로 실행될 수 있습니다. 하지만 해당 프로세스 내에서, 하나의 스레드는 키보드 입력을 관리하고 다른 스레드는 맞춤법 검사나 자동 저장과 같은 작업을 백그라운드에서 수행할 수 있습니다. 이러한 동시 실행은 애플리케이션이 더 반응성이 좋게 느껴지도록 만듭니다. 여러 관련 작업을 위해 여러 프로세스를 시작하는 것보다 여러 스레드를 사용하는 것이 종종 더 효율적입니다.
ps 명령어로 스레드를 표시하는 방법
실행 중인 프로세스와 해당 스레드를 검사하려면 ps 명령어를 사용할 수 있습니다. ps에는 많은 옵션이 있지만, 스레드를 표시하는 일반적인 방법은 m 플래그를 사용하는 것입니다.
pete@icebox:~$ ps m
PID TTY STAT TIME COMMAND
2207 pts/2 - 0:01 bash
- - Ss 0:01 -
5252 pts/2 - 0:00 ps m
- - R+ 0:00 -
출력 해석
위 출력에서 PID(프로세스 ID) 가 있는 줄은 주 프로세스를 나타냅니다. 바로 아래에 있으며 PID 대신 대시 (-) 가 있는 줄은 해당 프로세스에 속한 스레드를 나타냅니다. 이 예시에서 bash와 ps m 프로세스는 각각 하나의 주 스레드만 나열되어 있으므로 단일 스레드입니다.