프로세스(process)란?
"운영체제로부터 시스템 자원을 할당받는 작업의 단위"
프로세스 간 통신(IPC, Inter-Process Communication)이 필요한 경우 운영체제가 제공하는 메커니즘을 사용하여 통신합니다. 각 프로세스는 다른 프로세스의 데이터나 상태에 직접적으로 접근할 수 없으며, 운영체제를 통해서만 접근할 수 있습니다.
스레드(thread)란?
"프로세스 안에서 실행되는 여러 흐름 단위"
프로세스의 자원을 공유하면서 실행되므로, 각 스레드는 독립적인 실행 흐름을 가지지만, 해당 프로세스 내에서는 공유되는 메모리 영역을 통해 서로 통신할 수 있습니다. 이러한 특징 때문에, 스레드는 프로세스보다 가볍고 빠르게 생성되며, 자원의 효율적인 사용이 가능합니다. 그러나, 각 스레드는 서로의 작업에 영향을 미칠 수 있으므로, 스레드 간의 동기화에 대한 고려가 필요합니다.
멀티 프로세스란?
"하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것"
💯 장점
여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽는 것 이상으로 다른 영향이 확산되지 않는다.
💔 단점
1. Context Switching 과정에서 캐쉬 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 등의 오버헤드가 발생한다.
2. 프로세스 사이의 어렵고 복잡한 통신 기법을 사용한다.
🚩 Context Switching이란?
CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는데 동작 중인 프로세스가 대기를 하면서 해당 프로세스 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업을 말한다.
멀티 스레드란?
"하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것"
💯 장점
공유된 메모리 영역은 다른 스레드에서 접근이 가능하므로, 스레드 간의 데이터 공유가 쉽다.
💔 단점
1. 하나의 스레드에서 예외가 발생하면 전체 프로세스가 영향을 받을 수 있어 안정성 문제가 발생할 가능성이 높다.
2. 스레드 간의 경합 조건과 교착 상태(deadlock)와 같은 문제가 발생할 수 있다.
References
'CS' 카테고리의 다른 글
인터럽트(Interrupt) (0) | 2023.04.06 |
---|---|
프로세스 주소 공간 (0) | 2023.04.06 |
마이크로서비스 아키텍처(MSA) (0) | 2023.04.05 |
[CS] 패리티 비트 & 해밍 코드 (0) | 2023.03.25 |
[CS] 고정 소수점 & 부동 소수점 (0) | 2023.03.25 |