Linux의 경량 프로세스가 커널 스레드에 연결되어 있습니까?

Linux의 경량 프로세스가 커널 스레드에 연결되어 있습니까?

"Linux 커널 이해"에 대한 나의 이해에 따르면 다음 설명이 정확합니까?

  • Linux 커널의 커널 스레드와 경량 프로세스는 task_structC 언어의 구조로 표현됩니다.

  • 커널 스레드는 항상 커널 공간에서 실행되는 반면 경량 프로세스는 사용자 공간과 커널 공간 모두에서 실행될 수 있습니다.

  • 커널 스레드와 경량 프로세스는 동일한 수준의 두 가지 개념입니다. 그들은 서로 의존하지 않습니까? 특히 경량 프로세스는 커널 스레드를 기반으로 생성되고 실행되지 않나요?

그렇다면 "운영 체제 개념"의 다음 인용문은 경량 프로세스가 커널 스레드에 연결되어 있음을 의미하는 이유는 무엇입니까? (이 책은 일반적인 운영 체제 개념을 다루고 있으며 인용에는 Linux용이라고 나와 있지 않지만 책의 대부분은 Linux에 적용됩니다.)

다중 스레드 프로그램에 대해 고려해야 할 마지막 문제는 섹션 4.3.3에서 논의된 다대다 및 2레벨 모델에 필요할 수 있는 커널과 스레드 라이브러리 간의 통신과 관련됩니다. 이러한 조정을 통해 커널 스레드 수를 동적으로 조정하여 최적의 성능을 보장할 수 있습니다.

많은 시스템이 다대다 또는 2단계 모델을 구현합니다.사용자 스레드와 커널 스레드 사이의 중간 데이터 구조.이 데이터 구조는 종종 경량 프로세스 또는 LWP라고 불립니다.——그림 4.13과 같습니다. 사용자 스레드 라이브러리의 경우 LWP는 애플리케이션이 사용자 스레드 실행을 예약할 수 있는 가상 프로세서로 나타납니다.각 LWP는 커널 스레드에 연결됩니다., 그리고운영 체제는 물리적 프로세서에서 실행되도록 커널 스레드를 예약합니다.. 커널 스레드가 차단되는 경우(예: I/O 작업이 완료되기를 기다리는 동안) LWP도 차단됩니다. 온체인, LWP에 연결된 사용자 수준 스레드도 차단됩니다.

여기에 이미지 설명을 입력하세요.

책에 정의된 몇 가지 개념은 다음과 같습니다. 특히 커널 스레드와 사용자 스레드의 정의는 이 기사 시작 부분의 질문에서 언급한 내용과 다를 수 있습니다.

스레드 지원은 사용자 수준에서 제공될 수 있습니다.사용자 스레드, 또는 커널을 통해커널 스레드. 사용자 스레드는 커널 위에서 지원되며 커널 지원 없이 관리될 수 있는 반면, 커널 스레드는 운영 체제에서 직접 지원되고 관리됩니다.

다대일 모델(그림 4.5) 여러 사용자 수준 스레드를 하나의 커널 스레드로 매핑합니다. 스레드 관리는 사용자 공간의 스레드 라이브러리에 의해 수행되므로 매우 효율적입니다.

여기에 이미지 설명을 입력하세요.

다대다 모델(그림 4.7) 많은 사용자 수준 스레드를 더 적거나 동일한 수의 커널 스레드로 다중화합니다. 커널 스레드의 수는 특정 응용 프로그램이나 특정 시스템에 따라 다를 수 있습니다(응용 프로그램에는 단일 프로세서보다 다중 프로세서에서 더 많은 커널 스레드가 할당될 수 있음).

여기에 이미지 설명을 입력하세요.

감사해요.

답변1

커널 스레드는 항상 다음에서 실행됩니다.커널 공간. 사용자 스레드는 사용자 공간에서 실행됩니다. 즉, 사용자 모드 주소 공간이 있습니다. 사용자 스레드는 다음과 같습니다.예정됨커널 지원 유무에 관계없이. 이것이 질문의 후반부에서 "커널 스레드"가 의미하는 것입니다. 간단히 말해서, 두 가지 모두에 동일한 이름이 사용됩니다.

관련 정보