- 실행 중인 프로그램
- 생성 상태
- 준비상태
- 대기상태
- blocking I/O : 다음 입출력이 완료될 때 까지 프로세스 중지 후 대기
- non-blocking I/O : 입출력 대기 중에도 비동기로 프로그램 실행
- 디스패치 :
- 생성 -> 준비 관리
- 실행되어야 할 Thread가 queue에 나열되어 있음
- dispatcher가 순차적으로 준비 상태로 넘긴다.
-
프로세스 내에서 실행되는 여러 흐름의 단위
-
프로세스 내에서 Stack만 따로 할당 받고 Program Code, Data, Heap 영역은 공유
-
Process에는 최소 1개의 Thread가 존재한다
-
Thread 에서 연산이 수행된다
-
Process에 속한 모든 Thread는 Process의 메모리 공간을 나누어 차지한다.(스레드는 해당 프로세스의 메모리 바깥으로 나갈 수 없다)
- process pointer, status ...
- PID(process id) : 프로세스의 구분자 값
- 각 스레드는 cpu 자원을 시간에 따라 분할하여 사용
- 현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정
- 모든 프로세스가 각각의 메모리 공간을 차지한다.
- IPC를 이용해 통신한다.
- Context switching 비용이 크다
- 다른 프로세스의 영향을 덜 받는다.
- 스레드 간 메모리를 공유한다.
- 스레드 간 보다 긴밀하게 연결되어 있다.
- Context switching 비용이 적다.
- 공유 자원 관리를 해야 한다. (동시성 문제, 동기화 작업)