티스토리 뷰
시스템의 수행능력을 향상해준다는 멀티스레딩, 의미와 장단점. 그리고 멀티 프로세스와의 차이점도 공부해보자!
멀티 스레딩(Multi Threading)이란?
: 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생산과 관리의 중복성을 최소화하여 수행 능력을 향상하는 것.
여러 개의 스레드를 통해 하나의 프로그램에서 동시에 여러 개의 일을 수행할 수 있도록 해주는 것.
멀티 스레드를 사용하는 이유는?
: 프로세스를 이용하여 동시에 처리하던 일을 스레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어들게 되기 때문이다. 이 때문에 다양한 장점들이 존재한다.
멀티 스레딩의 장점
- 스레드 간 통신 시에 별도의 자원을 사용하는 것이 아닌 공유된 공간인 전역 변수, heap메모리 영역을 통해 이뤄지므로 통신 방법이 간단하다.
- 또한 스레드의 context switch는 캐시 메모리를 비울 필요가 없기 때문에 빠르다.
→결론적으로
자원을 공유하고 생산과 관리를 효율적으로 하여 수행 능력을 향상하기 때문에 사용하는 것.
멀티 스레딩의 문제점
- 자원을 공유하므로, 즉 datat, heap 영역에 데이터를 다른 스레드들이 동시 접근이 가능하므로 사용 중인 변수나 엉뚱한 값을 읽어 올 수 있음
→이를 해결하기 위해 자원의 처리 순서를 컨트롤하고 공유 자원에 대한 접근을 컨트롤하기 위해 동기화하는 작업이 필요하다
- 하지만 이 동기화로 인해 병목현상이 일어나서 성능에 문제를 일으키기도 한다.
- 불필요한 부분까지 동기화를 할 경우 현재 스레드는 락(lock)을 획득한 스레드가 종료하기 전까지 대기해야 하기 때문. 그렇게 되면 전체 성능에 영향을 미치게 된다.
*락에 대해서는 동기화 관련해서 다음에 더 자세히 알아보자
→ 이를 해결하기 위해 동기화 작업으로 인한 과도한 lock의 사용을 줄인다. 즉 공유자원이 아닌 곳에는 동기화 처리가 필요하지 않다는 뜻. 따라서 어떤 영역까지 동기화를 할지 잘 생각해야 한다.
↓$병목현상 이란?
$병목현상 이란?
: 어떤 시스템 내 데이터의 처리 속도가 지연됨에 따라 다음에 오는 데이터 처리가 지연되는 현상을 말한다. 즉, 일부분에 의한 전체의 성능에 하향 평준화가 된다.
→예를 들어 스레드 A가 공유자원인 1번 자원을 사용하기 위해 락을 걸었는데 스레드 B 스레드 C가 1번 자원을 사용해야 한다면 앞에 처리가 끝날 때까지 줄줄이 기다려야 한다.
멀티 프로세스 Vs 멀티 스레드 차이점
- 멀티 프로세스는 독립적인 자원을 사용함으로써 많은 메모리 공간을 차지하고 문맥 교환이 느린 반면에 멀티 스레드는 공유 자원으로 메모리 공간을 줄이고 문맥 교환 역시 빠르다.
- 멀티 프로세스는 독립적인 자원을 사용함으로써 다른 프로세스가 죽더라도 다른 프로세스에 영향을 끼치지 않는 반면에 멀티 스레드는 하나의 스레드가 오류로 종료되면 전체 스레드가 종료된다는 위험과 동기화의 문제가 있다.
→ 결론적으로 둘 다 동시에 여러 작업을 처리하지만 장단점이 있으므로 시스템의 특성에 맞게 선택하여 사용하기!
'CS공부 > 운영체제' 카테고리의 다른 글
[운영체제 OS] 메모리 관리란? - 이유, 방법 (0) | 2021.05.26 |
---|---|
[운영체제 OS]CPU 스케줄러의 스케줄링 방법들 (0) | 2020.12.22 |
[운영체제 OS]프로세스의 상태와 스케줄러의 종류,하는일 (0) | 2020.12.21 |
[운영체제 OS]프로세스(Process)/스레드(Thread)정의와 차이점 정리 (1) | 2020.12.19 |
- Total
- Today
- Yesterday
- 자바
- 삼성 sw역량 테스트
- BFS
- Heap
- Baekjoon
- websocket
- 백준
- Spring
- 삼성 sw역량테스트
- 채팅
- Stomp
- SWEA
- 코딩테스트
- DP
- Oracle
- 분리 집합
- 완전탐색
- JavaScript
- 알고리즘
- git
- sockjs
- dfs
- 최소 스패닝 트리
- 프로그래머스
- 운영체제
- OS
- programers
- 정렬
- MST
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |