<키워드>
- 실행 단위 - cpu core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념
2.(부연 설명이 없는)프로세스 - 하나의 스레드만 가지고 있는 단일 스레드 프로세스
3.동시성 - 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것
순서
Process & Thread
Multi-process vs.Multi-thread
Multi-core
요약.
process = 실행을 위한 것 ex)레시피
프로그램이 프로세스가 되면 총 두가지 일이 일어나게된다.
- 프로세스가 필요로 하는 재료들이 메모리에 올라갸아한다.

- code(실행 명령응 포함하는 코드들)
- Data(Static 변수 혹은 Global 변수)
- Heap(동적 메모리 영역)
- Stack(지역변수, 매개변수, 반환 값 등 일시적인 데이터
- PCB Control Block이 생성된다
- Pointer
- Process State
- Program Counter
- Registers
- Memory limits
- List of open files
- ...등등
프로세스 실행과정
컨테스트 스위칭: PCB_1 PCB_2 두개는 번갈아가면서 실행과 준비를 반복한다
Thread = 경량화 된 프로세스
앞서 얘기한 code, Data, Heap, Stack이 공유된 자원으로 있다
Multi-process & Multi-thread
개념 : 처리방식의 일종
Multi-process
- 한번에 하나씩 밖에 처리하지못한다 그래서 부모 프로세스가 fork()를 해서 자식 프로세스를 여러개만들어 처리하도록 한다
- 각 프로세스는 독립적이기 때문에 IPC를 통해서 통신을 해야한다,
- 자원 소모적, 개별 메모리 차지
- Context Switching. 비용이 큼
- 동기화 작업이 필요하지 않음
Multi-thread
- 스레드는 한 프로세스 내에서 구분지어진 실행단위
- Thread끼리 긴밀하게 연결되어 있음
- 공유된 자원으로 통신 비용 절감
- 공유된 자원으로 메모리가 효율적임
- Context Switching 비용이 적음
- 공유 자원 관리를 해야함
Multi-core
<키워드>
- 동시성
- 병렬 처리
멀티코어는 하드웨어 측면에 가깝다
물리적으로 여러 코어를 사용 해서 다수의 실행 단위를 한순간에 동시 처리할 수 있게 해준다.