포시코딩

[운영체제] 3. 프로세스 관리 (2) - Thread 본문

CS (Computer Science)

[운영체제] 3. 프로세스 관리 (2) - Thread

포시 2023. 4. 28. 05:44
728x90

키워드

thread, 스레드

 

Thread(스레드)

3

  • 프로세스 내부의 CPU 수행 단위가 여러 개 있는 경우
  • 프로세스 하나에 CPU 수행 단위만 여러 개 두고 있는 것을 스레드라 부름
  • "A thread (or lightweight process) is a basic unit of CPU utilization"

 

구성

스레드가 독립적으로 가지는 부분

  • program counter
  • register set
  • stack space

 

thread 끼리 공유하는 부분(=task)

  • code section
  • data section
  • OS resources

전통적인 개념의 heavyweight process는 하나의 스레드를 가지고 있는 task로 볼 수 있다.

 

장점

  • 하나의 프로세스 안에 스레드를 여러 개 두게 되면 스레드 하나가 blocked(waiting) 상태일 때
    다른 스레드가 CPU를 잡고 실행(running)을 할 수 있어서 응답 시간이 빨라지는 장점이 존재
    -> 하나의 스레드가 다른 작업을 하는 동안 또 다른 스레드가 별도의 작업을 하여 사용자로 하여금 빠른 응답성을 제공
  • 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있음
  • 스레드를 사용하면 병렬성을 높일 수 있다.(CPU가 여러 개 달린 컴퓨터에서 누릴 수 있는 장점)

 

응답성(Responsiveness)

  • 사용자 입장에서 빠름
  • ex) 브라우저에서 웹사이트 요청 시 한 스레드가 이미지를 불러오는 동안 다른 스레드가 텍스트를 먼저 뿌려주는 걸 생각

 

자원 공유(Resource Sharing)

  • 똑같은 일을 하는 프로그램이 여러 개 있을 때 별도의 프로세스로 사용하기보단,
    하나의 프로세스로 만들고 그 안에 CPU 수행 단위만 여러 개를 두면 code, data, 각종 자원은 스레드가 공유하니
    자원을 효율적으로 쓰는 효과를 얻을 수 있다.

 

경제성(Economy)

  • 빠름(응답성과는 조금 다른)
  • 프로세스를 하나 만드는 행위는 오버헤드가 상당히 큼
    하지만 프로세스 안에 스레드를 하나 추가하는건 오버헤드가 크지 않음
  • 프로세스 간에 컨텍스트 스위치는 오버헤드가 크지만
    프로세스 내부에서 스레드 간에 CPU switching이 일어나는 건
    동일한 주소 공간을 쓰고 있기 때문에 상대적으로 간단하다. (몇 배로 차이)

 

Utilization of MP Architectures

  • MP(=Multi Processor)
  • 위 세가지(응답성, 자원공유, 경제성)는 CPU가 하나 있는 환경에서도 적용 가능한 얘기였다면
    네번째는 CPU가 여러 개 있는 환경에서 얻을 수 있는 장점을 얘기

 

구현

Kernel Threads

  • 프로세스 안에 스레드가 여러 개 있다는 사실을 운영체제가 알고 있음
  • 하나의 스레드에서 다른 스레드로 CPU가 넘어가는 것도 커널이 CPU 스케줄링을 하듯 넘겨줌

 

User Threads

  • 라이브러리를 통해 지원
  • 프로세스 안에 스레드가 여러 개 있다는 사실을 운영체제가 모름
  • 유저 프로그램이 스스로 여러 스레드를 관리(라이브러리의 지원을 받아)

 

Real-Time Threads

728x90