운영체제

프로세스와 스레드 차이점

♠디지털 모험일지♠ 2024. 10. 26. 16:12
728x90
반응형
SMALL

1. 프로세스 (Process)

  • 정의: 프로세스는 운영체제에서 실행 중인 프로그램의 독립적인 단위입니다. 각각의 프로세스는 고유한 메모리 공간(코드, 데이터, 스택, 힙)을 가지고 있습니다.

  • 메모리 구조:

    • 코드 영역: 실행할 코드가 위치.
    • 데이터 영역: 전역 변수나 정적 변수가 저장됨.
    • 힙(Heap): 런타임 시 동적으로 할당되는 메모리 영역.
    • 스택(Stack): 함수 호출 시 지역 변수나 매개 변수가 저장됨.
  • 특징:

    • 프로세스 간의 메모리 격리: 각각의 프로세스는 독립적인 메모리 공간을 사용합니다. 마치 각자 방을 사용하는 것처럼, 다른 프로세스의 메모리에 직접 접근할 수 없습니다. 이로 인해 한 프로그램에서 문제가 발생하더라도 다른 프로그램에 영향을 주지 않아요.
    • IPC(Inter-Process Communication): 프로세스 간의 통신은 서로 다른 방에 있는 사람들이 편지나 전화를 통해 소통하는 것과 비슷해요. 파이프나 메시지 큐 같은 도구를 사용해 서로 정보를 주고받습니다.

2. 스레드 (Thread)

  • 정의: 스레드는 프로세스 내에서 실행되는 작업의 단위입니다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이 스레드들은 프로세스의 메모리 공간(코드, 데이터, 힙)을 공유합니다.

  • 메모리 구조

    • 공유: 코드, 데이터, 힙 영역을 다른 스레드와 공유. 여러 사람이 같은 방에서 일하는 것과 비슷해요.
    • 개별 스택: 각 스레드는 독립적인 스택을 가집니다.
  • 특징

    • 스레드의 메모리 공유: 스레드는 같은 공간에서 일하기 때문에 메모리를 공유할 수 있습니다. 이로 인해 통신 속도가 빠르지만, 동시에 같은 자원을 사용할 때 충돌을 방지하기 위해 상호 배제(Mutual Exclusion)가 필요해요. 이는 자원을 사용할 때 "지금은 나만 사용해!"라고 표시하는 것과 같아요.
    • 독립성과 문제 발생 시 영향: 스레드들은 같은 방에서 일하기 때문에, 한 스레드에서 문제가 발생하면 다른 스레드에도 영향을 줄 수 있어요. 마치 팀원 중 한 명이 실수로 데이터를 지워버리면 같은 방에 있는 다른 사람에게도 영향을 미치는 것처럼요.

차이점 요약

구분 프로세스 스레드
메모리 공유 독립적인 메모리 공간 사용 같은 프로세스 내에서 메모리 공간을 공유
생성/종료 속도 스레드보다 느림 프로세스보다 빠름
통신 방법 IPC 필요 (편지나 전화 같은 방식) 직접 메모리 공유 (같은 방에서 대화)
독립성 프로세스 간 독립적, 한 프로세스의 문제가 다른 프로세스에 영향 없음 한 스레드의 문제가 같은 프로세스 내 다른 스레드에 영향
반응형
SMALL