[운영체제] 스레드
스레드는 CPU 이용의 기본 단위이다. 스레드는 스레드 ID, 프로그램 카운터(pc), 레지스터 집합, 스택
으로 구성된다. 스레드는 같은 프로세스에 속한 다른 스레드들과 코드, 데이터 섹션 및 열린 파일이나 signal 같은 운영체제 자원들을 공유한다.
위 왼쪽 사진은 단일 스레드 프로세스를, 오른쪽은 다중 스레드 프로세스의 구조를 보여준다. 현재 거의 모든 애플리케이션들은 다중 스레드를 이용한다. 한 응용 프로그램에서 여러 개의 실행 흐름(스레드)을 가진 독립적인 프로세스로 구현된다.
다중 스레드 프로그램의 장점은 다음과 같다.
- 응답성 : 대화형 응용을 다중 스레드화 하면 사용자에 대한 응답성이 증가된다.
- 자원 공유 : 프로세스는 공유 메모리와 메세지 전달 기법을 통해서만 자원을 공유할 수 있다. 하지만, 하나의 프로세스에 속한 스레드들은 자동으로 프로세스의 자원들과 메모리를 공유한다.
- 경제성 : 프로세스 생성을 위해 메모리와 자원을 할당하는 것은 많은 비용이 든다. 스레드는 자신이 속한 프로세스의 자원들을 공유하기 때문에, 스레드를 생성하고 문맥 교환하는 것이 더 경제적이다. 또한, 문맥 교환은 프로세스 사이에서보다 스레드 사이에서 더 빠르다.
- 확장성 : 다중 처리기 구조에서는 각 스레드가 다른 처리기에서 병렬로 수행될 수 있으므로 위 장점들이 더 빛을 본다.
댓글남기기