컴퓨터과학/운영체제

What is 쓰레드?

튼튼발자 2024. 5. 6. 12:37
728x90

운영체제 OS에서 프로세스는 태스크(task)와 쓰레드(thread)라는 두 특성으로 분리되어 관리된다.

Why use? -> 컴퓨터시스템 자원을 효율적으로 사용하고 응용 프로그램의 성능을 향상 시키기 위해서!!


1. 태스크(Task)는 무엇인가?

- 자원 컨테이너(Resource Container) : 사용자 정보와 시스템 정보등을 저장합니다.

- 멀티태스킹 : 하나의 프로세스는 여러개의 태스크를 포함할 수 있다.

2. 쓰레드(Thread)란 무엇인가?

- 코드를 실행하는 단위이다. 실행에 필요한 정보들을 포함한다.

- 멀티태스킹 : 하나의 프로세스 내에 여러 개의 쓰레드가 동시에 실행될 수 있다. -> 처리속도 향상

*멀티태스킹이란 한 번에 2가지 이상의 일을 동시에 처리하는 것으로 다중작업이라고 이해하면 편하다! 멀티태스킹이 가능한 프로세스의 쓰레드 들은 그 프로세스의 자원들을 공유한다!


단일 쓰레딩과 멀티쓰레딩

 

  • 단일프로세스 단일쓰레드

- 한 번에 하나의 작업만 처리할 수 있고, 멀티태스킹 지원이 안된다.
- CPU 사용률이 낮고, 메모리 사용량도 적다.

  • 단일프로세스 다수의 쓰레드

- 하나의 프로세스내에 여러개의 쓰레드를 가지고 있어 멀티태스킹이 가능하다.
- 멀티태스킹이 가능하므로 여러 작업을 동시에 처리할 수 있다.

  • 다수의 프로세스 프로세스당 하나의 쓰레드

- 각 프로세스는 하나의 쓰레드만 가지고 있어 프로세스 간 데이터 공유가 어렵다.
- 여러 프로세스를 사용하여 작업을 병렬 처리할 수 있고 따라서 성능이 향상된다.
- 각 프로세스가 독립적으로 실행되어 안전하지만 프로세스 간 통신이 어려울 수 있다.

  • 다수의 프로세스 프로세스 당 다수의 쓰레드

- 가장 높은 수준의 병렬처리와 멀티태스킹 성능을 제공한다.
- CPU사용률을 극대화하여 시스템 성능이 매우 높다.


단일 쓰레드와 멀티 쓰레드

멀티 쓰레드 환경에서 코드, 데이터, 파일은 모든 스레드가 공유하는 반면, 레지스터와 스택은 각 쓰레드마다 독립적으로 존재한다.

스택 : 함수 호출 시에 전달죄는 인자이다. 작업 후 되돌아갈 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간이다.

레지스터 : 쓰레드가 명령어의 어디가지 수행했는지에 대한 정보가 들어간다.

728x90