본문 바로가기
Computer Science/Operating System

프로세스와 스레드

by quessr 2025. 1. 24.

 

운영체제를 공부하면서 프로세스(Process)스레드(Thread)는 개념을 자주 접하게 되었습니다.

이 둘은 프로그램이 어떻게 실행되고 동작하는지 설명하는 기본적인 단위인데요, 헷갈리기 쉬운 이 개념을 간단히 정리해보겠습니다.


프로세스란 무엇인가?

프로세스실행 중인 프로그램을 의미합니다.

  • 프로그램은 단순히 저장된 코드일 뿐이고, 프로세스는 메모리에서 실행되는 프로그램의 실체입니다.
  • 프로세스는 독립적인 실행 단위로, 운영체제는 프로세스마다 고유한 메모리 공간과 자원을 할당합니다.

프로세스의 특징:

  1. 독립적인 메모리 공간:
    •    프로세스마다 Code, Data, Heap, Stack 영역이 독립적으로 존재합니다.
    •    한 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없습니다.
  2. 운영체제의 스케줄링 대상:
    •    CPU가 프로세스를 번갈아 실행하며, 운영체제는 각 프로세스의 상태를 관리합니다.

예시:

  • 웹 브라우저, 텍스트 편집기 등은 각각 하나의 프로세스로 실행됩니다.

스레드란 무엇인가?

스레드프로세스 내에서 실행되는 작은 실행 단위입니다.

  • 하나의 프로세스는 하나 이상의 스레드를 가질 수 있습니다.
  • 스레드는 프로세스가 가진 자원을 공유하며, 프로세스의 작업을 분리해서 병렬로 실행합니다.

스레드의 특징:

  1. 공유 메모리:
    •    스레드들은 동일한 프로세스 내의 메모리(Code, Data, Heap)를 공유합니다.
    •    하지만 각 스레드는 독립적인 Stack을 가집니다(함수 호출과 지역 변수 관리를 위해).
  2. 경량 프로세스:
    •    스레드는 프로세스를 구성하는 작은 단위로, 문맥 전환(context switching) 비용이 적습니다.
  3. 자원을 제어:
    •    스레드는 프로세스 내 자원을 효율적으로 사용하며, 작업을 분리해서 동시에 실행할 수 있도록 돕습니다.

예시:

  • 웹 브라우저의 여러 탭은 하나의 프로세스 안에서 각각의 스레드로 실행됩니다.
  • 게임에서는 하나의 스레드가 그래픽을 처리하고, 다른 스레드는 사용자 입력을 처리하는 방식으로 동작합니다.

프로세스와 스레드의 차이

구분 프로세스(Process) 스레드(Thread)
정의 실행 중인 프로그램 프로세스 내의 실행 단위
메모리 각각 독립적인 메모리 공간 할당 프로세스 내의 메모리(Code, Data, Heap)를 공유
속도 문맥 전환 비용이 큼 문맥 전환 비용이 적음
의존성 독립적 같은 프로세스 내에서 다른 스레드와 의존적
사용 사례 여러 애플리케이션 실행 한 애플리케이션의 여러 작업을 병렬로 실행

프로세스와 스레드의 관계

"하나의 프로세스 안에 여러 개의 스레드가 존재한다"는 점이 가장 중요합니다.

  • 프로세스는 기본적인 실행 단위로, 메모리와 자원을 제공합니다.
  • 스레드는 프로세스의 자원을 제어하고 병렬 작업을 수행하는 역할을 합니다.
  • 따라서 스레드는 혼자서는 실행될 수 없으며, 반드시 프로세스 내에 존재해야 합니다.

자원 제어의 예시:

  1. 게임 애플리케이션:
    •    하나의 스레드는 그래픽 렌더링을 담당
    •    다른 스레드는 사용자 입력(키보드, 마우스)을 처리
    •    또 다른 스레드는 네트워크 통신(서버와 데이터 교환)을 담당
  2. 웹 브라우저:
    •    하나의 스레드는 웹페이지를 렌더링
    •    다른 스레드는 사용자 입력(스크롤, 클릭) 처리

멀티스레드와 단일 스레드

1. 단일 스레드:

  • 하나의 작업만 순차적으로 처리합니다.
  • 예: 오래된 프로그램들이 대부분 단일 스레드 방식.

2. 멀티스레드:

  • 여러 스레드가 동시에 작업을 처리합니다.
  • 프로세스 내 자원을 공유하면서 병렬 작업을 수행해 효율을 극대화합니다.
  • 예: 멀티탭 브라우저, 게임 애플리케이션 등.

정리

  • 프로세스: 실행 중인 프로그램으로, 독립된 메모리와 자원을 가짐.
  • 스레드: 프로세스 내에서 실행되는 작은 단위로, 프로세스의 자원을 제어하고 병렬로 작업을 수행.
  • 관계: 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 스레드는 프로세스 없이는 존재할 수 없음.
반응형