[WEB] Event Loop 00 프로세스와 스레드

📄 프로세스란?

프로세스

프로세스는 운영체제 내에서 독립적으로 실행되고 있는 프로그램들입니다.

독립적으로 실행되기 때문에 문제가 생기면 문제가 생긴 프로세스만 다룰 수 있습니다.

▪ 프로세스의 구조

각각의 프로세스는 리소스(자원)이 정해져 있고 프로세스마다 할당된 메모리나 데이터들이 지정되어 있습니다.

  1. code
  2. stack: 코드내 함수등이 동작하고 있는 순서를 기억한다.
  3. heap: 동적인 데이터를 저장한다.
  4. data: 정적인 데이터를 저장한다.

📄 Thread(스레드)란?

스레드는 프로세스 내에서 실제로 작업을 수행하는 주체입니다.

스레드는 각각 저마다 해야 되는 업무를 배정받습니다.

한 프로세스 안에서 여러개의 Thread가 동작할 수 있습니다.

이것을 멀티스레드 프로세스(multi-threaded process)라고 한다.

스레드는 저마다 필요한 일을 수행하고, 수행해야하는 함수의 호출을 기억해야하기 때문에 쓰레드마다 스택이 할당되어 있습니다.

저마다 스택은 갖고 있지만, 한 프로그램을 위해 동작하므로 코드와 힙 데이터에 공통적으로 접근해서 공통적으로 업데이트가 가능합니다.

스레드는 일의 흐름을 기억하고있는 고유의 스택이 있지만, 코드 힙 데이터와 같은 공통적인 리소스는 프로세스에 있기 때문에 스레드들은 이 프로세스에 공통적으로 할당된 리소스에 동시다발적으로 접속해서 동시다발적으로 업데이트 해야해서 서로 공유하면 사용합니다.

출처

  • 드림 코딩

Leave a comment