- 스레드의 개념
- 정의
프로세스의 코드에 정의된 절차에 따라 CPU 에 작업 요청을 하는 실행 단위
- 프로세스와의 차이
- 프로세스
실행에 서로 영향을 끼치는게 적기 때문에 약하게 연결됨
- 스레드
실행에 서로 영향을 끼치기 때문에 서로 강하게 연결됨
- 멀티태스크
여러 프로세스들을 말함
서로 독립적이며 데이터 주고 받기는 프로세스간 통신을 이용함
- 멀티스레드
한 프로세스 안에서의 스레드들이 동시에 작업하는 하는 경우
프로세스가 종료되면 프로세스 내의 스레드들도 강제 종료됨
변수나 파일 등을 공유하고 전역 변수나 함수 호출 등의 방법으로 스레드 간 통신
- 관련 용어
- 멀티스레드
운영체제가 프로세스 내 작업을 여러 개의 스레드로 분할하여 작업을 줄이는 프로세스 운영 기법
- 멀티태스킹
시 분할 기법
각 프로세스의 스레드에 시간을 잘게 나누어줌
운영체제가 CPU 에 전달하는 작업은 프로세스가 아니라 스레드
- 멀티프로세싱
CPU 를 여러 개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경
슈퍼스칼라 기법과 같음
- CPU 멀티스레드
하드웨어적인 방법으로 한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 기법
- 스레드의 탄생 배경
처음에는 프로세스 하나만 실행함
CPU 와 프로그래밍의 발전으로 멀티스레드 지원
- 멀티스레드의 구조
- 구조
하나의 프로세스 안에서 구성됨
하나의 정적 영역이 있으며 여러개의 동적 영역이 하나의 정적 영역을 공유함
- 장단점
- 장점
한 스레드가 입출력으로 작업이 진행되지 않더라도 다른 스레드가 작업을 계속함으로 응답성이 빨라짐
프로세스가 가진 자원을 모든 스레드가 공유하게 되므로 작업을 원활하게 작업을 원활하게 진행할 수 있음
여러 개의 프로세스 생성 보다 불필요한 자원 중복 막음으로써 시스템 효율 향상
멀티 코어 사용 시 다중 CPU 가 멀티 스레드를 동시에 처리하여 CPU 사용량이 증가하고 프로세스의 처리 시간이 단축됨
- 단점
모든 스레드가 자원을 공유하기 때문에 한 스레드에 문제생기면 전체 프로세스에 영향 미침
- 모델
- 사용자 스레드
라이브러리에 의해 구현된 일반적인 스레드
커널 입장에서는 하나의 스레드
여러 개의 스레드가 하나의 커널 스레드와 연결되기 때문에 커널 스레드가 입출력 작업을 위해 대기 상태에 들어가면 모든 사용자 스레드가 같이 대기함
한 프로세스의 타임 슬라이스를 여러 스레드가 공유하기 때문에 여러 개의 CPU 동시 사용 불가능
- 커널 스레드
커널이 멀티스레드를 지원하는 방식
사용자 스레드와 반대의 장단점 지님
- 멀티레벨 스레드
사용자 스레드와 커널 스레드를 혼합한 방식
사용자 스레드와 커널 스레드의 장단점 모두 가짐
커널 스레드 사용 시 문맥 교환으로 오버헤드 있기 때문에 빠르게 움직여야 하는 스레드는 사용자, 안정적으로 움직여야 하는 스레드는 커널 스레드로 작동