Develop+

스레드의 종류와 정의/분류 본문

운영체제

스레드의 종류와 정의/분류

Sunny Buddy 2021. 1. 3. 21:52
728x90

스레드(thread)

실행중인 프로그램
프로세스 내에서의 작업 단위로 시스템으로부터 여러 자원을 할당 받아 실행하는 단위이다.
순차적으로 실행되는 명령어들은 하나의 실로 꿸 수 있기 때문에 실(thread)이라고 표현한다.

종류

단일 스레드 프로세스

  • 코드, 데이터, 파일은 같이 쓰지만 한개의 레지스터와 스텍을 가진다.

다중 스레드 프로세스

  • 단일 스레드와 같이 코드 데이터 파일은 같이 쓰지만 여러 스레드가 각각 레지스터와 스텍을 가지고있다.

정의

  • 프로세스의 일부 특성을 가진 경량(light weight) 프로세스이다.
  • 스레드 기반 시스템에서는 스레드가 독립적인 스케줄링의 최소 단위로 프로세스의 역할을 담당
  • 운영체제 및 하드웨어 성능과 처리율을 향상시킬 수 있음
  • 응답시간을 단축시킬 수 있음
  • 프로세스들 간의 통신이 향상 됨

분류

사용자 수준의 스레드

  • 사용자가 만든 라이브러리를 사용해 스레드를 이용
  • 속도는 빠르지만 구현의 어려움이 있음

커널 수준의 스레드

  • 운영제제의 커널에 의해 스레드를 운용한다.
  • 구현이 쉽지만 속도가 느림

 

문맥교환(context switching)

사용중인 CPU를 사용하도록 하기 위해 프로세스의 상태 정보를 보관하고, 새로운 프로세스의 상태 정보를 적재한 후 CPU 를 할당하여 실행되도록 하는 작업.
 
프로세스 A가 사용중이던 cpu를 프로세스B가 급하게 사용해야 한다면 A의 정보를 가진 PCB를 RAM에 저장하고 B의 PCB를 cpu에 적재하여 B프로세스를 실행.

컨텍스트 스윗칭(문맥 교환)은 빈번하게 일어나게 되면 오버헤드가 크게 발생하여 좋지 않다.
728x90