Major Study./Computer Science

Multithreading models, 스레드의 개념

sosal 2014. 7. 17. 16:31
반응형

/*

 * http://sosal.kr/

 * made by so_Sal

 */



Thread는 CPU-utilization의 기본 단위이다.
Program counter, register set, stack, thread ID로 구성되어있다.
하나의 프로세스에 다양한 스레드가 붙어있으며, 그 스레드들은 프로세스의
code section을 공유한다. 즉 프로세스에서 새로운 스레드로 실행하고자 하는 루틴을
함수 형태로 지정하여 스레드를 생성하게 되는데, 그때 공유하는 code section이 바로 함수이다.




코드 전영역을 공유하지 않고, 지정된 함수만 받아 사용한다는 것.

이 스레드는 유저의 어플리케이션에서 멀티프로그래밍을 위해 사용되기도 하지만
서버에서 다양한 client들에게 thread를 새로 생성하여 리소스를 제공한다.
특히 웹서버의 데이터베이스 접근 등에 스레드 풀들 많이 사용한다. (아래 그림)




 

The benefits of multithreaded programming

1. Responsiveness.
어떤 루틴을 실행하는 동시에 원하는 영역을 동시에 실행할 수 있다.

2. Resource sharing.
각 스레드마다 전역변수 혹은 포인터 등을 공유할 수 있게 되는데,
멀티 프로세스 프로그래밍이 필요할 때 훨씬 더 경제적인 방법으로 이를 수행할 수 있게된다.

3. Economy.
스레드는 프로세스 안에 속해있기 때문에, 운영체제에 의해 관리되어질 필요가 없다.
즉 관리 대상이 프로세스 이므로, multi-executing이 더욱 빠르고 경제적이다.

4. Scalability
Single-threaded process는 비록 프로세서가 다수일지라도 오직 하나의 루틴만 실행할 수 있다.
하지만 멀티스레딩은 병렬성을 더욱 증가시킨다.


Many - to - One model.




Many-to-One model은 user-level의 많은 thread들을 하나의 커널 thread로써 관리한다.
이것은 커널이 관여하지 않는 사용자단 멀티 스레딩 기법이다.
따라서 시스템 입장에서는 매우 효율적인 방법이다.
하지만 하나의 커널 스레드에 달려있는 프로세스이기 때문에,
실행되고 있는 thread 들이 block 등을 건다고 하면 프로세스 전체가 멈출 위험이 있다.




One-to-One model.




이경우는 커널이 하나의 프로세스의 모든 스레드를 관여하는 방법이다.
운영체제에서 정밀하게 관여해주기 때문에 user단의 multi-threading인 Many-to-One 기법보다
훨씬 concurrency(동시에 실행) 하며, 한 스레드가 다른 스레드의 실행을 block하거나 하는 경우가 없다.
하지만 스레드를 만듬과 동시에 시스템콜이 실행되어야 하기 때문에
운영체제의 퍼포먼스가 조금 떨어질 수 있다.



Many-to-Many model.




Many-to-One 과 One-to-One 의 중간 형태로,
One-to-One만큼 완벽한concurrency는 가지지 않지만
보다 효율적으로 리소스르 사용하기 때문에, 부담없이 thread를 만들 수 있다.
역시 병렬 멀티 프로세서에서 실행 가능하며,
Many-to-One처럼 스레드가 전체 프로세스를 block 시킬 위험도 없다.


To-level model.




여러가지 형태의 스레딩 모델을 사용하는 방법.

참고도서 : Operating system concepts - 8th edition. Silberschatz, Galvin, Gagne.