728x90
스레드란
: CPU 사용의 기본 단위를 나타내며 동일한 프로세스에 속하는 스레드는 코드 및 데이터를 포함하여 많은 프로세스 자원을 공유한다.
멀티 스레드 응용 프로그램의 이점
- 응답정
- 자원공유
- 경제성
- 확장성
병행성과 병렬성
- 병행성: 단일 CPU가 있는 시스템에서 여러 스레드가 진행 중일 경우
- 병렬성: 멀티 코어 시스템에서 여러 스레드가 동시에 진행 중인 경우
다중 스레드 응용 프로그램 설계 도전과제
- 작업 분할: 스레드별 작업을 분할하는 기준 모호
- 균형 조정: 스레드간 작업량이 균등해야함
- 서로 다른 스레드 간 데이터 분할
- 데이터 종속성 식별
- 테스트 및 디버깅 어려움
데이터 병렬 처리 vs 작업 병렬 처리
- 데이터 병렬 처리: 동일한 데이터 부분 집합을 다른 컴퓨팅 코어에 분산시키고 각 코어에서는 동일한 연산 수행
- 작업 병렬 처리: 여러 코어에 데이터가 아니라 작업을 분산시키고 각 작업은 고유한 연한을 실행
사용자 스레드와 커널 스레드의 매핑
- 사용자 응용 프로그램은 사용자 수준 스레드를 생성하여 궁극적으로 CPU에서 실행 되도록 커널 스레드에 매핑되어야 한다.
- 다대일 모델
- 일대일 모델
- 다대다 모델
스레드 라이브러리
- Windows: 윈도우 전용
- Pthreads: UNIX, Linux, macOS -> POSIX호환 시스템
- Java threading: JVM 지원 시스템
암묵적 스레딩
- 스레드가 아닌 Task로 식별
- 언어 또는 API 프레임워크가 스레드를 만들고 관리
- Thread pool, fork join, GCD 의 접근 방식이 있음
스레드 종료
- 비동기 취소
: 스레드가 업데이트를 수행하는 중이라도 스레드를 즉시 중지 - 지연취소
: 스레드가 종료해야 한다고 통지하지만 스레드는 질서 정연하게 종료 - 대부분 비동기 종료보다 지연 취소를 선호
Linux 의 특이한점
프로세스와 스레드를 구분하지 않고 각각을 태스크라 한다. Linux clon() 시스템 콜을 사용하여 프로세스와 비슷하거나 스레드와 비슷한 태스크를 만들 수 있다.
728x90
'Computer Science > Operating System' 카테고리의 다른 글
🌌운영체제 구조 (0) | 2020.06.17 |
---|---|
🚗Process (0) | 2020.06.16 |
🚀CPU 스케줄링 알고리즘 (0) | 2020.06.16 |
OS #1 - Operating System Introduction. (0) | 2020.04.20 |
댓글