[OS] Threads & Concurrency

박의진·2023년 7월 4일
0

TABA3기

목록 보기
2/16
post-custom-banner

Thread

스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미한다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 한다.

Thread Overview

Multithread benefits

  • 응답성이 좋음
  • 자원의 효율성
  • Context Switching 비용 감소

Multicore programming

  • Concurrency
  • Parallelism

Concurrent execution VS Parallelism execution

Data and Task prarallelism

  • Data parallelism (데이터 병렬 실행)
    데이터를 부분화 하여 동일한 연산을 수행하는 스레드나 프로세스를 병렬적으로 실행하는 방법

  • Task parallelism (태스크 병렬 실행)
    각 스레드나 프로세스가 서로 다른 연산을 수행하고 병렬적으로 실행하는 방법
    데이터는 같을 수도 다를 수도 있다. 예를 들어 하나의 데이터로 여러 통계 데이터를 출력하는 프로그램이라면 하나의 데이터를 각자의 스레드가 처리할 것이다.

Amdahl's Law

'암달의 법칙(Amdahl's law)'은 컴퓨터 프로그램은 프로세서를 아무리 병렬화 시켜도 병렬처리가 가능한 부분(전체 처리량의 약 5%)과 불가능한(순차 처리) 부분으로 구성되므로 더 이상 성능이 향상되지 않는 한계가 존재한다는 법칙이다.

Amdahl's Law calculation

  • P = 해당 성능이 전체적으로 차지하는 비율
  • S = 해당 성능을 개선시킨 속도

User threads and kernal thread

- Many-to-One
Solaris Green threads
GNU Portable Threads

- One-to-One
Windows
Linux

- Many-to-Many

Thread pool

  • Pool안에 thread를 미리 만들어 놓고 대기 상태로 놓는다.

  • 요청이 들어올 때 쓰레드를 활성화 상태로 놓는다.

  • 작업이 끝나면 다시 대기 상태로 놓는다.

    the number of threads in the pool?

    factors

    • the number of CPUs
    • the amount of physical memory
    • the expected number of concurrent client requests
post-custom-banner

0개의 댓글