[OS] 3. 스레드

신명철·2022년 5월 29일
0

OS

목록 보기
21/27

스레드

  • 스레드는 CPU의 실행 단위가 여러개가 있는 경우 그 실행의 기본 단위를 말한다.
  • 하나의 프로세스에 여러 개의 CPU 수행 단위를 두고 있는 것을 스레드라고 말함.
  • 프로세스는 메모리에 독립적으로 할당받기 때문에 여러 개의 프로세스를 띄우면 메모리 공간이 낭비된다. 이러한 단점을 개선하기 위해서 스레드를 도입했다. -> 더 가볍다
  • 스레드는 자신의 수행 위치를 파악해야 하고 독립적으로 일을 수행하기 때문에 스레드 마다 PC register와 Stack을 가지고 있다.

PCB와 스레드

  • 스레드는 PCB에 CPU와 관련된 정보들을 별도로 가지고 있는다.

스레드의 구성

  • PC
  • register set
  • stack space

스레드가 동료 스레드와 공유하는 부분 (= task 라고 칭함)

  • data section
  • code section
  • OS resources

스레드의 장점

  1. 응답성
    • 다중 스레드로 구성된 task 구조에서는 하나의 서버 스레드가 blocked(waiting) 상태인 동안에도 동일한 task 내 다른 스레드가 running 되어 빠르게 처리할 수 있다. -> 응답시간이 빨라짐
    • 병렬성을 높일 수 있다.
    • e.g) multi-threaded Web: 페이지를 띄울 때 네트워크 통신이 필요한 부분을 처리하는 스레드가 blocked 되어도 다른 스레드가 나머지 html 문서를 읽어서 페이지를 띄어줌
  2. 자원 공유
    • 자원을 절약할 수 있다. -> 독립적인 메모리를 할당받는 프로세스를 사용하는 것보다 메모리 사용량이 줄어듦
  3. 효율성
    • 프로세스를 만드는 비용은 크고, context switching 오버헤드를 줄일 수 있다.
    • 동일한 일을 수행하는 다중 스레드가 협력해 높은 처리율과 성능 향상을 얻을 수 있다.
    • e.g) Solaris 같은 경우 각각 프로세스가 30배/5배 더 많이 걸린다.
  4. 다중 CPU(multi-processor)에서의 효율성
    • 다른 CPU에서의 각각의 스레드들은 병렬적으로 일을 할 수 있다. -> 더 빠른 결과값을 얻을 수 있음
profile
내 머릿속 지우개

0개의 댓글