ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스레드(Threads)
    Computer Engineering/운영체제 2019. 7. 19. 00:47

    안녕하세요 dely입니다:)

    오늘은 저번 프로세스 글에서 문맥교환을 피하기 위한 방법으로 언급된

    스레드에 대해 정리해보겠습니다.

     

    - 스레드(Threads)란?

    스레드(Threads)는 경량 프로세스라고도 불리고, CPU 이용의 기본 단위입니다.

    현대의 프로세스는 다수의 제어 스레드를 가지고 있기 때문에 여러가지 작업을 할 수 있게 됩니다.(다중 스레드)

     

    스레드는 ID, 프로그램 카운터, 레지스터 집합, 스택으로 구성되어 있습니다.

    그리고 코드, 데이터, 파일, 신호와 같은 운영체제 자원들을 같은 프로세스에 속한 다른 스레드들과 공유하게 됩니다. 

     

    다중 스레드를 이용한 프로그래밍의 장점

    다중 스레드를 이용한 프로그래밍은 다음과 같은 장점이 있습니다.

     

    응답성(프로그램에서 큰 작업을 수행할 때 다른 스레드를 사용해 사용자와 상호작용 가능),

    자원 공유(하나의 프로세스 내 자료 공유를 함으로써 활용할 수 있는 스레드가 많아짐),

    경제성(프로세스 생성을 위해 각각 메모리와 자원을 할당하는 것보다 스레드끼리 프로세스 내 자원을 공유할 수 있으므로 경제적임),

    다중 처리기 구조의 활용(다중 처리기 구조에서 병렬로 수행될 수 있음)

     

    - 사용자 스레드와 커널 스레드

    스레드를 사용자 수준인지, 커널 수준인지에 따라 구별할 수 있습니다.

     

    사용자 스레드는 커널 위에서 지원되는 것으로 사용자 수준의 스레드 라이브러리에 의해 구현됩니다.

    커널의 개입 없이 사용자 수준에서 이용되기 때문에 생성과 관리가 빠릅니다.

     

    커널 스레드는 운영체제에 의해 직접 지원되는 것으로 사용자 스레드보다 생성과 관리가 느립니다.

    그러나 커널이 관리 하기 때문에 사용자 스레드에서는 할 수 없었던

    blocking system call, 즉 call이 완전히 수행될 때까지 반환(return)되지 않는 봉쇄형 시스템 콜 수행 시

    다른 스레드의 수행을 스케쥴 할 수 있습니다.

     

    - 다중 스레드 모델

    Many-to-One : 많은 사용자 수준 스레드를 하나의 커널 스레드로 맵함.(blocking system call 경우 병렬 수행 안됨)

    One-to-One : 각 사용자 스레드를 각각 하나의 커널 스레드로 맵함.

                           (Many-to-One보다 많은 병렬성, 그러나 오버헤드가 성능 저하 시킬 수 있음)

    Many-to-Many : 여러 개의 사용자 수준 스레드를 그보다 작거나 같은 수의 커널 스레드로 멀티플렉스 함.

                           (Many-to-One, One-to-One의 단점을 해결)

    반응형

    'Computer Engineering > 운영체제' 카테고리의 다른 글

    메모리 관리(Memory Management)  (0) 2019.08.18
    교착 상태(Deadlocks)  (0) 2019.08.17
    프로세스 동기화(Process Synchronization)  (0) 2019.08.16
    CPU 스케쥴링(CPU Scheduling)  (0) 2019.08.08
    프로세스(Process)  (0) 2019.07.13

    댓글

Designed by Tistory.