본문 바로가기

Web/Frontend 기본 CS 정리

프로세스와 스레드에 대해 설명해주세요

728x90

답변

프로세스와 스레드는 컴퓨터 프로그램이 실행되는 단위를 의미합니다.

먼저 프로세스는 프로그램이 실행되면서 메모리에 올라가고 해당 프로그램을 읽을 수 있는 CPU가 할당된 상태의 프로그램을 의미합니다.

스레드는 프로세스 내에서 실행되는 작업 단위를 의미합니다.

프로세스는 최소 1개의 스레드를 가지며, 여러 스레드가 병렬로 작업을 처리할 수 있습니다.

프로세스

  • 정의:프로그램이 실행되면 메모리에서 별도의 공간을 할당받아 하나의 프로세스로 동작
  • 프로세스는 운영체제에서 실행 중인 프로그램의 독립된 작업 단위
  • 특징:
    1. 독립된 메모리 공간: 프로세스는 자신만의 메모리 공간(코드, 데이터, 스택 등)을 가지고 다른 프로세스와 메모리를 공유하지 않음
    2. 무겁고 독립적: 하나의 프로세스가 종료되더라도 다른 프로세스에는 영향을 주지 않음
    3. 통신 방식 필요: 다른 프로세스와 데이터를 주고받기 위해서는 IPC(Inter-Process Communication) 같은 특별한 통신 방법이 필요
  • 예시: 웹 브라우저, 텍스트 에디터, 음악 재생 앱은 각각 별도의 프로세스로 실행

2. 스레드

  • 정의:프로세스가 최소 1개의 스레드를 가지며, 여러 스레드를 생성해 병렬로 작업을 처리할 수 있음
  • 스레드는 프로세스 내에서 실행되는 작은 작업 단위
  • 특징:
    1. 메모리 공유: 같은 프로세스 내의 스레드들은 메모리 공간(힙, 데이터)을 공유하여 데이터를 빠르게 주고받을 수 있음
    2. 가볍고 효율적: 스레드는 생성 및 종료가 빠르고 비용이 적음
    3. 안전 관리 필요: 여러 스레드가 동시에 메모리를 접근할 수 있기 때문에 동기화데드락(교착 상태) 같은 문제를 주의해야 함
  • 예시: 웹 브라우저의 여러 탭은 각각 하나의 스레드로 실행될 수 있고, 이미지 로딩과 렌더링도 다른 스레드에서 처리됨

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

특징 프로세스 스레드

메모리 구조 독립된 메모리 공간 사용 프로세스 내에서 메모리 공간 공유
작업 단위 실행 중인 프로그램의 독립적 단위 프로세스 내의 작업 단위
속도 생성/종료가 상대적으로 느림 생성/종료가 빠르고 효율적
데이터 공유 별도의 통신 방식 필요 (IPC 등) 메모리 공간 공유로 빠르게 가능
안전성 하나의 프로세스가 문제를 일으켜도 독립 한 스레드의 오류가 프로세스 전체에 영향

프로세스 메모리 구조

영역 내용 및 역할 크기 관리 생명주기

코드 실행할 프로그램의 명령어 저장 고정적 프로세스 종료 시 해제
데이터 전역/정적 변수 저장 고정적 프로세스 종료 시 해제
동적으로 할당한 데이터 저장 유동적 명시적으로 해제해야 함
스택 함수 호출, 지역 변수, 실행 컨텍스트 저장 유동적 함수 호출 종료 시 해제