[운영체제]4. 쓰레드 & 동시성

sai06266·2023년 9월 8일
0

운영체제

목록 보기
4/8

What is thread?

  • 웹 서버
    • 웹페이지를 전달하는 컴퓨터 프로그램
  • 웹 서버는 동시에 많은 클라이언트에게 제공해햐한다.
  • 만약 웹 서버가 하나의 입출력 실행만 수행한다면?
    • 요청이나 작업이 동시에 여러 개 들어오면 서버는 처리를 완료하기 전에 이전 요청이나 작업을 차단하게 될 것
  • 많은 서버 프로세스들은 동시의 서비스에 대한 요구를 받는다.
    • N개의 요청 -> N개의 프로세스 복제

      • 메모리 공간 낭비
      • 프로세스 생성의 시간 지연
  • 따라서 쓰레드가 필요하다.
    • 코드, 데이터, 자원이 공유된다.
    • 레지스터 값과 스택은 공유되지 않는다.

Thread

  • CPU 이용의 기본 단위
  • 각각의 프로세스는 많은 쓰레드를 포함하고 있다.

프로세스의 모든 쓰레드가 공유하는 것

  • 코드, 데이터, 힙
  • open files, signal handlers

각각의 쓰레드가 고유하게 가지는 것

  • 스택
  • 레지스터
  • 쓰레드 ID

싱글 쓰레드와 멀티 쓰레드 프로세스

Thread VS. Process

  • fork를 사용하여 프로세스를 생성하는 것은 expensive하다.
    • 시간, 메모리
  • 쓰레드는 많은 양의 메모리나 시작 시간을 요구하지 않는다.
    • 그래서 때때로 '가벼운 프로세스(lightweight process)'라고 불린다.
  • 응답성(Responsiveness)
    • 프로세스는 부분이 차단되어도 계속 실행할 수 있다.
  • 자원 공유
    • 메모리와 자원은 공유된다.
  • 경제성
    • 프로세스마다 자원을 할당하면 오버헤드가 발생하는데, 쓰레드를 사용하면 비용이 저렴해지고 문맥 교환이 용이해짐.
  • 멀티 프로세서 아키텍처에서의 이용성

Multicore Programming

  • 동시성(Concurrency)
    • 싱글 코어에서 멀티스레드를 동작시키기 위한 방식으로, 멀티 태스킹을 위해 여러 개의 스레드가 '번갈아가면서' 실행되는 것.
  • 병렬성(Parallelism)
    • 멀티 코어에서 멀티스레드를 동작시키는 방식으로, 한 개 이상의 스레드를 포함하는 각 코어들이 '동시에' 실행되는 것.


User threads VS. Kernel thread

  • 유저 쓰레드
    • 유저 레벨 쓰레드 라이브러리에 의해 지원됨

      • POSIX pthreads
      • Win32 threads
      • Java threads
  • 커널 쓰레드
    • 운영체제에 의해 직접적으로 지원되고 관리됨

      • Windows XP/2000
      • Solaris
      • Linux
      • Mac OS X

Linux threads

  • clone() 시스템 콜을 사용하여 쓰레드를 생성한다.
  • 리눅스는 프로세스와 쓰레드 사이에 구분이 없다.

0개의 댓글