반응형
1. 싱글 스레드와 멀티 스레드의 차이점
싱글 스레드 프로그램은 실행 스레드가 하나만 있는 프로그램입니다. 즉, 프로그램은 한 번에 한 가지 작업만 수행할 수 있습니다. 반면에 멀티 스레드 프로그램은 실행 스레드가 여러 개 있습니다. 즉, 프로그램이 동시에 여러 가지 작업을 수행할 수 있습니다.
단일 스레드
- 단일 스레드 프로그램에는 실행 경로 또는 스레드가 하나만 있습니다. 프로그램의 명령은 선형적인 방식으로 순차적으로 하나씩 실행됩니다.
- 단일 스레드 프로그램은 여러 작업을 동시에 수행할 수 없습니다. 사용자 입력을 기다리거나 느린 I/O 장치에 액세스하는 등 차단 작업이 발생하면 작업이 완료될 때까지 전체 프로그램이 일시 중지됩니다.
- 단일 스레드 프로그램은 일반적으로 공유 데이터를 처리하기 위해 명시적인 동기화 메커니즘이 필요하지 않으므로 설계 및 구현이 더 간단합니다.
멀티 스레드
- 멀티 스레드 프로그램에는 여러 개의 동시 실행 경로 또는 스레드가 있으며, 각 스레드는 독립적으로 실행됩니다.
- 각 스레드는 프로그램 내에서 별도의 제어 흐름을 나타내므로 프로그램의 여러 부분을 동시에 실행할 수 있습니다.
- 멀티스레딩은 멀티코어 프로세서 또는 병렬 처리 기능을 활용하여 여러 스레드가 동시에 작업을 실행하는 병렬 처리를 가능하게 합니다.
- 멀티 스레드 프로그램 내의 스레드는 잠금, 세마포어, 조건 변수와 같은 동기화 기본 요소를 사용하여 통신하고 활동을 동기화할 수 있습니다.
- 멀티스레딩은 스레드 안전, 경쟁 조건, 동기화 문제와 같은 복잡성을 야기합니다. 공유 데이터에 액세스할 때 정확하고 일관된 동작을 보장하려면 적절한 동기화 메커니즘이 필요합니다.
기능 | 싱글 스레드 | 멀티 스레드 |
스레드 수 | 1 | 다중 |
동시 작업성 가능 여부 | 아니요 | 예 |
효율성 | 간단한 프로그램에서 효율적 | 복잡한 프로그램에서 더 효율적 |
복잡성 | 덜 복잡함 | 더 복잡함 |
동기화 | 필요 없음 | 경쟁 조건을 피하기 위해 필요 |
2. 결론
싱글 스레딩과 멀티 스레딩 중 어떤 것을 선택할지는 작업의 특성, 성능 요구 사항, 병렬 처리 활용 능력에 따라 달라집니다. 단일 스레딩은 동시 실행이 필요하지 않은 간단한 작업이나 시나리오에 적합하며, 멀티 스레딩은 병렬 처리가 가능하고 더 나은 성능이나 응답성이 필요한 작업에 유용합니다.
반응형
'공부 > OS' 카테고리의 다른 글
크리티컬 섹션(Critical Section)이란? (0) | 2023.06.10 |
---|---|
멀티 프로세스와 멀티 스레드의 차이점 (0) | 2023.06.05 |
락(Lock)과 스레드(Thread)의 차이점 (0) | 2023.06.05 |
싱글 스레드(single thread)란? (0) | 2023.06.05 |
뮤텍스(Mutex)와 세마포어(Semaphores)의 차이점 (0) | 2023.06.04 |