CS
[CS] Process, Thread
pearhyunjin
2024. 1. 15. 19:53
Process
운영체제로부터 자원을 할당받는 작업의 단위. 즉, 메모리 상에서 실행중인 프로그램
최소 하나의 스레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당 받는다.
Thread
할당 받은 자원을 이용하는 실행의 단위. 즉, 프로세스 안에서 실행되는 흐름 단위
프로세스 내에 여러개 생길 수 있으며 각 스레드는 stack 주소 영역만 따로 할당받고 나머지 영역은 스레드끼리 공유한다.
ex) 애플리케이션 -> 프로세스, 애플리케이션 속의 분기 처리 -> 스레드
프로세스는 생성할 때 많은 시간이 소요되기 때문에 생성시 오버헤드가 발생할 수 있고 프로세스 컨텍스트 스위칭이 비효율적이며 프로세스 사이의 통신이 어렵다. 이때문에 프로세스 크기 보다 작은 실행 단위가 필요했고, 빠른 컨텍스트 스위칭을 통해 프로세스들의 통신 시간과 방법의 어려움을 해소하기 위해 스레드가 나왔다.
- Multi Process
하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 것
- 장점 : 프로세스 하나가 잘못되어도 프로그램은 동작 할 수 있음
- 단점 : context switching 비용 발생 - Multi Thread
프로그램을 여러개의 스레드로 구성하고 각 스레드가 작업을 처리하는 것
- 장점 : 시스템 자원 소모 감소, 실행 속도 향상으로 인한 처리 비용 감소, 스레드간 자원 공유(stack 제외)
- 단점 : 디버깅 어려움, 동기화 이슈 발생, 하나의 쓰레드의 오류로 전체 프로세스에 문제 발생할 수 있음 - Thread Safe
여러 쓰레드가 동시에 사용되어도 안전할 수 있도록 하는것
함수나 변수 등이 여러 스레드에서 호출되어도 하나의 스레드에서 호출했을 때와 같은 결과가 보장되어야 함
(함수가 전역 변수를 참조한다면 그 함수는 thread safe 하지 않은 결과가 나올 수 있음)
* Thread 영역 (주소 공간)
하나의 스레드가 동작하기 위해서는 사적공간인 스레드 코드 공간 / 스레드 전용 전역 변수 공간 / 스택 공간,
공적공간인 데이터 공간 / 힙 공간 그리고 커널 스택 이렇게 총 6가지가 필요하다.
* Context Switching
CPU에서 여러 프로세스를 돌아가면서 작업 처리하는 과정
동작중인 프로세스가 대기를 하면서 해당 프로세스의 상태를 보관,대기하다 재실행시 복구하는 비용(시간)