[운영체제] 쓰레드

Junseo Kim·2020년 9월 28일
0

운영체제 공부

목록 보기
3/10

Thread

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

같은 일을 하는 프로세스를 여러개를 실행시키고 싶을 때 하나하나 주소 공간(code | data | stack)을 만드는 것이 아니라 주소 공간은 하나만 띄워놓고(별도의 주소 공간을 만드는 것보다 쓰레드를 만드는 것이 훨씬 가볍다) 프로세스마다 다른 부분의 코드를 실행할 수 있게 해준다. 이때 운영체제의 PCB에도 각 쓰레드 별로 register에 어떤 값이 있는지, PC가 code의 어디를 가리키고 있는지를 별도로 저장하고 있게 된다.

Thread 별로 각자 가지고 있는 것

  • PCB의 PC(program counter)
  • PCB의 register set
  • 주소 공간의 stack

Thread 끼리 공유하는 부분

  • 주소 공간의 code
  • 주소 공간의 data
  • 운영체제의 resources

Thread의 장점

  • 응답성: 쓰레드 별로 역할을 나누어 작업을 수행하기 때문에 빠르다(비동기식 입출력이라고 볼 수 있음) 다중 쓰레드인 경우 하나의 쓰레드가 blocked 상태여도 다른 쓰레드가 running 할 수 있다. -> 응답 시간이 빨라짐

  • 자원 공유: 같은 일을 할 때 프로세스를 각각 만드는 것보다 하나의 프로세스에 여러 쓰레드를 사용하는 것이 메모리가 적게 든다.

  • 경제성: 프로세스를 하나 만들 때는 overhead가 크지만, 프로세스 내부에 쓰레드를 하나 생성하는 것은 overhead가 크지 않다. context switch도 프로세스에서 프로세스로 넘어가기 때문에 overhead가 크지만 한 프로세스 내부에서 쓰레드 간에 CPU switch가 일어나는 것은 overhead가 크지 않다.(동일한 주소공간 사용하기 때문)

  • CPU가 여러 개인 환경에서는 각각 쓰레드가 서로 다른 CPU에서 병렬적으로 작업을 하여 더 빠르다.

0개의 댓글