Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- select
- 자바
- Kotlin
- java
- 코틀린
- 정처기
- 티스토리챌린지
- groupby
- 인프런
- 안드로이드
- 코테
- CS
- Til
- 정보처리기사
- 스터디
- 기술면접
- 자료구조
- 안드로이드스튜디오
- 카카오코테
- 혼공파
- 알고리즘
- Android
- 혼공단
- 혼공챌린지
- join
- SQL
- doitandroid
- 프로그래머스
- MySQL
- 오블완
Archives
- Today
- Total
Welcome! Everything is fine.
#15. 멀티 프로세스와 멀티 스레드 본문
728x90
동시성과 병렬성
멀티 프로세스와 멀티 스레드 개념을 잘 이해하려면 동시성과 병렬성에 대해 알아야 한다.
- 동시성(concurrency) : 하나의 코어(싱글 코어)에서 여러 작업을 번갈아 가면서 처리하는 방식
- CPU는 한 번에 하나의 작업만 처리할 수 있어서 여러 작업을 돌아가며 처리 → Context Switching
- Context Switching의 비용은 프로세스 > 스레드이다. 스레드는 stack 영역을 제외한 모든 영역을 공유하기 때문!
- 병렬성(parallelism) : CPU가 여러 개(멀티코어) 있어 각 CPU에서 각 작업을 동시에 처리하는 방식
멀티 프로세스
- 응용 프로그램 하나를 여러 프로세스로 구성하는 것을 의미
- 장점 : 한 프로세스가 죽어도 다른 프로세스에 영향을 주지 않아 안정적
- 단점 : 시간과 메모리 공간을 많이 사용, Context Switching에서의 오버헤드 많이 발생, IPC를 통해 자원을 공유 → 직접 참조하는 것보다 비효율적
멀티 스레드
- 응용 프로그램 하나를 여러 스레드로 구성하는 것을 의미
- 장점 : Context Switching에서의 오버헤드 적게 발생, 메모리와 시스템 자원 소모 감소
- 단점 : 서로 다른 스레드가 Code, Data, Heap 영역 공유 → 다른 스레드에서 사용 중인 변수나 자료구조에 접근해 엉뚱한 값을 불러올 수 있음(동기화 문제), 한 스레드에 문제가 생기면 다른 스레드에도 영향을 미칠 수 있음
'CS 스터디' 카테고리의 다른 글
#17. HTTPS란? (0) | 2024.03.19 |
---|---|
#16. 인덱스(Index)란? 인덱스의 목적, 장단점 (0) | 2024.03.12 |
#14. 힙(Heap) (0) | 2024.02.27 |
#13. 트리(Tree) (1) | 2024.02.27 |
#12. 배열(Array)과 연결 리스트(LinkedList) (0) | 2024.02.20 |