[JS] 프로세스와 쓰레드

dk.han·2022년 10월 10일
0
post-thumbnail

프로세스란?

컴퓨터(운영체제) 위에서 독립적, 연속적으로 메모리에서 실행되고 있는 프로그램을 말한다. 예를 들어 영상편집 프로그램, 음악 재생 프로그램 같은 것들이 여기에 속하고, 각각의 프로세스들은 할당된 메모리, 데이터들과 같은 리소스 자원들이 정해져 있다.
프로세스에는 총 4개의 영역이 존재한다.

  • Code 영역
    프로그램을 실행하기 위해 작성된 코드가 담겨있는 영역.
  • Stack 영역
    프로세스 안에서 함수들이 어떤 순서로 실행되어야 하는지, 그리고 함수가 종료되면 어디로 돌아가야 하는지 등의 프로세스 동작 순서에 대한 정보를 저장하고 있는 영역.
  • Heap 영역
    오브젝트를 생성하거나 데이터를 만들때 그 데이터들이 저장되는 공간
  • Data 영역
    전역 변수나 스태틱 변수들이 할당 되어지는 영역.

쓰레드란?

쓰레드는 프로세스 안에서 각각 저마다 해야 하는 업무를 배정받아 동작하며, 마치 일꾼과 같은 역할로 하나의 프로세스 안에서 여러 개의 쓰레드가 동작할 수 있다.

  • 쓰레드는 자기들만의 수행해야 하는 동작, 즉 함수의 호출을 기억해야 하기 때문에 쓰레드마다 stack이 할당돼 있다.
  • 쓰레드는 프로세스를 위해 일해야 하기 때문에 프로세스에 공통적으로 할당된 리소스인 Code, Data, Heap 영역을 공유해서 사용하며 동시다발적으로 업데이트가 가능하다.
  • 멀티쓰레드 같은 경우, 동시다발적으로 동작하기 때문에 프로세스가 더 효율적으로 일할 수 있도록 도움을 준다. 하지만 리소스에 업데이트도 동시다발적으로 이루어지기 때문에 순서가 맞지 않는 등의 트러블이 발생하기 때문에 멀티쓰레딩 프로그래밍이 쉽지 않다.

요약!

프로세스는 프로그래밍을 동작하는 최고의 단위.
쓰레드는 프로그램 안에서 동시에 여러 개가 동작할 수 있는 작은 일꾼 단위.

Reference

프론트엔드 필수 브라우저 101

0개의 댓글