프로세스 (Process)
- 컴퓨터가 어떤 일을 하고있는 상태
- 프로그램 실행
- 컴퓨터의 자원을 분할해서 사용
- 동시성(Concurrency)
- 하나의 코어에서 하나 이상의 프로세스를 돌아가면서 일부분씩 처리
- 시분할로 cpu 점유 (Context Switching)
- 겁나빨라서 동시에 진행되는 것 같음
- 병렬성(Parallelism)
스레드(Thread)
- 경량화된 프로세스
- 한 프로세스 내에 나눠진 하나 이상의 실행 단위
- 프로세스 내에서 실제로 작업을 수행하는 주체를 의미
- 한 갈래의 프로세스 안에도 여러 작업이 동시에 진행될 필요가 있는데 그 갈래 하나하나를 뜻
- 한 어플리케이션에 대한 작업의 단위가 나눠지고 각 작업을 담당
- 프로세스에 주어진 자원을 함께 사용
- Thread Scheduling
- 우선순위(Priority) 방식
- 우선순위가 높은 스레드가 더 많은 실행상태를 가지도록
- 순환 할당(Round-Robin) 방식
- 시간 할당량( Time Slice )을 정해 하나의 스레드를 정해진 시간만큼 실행
- 기본 메커니즘은 Queue 구조
- 동기화(Synchronization)
- 메모리에 동시에 접근하지 못하도록 순서를 맞추는 것 - 오류 방지
- 두 개 이상의 스레드가 동시에 실행되면 같은 메모리공간(리소스)에 접근하기 때문에 변수 값이나 메모리 상태에 오류가 생길 수 있음