(운영 체제) 스레드

철사

(철사)

: 프로세스에서 실행되는 작은 실행 단위입니다.

: 공유 가능 공유 메모리 및 리소스.→ Heap, Data, Code는 공유되지만 Stack과 Register는 별개이다.

: 자원 공유는 IPC를 매우 간단하게 만듭니다.

: 포크 대신 pthread_create사용. → pthread_create(&tid, &attr, argv(i))

: 스레드당 동시에제대로 실행하십시오.

: 프로세스간 Context Switch에 비해 Context Switch의 오버헤드가 매우 적다.

: 하나의 태스크가 처리되는 동안 다른 태스크가 실행될 수 있기 때문에, 민감도이것은 개선

: 사용하기 쉬운 다중 프로세서 아키텍처.

· 커널 스레드

: 커널이 생성한 쓰레드.

: 운영 체제에서 관리합니다.

: 커널은 얼마나 많은 사용자 스레드가 있는지 모릅니다.

→ 스케줄러는 사용자 스레드를 고려하지 않습니다.

(스케줄러가 커널 스레드를 대기 상태로 만들면 거기에 매핑된 모든 사용자 스레드도 대기 상태가 됨)

· 사용자 스레드

: 사용자가 만든 스레드입니다.

: 스레드 라이브러리에서 관리합니다.

(다중 스레드 모델)

· 다대일

: 다수의 사용자 스레드를 단일 커널 스레드에 매핑하는 방법입니다.

: 오버헤드가 거의 없이 매우 빠릅니다.

: 확장성이 좋지 않습니다.

: Kernel Thread로 구성되어 있어 Kernel Thread가 차단되면 모든 프로세스가 차단됩니다.

: 멀티프로세서에서 다중 스레드는 병렬로 실행할 수 없습니다.

.


다대일 모델

· 1-1

: 커널 스레드와 사용자 스레드가 1:1로 매핑됩니다.

: 멀티코어 프로세서에서 매우 효율적입니다.

: 사용자 스레드가 생성될 때마다 커널 스레드가 생성되어야 하기 때문입니다.

고비용.

: 각 스레드는 독립적입니다.

안정화보장되지만 비효율적인 메모리 공유숲.


일대일 모델

· 다대다

: 많은 사용자 스레드를 동일하거나 더 적은 수의 커널 스레드에 매핑하는 방법입니다.

: 일대일과 다대일의 단점을 보완하도록 설계되었습니다.

: 스레드 간 매핑의 유연한 조정수 있다는 장점이 있습니다.

: 스레드 간에 메모리를 공유하므로 다대일 메모리 비효율이 없습니다.

: 복잡한 구현, 사용자 스레드와 커널 스레드 간의 빈번한 컨텍스트 전환. 고비용.


다대다 모델

· 두 가지 수준

: 다대다 + 일대일 양식의 모델입니다.

: Kernel Thread 집합과 User Thread 집합으로 나눌 수 있습니다.

: 멀티코어 프로세서적합하도록 설계되었습니다.

→ 코어와 코어 간 매핑: 다대다

→ 커널 스레드와 사용자 스레드 간의 매핑: 일대일


2단계 모델

(스레드가 취소됨)

: 실행 중인 스레드가 강제 종료됨을 나타냅니다.

: 프로그램 실행 흐름 제어하다, 리소스를 효과적으로 관리해.

· 비동기 취소

: 다른 스레드에 의해 강제로 실행된 스레드를 즉시 종료하는 방법.

· 늦은 취소

: 스레드를 종료하고 특정 시점에 취소를 예약하기 위해 취소 요청을 발생시킵니다.

: 청소하다 함수를 통해 취소하고 스레드 리소스를 해제하고 일관성을 유지하기 위한 작업을 수행합니다.

(스레드 풀)

: 스레드를 미리 생성하고 작업 요청이 들어올 때 처리할 스레드를 할당하는 디자인 패턴입니다.

: 미리 생성함으로써 생성의 오버헤드를 줄일 수 있습니다.

: 효과적으로 설계되지 않은 경우 자원 낭비문제가 나타납니다.