"Solaris Internals"라는 책에서는 다음과 같이 말합니다.
Solaris는 커널 스레드를 실행하여 인터럽트 처리, 메모리 페이지 관리, 장치 드라이버 등과 같은 커널 관련 작업을 수행합니다. 사용자 프로세스 실행을 위해 커널 스레드에는 해당 LWP가 있습니다. 이러한 커널 스레드는 사용자 프로세스를 대신하여 커널에 의해 실행되도록 예약됩니다.
이 단어들이 약간 혼란스럽습니다. 제가 이해한 바는 다음과 같습니다.
솔라리스에서는 "진짜 스레드" 이다"커널 스레드". 커널 스레드는 커널 관련 작업과 사용자 관련 작업을 수행할 수 있다. 사용자 관련 작업을 수행할 때 커널 스레드는 환경을 제공하기 위해 LWP라는 데이터 구조가 필요하다. 그래서,사용자 스레드그리고경량 작업 계획실행 단위나 스레드가 전혀 아닙니다. 그것들은 단지 시스템의 데이터 구조일 뿐입니다. 이것사용자 스레드사용자 데이터 및 코드를 포함하여 수행해야 하는 사용자 작업만 해당됩니다. LWP는 커널 정보를 제공하는 커널 데이터 구조입니다. 실제 실행 단위 또는 프로세스는 다음과 같습니다.커널 스레드.
내 이해가 정확하다면 2단계 스레딩 모델이 있었던 초기 솔라리스에서는 많은 사용자 스레드가 하나의 lwp에 바인딩될 수 있었는데, 이는 솔라리스의 기본 구현에서 이를 의미합니다."많은 사용자 스레드커널이나 CPU에는 실제로 하나의 스레드(커널 스레드)가 있으며, 유일한 커널 스레드는 각 사용자 스레드에서 차례로 작업을 수행합니다. 사용자 스레드가 바인딩되지 않으면 실행할 수 없습니다.
내가 맞나요?
답변1
커널 스레드는 시스템 CPU에 예약된 기본 엔터티이며 매우 가볍습니다.
커널 스레드는 LWP에 대한 일대일 매핑을 갖습니다. 스레드 라이브러리는 사용자 스레드를 LWP로 예약합니다. 원천: