1. 스레드(Thread)란?
어떤 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말하며, CPU 사용하는 기본 단위를 뜻한다.
일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드라고 한다.
2. 멀티 스레드(multi thread)
일반적으로 하나의 프로세스는 하나의 스레드를 가지고 작업을 수행하지만 멀티 스레드는 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미한다. 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유하므로, 시스템 자원의 낭비가 적다. 또한, 하나의 스레드가 작업을 할 때 다른 스레드가 별도의 작업을 할 수 있어 사용자와의 응답성도 좋아진다.
동시성(Concurrency) | 병렬성(Parallelism) |
동시에 실행되는 것 같이 보이는 것 | 실제로 동시에 여러 작업이 처리되는 것 |
싱글 코어에서 멀티 스레드를 동작 시키는 방식 | 멀티 코어에서 멀티 스레드를 동작 시키는 방식 |
한 번에 많은 것을 처리 | 한 번에 많은 일을 처리 |
논리적인 개념 | 물리적인 개념 |
2-1 동시성(Concurrency)
싱글 코어에서 멀티 스레드를 동작시키기 위한 방식으로 멀티 태스킹을 위해 여러 개의 스레드가 번갈아가면서 실행되는 성질을 말한다. 실제 코어는 하나이지만 하나의 코어가 여러 작업을 빠르게 번갈아가면서 수행하여 마치 동시에 수행되는 것처럼 보이게 하는 것이다.
2-2 병렬성(Parallelism)
멀티 코어에서 멀티 스레드를 동작시키는 방식으로, 한 개 이상의 스레드를 포함하는 각 코어들이 동시에 실행되는 성질을 말한다. 실제 코어가 여러개여서 여러 작업들을 동시에 처리한다. 병렬성은 데이터 병렬성과 작업 병렬성으로 구분된다.
2-2-1 데이터 병렬성(Data Parallelism)
전체 데이터를 쪼개 서브 데이터들로 만든 뒤, 서브 데이터들을 병렬 처리하여 작업을 빠르게 수행하는 것을 말한다. 서브 데이터는 멀티 코어의 수만큼 쪼개어 각각의 데이터들을 분리된 스레드에서 병렬 처리한다.
2-2-2 작업 병렬성(Task Parallelism)
서로 다른 작업을 병렬 처리하는 것을 말한다. 대표적인 예는 웹 서버로, 각각의 브라우저에서 요청한 내용을 개별 스레드에서 병렬로 처리한다.
참고링크
'IT > etc.' 카테고리의 다른 글
메모리 관리(Memory Management) (0) | 2023.02.10 |
---|---|
기본적인 터미널 명령어 (0) | 2023.02.09 |
프로세스란? (0) | 2023.02.08 |
OS의 일반적인 작동 방식 (0) | 2023.01.11 |
호스팅(Hosting)이란? (0) | 2023.01.10 |