프로세스(Process)
프로세스란 실행중인 프로그램을 의미한다.
여기서 프로그램과 프로세스의 차이는 프로그램은 자체적으로 실행될 수 없고 생명이 없다.
프로그램은 보조 기억장치(하드디스크, SSD)에 존재하며 실행되기를 기다리는 명령어(프로그래밍 코드)와
데이터의 묶음이다. 이러한 명령어와 데이터가 메모리에 적재되고 실행되면 생명이 있는 프로세스가 된다.
프로세서(Prosessor)
프로세서 또는 CPU(중앙처리장치)는 제어장치, 연산장치, 레지스터 그리고 데이터 버스로 구성된
디지털 시스템의 핵심 부분으로 프로그램을 기억 장치로부터 읽어 연산처리, 비교처리, 데이터 전송, 편집, 변환,
테스트와 분기 등의 데이터를 처리하고 각종 장치를 구동하는 역할을 한다. 사람의 비교하면 뇌에 해당한다.
코어(Core)
코어란 각종 연산을 하는 CPU의 핵심 요소이다. 예를 들어 100개의 일을 처리해야 하는데 코어가 싱글 코어이면
혼자서 100개의 일을 처리한다. 엄청 오래 걸릴것이다. 하지만 코어가 2개인 A 와 B가 존재하면 둘이서 처리하기 때문에
싱글 코어보단 듀얼코어가 훨씬 처리속도가 빠를것이다.
쓰레드(Thread)
쓰레드란 프로세스에서 프로그램 실행의 단위이다. 하나의 프로세스에는 적어도 한개의 쓰레드가 존재하며, 여러개의
쓰레드로 구성이 가능하다. 하나의 프로세스를 구성하는 쓰레드들은 해당 프로세스에 할당된 메모리, 자원을 공유한다.
프로세스와 같이 실행, 준비, 대기 등의 실행 상태가 존재하며, 실행 상태가 변할때마다 쓰레드 문맥교환을 수행한다.
* 프로세스와 쓰레드의 차이
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이며
쓰레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.
멀티쓰레드
하나의 프로세스에서 둘 이상의 쓰레드가 동시에 작업을 수행하는것을 의미한다.
프로세스가 할당받은 메모리와 자원 등을 실행단위인 여러개의 쓰레드가 함께 공유한다.
여러 프로세스로 해야 할 작업을 하나의 프로세스에서 여러개의 쓰레드로 작업을 수행하기 때문에 시스템 처리량이
향상되고 자원 소모가 줄어 든다.
장점
- 여러 프로세스를 이용하여 동시에 처리하던 일을 하나의 프로세스의 여러 쓰레드로 작업을 처리할 경우
메모리 공간과 시스템 자원 소모가 줄어들어 응답 시간이 단축된다.
- 쓰레드간 데이터 공유는 스택 영역만 비공유 하고 데이터 영역과 힙 영역을 공유한다.
* 스택 영역
메모리의 스택(Stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이다.
스택 영역은 함수의 호출과 함께 할당되며, 함수가 종료되면 소멸한다.
스택 영역은 Push 동작으로 데이터를 저장하고, Pop 동작으로 데이터를 인출한다.
후입선출 방식으로 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출된다.
* 데이터 영역
메모리의 데이터 영역은 프로그램의 전역 변수와 정적(Static) 변수가 저장되는 영역입니다.
데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다.
* 힙 영역
프로그래머가 직접 공간을 할당, 해제하는 메모리 공간이다.
힙 영역에서는 malloc() 또는 new 연산자를 통해 메모리를 할당하고, free() 또는 delete() 연산자를 통해 메모리를 해제한다.