실행단위: CPU 코어에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념
프로세스: 하나의 스레드만 가지고 있는 단일 스레드 프로세스
동시성- 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것
프로세스가 실행될 때 발생하는 일
(1) 프로그램 (소스코드)들이 필요로 하는 정보들*이 메모리에 올라감
*code: 실행 명령을 포함하는 코드, Data: static/global 변수, Heap: 동적 메모리, Stack: 지역변수, 매개변수 등의 일시적 데이터
(2) 해당 프로세스에 대한 정보를 담고 있는 PCB(Process Control Block) 블럭이 프로세스의 생성과 동시에 만들어짐
쓰레드: 경량화된 프로세스
- 하나의 프로세스에 다수의 쓰레드가 있는 경우, 쓰레드들 간에는 부모 프로세스를 통해 공유되는 자원들이 있다. 즉, 코드, 데이터, 힙 영역을 공통된 자원으로 사용을 하며, 스택만 별로로 가지게 된.
멀티 프로세스와 멀티 스레드의 차이점
(1) 멀티 프로세스: 여러 프로그램들이 동시에 실행이 되는 것
- 각 프로세스들은 독립적
- IPC를 사용한 통신
- 자원 소모적, 개별 메모리 차지
- Context Switching 비용이 큼
- 동기화 작업이 필요하지 않음
(2) 멀티 쓰레드: 한 프로세스 내에서 여러 개의 쓰레드가 나뉘어져 실행을 하는 것
- 쓰레드 간 공유된 자원으로 통신 비용 절감 및 효과적으로 메모리 활용
- Context Switching 비용이 적음
- 공유 자원을 관리해야 함
댓글