#개요
: CPU 이용 기본 단위
여러 작업하는 응용프로그램 -> 각 작업 별 스레드 생성 + 구현
*장점
프로세스 생성은 스레드 생성에 비해 할 일 ↑ + 시간 ↑
=> 스레드 사용 시 코드 간결 + 효율 ↑
ex. 워드 프로세서
(그래픽 표시 스레드/ 키보드 입력 받는 스레드/ 철자법과 문제 체크 스레드)
*다중스레드 서버 아키텍처
ex. 웹 서버
클라이언트 요청을 listen하는 별도 스레드 생성
요청 -> 요청 서비스할 새로운 스레드 생성
대부분의 현대 응용프로그램은 다중스레드 사용
공유: 코드와 데이터 섹션, 자원(열린 파일 OR 신호)
각자 소유: 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택
#이점
-응답성(Responsiveness)
: 프로세스의 일부가 블록 되더라도 계속 실행 가능O
사용자 인터페이스 기능에 유용
-자원 공유(Resource Sharing)
: 스레드는 공유 메모리나 메시지 전달 사용보다 더 쉽게 프로세스의 자원 공유
-경제성(Economy)
: 스레드 생성은 프로세스 생성보다 비용 ↓
+ 스레드 교환도 문맥 교환의 오버헤드가 더 ↓
-확장성(Scalability)
: 프로세스는 다중처리기 아키텍처의 이점 활용 가능O
#다중코어 프로그래밍
다중코어 OR 다중처리기 시스템 위한 프로그래머 도전
(테스크 식별/ 균형 맞추기/ 균형 쪼개기/ 데이터 의존성/ 검증 및 디버깅)
*병렬 수행
: 둘 이상의 태스크를 동시에 실행할 수 있는 시스템
-데이터 병렬 수행
: 동일한 데이터 일부 여러 코어에 분배 + 각 코어 동일한 연산 수행
-태스크 병렬 수행
: 코어에 스레드 분배 + 각 스레드 자신만의 연산 수행
스레드 수 ↑ -> 스레드 위한 컴퓨터 구조의 지원 ↑
*병행 수행
: 둘 이상의 태스크가 진행할 수 있도록 지원
ㄴ하나의 처리기/코어 스케줄러
#스레드 라이브러리
: 스레드 생성하고 관리할 수 있는 API를 프로그래머에게 제공
*2가지 구현 방법
-완전히 사용자 공간에서만 라이브러리 제공
: 커널의 지원 X/ 모든 코드와 자료구조는 사용자 공간에 존재
/ 라이브러리 함수 호출 -> 지역 함수 호출
-OS에 의해 지원되는 커널 수준 라이브러리
: 모든 코드와 자료구조는 커널 공간에 존재
/ 라이브러리 함수 호출 -> 시스템 콜 호출
#Pthreads
: 사용자 수준 OR 커널 수준에서 제공
스레드 생성과 동기화를 위한 POSIX standard API. 명세, not 구현
API: thread library 작동에 대해 명시
구현: 라이브러리 개발자의 몫
UNIX 운영체제에서는 (Solaris, Linux, Mac Os X) 대부분 구현됨
#Java 스레드
: API는 직접 스레드 생성과 관리
JVM은 호스트 운영체제에서 구현
-> 호스트 운영체제에서 제공하는 스레드 라이브러리를 사용하여 구현
public interfance Runnable { public abstract void run(); }
#다중 스레드 모델
*사용자 스레드
: 사용자 수준 스레드 라이브러리에 의해 관리
*커널 스레드
: 운영체제에 의해 직접 지원 및 관리
*종류
-다-대-일(Many-to-One)
: 다수의 사용자 수준 스레드가 하나의 커널 스레드에 매핑
한 스레드 블록 -> 다른 모든 스레드도 블록
다중 코어 시스템에서 여러 스레드가 병렬로 실행 X
ㄴ한 순간에 오직 하나의 사용자 스레드만이 커널에 존재 O
현재 이 모델을 사용하는 시스템 거의 X
-일-대-일(One-to-One)
: 각 사용자 스레드는 커널 스레드로 맵핑
사용자 스레드 생성 -> 커널 스레드도 같이 생성
다-대-일 모델보다 병렬 수행 가능 O
프로세스 당 스레드 개수는 오버헤드 때문에 제한
ex. Windows/ Linux/ Solaris 9 and later
-다-대-다(Many-to-Many)
: 여러 개의 사용자 수준 스레드를 그보다 작은 수
혹은, 같은 수의 커널 스레드로 맵핑
ex. Solaris version 9 이전 버전들
'Computer Science > 컴퓨터구조 | 운영체제' 카테고리의 다른 글
CH6. CPU Scheduling (0) | 2022.05.19 |
---|---|
CH5. Process Synchronization (0) | 2022.05.19 |
CH3. Process (0) | 2022.05.19 |
CH2. Operating System Structures (0) | 2022.05.19 |
CH1. Overview (0) | 2022.05.19 |