IT/Linux

프로세스와 쓰레드의 차이

Well빙맨 2023. 3. 7. 13:01
반응형

프로세스(Process)와 쓰레드(Thread)는 모두 컴퓨터에서 실행되는 실행 단위입니다. 하지만 그들은 다음과 같은 차이점이 있습니다.

  1. 프로세스는 독립적인 실행 단위이며, 쓰레드는 프로세스 내부에서 실행되는 작은 실행 단위입니다.

  2. 각각의 프로세스는 자신만의 주소 공간과 시스템 자원을 할당받으며, 다른 프로세스와는 독립적으로 실행됩니다. 쓰레드는 하나의 프로세스 내에서 공유된 자원을 사용하며, 다른 쓰레드와 동시에 실행됩니다.

  3. 프로세스는 운영체제로부터 자원을 할당받으며, 자신만의 우선순위를 가지며 스케줄링됩니다. 쓰레드는 프로세스 내부에서 스케줄링되며, 프로세스의 우선순위와 함께 스케줄링됩니다.

  4. 프로세스는 다른 프로세스와 통신하기 위해 IPC(Inter-Process Communication)를 사용해야 합니다. 쓰레드는 같은 프로세스 내의 다른 쓰레드와 메모리를 공유하기 때문에, 락 등의 동기화 기술을 사용하여 서로 통신할 수 있습니다.

  5. 프로세스는 자신만의 프로그램 카운터, 스택, 레지스터 등의 정보를 가지며, 이 정보들은 다른 프로세스와 공유되지 않습니다. 쓰레드는 자신만의 스택을 가지며, 프로세스 내부에서 공유되는 메모리 영역을 사용합니다.

  6. 하나의 프로세스가 비정상적으로 종료되면, 다른 프로세스들에게 영향을 끼치지 않습니다. 하지만 하나의 쓰레드가 비정상적으로 종료되면, 전체 프로세스가 종료될 수 있습니다.

요약하면, 프로세스는 독립적인 실행 단위이며, 쓰레드는 프로세스 내부에서 실행되는 작은 실행 단위입니다. 프로세스는 자신만의 자원을 가지며 다른 프로세스와는 독립적으로 실행되며, IPC를 사용하여 통신합니다. 쓰레드는 하나의 프로세스 내에서 공유된 자원을 사용하며, 락 등의 동기화 기술을 사용하여 서로 통신합니다.

 

[LINUX 내에서 프로세스의 기동중인 쓰레드를 확인 하는 명령어]

 

ps -Lf -p 프로세스 아이디를 입력하게 되면 아래와 같이 결과가 나온다

 

UID            PID               PPID           LWP         C          NLWP         STIME         TTY         TIME                CMD 

유저  프로세스아이디  부모프로세스아이디    쓰레드     CPU      쓰레드 수     시작시간    터미널    CPU 사용시간  명령어

반응형