본문 바로가기
Study/운영체제

4. Threads - Overview

by 이미뇨 2023. 4. 12.

1. Motivation

  • 대부분의 최신 애플리케이션은 멀티 스레드
  • 스레드는 애플리케이션 안에서 실행된다.
  • 프로세스 생성은 중량이 큰 반면 스레드 생성은 경량
  • Multiple tasks with the application 을 각 스레드로 구현가능
  • 코드 단순화, 효율성 향상
  • 커널은 일반적으로 멀티 스레드

2. Overview

  • Process : 실행 중인 프로그램 (아이디 공유 O)
  • Thread : 프로그램이 두 개 이상의 동시 실행 작업으로 분할되는 방법 (아이디 공유 X)
    • process보다 작은 단위
    • 프로세스 내의 자원을 공유 -> 각 스레드는 프로세스의 주소 공간에서 실행된다.
  • Thread구성 : Thread ID, program counter, register set, stack, etc.

 

Multithreaded Process

Multithreaded Process

Process vs. Thread

Process vs. Thread

 

3. Thread Control Block (TCB)

Thread Control Block (TCB) : 스레드에 대한 정보를 담고 있는 자료 구조, 커널 내부에서 스레드 관리에 사용

(* PCB : 프로세스에 대한 모든 정보를 집합해놓은곳 )

 

Examples of information in TCB

  • Thread id (스레드 아이디) 
  • State of the thread (running, ready, waiting, start, done) (스레드 상태)
  • Stack pointer (스택 포인터)
  • Program counter (프로그램 카운터)
  • Thread's register values (스레드의 레지스터 값)
  • Pointer to the process control block (PCB) (프로세스 제어블록 포인터)

Why Thread?

  • 프로세스 생성에 시간과 리소스가 많이 소요됨
  • 단일 스레드 프로세스와 비교
    • 확장성 : 멀티프로세서 구조에 활용
    • 반응성
  • 여러 프로세스와 비교
    • 자원공유
    • 경제적 : 프로세스 생성 속도가 스레드 생성 속도보다 약 30배 느림

4. Multicore Programming

Multicore or multiprocessor systems 과제:

  • Dividing activities 
  • Balance
  • Data splitting
  • Data dependency
  • Testing and debugging

Concurrency vs. Parallelism

  • Concurrency : 진행 중인 두 개 이상의 작업을 동시에 지원
    • Single processor / core, 동시성을 제공하는 스케줄러

Concurrent execution on single-core system:

 

  • Parallelism : 시스템이 두 개 이상의 작업을 동시에 수행

Parallelism on a multi-core system:

Types of parallelism

  • Data parallelism
    • : 동일한 데이터의 하위 집합을 여러 코어에 분산시키고 각 스레드에서 동일한 작업 수행
    • (일하는건 똑같은데 처리하는 데이터가 다르다. ex. TA채점)
  • Task parallelism
    • : 코어 간에 스레드 분산, 각 스레드가 고유한 작업 수행
    • (하는 작업자체가 다르다 ex. 개발 vs 영업)
  • - 하는일이 같냐 다르냐가 차이점이다.

 

5. Amdahl’s Law

  • 컴퓨터 성능 개선에 대한 공식
  • 어떤 작업에서 병렬화할 수 있는 부분의 비율이 주어졌을 때, 전체 작업 시간을 줄일 수 있는 최대 속도 향상 비율을 예측하는 데 사용
  • 하나의 프로세서를 사용할 때와 여러 개의 프로세서를 사용할 때의 속도 차이를 계산하는 데 사용

Amdahl’s Law

( S는 직렬 부분, N은 코어)

더보기

single core에서 100시간 소요되는 작업

병렬화 가능 : 80% ( l-s)

병렬화 불가능 : 20% (s)

 

4core 컴퓨터에서의 실행시간은? (core수 : n)

=> 80 / 4 + 20

 

<소요시간>

(l-s) / n + s

<속도>

l / ((l-s) / n + s)

  • 애플리케이션의 직렬 부분이 추가 코어를 사용하여 얻은 성능 향상에 지대한 영향을 미친다
  • 따라서, 애플리케이션의 병렬 처리를 효과적으로 활용하려면 직렬 부분의 비중을 줄이는 것이 중요