CS/운영체제

[OS] 스레드

초코chip 2024. 9. 2. 19:56

배경

  • 지금까지는 프로세스가 싱글 스레드에서만 실행된다고 가정하고 그 처리 과정에 대해서 배웠음
  • 하지만 프로세스는 여러개의 스레드를 가질 수 있음

 

 

프로세스 vs 스레드

프로세스

  • 정의: OS로부터 독립적인 메모리 공간(코드, 데이터, 스택, 힙)을 할당받은 작업의 단위
  • 특징
    • 각 프로세스간 '기본적으로' 메모리 영역을 공유 하지 않음
      • 만약 접근하고 싶다면 IPC를 사용해야함

 

스레드

  • 정의: 프로세스 내에서 실행되는 흐름의 단위
  • 특징
    • 스레드들 간 코드, 데이터, 힙 영역을 공유하고, 스택 영역만이 스레드별로 할당된다.
    • 각 프로세스들은 최소 한개 이상의 스레드를 가지고 ( 이 스레드를 메인 스레드라고 함 )
    • 프로세스는 여러 개의 스레드를 가질 수 있다.

 

 

멀티 프로세스 vs 멀티 스레드

프로그램을 구현할때 여러가지 이유로 하나의 작업을 여러 개의 프로세스 or 여러 개의 프로세스로 구성하는데, 전자를 멀티 프로세스 후자를 멀티 스레드라고 한다.

멀티 프로세스

  • 장점: 여러개의 프로세스 중 하나에 문제가 발생하면 해당 문제가 다른 프로세스로 확산이 되지 않음
  • 단점: 독립적인 공간을 사용하기에 자원을 많이 사용하고 프로세스 간 통신이 어려운 면이 있음

멀티 스레드: 

  • 장점:
    • 시스템 자원을 적게 소모
    • 스레드 간 통신이 쉬움
    • 스레드 생성/종료 와 컨텍스트 전환 비용도 프로세스보다 적게 발생
  • 단점: 공유 메모리의 동기화 문제가 존재함
    • 한 스레드에 문제가 생기면 전체 스레드에 영향을 미침

 

p.s) 멀티 스레드는 클라이언트 - 웹 서버 구조에서 큰 장점이 있음

 

 

만약 싱글 스레드 였으면, A 클라이언트 요청이 처리가 될때까지 B 클라이언트는 대기를 해야함.

하지만 멀티 스레드라면, A 클라이언트 요청이 들어오면 해당 요청에 대한 스레드를 생성하고 다시 추가적인 요청에 대한 listening을 하면

스레드 제한 개수전까지 여러개의 요청을 받을 수 있음

 

참고

https://haedallog.tistory.com/138

 

[OS] 프로세스(process)와 스레드(thread)

목차프로그램프로세스스레드멀티 프로세스 vs 멀티 스레드참고자료1. 프로그램먼저 프로세스를 살펴보기 전에 프로그램(program)이 무엇인지 알아볼 필요가 있다. 본래 프로그램의 의미는 업무를

haedallog.tistory.com