Q&A

  • 쓰레드가 뭔가요?
쓰레드란 말이 많이 나오는거 같은데..
알기 쉽게 설명 부탁드립니다
1  COMMENTS
  • Profile
    김수경 2002.09.16 20:00
    Terms에서  Thread 관련 자료를 갈무리한 내용입니다.
    참고하세요. ^^;

    ---------------------------------------------------------

    컴퓨터 프로그래밍에서, 스레드는 다수의 사용자들을 동시에 처리할 수 있는 프로그램이 각각의 사용과 관련하여
    가지고 있는 정보들 말한다. 프로그램의 관점에서 보면, 스레드는 한 명의 개별 사용자 또는 특정한 서비스 요청을
    서비스하는데 필요한 정보이다. 만약 다수의 사용자들이 그 프로그램을 쓰고 있거나, 또는 다른 프로그램들로부터
    동시에 요청이 발생했을 때, 각각의 사용자나 프로그램들을 위해 스레드가 만들어지고, 또 유지된다. 스레드는
    프로그램에게 현재 어떤 사용자가 서비스를 받고있는지를 파악하게 함으로써, 다른 사용자들을 위하여 재진입
    해야할 것인지의 선택을 할 수 있도록 한다 (단방향 스레드 정보는 특별한 데이터 저장소 내에 그것을 저장하고,
    데이터 저장소의 주소를 레지스터에 집어넣음으로써 유지된다. 운영체계는 항상 프로그램이 중단되었을 때
    레지스터의 내용을 저장하며, 그리고 다시 제어권이 주어졌을 때 그 내용을 복구한다).

    멀티스레딩과 멀티태스킹은 비슷해서 자주 혼동된다. 오늘날의 컴퓨터들은 한번에 단 한 개의 프로그램 명령어만을
    수행할 수 있다. 그러나, 그들이 매우 빠르게 동작하기 때문에, 동시에 많은 프로그램들을 실행하고, 많은
    사용자들을 서비스하는 것처럼 보이는 것 뿐이다. 윈도우95와 같은 운영체계는 각 프로그램에게 실행될 때
    "순서"를 주는데, 다른 프로그램들은 자신들에게 순서가 돌아올 때까지 기다리게된다. 이 프로그램들 각각은
    운영체계에 의해 일정량의 자원들이 관계되고 진행상황을 계속 알게되는 하나의 작업, 즉 태스크로 간주된다.
    운영체계는 PC 시스템 내의 각 응용프로그램(스프레드시트, 워드 프로세서, 웹 브라우저 등)들을 각각의 별도
    태스크로 관리하고, 사용자가 태스크 목록 내에서 그것들을 보거나 관리할 수 있도록 해준다. 만약 그 프로그램이
    파일을 읽거나 프린터를 통해 출력하는 등 입출력 요청을 개시했다면,입출력 작업이 끝났을 때 그 프로그램이
    원래의 장소로 정확히 재진입할 수 있도록 하나의 스레드가 만들어진다.

    그 동안, 그 프로그램을 동시에 이용하던 태스크들은 또다른 스레드들에서 유지되고 관리된다. 오늘날 대부분의
    운영체계는 멀티태스킹과 멀티스레딩을 모두 지원한다. 그들은 또한, 프로그램 프로세스들 안에서 멀티스레딩을
    허용함으로써, 그 시스템이 각 스레드를 위해 새로운 프로세스를 만드는데 생기는 추가부담을 줄일 수 있게 해준다.
    POSIX.4a라는 C 언어 규격은 프로그래머가 프로그램 내에서 스레드 지원을 포함할 수 있도록 하는 일련의
    응용프로그램 인터페이스(API)를 제공한다. 또한, 고급 프로그램개발 도구나 미들웨어에서도 스레드 관리를 편하게
    할 수 있는 기능들을 제공하기도 한다. 객체지향 프로그래밍 언어들 역시 여러 가지 방법을 통해 멀티스레딩에
    관한 편의를 제공하고 있다. 자바는 언어의 구문 내에 동기변경자를 포함하는 것으로, 또 멀티스레딩을 위해
    개발된 클래스(이 클래스들은 다른 클래스들에 의해 상속될 수 있다)들을 제공하는 것으로, 그리고 다중 스레드를
    위한 자투리 모으기를 후면에서 실행함으로써 멀티스레딩을 지원한다.