스레드 (Thread) 란?
- 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위
- CPU 사용하는 기본 단위를 뜻함
- 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있음, 이러한 방식을 멀티스레드 라고 함
멀티 스레딩 (Multi-Threading)
- 멀티 스레드란 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것
- 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유함
멀티 스레딩의 장점
- Non-Blocking 으로 처리 가능
// A 함수가 B 호수를 호출 할 때, B 함수가 제어권을 A 함수에게 바로 넘겨주면서, A 함수가 다른 일을 할 수 있도록 하는 것
- 리소스 자원 공유가 쉬움 (프로세스의 공유 메모리, 메시지 교환 (message-passing) 보단 쉬움)
- 프로세스보다 적은 오버헤드로 인해 문맥 교환 비용이 적음
- 확장성이 뛰어남
동시성
- 싱글 코어에서 멀티 스레드를 동작시키기 위한 방식
- 멀티 태스킹을 위해 여러 개의 스레드가 번갈아가면서 실행되는 성질
- 동시성을 이용한 싱글 코어의 멀티 태스킹은 각 스레드들이 병렬적으로 실행되는 것처럼 보이지만, 사실은 번갈아가면서 조금씩 실행되고 있는 것
병렬성
- 멀티코어에서 멀티스레드를 동작시키는 방식
- 한 개 이상의 스레드를 포함하는 각 코어들이 동시에 실행되는 성질
참고
1. https://karice.tistory.com/230 - 스레드와 동시성
2. https://velog.io/@gil0127/%EC%8B%B1%EA%B8%80%EC%8A%A4%EB%A0%88%EB%93%9CSingle-thread-vs-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%93%9C-Multi-thread-t5gv4udj - 싱글스레드(Single thread) vs 멀티스레드 (Multi thread)
3.https://mentha2.tistory.com/245 - [OS] 동시성(Concurrency) vs 병렬성(Parallelism)
4. https://m.boostcourse.org/mo326/lecture/16866 - 동시성 프로그래밍과 비동기 프로그래밍
'Backend Loadmap > Operating System' 카테고리의 다른 글
[백엔드로드맵][OS] 메모리 관리 (0) | 2023.04.24 |
---|---|
[백엔드로드맵][OS] 기본적인 터미널 명령어 (0) | 2023.04.07 |
[백엔드로드맵][OS] 프로세스 관리 (0) | 2023.04.02 |
[백엔드 로드맵][OS] OS의 기본적인 작동 방식 (0) | 2023.03.21 |
[백엔드 로드맵][OS] 터미널 사용 방법 (0) | 2023.03.18 |