안녕하세요. 메로나입니다.
오늘은 스레드에 관한 내용을 공부하겠습니다.
스레드 란?
- 프로그램이 실행되는 흐름의 단위
- 하나의 프로세스 내에서 여러 개의 스레드를 실행할 수 있습니다.
- 이를 통해 프로그램은 동시에 여러 작업이 가능합니다.
스레드와 프로세스 차이점?
- 스레드: 프로세스 내에서 실행되는 작업 단위, 같은 프로세스 내에서 스레드는 메모리를 공유합니다.
- 프로세스: 실행 중인 프로그램의 인스턴스, 각 프로세스는 독립적인 메모리 공간을 가집니다.
싱글 스레드 와 멀티 스레드
- 싱글 스레드: 하나의 실행 흐름을 가지고, 순차적으로 작업을 수행합니다.
- 멀티 스레드: 여러 개의 실행 흐름을 가지고, 병렬로 작업을 처리하여 성능 향상이 가능합니다.
멀티 스레드가 필요한 이유?
- 성능 향상: CPU의 여러 코어를 활용하여 작업 속도를 높일 수 있습니다.
- 응답성 개선: UI가 멈추는 것을 방지하고, 백그라운드 작업을 수행할 수 있습니다.
- 리소스 절약: 여러 프로세스를 실행하는 것보다 적은 비용으로 동시에 여러 작업을 수행할 수 있습니다.
동시성(Concurrency) 와 병렬성(Parallelism)
- 동시성: 하나의 CPU가 여러 작업을 빠르게 전환하며 실행하는 방식
- 병렬성: 여러 개의 CPU 코어가 각각 다른 작업을 동시에 실행하는 방식
스레드 생성과 생명주기
- 생성(New): 스레드 객체를 생성하지만 아직 실행되지 않은 상태
- 실행 가능(Runnable): 스레드가 실행될 준비가 되었지만, CPU를 배정받지 못한 상태
- 실행(Running): 스레드가 실행 중인 상태
- 일시 정지(Waiting/Blocked): 특정 조건을 만족할 때까지 대기하는 상태
- 종료(Terminated): 스레드 실행이 완료되거나 중단된 상태
스레드 동기화와 문제점
- 공유 자원 문제(race condition): 여러 스레드가 같은 자원에 접근할 경우 데이터 정합성이 깨질 수 있습니다.
- 데이터 정합성: 데이터가 일관되고, 정확하며, 신뢰할 수 있는 상태를 유지하는 것(데이터 손상, 잘못된 상태로 저장하고 있는 상태)
스레드 관련 용어
- 데드락(Deadlock): 두 개 이상의 스레드가 서로 자원을 기다리며 무한 대기
- 라이브락(Livelock): 스레드가 실행은 되지만, 유용한 작업을 수행하지 못하는 상태
- 기아상태(Starvation): 우선순위가 낮은 스레드가 CPU 자원을 얻지 못하는 문제
스레드의 우선순위 기준은?
운영체제 스케줄러가 스레드를 실행할 때 어떤 스레드를 먼저 실행할지 결정하는 기준이 됩니다. 하지만, 우선순위가 높다고 해서 항상 먼저 실행되는 것은 아니며, 운영체제 스케줄링 정책에 따라 다릅니다.
오늘은 스레드 관련하여 공부하였습니다.
기초가 많이 부족한 것 같아 천천히 운영체제를 공부하면서 블로그에 기록할 예정입니다.
감사합니다!!
'IT' 카테고리의 다른 글
| [TCP/IP] 동기(Synchronous) 와 비동기(Asynchonous) (0) | 2025.02.12 |
|---|---|
| [TCP/IP] 멀티플렉싱(Multiplexing) (0) | 2025.02.10 |
| [TCP/IP] 인터넷의 주소 체계 (0) | 2025.02.05 |
| [TCP/IP] CPU 데이터 저장 방식과 네트워크 통신 (0) | 2025.02.04 |
| [TCP/IP] IP와 Port (0) | 2025.02.02 |