본문 바로가기
기록/부트캠프

프로세스와 스레드

by 디스코비스킷 2025. 2. 27.
반응형

프로세스와 스레드

1. 프로세스(Process)란?

프로세스는 실행 중인 프로그램을 의미하며, 운영체제에서 독립적으로 실행되는 작업 단위이다. 각 프로세스는 자신만의 메모리 공간(주소 공간)을 가지며, CPU 스케줄링에 의해 실행된다.

프로세스의 특징

  • 독립적인 실행 단위: 각 프로세스는 별도의 메모리 공간을 가짐.
  • 고유한 주소 공간 할당: 코드, 데이터, 힙, 스택 등의 영역을 포함.
  • 자원(메모리, 파일, 네트워크 등)을 독립적으로 관리.
  • 멀티 프로세싱을 활용하면 여러 프로세스를 병렬 실행 가능.

프로세스의 메모리 구조

영역 설명
코드(Code) 실행할 명령어 저장
데이터(Data) 전역 변수 및 정적 변수 저장
힙(Heap) 동적 할당된 메모리 공간
스택(Stack) 함수 호출 및 지역 변수 저장

프로세스 생성 방법

  1. 운영체제가 프로그램을 실행할 때 프로세스를 생성
  2. 부모 프로세스가 자식 프로세스를 생성 (예: fork() 시스템 호출)
  3. 사용자가 명령어를 입력하여 직접 실행

 

2. 스레드(Thread)란?

스레드는 프로세스 내에서 실행되는 작은 실행 단위로, 같은 프로세스 내에서 여러 개의 스레드가 실행될 수 있다. 스레드는 코드, 데이터, 힙을 공유하지만, 스택은 독립적으로 할당된다.

스레드의 특징

  • 한 프로세스 내에서 다수의 스레드가 실행 가능.
  • 메모리 공간(Code, Data, Heap)을 공유하여 빠른 데이터 교환이 가능.
  • 각 스레드는 독립적인 Stack을 가지며, 개별 실행 흐름을 가짐.
  • 멀티스레딩을 활용하면 하나의 프로세스에서 여러 작업을 동시에 수행 가능.

스레드의 메모리 구조

영역 공유 여부
코드(Code) 공유
데이터(Data) 공유
힙(Heap) 공유
스택(Stack) 개별 할당
 

3. 프로세스와 스레드의 차이

비교 항목 프로세스(Process) 스레드(Thread)
실행 단위 독립적인 프로그램 프로세스 내의 작업 단위
메모리 공유 독립적인 메모리 공간 사용 코드, 데이터, 힙을 공유, 스택만 독립적
실행 속도 상대적으로 느림 (문맥 교환 오버헤드) 상대적으로 빠름 (같은 주소 공간 활용)
통신 방식 IPC(Inter-Process Communication) 필요 같은 메모리 내에서 데이터 공유 가능
안정성 하나의 프로세스가 종료되어도 다른 프로세스 영향 없음 하나의 스레드가 오류 발생 시, 같은 프로세스의 다른 스레드도 영향을 받을 수 있음
 

4. 프로세스와 스레드의 활용

멀티프로세싱 (Multi-Processing)

  • 여러 개의 프로세스를 동시에 실행하는 방식.
  • CPU 코어가 많을수록 성능이 향상됨.
  • 예제: 웹 서버에서 여러 요청을 개별 프로세스로 처리.

멀티스레딩 (Multi-Threading)

  • 하나의 프로세스 내에서 여러 개의 스레드를 동시에 실행하는 방식.
  • 프로세스 간 전환보다 스레드 간 전환이 빠름.
  • 예제: 웹 브라우저에서 여러 탭을 동시에 로딩, 게임에서 여러 캐릭터 동시 제어.

 

5. 프로세스와 스레드의 장단점

구분 장점 단점
프로세스 안정성이 높음, 독립적인 실행 메모리 사용량이 많음, 프로세스 간 통신 비용이 높음
스레드 실행 속도가 빠름, 자원 공유로 메모리 효율적 사용 동기화 문제 발생 가능, 한 스레드 오류 시 전체 프로세스 영향을 받을 수 있음
 
  • 프로세스는 독립적인 실행 단위로, 서로 영향을 받지 않고 실행됨.
  • 스레드는 프로세스 내에서 실행되는 단위로, 빠르고 효율적이지만 하나의 스레드 오류가 전체 프로세스에 영향을 줄 수 있음.
  • 멀티프로세싱과 멀티스레딩은 각각 장점과 단점이 있으므로, 상황에 맞게 선택하여 사용해야 한다.
반응형

최근댓글

최근글

© Copyright 2024 ttutta