본문 바로가기
💻 Computer Science/- Operating System

[운영체제] 8. 스레드의 개념과 상태 변화

by Wonit 2019. 12. 9.

스레드의 개념과 상태 변화

스레드의 개념

 

프로세스에는 두 가지 특성이 존재한다 자원, 제어. 이 중 제어 부분만 분리한 실행 단위를 스레드(Thread)라고 한다.

 

프로세스는 실행중인 프로그램 객체 자체를 의미하는 것이고 스레드는 이 실행의 흐름을 이야기 한다.

 

스레드는 프로세스의 직접 실행 정보를 제외하고 나머지 프로세스 관리 정보를 공유한다.

  • 프로세스 직접 실행 정보: PC, SP, 스택, 지역 데이터, 문맥 정보 독립적 소유

    각기 다른 프로시저를 호출하고 다른 실행을 기록하기 때문에 별도의 공간 필요

  • 프로세스 관리 정보: 코드, 전역 데이터, 힙 공유

    스레드들이 동시에 코드의 동일한 부분을 실행할 수 있어야 하므로 공유된 공간 필요

 

경량 프로세스 LWP,Light_Weight_Process

스레드 중에서 프로세스의 속성 일부가 들어있는 것.

 

중량 프로세스 HWP,Heavy_Weight_Process

스레드 하나에 프로세스 하나인 전통적인 경우.

 

특징 1: 응용 프로그램에는 적어도 하나의 프로세스가 있고, 프로세스에는 스레드가 한 개 이상이 존재한다.
특징 2: 같은 프로세스의 스레드들은 동일한 주소 공간을 공유한다

 

장점

  • 사용자 응답성 증가

    응용 프로그램의 일부분을 봉쇄하거나 긴 작업을 수행하더라도 병령 프로그래밍으로 프로그램을 계속 수행할 수 있어 사용자 응답성이 늘어난다

  • 프로세스의 자원과 메모리 공유 가능

    프로세스의 자원을 (코드, 전역 데이터, 힙) 여러 스레드가 공유하므로 응용프로그램 하나가 동일한 주소 공간에서 스레드를 여러 개 실행하여 시스템을 향상 시킬 수 있다.

  • 경제성이 좋음

    프로세스를 생성하는 것보다 스레드를 생성하여 문맥을 교환하면 오버헤드가 줄어든다. 또한 프로세스를 여러개 생성했을 시에 생기는 프로세스 자원의 중복을 최소화 할 수 있는 점이 있다.

  • 다중 처리(멀티 프로세싱)으로 성능과 효율 향상

    각 스레드를 여러 프로세서에서 병렬로 실행하여 성능과 효율성을 높일 수 있다.

단일 스레드와 다중(멀티)스레드

위 그림에 있는 (a)같은 경우 ex) 도스 는 아직 스레드의 개념이 탄생하기 전이라 불확실하다.

스레드의 특성

특징 1: 프로그램 하나를 여러 실행 단위로 쪼개어 실행한다는 측면은 다증 처리(다중 프로세싱)과 비슷하다.
특징 2: 동일 프로세스의 스레드는 자원을 공유하므로 자원 생성과 관리의 중복성을 최소화 한다.
특징 3: 각 스레드는 커널이 개입하지 않고 독립적으로 실행할 수 있어서 서버에 많은 요청을 효과적으로 처리할 수 있다.
특징 4: 프로세스의 생성과 종료 과정에 매우 유용하다.
따라서 스레드를 활용한다면 프로그램을 변경하지 않고 스레드를 병렬로 처리하여 효율을 극대화 할 수 있다.

 

스레드의 사용 예

현대의 수 많은 프로그램들은 다중 스레드를 지원하여 스레드의 개념을 사용자 수준에서 적용 시킨다.

 

예를 들어 워드 편집기 같은 경우 우리는 기능을 크게 3가지로 나눌 수 있다.

  1. 글 쓰기

    사용자의 입력에 응답을 하는 스레드

  2. 이미지나 텍스트를 화면에 띄우기

    이미지나 텍스트를 보여주는 스레드

  3. 자동 저장 기능

    지정된 시간을 기다리면서 계속 저장을 하는 스레드.

 

스레드의 상태 변화

 

스레드는 프로세스와 공통점이 상당히 많다. 프로세스처럼 준비, 실행, 대기, 종료 상태가 있으며 프로세스에 존재하는 스레드는 순차적으로 실행하며, 해당 스레드의 정보를 저장하는 레지스터스택이 있다.

 

보통 프로세스를 생성하면 해당 프로세스의 스레드도 함께 생성이 되는데, 스레드 생성에서는 운영체제가 부모 프로세스와 공유할 자원을 초기화 하는 수고로움이 없다.

스레드의 연속성

또한 스레드의 장점은 한 스레드가 대기 상태로 변할 때 프로세스를 대기 상태로 만들지 않는다.

스레드 제어 블록

프로세스 제어 블록 PCB
스레드 제어 블록 PCB

프로세스 제어 블록이 존재하듯이 스레드 제어 블록도 TCB에 정보를 저장한다.

그런데 프로세스는 스레드를 한 개 이상 가질 수 있으므로, 결국 PCBTCB의 리스트를 가리킨다

TCB 내용

  • 실행 상태

    프로세서 레지스터, 프로그램 카운터, 스택 포인터

  • 스케쥴링 정보

    상태(실행, 준비, 대기), 우선순위, 프로세서 시간.

  • 계정 정보

  • 스케줄링 규용 다양한 포인터

  • 프로세스 제어 블록^PCB^를 포함하는 포인터

댓글0