몽탁이의 개발일기
프로세스와 쓰레드 본문
프로세스란?
- 컴퓨터 위에서 연속적으로 실행되고 있는 프로그램
혹은 운영체제위에서 독립적으로 메모리에서 실행되는 프로그램이라고 합니다.
즉, 컴퓨터에서 실행되는 프로그램의 단위라고 할 수 있습니다.
그리고 프로세스 안에는 리소스(자원)들이 정해져 있습니다.
프로세스는 다음 그림과 같이 구성되어있습니다.
위 그림의 자원들은 각자만의 역할이 있습니다.
code - 프로세스 안에 작성된 코드 저장
stack - 함수들이 어떤 순서로 실행되어야 하는지와 이 함수가 실행이 끝나면 어디로 다시 돌아가야 되는지에 대한 정보
heap - 오브젝트를 생성하거나 데이터를 생성할 때 저장되는 공간(동적으로 할당되는 변수들)
data - 전역 변수와 static 변수를 저장
이러한 역할들을 가지고 있습니다.
쓰레드란?
- 하나의 프로세스 안에서 여러 가지 동작을 한 번에 할 수 있도록 만들어주는 역할을 합니다.
그렇기 때문에 각각의 쓰레드마다 해야 되는 업무를 배정받고
자기들만의 수행해야 하는 함수의 호출을 기억해야 되기 때문에 쓰레드 안에는 스택이 할당이 됩니다.
그림으로 구조를 나타내 보면은
위와 같은 구조로 나타낼 수 있습니다.
하나의 프로세스가 여러 개의 쓰레드를 가지게 되면
여러 가지 일을 병렬적으로 처리하여 효율적으로 메모리를 사용할 수 있게 됩니다.
그리고 각각의 쓰레드는 해당 프로세스 안에 있는
code, heap, data 들을 공통적으로 접근하여 공통적인 업데이트가 가능합니다.
결론)
프로세스는 컴퓨터에서 실행되는 프로그램이며 메모리상에서 실행되는 작업 단위입니다.
쓰레드는 프로세스가 실행된 후 행동하는 작업의 단위이며
여러 가지 일을 한 번에 처리할 수 있도록 도와주는 역할을 합니다.
그렇기 때문에 쓰레드는 일꾼이라고 불리고 합니다.
'공통' 카테고리의 다른 글
인터넷은 어떻게 작동하는가? (0) | 2020.08.27 |
---|---|
라이브러리란 ? (0) | 2020.06.25 |
API와 UI (0) | 2020.06.25 |
모듈이란? (0) | 2020.06.25 |