운영체제(OS) & Network

쓰레드(Thread)

jih0ssang 2023. 9. 14. 16:08

목차

     

     

    쓰레드

    구성

    공유되는 영역

    • Program Counter(PC): 쓰레드가 명령어의 어디까지 수행하였는지 순서를 나타낸다.
    • register: 쓰레드가 어디까지 수행했는지 정보 저장
    • stack: 함수 호출 , 변수 저장 등에 사용되는 메모리 공간(=stack)이 독립적이라는 것은 독립적으로 함수 호출이 가능하다는 것이다.

    공유되지 않는 영역

    • code 
    • data
    • OS resources

     

    EX 1)

    • 예외로 Chrome 브라우저는 각각의 창을 별도의 프로세스로 실행하는 멀티 프로세스 아키텍처를 채택한다. 이것은 확장 프로그램의 충돌로부터 브라우저를 보호하기 위한 성능 최적화 설계를 위함이다.

    EX 2)

    • 한 프로세스에서 특정 작업(EX. i/o)을 요청하는 동안, 사용자들에게 대기 페이지(로딩중)를 보여주어야 한다.
    • 즉, 하나의 스레드가 blocked (waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 하는 듯한 효과를 보여줄 수 있다.(사용 친화적)

    장점

    • 멀티 쓰레딩
      • 프로세스를 이용하여 동시에 처리하던 일을 쓰레드로 구현할 경우, 메모리 공간과 시스템 자원 소모 감소 효과
      • 프로세스에 비해 쓰레드는 Heap을 공유하므로, 통신도 용이
      • ex) 한 스레드가 i/o 작업으로 인해, Blocked 되면 다른 스레드가 display로 대기페이지 보여주는 작업 실행
      • 문제점: 프로세스 간 공유하는 자원이 없으므로 동일한 자원에 동시에 접근하는 일이 없었지만,
        멀티 쓰레딩은 Heap을 공유하므로 문제가 생길 우려 있음

      •  
    • 멀티 쓰레딩: 한 스레드가 i/o 작업으로 인해, Blocked 되면 다른 스레드가 display로 대기페이지 보여주는 작업을 실행)
    • 리소스 공유
    • 경제적 (EX. 멀티 프로세스는 컨텍스트 스위칭으로 인한 오버헤드 발생하지만 멀티 쓰레드는 리소스 공유하므로 발생 부담 감소)
    • 멀티 프로세서(CPU가 여러 개인 환경)에서 여러 쓰레드를 여러 CPU에 배치하면 병렬구조로 작업 처리하여 수행 속도 빠름

    멀티 프로세스 vs 멀티 쓰레드

    멀티 프로세스

    • 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 끼치지 않는다.
    • 많은 메모리 공간과 CPU 시간 차지
    • ex) Chrome같은 경우, 확장 프로그램과의 충돌로 인해 전체의 프로그램이 종료되지 않기 위해 멀티 프로세싱 방식을 채택하고 있음.

    멀티 쓰레드

    • 멀티 프로세스보다 메모리 공간 차지 적음
    • Context Switch 빠름
    • 오류로 인해 하나의 스레드가 종료되면 전체의 스레드가 종료될 수 있다는 점
    • 동기화 문제
    • 여러 쓰레드가 동일한 리소스 접근 시 문제 우려

    쓰레드 구현 방식

    커널 쓰레드(Kernel Threads)

    • OS가 각 쓰레드들의 존재를 알게 구현
    • OS가 한 쓰레드에서 다른 쓰레드에게 CPU를 넘기기 가능

     

    저 쓰레드(User Threads)

    • OS가 쓰레드의 존재를 모르게 구현
    • OS가 한 프로세스에 CPU를 주면 알아서 내부적으로 나눠서 씀

     

    '운영체제(OS) & Network' 카테고리의 다른 글

    메모리  (0) 2023.09.18
    프로세스(Process) (1)  (0) 2023.09.18
    스케줄러(Scheduler)  (0) 2023.09.13
    프로세스(Process) (2)  (0) 2023.09.13
    데드락(Deadlock)  (0) 2023.09.05