스레드 : 커널 스레드 vs. 커널 지원 스레드 vs. 사용자 레벨 스레드?


9

아무도 이것의 차이점이 무엇인지 알고 있습니까?

커널 스레드가 (직관적으로) 커널을 실행하는 코드에 해당하는 것 같지만 다른 두 가지에 대해서는 확실하지 않습니다 ...

또한 커널이 모든 스레드 스케줄링 / 스위칭을 수행하는 동안 라이브러리에 액세스하기 때문에 pthreads 표준이 사용자 수준 및 커널 지원으로 간주됩니까?

답변:


14

"커널 스레드"라는 용어는 커널 공간에서 완전히 실행되는 실제 스레드를 나타내거나 커널이 예약 한 사용자 공간 스레드를 나타낼 수 있습니다. "커널 지원"스레드라는 용어는 후자가 사용자 공간에서 실행되지만 커널에 의해 촉진되는 스레드를 의미합니다. 이는 일반적으로 커널이 스레드를 예약 함을 의미합니다.

"사용자 수준 스레드"는 일반적으로 사용자 공간에 보이는 스레드를 의미합니다. 즉, 스레딩 표준의 "스레드 생성"기능을 호출 할 때 생성하는 것입니다. 일반적으로 "사용자 수준 스레드"라는 용어는 시스템에서 구현하는 방식에 관계없이 응용 프로그램 코드로 생성 된 스레드를 의미합니다. 커널 지원이 거의 없거나 전혀없는 순수한 사용자 공간 스레드이거나 커널이 예약 한 스레드 일 수 있습니다.

pthreads 표준은 순수한 사용자 공간 스레드 (커널이 프로세스를 예약하고 프로세스가 스레드를 예약하는 경우), 커널 지원 스레드 (커널이 직접 스레드를 예약하는 경우) 또는 하이브리드 접근 (커널이 예약 된 위치)으로 구현 될 수 있습니다. 그런 다음 사용자 공간에서 사용자 수준 스레드를 예약하는 커널 수준 스레드). 이 표준은 특정 구현 수단을 요구하지 않습니다. 가장 일반적인 구현은 각 사용자 수준 스레드에 커널이 예약 한 해당 스레드가있는 일대일 매핑입니다.


리눅스에서의 구현은 무엇입니까?
yati sagade

3
내가 아는 모든 최신 (2.6 커널 이상) Linux 시스템에서 시스템의 기본 스레딩 구현은 일대일이며 각 사용자 수준 스레드에는 해당 KSE (커널 스케줄링 엔터티-기본적으로 리눅스 커널). 'pthread_create'로 생성 한 스레드는 커널에 의해 직접 예약됩니다. 최신 시스템은 일반적으로 NPTL을 사용하고 , 구형 시스템은 LinuxThreads를 사용 합니다. 둘 다 일대일입니다.
David Schwartz

"또는 하이브리드 방식 (커널이 사용자 수준에서 사용자 수준 스레드를 예약하는 커널 수준 스레드를 예약하는 경우)" 데이빗, 다시 설명해 줄래? 무슨 일이 일어나고 있는지 잘 모르겠습니다 ... 1 대 1 매핑을 말할 때 커널 수준 theads를 언급 할 때 스레드 제어 블록을 언급하고 있습니까?
Dark Templar

으로 1 대 1 I 평균 당신이 '는 pthread_create'호출 할 때마다, 새로운 컨텍스트가 커널에 의해 예정이 생성된다. A의 하이브리드 접근 방식, 커널이 예정된 상황의 수는 적게 생성 스레드의 수보다 - 커널 일정 라이브러리 일정을 스레딩 그 상황 중 하나, 다음 응용 프로그램에 의해 생성 된 스레드 중 하나.
David Schwartz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.