IT/Linux
프로세스와 쓰레드의 차이
Well빙맨
2023. 3. 7. 13:01
반응형
프로세스(Process)와 쓰레드(Thread)는 모두 컴퓨터에서 실행되는 실행 단위입니다. 하지만 그들은 다음과 같은 차이점이 있습니다.
- 프로세스는 독립적인 실행 단위이며, 쓰레드는 프로세스 내부에서 실행되는 작은 실행 단위입니다.
- 각각의 프로세스는 자신만의 주소 공간과 시스템 자원을 할당받으며, 다른 프로세스와는 독립적으로 실행됩니다. 쓰레드는 하나의 프로세스 내에서 공유된 자원을 사용하며, 다른 쓰레드와 동시에 실행됩니다.
- 프로세스는 운영체제로부터 자원을 할당받으며, 자신만의 우선순위를 가지며 스케줄링됩니다. 쓰레드는 프로세스 내부에서 스케줄링되며, 프로세스의 우선순위와 함께 스케줄링됩니다.
- 프로세스는 다른 프로세스와 통신하기 위해 IPC(Inter-Process Communication)를 사용해야 합니다. 쓰레드는 같은 프로세스 내의 다른 쓰레드와 메모리를 공유하기 때문에, 락 등의 동기화 기술을 사용하여 서로 통신할 수 있습니다.
- 프로세스는 자신만의 프로그램 카운터, 스택, 레지스터 등의 정보를 가지며, 이 정보들은 다른 프로세스와 공유되지 않습니다. 쓰레드는 자신만의 스택을 가지며, 프로세스 내부에서 공유되는 메모리 영역을 사용합니다.
- 하나의 프로세스가 비정상적으로 종료되면, 다른 프로세스들에게 영향을 끼치지 않습니다. 하지만 하나의 쓰레드가 비정상적으로 종료되면, 전체 프로세스가 종료될 수 있습니다.
요약하면, 프로세스는 독립적인 실행 단위이며, 쓰레드는 프로세스 내부에서 실행되는 작은 실행 단위입니다. 프로세스는 자신만의 자원을 가지며 다른 프로세스와는 독립적으로 실행되며, IPC를 사용하여 통신합니다. 쓰레드는 하나의 프로세스 내에서 공유된 자원을 사용하며, 락 등의 동기화 기술을 사용하여 서로 통신합니다.
[LINUX 내에서 프로세스의 기동중인 쓰레드를 확인 하는 명령어]
ps -Lf -p 프로세스 아이디를 입력하게 되면 아래와 같이 결과가 나온다
UID PID PPID LWP C NLWP STIME TTY TIME CMD
유저 프로세스아이디 부모프로세스아이디 쓰레드 CPU 쓰레드 수 시작시간 터미널 CPU 사용시간 명령어
반응형