본문 바로가기

운영체제

[운영체제] 스레드와 병행성 _ 개요

 

  • 스레드는 CPU 이용의 기본 단위이다.
  • 스레드는 스레드 ID, 프로그램 카운터(PC), 레지스터 집합, 스택으로 구성된다.
  • 스레드는 같은 프로세스에 속한 다른 스레드와 운영체제 자원들을 공유한다.
  • 프로세스가 다수의 제어 스레드를 가진다면, 동시에 하나 이상의 작업을 수행할 수 있다.

동기

 

Single and Multithreaded Processes

  • 응용은 다중코어 시스템에서 처리 능력 향상
  • 이런 응용은 다중 계산 코어를 사용해 다수의 CPU-집중 작업을 병렬로 처리
  • 예) 웹 서버는 여러 개의 클라이언트들이 병행하게 접근
  • 단일 프로세스 서버라면 한 번에 하나의 클라이언트만 서비스하므로 매우 긴 시간을 기다려야 함.
  • 해결책은 서버에 서비스 요청이 들어오면, 프로세스는 그 요청을 수행할 별도의 프로세스를 생성하는 것.
  • 그러나 프로세스 안에 여러 스레드를 만들어 나가는 것이 더 효율적
  • 웹 서버가 다중 스레드화되면, 서버는 클라이언트의 요청을 listen하는 별도의 스레드를 생성
  • 요청이 들어오면 다른 프로세스를 생성하는 것이 아니라, 요청을 서비스할 새로운 스레드를 생성하고 추가적인 요청을 listen하기 위한 작업을 재개한다.

Multithreaded Server Architecture

  • 대부분 운영체제 커널도 다중 스레드
  • 예) 리눅스도 부트하는 동안 여러 커널 스레드가 생성됨.
  • 데이터 마이닝, 그래픽 및 인공지능 등에서 CPU 중심의 최신 문제를 해결해야 하는 프로그래머는 병렬로 실행되는 솔루션을 설계하여 최신 다중 코어 시스템의 성능을 활용할 수 있음.

 

장점

 

다중 스레드 프로그래밍의 4가지 이점 benefits

 

1. 응답성

  • 대화형 응용을 다중 스레드화 한다면,
    • 응용 프로그램의 일부가 봉쇄되거나
    • 응용프로그램이 긴 작업을 수행하더라도 프로그램의 수행이 계속되는 것을 허용
    •  -> 사용자에 대한 응답성 증가
  • 단일 스레드 응용은 연산 완료시까지 응답 안함.

 

2. 자원 공유

  • 프로세스는 공유 메모리와 메시지 전달 기법을 통해 자원 공유 -> 프로그래머의 명시적 처리
  • 그러나 스레드는 자동으로 속한 프로세스의 자원과 메모리 공유
  • 코드와 데이터 공유의 이점은 한 응용프로그램이 같은 주소 공간 내 여러 다른 스레드를 가질 수 있다는 점.

 

3. 경제성

  • 프로세스 생성은 비용이 많이 듦
  • 스레드 생성이 더 경제적 - 속한 프로세스의 자원을 공유하기 때문에
  • 스레드 생성은 상대적으로 시간과 메모리를 덜 소비함
  • 문맥 교환은 상대적으로 스레드 사이에서 더 빠름

 

4. 규모 적응성

  • 다중 처리기 구조에서는 각 스레드가 다른 처리기에서 병렬로 수행 될 수 있음
  • -> 다중 스레드의 이점이 다중 처리기 구조에서 더욱 증가
  • 단일 스레드 프로세스는 처리기가 많아도 한 처리기에서만 실행