티스토리 뷰

쓰레드

하나의 프로그램 안에서 둘 이상의 프로세스(또는 둘 이상의 프로그램흐름)을 만들기 위한것

 

문맥교환

-프로세스의 상태정보를 저장하고 복원하는 과정

-결과적으로 이 과정에 소요되는 시간을 줄이는 것

 

*프로세스란? '현재 실행중인 프로그램'을 의미

예) 둘 이상의 서로 다른 프로그램을 실행한다면 프로세스가 둘 이상 생성

- 웹 브라우저 실행해 웹 서핑을 하면서 뮤직플레이어를 실행해 음악을 듣는 경우 두 개의 프로세서 실행

 

하나의 프로그램이 둘 이상의 작업을 동시에 처리하기 위해서도 둘 이상의 프로세스가 필요

예1) 서버에서 다수의 유저가 접속해 동일한 프로그램을 사용하는 경우

예2) 멀티 유저 게임의 경우, 다수의 유저가 동시에 하나의 게임을 하는 경우

- 서버 입장에서는 한 개의 프로그램을 실행 하지만 각 유저당 개개의 프로세스를 실행하여 현재 자신의 상태와 다른 유저들의 실행 상태를 각 유저들에게 전달해야 함.

 

다수의 프로세스를 처리 하기 위해서는 문맥교환(context-switching)이 필요하다.

 

프로세스의 상태

프로세스는 준비상태에서 cpu의 스케줄링 기법에 의해서 할당시간을 받게 된다 이를 dispatch라고 한다. 실행상태 - 실행상태 교환관계를 문맥교환이라고 하며 문맥교환을 할 때에 프로세스의 상태정보를 저장해야 합니다. 처리 할 프로세스가 많아지게 되면 문맥교환 횟수가 증가하면 저장해야 될 프로세스의 상태정보도 많아지게 되므로 시스템 성능은 저하 됩니다.

 

* 처리할 프로세스의 수가 많아 질수록 문맥교환(context-switching)을 하는 횟수가 증가에 따른 시스템 성능 저하를 막기 위한 방법 => "Thread(쓰레드)"

 

문맥교환은 프로세스의 상태정보를 저장하고 복원하는 과정입니다.

 

결과적으로 이 과정에 소요되는 시간을 줄이는 것이 쓰레드의 목적입니다.

(저장-복원하는 정보의 개수를 감소시키는 방법)

 

"쓰레드는 하나의 프로그램 안에서 둘 이상 프로세스(또는 둘 이상의 프로그램 흐름)을 만들기 위한 것"

 

쓰레드는 프로세스와 달리 공유하는 상태 정보값들이 있습니다.

이는 쓰레드가 문맥교환이 빠른 요인 입니다. 한마디로 상태정보를 주고 받는 문맥교환의 과정이 줄어 시스템 성능이 향상됩니다.

 

 

댓글