- 스레드는 CPU 이용의 기본 단위이다.
- 스레드는 스레드 ID, 프로그램 카운터(PC), 레지스터 집합, 스택으로 구성된다.
- 스레드는 같은 프로세스에 속한 다른 스레드와 운영체제 자원들을 공유한다.
- 프로세스가 다수의 제어 스레드를 가진다면, 동시에 하나 이상의 작업을 수행할 수 있다.
동기
- 응용은 다중코어 시스템에서 처리 능력 향상
- 이런 응용은 다중 계산 코어를 사용해 다수의 CPU-집중 작업을 병렬로 처리
- 예) 웹 서버는 여러 개의 클라이언트들이 병행하게 접근
- 단일 프로세스 서버라면 한 번에 하나의 클라이언트만 서비스하므로 매우 긴 시간을 기다려야 함.
- 해결책은 서버에 서비스 요청이 들어오면, 프로세스는 그 요청을 수행할 별도의 프로세스를 생성하는 것.
- 그러나 프로세스 안에 여러 스레드를 만들어 나가는 것이 더 효율적
- 웹 서버가 다중 스레드화되면, 서버는 클라이언트의 요청을 listen하는 별도의 스레드를 생성
- 요청이 들어오면 다른 프로세스를 생성하는 것이 아니라, 요청을 서비스할 새로운 스레드를 생성하고 추가적인 요청을 listen하기 위한 작업을 재개한다.
- 대부분 운영체제 커널도 다중 스레드
- 예) 리눅스도 부트하는 동안 여러 커널 스레드가 생성됨.
- 데이터 마이닝, 그래픽 및 인공지능 등에서 CPU 중심의 최신 문제를 해결해야 하는 프로그래머는 병렬로 실행되는 솔루션을 설계하여 최신 다중 코어 시스템의 성능을 활용할 수 있음.
장점
다중 스레드 프로그래밍의 4가지 이점 benefits
1. 응답성
- 대화형 응용을 다중 스레드화 한다면,
- 응용 프로그램의 일부가 봉쇄되거나
- 응용프로그램이 긴 작업을 수행하더라도 프로그램의 수행이 계속되는 것을 허용
- -> 사용자에 대한 응답성 증가
- 단일 스레드 응용은 연산 완료시까지 응답 안함.
2. 자원 공유
- 프로세스는 공유 메모리와 메시지 전달 기법을 통해 자원 공유 -> 프로그래머의 명시적 처리
- 그러나 스레드는 자동으로 속한 프로세스의 자원과 메모리 공유
- 코드와 데이터 공유의 이점은 한 응용프로그램이 같은 주소 공간 내 여러 다른 스레드를 가질 수 있다는 점.
3. 경제성
- 프로세스 생성은 비용이 많이 듦
- 스레드 생성이 더 경제적 - 속한 프로세스의 자원을 공유하기 때문에
- 스레드 생성은 상대적으로 시간과 메모리를 덜 소비함
- 문맥 교환은 상대적으로 스레드 사이에서 더 빠름
4. 규모 적응성
- 다중 처리기 구조에서는 각 스레드가 다른 처리기에서 병렬로 수행 될 수 있음
- -> 다중 스레드의 이점이 다중 처리기 구조에서 더욱 증가
- 단일 스레드 프로세스는 처리기가 많아도 한 처리기에서만 실행
'운영체제' 카테고리의 다른 글
[운영체제] 스레드와 병행성_다중 스레드 모델 (0) | 2021.03.06 |
---|---|
[운영체제] 스레드와 병행성_다중 코어 프로그래밍 (0) | 2021.03.06 |
운영체제 구조 (0) | 2021.02.13 |