본문 바로가기

it관련

스레드란

반응형


스레드




스레드는 프로세스나 태스크보다 더 작은 단위로 다중 프로그래밍 시스템에서 CPU에게 보내져 실행되는

프로그램 단위이며 사용 목적은 프로세스 스케줄링 부담을 줄여 성능을 향상시키기 위한 프로세스의 다른

표현 방식이다.


프로세스 내에서 프로그램이 수행되기 위해서는 페이지 테이블, 파일 기술자, I/O요구와 저장된 레지스터

값 등과 같은 많은 양의 상태 정보를 초기화하고 유지하며 관리하여야 한다. 따라서 프로세스를 생성하고

유지하는데 많은 비용이 필요로 하게 되며 이는 특히 다중 프로세스를 이용하여 하나의 업무를 처리하는

경우에 동일한 자료들이 중첩되어 유지되고 관리되어야 함을 의미한다. 또한 프로세스가 실행의 기본

단위라는 것은 하나의 프로세스 내에서 프로그램이 수행될 때 각각의 실행 단위 시간 내에 하나의 실행

포인트만이 존재함을 의미하는 것으로 단일 프로세스 내에서 동시 처리 또는 병렬 처리가 불가능함을

알 수 있다.


스레드의 개념

단일 프로세스용 운영체제에서 프로세스를 생성하고 유지하는데 많은 비용을 필요로 하는 문제와 동시

처리 또는 병렬 처리가 불가능한 문제를 개선하기 위한 방법으로 스레드를 기본 단위로 하는 다중

스레딩이란 개념이 도입되었다.


여기서 스레드란 제어의 흐름을 의미하는 것으로 프로세스에서 실행의 개념을 분리한 것이다. 즉

프로세스의 구성을 크게 제어의 흐름 부분과 실행 환경 부분으로 나눌 때 스레드는 프로세스의 실행

부분을 담당함으로써 실행의 기본 단위가 된다.


실제로 하나의 프로세스 내에는 여러 개의 스레드가 존재할 수 있으며 스레드들은 실해에 필요한

최소한의 정보만을 가지고 프로그램 수행 시 자신이 속해 있는 프로세스의 실행 환경을 공유한다.

대부분의 기존 프로그램들은 하나의 프로세스가 하나의 스레드를 갖는 형태로 구성되어 있다.


다중 스레딩이란 다수의 스레드를 이용하여 하나의 프로그램을 동시에 처리하는 것으로 하나의

프로그램을 위하여 다수의 실행 단위를 이용한다는 점에서 다중 프로세싱과 동일한 의미이다. 그러나

다중 프로세싱과는 달리 하나의 프로세스 자체에 다수의 실행 단위들이 존재하여 작업의 수행에 필요한

자원들을 공유하기 때문에 자원의 생성 및 관리가 중복되는 것을 최소화 할 수 있다. 이러한 자원 공유는

하나의 프로세스 내에서 뿐만 아니라 여러 개의 서로 다른 프로세스들 사이에서도 가능하다. 또한 하나의

프로그램을 다중 스레딩 기법을 이용하여 수행할 경우 각 스레드는 서로 독립적으로 동시에 수행이

가능하여 다중 프로세서 시스템에서는 물론 단일 프로세서 시스템 상에서도 업무의 실질적인 다중 처리를

가능하게 한다.


스레드의 상태 변화

하나의 스레드는 그의 실행 과정 동안에 상태 변화를 일으키는데 각 스레드는 여러 측면에서 미니

프로세스와 같기 때문에 정확한 순차적 실행을 하며 자신의 프로그램 카운터와 스택을 가지고 있다. 한

스레드가 먼저 실행하고 나면 다른 스레드가 시분할 공유하며 실행함으로써 프로세스처럼 CPU를

공유한다. 스레드는 자식 스레드를 생성시킬 수 있고 시스템 호출이 완료될 때까지 기다리는 동안 대기

상태에 있을 수 있다. 스레드의 실행 상태 변화는 준비, 실행, 대기, 완료, 상태 등 크게 네가지로 구분한다.


하나의 다중 스레드형 프로세스는 기존의 프로세스가 갖는 하나의 제어 스레드의 의미가 아닌 여러 개의

스레드가 연결된 형태를 갖는다. 스레드는 서로 독립적으로 실행될 수도 있고 같은 주소 공간 내에서

동시에 수행되는 다른 스레드와 협력하면서 수행될 수도 있다.


하나의 응용 프로그램을 다중 스레드형으로 설계할 때 사용자는 직접적으로 스레드를 생성할 수 있으며

스레드의 구성 요소를 조절함으로써 자신의 프로그램에 적합한 형태의 스레드를 가질 수 있다.

반응형

'it관련' 카테고리의 다른 글

컴퓨터란 무엇인가  (0) 2017.05.15
네트워크의 기초  (0) 2017.05.15
데이터베이스의 특징  (0) 2017.05.14
C 언어 와 Java 의 역사  (0) 2017.05.13
RepRap 프로젝트  (0) 2017.05.13