> 일반적인 문제 > 커널 수준 스레드가 더 빠르게 실행됩니다.

커널 수준 스레드가 더 빠르게 실행됩니다.

(*-*)浩
풀어 주다: 2019-12-25 14:47:23
원래의
3742명이 탐색했습니다.

커널 수준 스레드가 더 빠르게 실행됩니다.

커널 수준 스레드:전환은 커널에 의해 제어됩니다. 스레드가 전환되면 사용자 모드에서 커널 모드로 변환됩니다. 전환 후에는 커널 모드에서 사용자 모드로 돌아가야 합니다. smp, 즉 멀티 코어 CPU를 잘 활용할 수 있습니다. 이것이 Windows 스레드의 모습입니다. (권장 학습: phpstorm)

사용자 수준 스레드 커널의 전환은 사용자 모드 프로그램 자체에 의해 제어되며 커널 개입이 필요하지 않으며 커널 상태에 들어가고 나가는 데 필요한 소비를 줄일 수 없습니다. 멀티 코어 CPU를 잘 활용하세요. 현재 Linux pthread는 일반적으로 수행됩니다.

스레드의 구현은 사용자 수준 스레드(사용자 수준 스레드)와 커널 수준 스레드(커널 수준 스레드)의 두 가지 범주로 나눌 수 있습니다. 후자는 커널 지원 스레드 또는 경량 스레드라고도 합니다. 프로세스. 멀티 스레드 운영 체제에서는 각 시스템의 구현 방법이 다릅니다. 일부 시스템에서는 사용자 수준 스레드가 구현되고 일부 시스템에서는 커널 수준 스레드가 구현됩니다.

사용자 스레드는 커널 지원 없이 사용자 프로그램에서 구현되는 스레드를 말합니다. 응용 프로그램 프로세스는 스레드 라이브러리를 사용하여 생성, 동기화, 예약 및 관리 기능을 제공합니다. 사용자 스레드를 제어하는 ​​스레드.

사용자 모드/커널 모드 전환이 필요 없고 빠르며 운영 체제 커널은 다중 스레드의 존재를 모르므로 하나의 스레드를 차단하면 전체 프로세스(모든 스레드 포함)가 차단됩니다. 여기서 프로세서 타임 슬라이스 할당은 프로세스를 기반으로 하므로 각 스레드의 실행 시간이 상대적으로 줄어듭니다.

커널 스레드: 운영 체제 커널에 의해 생성되고 제거됩니다. 커널은 프로세스 및 스레드 컨텍스트 정보와 스레드 전환을 유지합니다. I/O 작업으로 인해 커널 스레드가 차단되어도 다른 스레드의 작업에는 영향을 미치지 않습니다. Windows NT 및 2000/XP는 커널 스레드를 지원합니다.

사용자 스레드는 중간 시스템에서 실행됩니다. 현재 중간 시스템을 구현하는 방법에는 런타임 시스템과 커널 제어 스레드라는 두 가지 방법이 있습니다.

"런타임 시스템"은 본질적으로 생성, 취소, 스레드 동기화 및 통신 기능, 스케줄링 기능을 포함하여 스레드를 관리하고 제어하는 ​​데 사용되는 기능의 모음입니다. 이러한 함수는 사용자 공간에 상주하며 사용자 스레드와 커널 간의 인터페이스 역할을 합니다.

사용자 스레드는 시스템 호출을 사용할 수 없습니다. 대신 스레드에 시스템 리소스가 필요할 때 요청이 런타임으로 전송되고 후자는 해당 시스템 호출을 통해 시스템 리소스를 얻습니다.

커널 제어 스레드: 시스템은 여러 개의 경량 프로세스(LWP)를 프로세스에 할당합니다. LWP는 시스템 호출을 통해 커널이 제공하는 서비스를 얻을 수 있으며, 프로세스의 사용자 스레드는 멀티플렉싱을 통해 LWP와 연결되어 얻을 수 있습니다. 커널의 서브.

다음은 사용자 수준 스레드와 커널 수준 스레드의 차이점입니다.

(1) 커널 지원 스레드는 OS 커널을 인식하는 반면, 사용자 수준 스레드는 OS 커널을 구분하지 않습니다.

(2) 사용자 수준 스레드의 생성, 취소 및 예약에는 OS 커널의 지원이 필요하지 않으며 커널에서 지원하는 스레드의 생성, 취소 및 예약은 언어(예: Java) 수준에서 처리됩니다. OS 커널의 지원이 필요하며 일반적으로 프로세스 생성, 파괴 및 예약과 동일합니다.

(3) 사용자 수준 스레드가 시스템 호출 명령을 실행하면 자신이 속한 프로세스가 중단되고, 커널 지원 스레드가 시스템 호출 명령을 실행하면 스레드만 중단됩니다. 중단된.

(4) 사용자 수준 스레드만 있는 시스템에서 CPU 스케줄링은 여전히 ​​프로세스를 기반으로 합니다. 스레드 CPU를 지원하는 시스템에서 사용자 프로그램이 순환적으로 제어합니다. 스케줄링은 스레드를 기반으로 하며 OS의 스레드 스케줄러가 스레드 스케줄링을 담당합니다.

(5) 사용자 수준 스레드의 프로그램 엔터티는 사용자 모드에서 실행되는 프로그램인 반면, 커널 지원 스레드의 프로그램 엔터티는 모든 상태에서 실행될 수 있는 프로그램입니다.

위 내용은 커널 수준 스레드가 더 빠르게 실행됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿