Home 프로그램, 프로세스와 스레드
Post
Cancel

프로그램, 프로세스와 스레드

프로그램, 프로세스와 스레드에 대해 알아보고 어떤 공통점과 차이점이 있는지 정리

질문

  • 프로그램이란?
  • 프로세스의 특징
  • 스레드의 특징
  • 프로세스의 장점과 단점
  • 스레드의 장점과 단점
  • 프로세스와 스레드의 공통점과 차이점
  • 멀티프로세스와 멀티스레드의 특징, 장단점

프로그램, 프로세스, 스레드

프로그램

  • 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 모음
  • 하드 디스크 등에 저장되어 있는 실행 코드

프로세스

  • 컴퓨터에서 연속적으로 실행되고 있는 프로그램
  • 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업 단위

스레드

  • 프로세스 내에서 실행되는 흐름의 단위
  • 한 프로그램은 하나 이상의 스레드를 가지며 둘 이상의 스레드를 동시에 실행 가능 (멀티스레드)

프로세스

프로세스의 특징

자원을 할당받는 작업의 단위

  • 운영체제로부터 시스템 자원(CPU 시간, 주소 공간, 메모리 등)을 할당받아 작업 수행

독립된 메모리 공간

  • 운영체제로부터 독립된 메모리 영역(Code, Data, Heap, Stack)을 할당받아 실행
  • 프로세스당 최소 1개의 스레드(메인 스레드)를 가짐

독립성

  • 각 프로세스는 별도의 주소 공간에서 실행
  • 다른 프로세스의 메모리에 직접 접근 불가
  • 파이프, 파일, 소켓 등을 이용한 프로세스 간 통신(Inter-Process Communication, IPC)을 사용해 다른 프로세스와 데이터 통신

프로세스의 장점

  • 독립된 메모리 공간을 가지므로 하나의 프로세스에 문제가 발생하더라도 다른 프로세스에 영향을 주지 않음

프로세스의 단점

  • 프로세스 간 통신은 IPC 기법을 사용해야 하며, 컨텍스트 스위칭 시 오버헤드가 발생하여 시스템 자원 소모가 큼

스레드

스레드의 특징

프로세스 내 실행 흐름 단위

  • 스레드는 프로세스 내에서 실행되는 작업의 흐름
  • 프로세스가 할당받은 자원을 공유하며 실행됨

메모리 공유

  • 같은 프로세스 내의 스레드들은 Code, Data, Heap 영역을 공유
  • 각 스레드는 독립적인 레지스터, Stack을 가짐
  • 이를 통해 스레드 간 데이터 공유와 통신이 용이

빠른 생성 및 전환

  • 스레드는 프로세스 내에서 생성되므로, 프로세스 간 전환보다 스레드 간 전환이 더 빠르고 효율적

스레드의 장점

  • 같은 프로세스 내에서 메모리를 공유하므로 통신이 빠르고 효율적
  • 스레드 간 컨텍스트 스위칭은 프로세스 간 전환보다 오버헤드가 적음

스레드의 단점

  • 메모리를 공유하기 때문에 하나의 스레드에서 오류가 발생하면 같은 프로세스 내 다른 스레드에도 영향을 미칠 수 있음
  • 동기화 문제로 인한 복잡성이 증가함

프로세스와 스레드의 차이점

메모리 구조

  • 프로세스: 독립된 메모리 공간을 가짐
  • 스레드: 프로세스 내에서 메모리를 공유

자원 공유

  • 프로세스: 다른 프로세스의 메모리에 직접 접근 불가
  • 스레드: 같은 프로세스 내에서 자원을 공유하며 실행

오버헤드

  • 프로세스: 프로세스 간 컨텍스트 스위칭은 오버헤드가 큼
  • 스레드: 스레드 간 전환은 상대적으로 오버헤드가 적음

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

멀티 프로세스

  • 하나의 응용 프로그램을 여러 개의 프로세스로 구성
  • 각 프로세스가 하나의 작업을 처리
  • 여러 개의 자식 프로세스 중 하나에 문제가 발생해도 다른 자식 프로세스에 영향이 미치지 않음
  • 컨텍스트 스위칭의 오버헤드가 큼
  • IPC로 프로세스 간 통신의 어려움

멀티 스레드

  • 하나의 응용 프로그램을 여러 개의 스레드로 구성
  • 각 스레드가 하나의 작업을 처리
  • 시스템 자원의 효율성과 처리량 증가
  • 스레드 간 데이터 공유가 상대적으로 간단하기 때문에 부담이 적음
  • 설계와 디버깅이 까다롭고 동기화 문제가 어려움
  • 하나의 스레드에 문제가 발생하면 다른 스레드와 전체 프로세스도 영향을 받음

출처

컴퓨터 프로그램

프로세스

스레드 (컴퓨팅)

OS 프로세스와 스레드의 차이

완전히 정복하는 프로세스 vs 스레드 개념

운영체제 프로세스와 스레드

CS 지식8. 프로세스(Process)와 스레드(Thread)란?

This post is licensed under CC BY 4.0 by the author.