2022. 4. 20. 21:42ㆍ코딩공부/ComputerScience
- 쓰레드란 프로그램(프로세스) 실행의 단위이며
하나의 프로세스는 여러개의 쓰레드로 구성이 가능하다. - 하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다.
- 프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며
실행 상태가 변할때마다 쓰레드 문맥교환(context switching)을 수행한다. - 각 쓰레드별로 자신만의 스택과 레지스터를 가진다.

쓰레드(Thread)의 장점
- 쓰레드는 프로세스보다 생성 및 종료시간, 쓰레드간 전환시간이 짧다.
- 쓰레드는 프로세스의 메모리, 자원등을 공유하므로 커널의 도움없이 상호간에 통신이 가능하다.
단일 스레드
- 하나의 프로세스에서 하나의 스레드 실행
- 하나의 레지스터와 스택으로 표현
장점 :
자원 접근에 대한 동기화를 신경쓰지 않아도 된다.
여러 개의 스레드가 공유된 자원을 사용할 경우 각 스레드가 원하는 결과를 얻게 하려면
공용 자원에 대한 접근이 통제되어야 하며 이 작업은 프로그래머에게 많은 노력을 요구하고 비용을 발생시킨다.
단일 스레드 모델에서는 이러한 작업이 필요하지 않다.
단점:
프로세서를 최대한 활용하게 하려면 cluster 모듈을 사용하거나 외부에서 여러 개의 프로그램 인스턴스를 실행시키는 방법을 사용해야 한다.
이 때 고려해야할 문제가 있는데, 바로 다수의 프로그램 인스턴스가 어떻게 상태를 공유할 것인가에 대한 문제다.
사실 이것은 멀티 스레드 환경의 서버 프로그램도 확장성을 확보하기 위해 풀어야 할 숙제이긴 하다.
단순하고 빠른 메모리 기반 NoSQL 데이터 베이스인 Redist가 좋은 고려대상이다.
하지만 서버 프로그램 인스턴스 간 상태 공유를 최소화하거나 가능하면 없애는 방향으로 아키텍처를 설계하는 것이 가장 바람직한 방법이라고 한다.
멀티 스레드
- 프로그램을 다수의 실행 단위로 나누어 실행
- 프로세스 내에서 자원을 공유하여 자원생성과 관리의 중복을 최소화
- 서버가 많은 요청을 효율적으로 수행할 수 있는 환경을 제공
- 각각의 스레드가 고유의 레지스터와 스택으로 표현됨
장점:
1) 새로운 프로세스를 생성하는 것보다 기존 프로세스에서 스레드를 생성하는 것이 빠르다.
2) 프로세스의 자원과 상태를 공유하여 효율적으로 운영이 가능하다
3) 프로세스의 문맥교환보다 스레드의 문맥교환이 더 빠르다.
단점:
1) 하나의 스레드만 실행중일 때에는 실행시간이 되려 지연될 수 있다.
2) 멀티 스레딩을 위해 운영체제의 지원이 필요하다.
3) 스레드 스케쥴링을 신경써야 한다.
참고자료
'코딩공부 > ComputerScience' 카테고리의 다른 글
HTTPS란? (0) | 2022.04.13 |
---|---|
[운영체제] 프로세스 생성 과정 (0) | 2022.04.13 |
[한권으로 읽는 컴퓨터 구조와 프로그래밍] 저수준 I/O(~p.237), 네트워킹 (0) | 2022.02.08 |
[한권으로 읽는 컴퓨터 구조와 프로그래밍] 인터럽트, 상대 주소 지정 (0) | 2022.02.02 |
[한권으로 읽는 컴퓨터 구조와 프로그래밍] 비트를 처리하기 위한 하드웨어 (0) | 2022.01.26 |