싱글스레드, 멀티스레드

조영래·2022년 10월 24일
0

프로세스와 스레드차이

프로세스

  • 운영체제로부터 자원을 할당받는 작업의 단위
  • 디스크로부터 메모리에 적재되어 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 함

스레드

  • 프로세스가 할당받은 자원을 이용하는 실행의 단위
  • 하나의 프로세스를 다수의 실행 단위인 스레드로 구분하여, 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 멀티스레딩이라고 함.

싱글스레드 vs 멀티스레드

싱글스레드

• 하나의 프로세스에서 하나의 스레드 실행
• 하나의 레지스터와 스택으로 표현

싱글 스레드의 장점

• 자원 접근에 대한 동기화를 신경쓰지 않아도 된다.
• 작업전환 작업을 요구하지 않는다.(작업전환은 여러 개의 프로세스가 하나의 프로세서를 공유할 때 발생하는 작업으로 많은 비용을 필요로 한다.)

싱글 스레드의 단점

• 여러 개의 CPU를 활용하지 못한다.
• 두 개의 작업을 하나의 스레드로 처리하는 경우와, 두 개의 스레드로 처리하는 경우를 가정했을 때, 후자의 경우는 짧은 시간 동안 2개의 스레드가 번갈아가면서 작업을 수행한다. 그래서 동시에 두 작업이 처리되는 것과 같이 느끼게 된다.
• 하지만 오히여 두 개의 스레드로 작업한 시간이 싱글스레드로 작업한 시간보다 더 걸릴 수도 있는데, 그 이유는 스레드 간의 작업전환(context switching)에 시간이 걸리기 때문이다.

멀티 스레드

• 프로그램을 다수의 실행 단위로 나누어 실행
• 프로세스 내에서 자원을 공유하여 자원 생성과 관리의 중복을 최소화
• 서버가 많은 요청을 효율적으로 수행할 수 있는 환경을 제공
• 각각의 스레드가 고유의 레지스터와 스택으로 표현

멀티 스레드의 장점

• 새로운 프로세스를 생성하는 것보다 기존 프로세스에서 스레드를 생성하는 것이 빠르다.
• 프로세스의 자원과 상태를 공유하여 효율적으로 운영이 가능하다.
• 프로세스의 작업전환보다 스레드의 작업전환이 더 빠르다.

멀티 스레드의 단점

• 하나의 스레드만 실행중일 때는 실행시간이 오히려 지연될 수 있다.
• 멀티 스레딩을 위해 운영체제의 지원이 필요하다.
• 스레드 스케쥴링을 신경써야 한다.

참조

profile
난될놈이야

0개의 댓글