티스토리 뷰
Multi-Thread는 하나의 Process내에 여러개의 Thread 즉, 흐름이 존재한다.
Multi-Process는 여러개의 Process가 존재한다.
Multi-Thread와 Multi-Process는 둘다 여러개의 흐름이 동시에 존재한다는 점에서는 동일하다.
하지만 Multi-Process에서 각각의 Process는 독립적으로 수행되며 별개의 Memory를 가지고 있지만 Multi-Thread의 경우 각각의 Thread는 Process내의 Memory를 공유한다. 또한 Process간에 전환인 Context Switching보다 Thread간의 전환인 Thread Switching이 비용이 저렴하며 속도도 빠르다.
하지만 Multi-Thread의 단점은 실제 시간으로 동시에 수행되지만 실질적으로 어떤 Thread가 먼저 수행될지는 알 수 없다는 점이다. 그렇기 때문에 Race Condition 즉, 동시 접근으로 인한 데이터의 오류가 발생 할 수 있다는 점이다. 이 점을 해결하기 위한 방법은 다른 포스트에서 다루기로 하겠다.
Multi-Thread와 Multi-Process의 차이점은 인터넷상에서 확인하면 더욱 확실하게 알 수 있다.
만일 여기 두 개의 시스템이 존재한다고 하자. 하나의 시스템은 Server에 Client가 접속 할때 마다 하나의 Thread를 늘리고 또 다른 시스템에서는 하나의 process를 늘린다고 생각해 보자. 즉 ,Multi-Thread방식과 Multi-Process방식이다. Multi-Process의 경우에는 Client가 늘어날수록 Process를 생성하기 때문에 Memory의 소비가 크고 느려진다. Multi-Thread의 경우에는 Client가 늘어나도 Thread만 생성하기 때문에 메모리의 소비가 작고 빠르다.
하지만 만일 Multi-Thread방식을 사용하는 시스템에서 하나의 Thread에 오류가 발생했다고 생각하자. 하나의 Thread에서 오류가 발생할 경우 해당 Process가 종료되기 때문에 모든 Thread가 종료되고 Process에 접속되어있던 모든 Client가 종료되버린다. Multi-Process방식에서 오류가 났다면 해당하는 하나의 Process만 종료고 나머지 Process에는 영향을 끼치지 않기 때문에 오류가 발생한 하나의 Client만이 종료될뿐 나머지 Process는 정상적으로 작동하게 된다.
http://darknata.blog.me/70091304768 - 컴퓨터 구조 및 운영 체제
'Study > Language >' 카테고리의 다른 글
내가 주로 쓰는 vim 설정 (0) | 2013.03.21 |
---|---|
자바의 추상클래스(Abstract class)와 인터페이스(interface class) (1) | 2012.10.09 |
cron crontab -e 크론탭!! 으악???! (0) | 2011.08.12 |
C++을 위한 XML 파서의 선택 (1) | 2010.12.22 |
주석의 종류 (0) | 2010.11.24 |
- Total
- Today
- Yesterday
- jaeseokyoon
- 릴레이대회본선
- gdgssu
- gdg watchfacehack
- 핸즈온머신러닝
- yjaeseok
- watchface
- 안드로이드폰
- jakeyoon
- 윤재석
- 리눅스2.6
- 창의과학교구
- 안드로이드
- 리눅스
- GDG
- Linux
- Developing on AWS
- 리눅스 커널 2.6 구조와 원리
- 서버개발자
- 리눅스 커널 2.6
- 소설네트워크2
- AndroidWear
- GDG SSU
- 숭실대
- 창조경제혁신센터
- 그래비트랙스
- WatchFaceHack
- Jake Yoon
- 해커톤
- 하쭈서쭈
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |