프로세스는 운영 체제로부터 자원을 할당받아 동작하는 작업의 단위이고
스레드는 할당 받은 자원을 이용하는 실행의 단위이고 프로세스 내에서 최소 하나 혹은 그 이상이 될 수 있다.
어플리케이션 하나가 프로세스이고, 그 안에서 발생하는 동작의 단위가 스레드이다.
multi process와 multi thread
멀티 프로세스는 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(Task)을 실행하게 된다.
- 장점 : 하나의 프로세스에 문제가 생기더라도 다른 프로세스에 영향을 끼치지 않는다.
- 단점 : 프로세스마다 독립된 메모리 영역을 할당받아 상호 공유하는 메모리 공간이 없어 (캐시 메모리 초기화 등) 무거운 작업의 context switching이 발생한다.
*context switching: 동작 중인 프로세스가 중지하면서 해당 프로세스의 상태를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관하고 있던 프로세스의 상태를 복구하는 작업.
멀티 스레드는 프로그램을 여러 개의 스레드로 분할하여 각자의 스레드가 작업을 처리하는 것이다.
- 장점 : 프로세스보다 작업량이 작아 처리 비용(context switching) 감소로 실행 속도 향상, Stack 영역을 제외한 스레드 간 자원 공유, 시스템 자원 소모 적음
- 단점 : 멀티 스레드 환경에서 동기화 이슈가 발생할 가능성이 있고, 특정 스레드의 오류로 인해 같은 프로세스 내의 모든 스레드의 동작에 문제를 발생시킬 여지가 있다. 추가적으로 디버깅도 힘들다.
thread safe
thread safe는 말 그대로 여러 스레드가 동시에 사용되어도 안전하다는 것을 의미한다.
특정 함수를 통해 변수가 여러 스레드에서 호출되더라도 하나의 스레드에서 호출한 것과 같은 결과가 보장되어야 한다는 의미를 가진다.
하지만 함수가 전역 변수를 참조한다면 그 함수는 thread safe 하지 않은 결과가 나올 수 있다.
thread safe 하도록 만들어줄 수 있는 방법은 mutex, synchronized, semaphore가 있다.
'CS' 카테고리의 다른 글
객체 지향 프로그래밍 (0) | 2022.05.26 |
---|---|
Garbage Collection (0) | 2022.05.25 |
소프트웨어 개발방법론 (0) | 2022.01.20 |
임계 영역 동시접근 해결 방안 (0) | 2021.12.21 |
임계 구역과 경쟁 상태 (0) | 2021.12.21 |