cs/운영체제

3강-2. Process2

Tomato_Coffee 2023. 11. 3. 10:53

Thread

Thread : 프로세스 내부에 cpu 수행 단위가 여러 개 있는 경우

  • 프로세스 하나에서 공유할 수 있는건 최대한 공유한다. (프로세스 상태, 각 종 자원)
  • 단, cpu 수행과 관련된 정보는 별도로 관리한다.(프로그램 카운터, 레지스터, stack 공간)

 

같은 일을 하는 프로세스를 여러개여러 개 하고 싶으면,  pc 만 여러 개를 두면 된다.(cpu 수행 단위를 여러 개 둔다.)-> thread

아래 이미지 참고

 

Thread를 사용할 때 장점.

예시 : 네이버 웹 화면을 띄울때, 스레드를 하나만 사용할 때는 화면이 전부 완성할 때까지는 창이 안 떠서 답답하다.

그러나 여러개의 스레드를 사용하게 되면 화면이 들어온 데이터를 즉각 반영해서 화면에 띄어준다.

  • 스레드를 사용하면 자원 낭비를 줄일 수 있다.
  • 하나에 프로세스에 스레드를 여러개 두면 성능향상, 자원 절약을 할 수 있다.
  • 병렬성 장점.

 

싱글 스레드vs멀티 스레드

위 이미지 중 binary용어 부분은 무시하자.

 

스레드 사용시 장점 정리

1. 응답성( ex : 멀티 스레드 웹-> 네트워크를 요청(i/o)한 스레드만 블록, display 하는 스레드는 continue)

2. 자원 공유

3. economy - 빠르다는 의미임. 스레드간에 cpu switching은 오버헤드가 적다.

4. MP Architecture : Multiprocessor architecture-> 병렬적으로 일을 할 수 있다.(ex : 행렬 연산을 효율적으로 할 수 있다.)

 

스레드 구현

  • Kernel  Threads
    • 스레드가 여러개 있다는 사실을 운영체제가 알고 있다.
    • 하나의 스레드에서 다른 스레드로 cpu가 넘어가는 것도 커널이 cpu 스케줄링하듯이 넘겨준다.
  • User Threads
    • 프로세스 안에 스레드가 여러개 있다는 사실은 운영체제는 모른다.
    • 유저 프로그램이 라이브러리의 도움을 받아서 스레드를 관리한다.