Process vs Thread

minisoo·2023년 11월 19일
0
post-thumbnail

프로세스

프로그램을 메모리 상에서 실행중인 작업

  • Code: 코드 자체를 구성하는 메모리 영역
  • Data: 전역변수, 정젹변수, 배열 등
  • Heap: 생성자, 인스턴스와 같은 동적으로 할당시 사용
  • Stack: 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)
  • 프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는데 반해, 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용하는 차이가 존재

스레드

프로세스 안에서 실행되는 여러 흐름 단위, 프로세스가 할당받은 자원을 이용!

  • 스레드는 Stack만 따로 할당받고 나머지 영역은 서로 공유
  • Stack을 따로 가짐으로써 스레드는 독립적인 실행 흐름을 가질 수 있다

멀티 프로세스

하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것

장점

  • 안정성
    - 각 프로세스가 독립적인 메모리 공간을 가지므로, 한 프로세스가 비정상적으로 종료되어도 다른 프로세스에 영향을 주지 않는다

단점

  • context switching overhead
    - 프로세스의 상태 정보를 저장하고 복원하는 과정인데, 빈번한 context switching 작업으로 오버헤드(어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등)가 발생할 수 있다
  • 자원 공유 비효율성
    - 독립적인 메모리 공간을 가지므로, 메모리 사용량이 증가하게 된다

멀티 스레드

하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것

장점

  • 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소 전역 변수와 정적 변수에 대한 자료 공유 가능

단점

  • 안정성
    - 하나의 스레드에서 문제가 발생하면 다른 스레드들도 영향을 받아 전체 프로그램이 종료될 수 있다
  • 동기화문제
    - 공유 자원에 동시 접근이 가능하기 때문에 스레드 간 동기화는 데이터 접근을 제어하기 위해 필수적이다
  • 데드락
    - 멀티 프로세스와 스레드의 공통된 문제점으로, 특정 자원에 대한 동시 엑세스로 인해 무한정 대기가 발생할 수 있다

크롬 탭은 멀티 프로세스, 스레드?

  • 각 탭을 별도의 프로세스로 처리
  • 하나의 탭이 다운되거나 문제가 발생해도 다른 탭이 영향을 받지 않는다

[참고자료]

멀티프로세스/스레드란
멀티프로세스/스레드의 장,단점
크롬

profile
코딩하는 돌멩이 👻

0개의 댓글