[WEB] Event Loop 00 | 프로세스와 스레드 |
📄 프로세스란?
프로세스는 운영체제 내에서 독립적으로 실행되고 있는 프로그램들입니다.
독립적으로 실행되기 때문에 문제가 생기면 문제가 생긴 프로세스만 다룰 수 있습니다.
▪ 프로세스의 구조
각각의 프로세스는 리소스(자원)이 정해져 있고 프로세스마다 할당된 메모리나 데이터들이 지정되어 있습니다.
- code
- stack: 코드내 함수등이 동작하고 있는 순서를 기억한다.
- heap: 동적인 데이터를 저장한다.
- data: 정적인 데이터를 저장한다.
📄 Thread(스레드)란?
스레드는 프로세스 내에서 실제로 작업을 수행하는 주체입니다.
스레드는 각각 저마다 해야 되는 업무를 배정받습니다.
한 프로세스 안에서 여러개의 Thread가 동작할 수 있습니다.
이것을 멀티스레드 프로세스(multi-threaded process)라고 한다.
스레드는 저마다 필요한 일을 수행하고, 수행해야하는 함수의 호출을 기억해야하기 때문에 쓰레드마다 스택이 할당되어 있습니다.
저마다 스택은 갖고 있지만, 한 프로그램을 위해 동작하므로 코드와 힙 데이터에 공통적으로 접근해서 공통적으로 업데이트가 가능합니다.
스레드는 일의 흐름을 기억하고있는 고유의 스택이 있지만, 코드 힙 데이터와 같은 공통적인 리소스는 프로세스에 있기 때문에 스레드들은 이 프로세스에 공통적으로 할당된 리소스에 동시다발적으로 접속해서 동시다발적으로 업데이트 해야해서 서로 공유하면 사용합니다.
출처
- 드림 코딩
Leave a comment