프로세스와 스레드

코딩덕·2023년 5월 2일

면접왕

목록 보기
5/13

프로세스

컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램



스레드

어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위

  • 싱글 스레드 : 하나의 스레드만 가지고 있는 프로세스

  • 멀티 스레드 : 여러 개의 스레드로 구성되어있는 프로세스

  • 동시성 : 프로그램이 동시에 작업을 진행할 수 있어, 프로그램의 성능이 크게 향상
  • 응답성 : 메인 스레드가 사용자 상호작용에 집중, 다른 스레드가 백그라운드 작업을 처리
  • 자원공유 : 여러 작업을 진행해도 메모리 데이터를 공유함으로 효율적으로 작업 진행

스레드는 프로세스와 달리, 다른 스레드와 자원공유가 가능하다.

그러나 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐 스레드로 이루어져 있는 프로세스에 영향을 줄 수 있는 단점이 있다(동기화 문제)

예시로, Chrome 탭 하나하나는 스레드가 아닌 프로세스로 이루어져 있다!



프로세스 vs 스레드


항목프로세스스레드
정의실행 중인 프로그램의 단위프로세스 내에서 독립적인 실행 흐름을 가지는 작업
자원 공유불가 (독립된 메모리 공간 사용)가능
장점프로세스 간 충돌 방지, 안정성 보장자원 공유를 통한 효율적인 자원 사용, 병렬 처리 가능
예시메모장, 웹 브라우저메모장에서 글 작성 스레드, 저장 작업 스레드

➕ 컨텍스트 스위칭

실행 중이던 프로세스/스레드의 작업상태를 저장 및 중단하고, 다른 프로세스/스레드로 전환하는 과정

➕ 오버헤드 스레드

멀티스레드를 사용할 때, 단순히 작업을 여러 개로 나눈다고 해서 성능이 무조건 좋아지는 것은 아니다.
여러 스레드를 만들고, 실행하고, 종료하는 과정에서 다양한 오버헤드가 발생하기 때문이다.

따라서 요구사항에 맞춰 적당한 스레드를 만들고 관리하는것이 중요하다.

0개의 댓글