thread/multithreading ; 스레드/멀티스레딩

  1. 유즈넷뉴스그룹이나 그와 비슷한 토론의 장에서, 스레드란 초기에 올려진 메시지에 대해 올라간 일련의 응답들을 의미한다. 스레드는 수없이 많은 뉴스그룹내의 각각의 토론들을, 추후에 관련 있는 것끼리 찾아서 이해하거나 또는 그 토론에 참여하는데 도움을 준다. 스레드는 보통 최초의 메시지 위에 관련되는 메시지들을 올려놓는 형식의 그림으로 표시된다.
  2. 컴퓨터 프로그래밍에서, 스레드는 다수의 사용자들을 동시에 처리할 수 있는 프로그램이 각각의 사용과 관련하여 가지고 있는 정보들 말한다. 프로그램의 관점에서 보면, 스레드는 한 명의 개별 사용자 또는 특정한 서비스 요청을 서비스하는데 필요한 정보이다. 만약 다수의 사용자들이 그 프로그램을 쓰고 있거나, 또는 다른 프로그램들로부터 동시에 요청이 발생했을 때, 각각의 사용자나 프로그램들을 위해 스레드가 만들어지고, 또 유지된다. 스레드는 프로그램에게 현재 어떤 사용자가 서비스를 받고있는지를 파악하게 함으로써, 다른 사용자들을 위하여 재진입 해야할 것인지의 선택을 할 수 있도록 한다 (단방향 스레드 정보는 특별한 데이터 저장소 내에 그것을 저장하고, 데이터 저장소의 주소를 레지스터에 집어넣음으로써 유지된다. 운영체계는 항상 프로그램이 중단되었을 때 레지스터의 내용을 저장하며, 그리고 다시 제어권이 주어졌을 때 그 내용을 복구한다).

멀티스레딩과 멀티태스킹은 비슷해서 자주 혼동된다. 오늘날의 컴퓨터들은 한번에 단 한 개의 프로그램 명령어만을 수행할 수 있다. 그러나, 그들이 매우 빠르게 동작하기 때문에, 동시에 많은 프로그램들을 실행하고, 많은 사용자들을 서비스하는 것처럼 보이는 것 뿐이다. 윈도우95와 같은 운영체계는 각 프로그램에게 실행될 때 "순서"를 주는데, 다른 프로그램들은 자신들에게 순서가 돌아올 때까지 기다리게된다. 이 프로그램들 각각은 운영체계에 의해 일정량의 자원들이 관계되고 진행상황을 계속 알게되는 하나의 작업, 즉 태스크로 간주된다.

운영체계는 PC 시스템 내의 각 응용프로그램(스프레드시트, 워드 프로세서, 웹 브라우저 등)들을 각각의 별도 태스크로 관리하고, 사용자가 태스크 목록 내에서 그것들을 보거나 관리할 수 있도록 해준다. 만약 그 프로그램이 파일을 읽거나 프린터를 통해 출력하는 등 입출력 요청을 개시했다면, 입출력 작업이 끝났을 때 그 프로그램이 원래의 장소로 정확히 재진입할 수 있도록 하나의 스레드가 만들어진다. 그 동안, 그 프로그램을 동시에 이용하던 태스크들은 또다른 스레드들에서 유지되고 관리된다. 오늘날 대부분의 운영체계는 멀티태스킹과 멀티스레딩을 모두 지원한다. 그들은 또한, 프로그램 프로세스들 안에서 멀티스레딩을 허용함으로써, 그 시스템이 각 스레드를 위해 새로운 프로세스를 만드는데 생기는 추가부담을 줄일 수 있게 해준다.

POSIX.4a라는 C 언어 규격은 프로그래머가 프로그램 내에서 스레드 지원을 포함할 수 있도록 하는 일련의 응용프로그램 인터페이스(API)를 제공한다. 또한, 고급 프로그램개발 도구나 미들웨어에서도 스레드 관리를 편하게 할 수 있는 기능들을 제공하기도 한다. 객체지향 프로그래밍 언어들 역시 여러 가지 방법을 통해 멀티스레딩에 관한 편의를 제공하고 있다. 자바는 언어의 구문 내에 동기변경자를 포함하는 것으로, 또 멀티스레딩을 위해 개발된 클래스(이 클래스들은 다른 클래스들에 의해 상속될 수 있다)들을 제공하는 것으로, 그리고 다중 스레드를 위한 자투리 모으기를 후면에서 실행함으로써 멀티스레딩을 지원한다.

썬마이크로시스템즈의 웹사이트에 스레드에 관한 페이지가 준비되어 있으니 참고하시기 바랍니다.


이 정보는 1999년 9월 3일에 수정되었습니다.
영어판(whatis.com)