본문 바로가기
OS

Threads

by tovantablack 2020. 8. 2.
728x90
728x90

개발 배경: 지금까지의 프로세스는 단일 쓰레드로 동작하는 것을 가정했으나, 대부분의 현대 운영체제는 프로세스의 개념을 확장하여 한 프로세스가 다수의 실행 쓰레드를 가질 수 있도록 허용한다.

단일 스레드: 하나의 프로세스에 하나의 스레드 존재

다중 스레드: 하나 이상의 스레드 존재

 

Thread: 하나의 프로세스 내에서 병행성을 증대시키기 위한 메커니즘으로, 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위. 프로세스의 역할을 담당한다.

= 독립적인 스케줄링의 최소 단위, 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능함

=> 프로세스의 일부 특성을 갖고 있기 때문에 경량 프로세스라고도 한다.

 

프로세스와 쓰레드는 여러 개를 만들어서 따로 실행하는 방식(프로세스)과, 내부에서 쪼개서 일을 분담하는 방식(쓰레드)에서 차이가 있다. 이처럼 스레드에서는 문맥 교환과 통신에 드는 비용이 안 들기 때문에 프로세스보다 효율적이라고 하는 것인데, 이렇게 분리가 되지 않는다는 점 때문에 서로에게 영향을 끼칠 수 있기 때문에 스레드는 프로세스에 비해 안정성과 보안성이 떨어지는 것도 사실이다.

 

스레드의 분류 : 사용자/커널 

사용자 수준의 스레드는 사용자가 만든 라이브러리를 사용하여 스레드를 운용하는 것으로 속도는 빠르지만 구현이 어렵고

커널 수준의 스레드는 운영체제의 커널에 의해 스레드를 운용하는데 구현은 쉽지만 속도가 느리다.

 

스레드 사용의 장점

- 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성을 증진시킬 수 있다.

- 하드웨어, 운영체제의 성능과 응용프로그램의 처리율을 향상시킬 수 있다.

- 응용 프로그램의 응답시간을 단축시킬 수 있다.

- 실행 환경을 공유시켜 기억장소 및 자원의 낭비가 줄어든다.

- 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신한다.

 

멀티 쓰레딩 Multi-Threading : 프로세스 내의 쓰레드들은 프로세스 상태와 함께 메모리나 기타 자원들을 공유하는데, 문맥 교환(context switching) 시에 프로세스 간 전환보다 효율적이다.

728x90
728x90

댓글