Thread(쓰레드)란 무엇인가?
- 컴퓨터공학
- 2016. 2. 11. 11:54
우리가 흔히 사용하고 있는 OS는 '멀티 OS'라고 한다. 이것의 의미는 동시에 여러 가지 작업을 한다는 것을 뜻한다.
MP3를 들으며 워드를 작성하면서 인터넷 서핑을 할 수 있다. 이때 각각의 응용 프로그램은 하나의 프로세스를 갖는다.
그러니까 MP3 플레이어도 하나의 프로세스이고 워드도 하나의 프로세스이고, 인터넷 브라우저도 하나의 프로세스라는 뜻이다.
반면에 쓰레드는 프로세스를 여러 개로 나눈 조각과 갖다고 설명할 수 있다. 워드를 사용하는 경우를 예로 들자.
워드에서 글자를 입력하는 동안 파일을 주기적으로 자동저장하고, 내용을 프린터에 출력하고 있고, 입력하는 동안 자동으로 맞춤법 검사를 수행한다. 사용자의 입력을 받는 동안 행하는 이 모든 작업들은 각각의 쓰레드에 의해서 이루어진다. 글자를 입력 받는 쓰레드, 파일을 디스크에 저장하는 쓰레드, 출력할 내용을 프린터에 보내는 쓰레드, 입력하는 동안 맞춤법 검사를 수행하는 쓰레드 등이 있다.
즉, 워드라는 큰 프로세스 하나에 여러 개의 쓰레드가 모여있는 것이다.
실제로 프로세스는 하나의 어드레스 공간을 갖고 있고, 모든 응용 프로그램은 메인 응응 프로그램을 위한 하나의 쓰레드를 갖는다. 물론 여기에 다른 쓰레드들이 함께 수행될 수 있고, 각각의 쓰레드들은 자신을 관리하는 프로세스의 어드레스를 갖고 있다.
즉, 프로세스는 쓰레드에 대한 일종의 컨테이너역할을 한다.
쓰레드를 이용하면 얻을 수 있는 이점은 무엇인가? 다른 사람들의 얘기를 들어보면 잘 쓰면 명약이요, 잘못 쓰면 독약인 것이 쓰레드라고 하는 것 같다. 쓰레드를 이용하면 하나의 프로그램에서 한 번에 하나의 일을 처리하는 것이 아니라 동시에 많은 일을 처리할 수 있다는 장점이 있다. 뿐만 아니라 같은 일을 더 빠른 시간안에 처리할 수 있을 것이다. 처리 시간이 오래 걸리는 작업에 대해서 쓰레드에게 처리를 맡기고, 다른 일을 계속해서 처리할 수도 있는 것이다.
다음 그림을 보도록 하자.
그림에서처럼 하나의 프로세스에서 처리해야하는 세 가지의 작업 A, B, C가 있고, 각각의 처리시간이 위의 길이와 같다고 할 경우에
첫번째와 같이 순차적으로 처리하는 경우보다는 두 번째와 같이 쓰레드를 이용하여 동시에 처리하는 것이 처리시간이 더 짧다는 것을 알 수 있을 것이다. 이러한 쓰레드의 위력은 많은 동시 사용자를 처리하는 환경이나 한 번에 많은 작업을 처리하는 응용 프로그램에서 그 위력을 발휘할 것이다.
다음에는 여러 개의 쓰레드를 동시에 처리하는 멀티쓰레드에 대해서 알아보도록 하자.
<출처 : 한빛미디어 참조>
'컴퓨터공학' 카테고리의 다른 글
멀티 프로그래밍이란? (0) | 2016.02.12 |
---|---|
멀티태스킹이란? (2) | 2016.02.12 |
멀티 프로세싱이란? (2) | 2016.02.12 |
CPU, 프로세서, 코어... 같은 용어인가? (4) | 2016.02.12 |
Difference between interrupt, exception and trap (0) | 2016.02.03 |
이 글을 공유하기