cgy12306

[OS] 쓰레드 본문

운영체제

[OS] 쓰레드

cgy12306 2021. 2. 7. 16:47

쓰레드

레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 프로그램 흐름 단위를 말합니다.

 

스레드는 스레드 ID, 프로그램 카운터 ,레지스터 집합, 스택으로 구성됩니다. 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 운영체제 자원들을 공유합니다.

 

위의 그림은 단일 스레드와 다중 스레드 프로세스의 차이를 보여주고 있습니다.

 

다중 쓰레드 장점

  • 응답성
  • 자원 공유
  • 경제성
  • 규모 적응성

병행 실행(Concurrency)와 병렬 실행(Parallelism)의 차이

Concurrency

  • 실행되는 것처럼 보이지만 실제로는 동시에 처리 되지 않고 번갈아가면서 여러개의 태스크를 조금씩 나눠서 실행 합니다.
  • 한번에 달성되는 작업량이 증가됩니다.
  • 싱글 코어와 멀티코어에서 가능합니다.

Parallelism

  • 실제로 여러개의 태스크를 동시에 처리 합니다.
  • 처리량과 계산 속도가 향상됩니다.
  • 멀티코어에서만 가능합니다.

쓰레드 풀(Thread Pool)

스레드 풀은 스레드를 무한정 만들면 언젠가는 CPU 시간, 메모리 공간 같은 시스템 자원이 고갈 되기 때문에 이를 방지하기 위한 방법 중 하나입니다.

 

스레드 풀의 기본 아이디어는 프로세스를 시작할 때 일정한 수의 스레드를 미리 풀로 만들어 두는 것입니다. 요청이 들어오면 스레드 풀에서 들어온 요청에게 스레드를 할당합니다. 요청을 다 서비스 해줬으면 해당 스레드는 다시 풀로 돌아가 다른 작업을 기다립니다. 만약 스레드가 바닥나면 서버는 free된 스레드가 하나 생길 때까지 대기합니다.

'운영체제' 카테고리의 다른 글

[OS] CPU 스케줄링  (0) 2021.02.07
[OS] 프로세스  (0) 2021.02.07
[OS] System call  (0) 2021.02.07
Comments