[면접 질문] Process와 Thread의 차이, Multi Thread

TraceofLight·2023년 5월 29일
0

InterviewStudy

목록 보기
3/11
post-thumbnail

아직 작성 중인 글입니다!
23. 05. 30. 작성 완료 → 23. 06. 09. 내용 추가

Program

컴퓨터가 특정 작업을 수행하기 위해 작성된 실행 가능한 일련의 명령어 모음

다양한 방식으로 정의되어 있지만 전반적으로 읽어봤을 때 이렇게 이해하기로 했다! 프로그램에 대한 정의를 먼저 확인한 이유는 프로세스의 정의가 좀 더 좁은 범위의 프로그램이기 때문이다.

Process

  • '실행 중인' 프로그램의 '인스턴스' (Task와 거의 비슷한 의미로 사용)
  • 메모리 상에서 실행되는 운영체제 기준의 작업 단위
  • 생성에 많은 시간과 자원을 소비함 (오버헤드가 크다)

프로그램 자체가 아닌 프로그램의 인스턴스로 여러 개가 동시에 존재하는 것이 가능하다는 것이 특징적인 부분이라고 생각한다.

Thread

  • 프로세스 내 작업을 수행하는 CPU 기준의 실행 단위
  • 모든 프로세서는 1개 이상의 스레드가 존재
  • 스레드는 각각의 레지스터와 스택을 보유
  • 힙 메모리 공간은 공유

그래서 둘의 차이는?

프로세스가 좀 더 큰 범주의 단위라고 볼 수 있음

하지만 단순하게 여기까지만 말하는 거라면 굉장히 포괄적인 답변이라고 생각할 수 있을 거 같아서 잘 정리된 글들을 참고해서 추가적인 정리를 해보았다!

작동 방식

1. Process의 경우

  • 프로세스가 실행 시 별도의 메모리 영역을 운영 체제로부터 할당
  • 메모리 영역은 Code/Data/Stack/Heap의 형식을 가짐
  • 다른 프로세스의 메모리 영역에 접근할 수 없음

2. Thread의 경우

  • Process의 Stack 영역은 분할하여 고유 영역을 보유
  • 나머지 Code, Data, Heap 영역은 공유
  • 프로세스의 오류가 다른 프로세스의 영역으로 번지지 않음
  • But 하나의 스레드가 오류 발생하는 경우 전체 스레드 종료
    → 메모리 영역을 공유하는 부분이 존재하기 때문

정리

Process와 Thread의 차이점이란?

  • 프로세스는 동적으로 사용 중인 프로그램, 스레드는 일종의 작업 실행 단위로 개념 자체가 다름
  • 프로세스는 최소 1개 이상의 스레드를 포함
  • 프로세스끼리는 메모리 공간을 일반적으로 공유하지 않으나 스레드는 공유
  • 각각의 오류 발생 시 프로세스는 혼자만 다운, 스레드는 동일 프로세스 내 전체 다운

+ Multi-Thread에 대하여

하나의 프로세스 내에서 여러 개의 스레드가 동시에 작업을 수행하는 것

문맥 교환 (Context Switching)

기본적으로 동시에 처리할 수 있는 최대 작업 수는 Core의 수만큼
Core의 수보다 많은 스레드가 실행되는 경우 각 코어가 여러 작업을 번갈아가면서 수행
스레드가 교체될 때 현재까지의 작업 상태나 다음 작업에 필요한 데이터를 저장하고 읽어오는 작업

멀티 스레드와 프로세스의 장단점

1) 멀티 스레드의 장점
  • 프로세스 생성 및 자원 할당을 위한 시스템 콜이 졸어 자원의 효율적 관리가 가능.
  • 한 프로세스 내의 Stack을 제외한 메모리 공간을 공유하므로 스레드 간 데이터 주고 받는 처리 비용이 적음.
  • 스레드 간의 통신 방법이 복잡하지 않아 프로그램 응답 시간을 단축할 수 있음.
2) 멀티 스레드의 단점
  • 디버깅의 어려움 및 설계 난이도의 상승
  • 다른 프로세스에서 스레드 제어 불가능
  • 메모리 공유로 인한 동기화 문제 (동시에 같은 자원에 접근)
  • 스레드의 문제 발생 시 전체 프로세스에 영향
3) 멀티 프로세스의 장점
  • 프로세스에 문제 발생 시 해당 프로세스 외부로 영향이 확산되지 않음
4) 멀티 프로세스의 단점
  • 문맥 교환에서의 오버헤드가 큼
  • 프로세스 간 통신은 스레드 간 통신보다 어렵고 복잡한 편

참고

위키백과의 프로세스와 스레드 항목
프로세스와 스레드의 차이 by raejoonee
프로세스와 스레드의 차이 by heejeong Kwon

profile
24시간은 부족한 게 맞다

0개의 댓글