프로세스와 쓰레드

양성빈·2022년 8월 12일
post-thumbnail

참고
자바의 정석

프로세스와 쓰레드

프로세스란 간단히 말해서 '실행중인 프로그램'이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원을 할당받아 프로세스가 된다.

프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리등의 자원 그리고 쓰레드로 구성되어 있으며 쓰레드가 실제로 작업을 하는 역할을 한다.

프로세스에는 하나이상의 쓰레드가 있으며 2개이상의 쓰레드를 가진 경우 멀티쓰레드라고 한다.

쓰레드의 개수는 무한이나 실제로는 메모리의 한계에 따라 쓰레드의 수를 결정한다.

멀티태스킹과 멀티쓰레딩

우리가 사용하는 OS는 멀티태스킹을 지원함으로 여러개의 프로세스가 동시에 실행할 수 있다. 이와 똑같이 멀티쓰레딩은 쓰레드가 동시에 작업을 수행하는 것이다. 하지만 실제 CPU의 코어가 한번에 하나의 작업만 수행할 수 있고, 실제로 도잇에 처리되는 작업의 개수는 코어의 개수와 같다. 그렇지만, 작업관리자를 보면 실제 코어의 개수보다 더 많이 동시작업이 많이 일어난다. 그 이유는 각 코어가 아주 짧은 시간동안 여러 작업을 번갈아 가며 수행함으로써 여러 작업들이 모두 동시에 수행되는 것처럼 보이게 한다.

멀티쓰레딩의 장단점

멀티쓰레딩의 장점

  • CPU의 사용률을 향상시킨다.
  • 자원을 보다 효율적으로 사용할 수 있다.
  • 사용자에 대한 응답성이 향상된다.
  • 작업이 분리되어 코드가 간결해진다.

멀티쓰레딩의 단점

  • 여러 쓰레드가 같은 프로세스 내에서 자원을 공유하면서 작업을 하기 때문에 발생할 수 있는 동기화, 교착상태와 같은 문제가 발생할 수 있다.
profile
모든 것을 즐길줄 아는 개발자입니다!

0개의 댓글