스레드(Thread) 상태변화의 특징

프로세스에서 제어만 분리해 실행한 단위가 스레드(Thread)이다. 일반적으로 프로세스 한 개는 스레드 1개 이상으로 나눈다. 이때 스레드는 다른 프로시저를 호출해 이에 합당한 실행을 기록하는 것이므로 별도의 스택이 필요하다.
프로그램 카운터가 독립적이면 동일한 프로세스의 스레드의 코드는 동일 부분 혹은 다른 부분으로 실행한다. 프로세스 속성 일부가 스레드에 포함된 경우는 경량 프로세스(LWP)라 하며 한 개의 스레드가 한 개의 프로세스일 때는 중량 프로세스(HWP)라 한다.
스레드는 프로세스를 안에서 내부 실행 단위를 말하며 프로그램을 효율적으로 실행하기 위해서 여러 변화를 겪는다. 이런 스레드가 프로세서에 따라서 처리되는 과정을 관리해 자원을 공유하는 것과 함께 유지할 때 필수적 요소이다.
레드는 프로세스와 비슷하게 신규, 준비, 실행, 보류와 대기, 종료 상태로 진행된다. 프로세스에 포함된 스레드는 순서대로 실행되며 이에 해당한 스레드 정보는 저장하는 레지스터와 스택에 의해 존재한다.
스레드 상태변화를 각 단위별로 살펴보면 다음과 같다.

- 첫째 신규(New)는 스레드는 생성되었지만, 실행될 준비가 되지 않은 상태를 말한다.
- 둘째 실행 중(Running)은 프로세서에 명령받은 스레드가 그 명령을 수행하는 상태이다. 다시 말해서 CPU를 할당받은 스레드가 adfuddj를 실행하는 상태이다.
- 셋째 준비(Ready)는 실행되기를 기다리는 스레드 상태로 프로세서에서 실행 신호를 기다리는 상태이다.
- 넷째 대기(Waiting)는 스레드가 특정 상태이거나 이벤트 상태를 기다리면서 대기하는 상태로 이때 스레드는 입출력에 관한 작업이 완료되었거나 다른 스레드와 동기화를 기다린다.
- 마지막으로 완료(Terminated)는 스레드가 모든 작업을 마친 후 종료된 상태이다.
스레드는 상태별로 전환할 수 있다. 가령 프로세서가 이용할 수 있는 준비 상태인 스레드 가운데 하나 실행으로 전환되며, 이미 실행되고 있던 상태에서 특정 이벤트 혹은 데이터를 기다리기 위해서 실행에서 대기 상태로 전환한다.
스레드의 상태변화의 특징은 크게 경제성과 독립적 상태 관리, 자원 공유이다.

- 첫째 스레드끼리의 문맥 교환은 프로세스 사이의 문맥 교환보다 오버헤드가 적다. 운영체제는 프로세스가 스택과 레지스터를 제공하므로 프로세스와 공유한 자원을 초기화할 필요가 없다. 이런 측면에서 프로세스를 생성하거나 종료할 때 들어가는 오버헤드보다 적다고 할 수 있다. 정리해 보면 스레드 한 개가 다른 스레드의 스택을 쓰거나 읽을 수 있기에 프로세스처럼 독립적이지 않아도 되기에 스레드에서 문맥을 교환한다는 것은 자원을 더 효율적으로 사용할 수 있다는 장점이다.
- 둘째 스레드는 그 자체로 독립 실행 상태를 가지면서 하나의 스레드가 프로세서의 요구에 따라 대기 혹은 진행 상태로 전환할 수 있다. 즉 같은 프로세스 안에서 다른 스레드가 실행 혹은 대기하는 독립적 상태를 유지한다.
마지막으로 각각의 스레드들은 자신들의 코드와 전역 데이터, 힘 영역과 같은 자원을 공유한다. 이를 통해 자원을 생성하고 중복을 줄여 성능을 향상한다. 물론 시스템 간 동시성을 지원하지 않는다는 단점도 있다.

좋아요와 구독은
사랑입니다.
'레포트 놀이터' 카테고리의 다른 글
호메로스의 서사시 <일리아스> 3권 (0) | 2025.04.09 |
---|---|
[방통대]중간과제물 : 생활과 건강 1 (2) | 2025.03.24 |
[방통대]중간과제물 : 생활과 건강 1 (4) | 2025.03.20 |
합법칙적 조건설과 객관적 귀속이론에 대하여 (4) | 2025.03.20 |
[방통대]중간과제물 : 빈곤론 1 (6) | 2025.03.20 |