면접관: 스레드 모델의 세 가지 구현에 대해 이야기해 보겠습니다.

안녕하세요 여러분, 제 이름은 무추안입니다

1. 스레드 모델이란 무엇입니까?

스레드 생성, 관리, 스케줄링 등에 사용되는 방법을 스레드 모델이라고 하며 스레드 모델은 일반적으로 , , 의 세 가지 유형으로 구분되며 内核级线程模型차이점 用户级线程模型两级线程模型사용자 스레드와 커널 스레드 간의 대응에 있습니다. 레벨 스레드는 애플리케이션에 의해 관리되고, 커널 레벨 스레드는 운영 체제에 의해 관리됩니다.

사용자 스레드는 CPU에 의해 예약되고 실행되기 전에 지정된 커널 스레드에만 매핑됩니다. 아래에 소개된 세 가지 스레드 모델은 사용자 스레드가 커널 스레드에 매핑되는 세 가지 방법을 나타냅니다.

2. 세 가지 스레드 모델

커널 수준 스레딩 모델(1:1)

하나의 사용자 스레드는 하나의 커널 스레드에 해당하며 구현하기 가장 쉽고 코루틴의 스케줄링은 CPU에 의해 완료됩니다.

64298973a141aeeb37e1ffae5937ecb2.jpeg

이점:

  • 가장 쉬운 구현

  • 다중 코어 활용 능력

  • 프로세스의 한 스레드가 차단되면 다른 스레드를 차단하지 않으며 동일한 프로세스의 다른 스레드로 전환하여 실행을 계속할 수 있습니다.

결점:

  • 컨텍스트 전환 비용이 높으며 생성, 삭제, 전환이 모두 CPU에서 완료됩니다. (사용자 스레드를 생성하려면 커널 스레드를 생성하고 시스템 호출을 해야 함)

사용자 수준 스레딩 모델(N:1)

1개의 프로세스에 있는 모든 스레드는 1개의 커널 스레드에 해당합니다 e211cf3e7ffc09d79d3ff74fa2fdb7dd.jpeg. 장점:

  • 컨텍스트 전환 비용이 저렴하며 코루틴 전환은 사용자 모드에서 완료할 수 있습니다.

결점:

  • 다중 코어를 활용할 수 없음

  • 코루틴이 차단되어 스레드가 차단되면 이 스레드의 다른 코루틴은 실행될 수 없습니다.

2레벨 스레드 모델(M:N)

M 스레드는 N 커널 스레드에 해당합니다.af9b6a4381c4494118f58d5617dc1a1c.jpeg

이점:

  • 다중 코어 활용 능력

  • 컨텍스트 스위칭이 저렴하다

  • 프로세스의 한 스레드가 차단되면 다른 스레드는 차단되지 않고 동일한 프로세스의 다른 스레드가 전환되어 실행을 계속합니다.

결점:

  • 구현하기가 가장 복잡함

3. 요약

Go가 구현하는 것은 2레벨 스레드 모델(M:N), 정확히 말하면 GMP 모델입니다. GMP 모델은 2레벨 스레드 모델을 개선하여 스레드 간 일정을 더욱 유연하게 설정할 수 있도록 해줍니다.

마지막으로 저의 원본 Go 인터뷰 소책자를 광고하겠습니다. Go 관련 개발에 참여하고 계시다면 코드를 스캔하여 구매하실 수 있습니다. 현재 구매 금액은 10위안입니다. 추가 사본을 보내려면 아래 WeChat 결제 스크린샷을 추가하세요. 직접 녹음한 바둑 면접 질문 설명 영상입니다.

d4d0984e15314cdbe139f352d203016d.jpeg

1b05983f5641b085012b5736f14b3335.png

도움이 되셨다면 시청이나 전달을 클릭할 수 있도록 도와주세요 공식 계정 팔로우를 환영합니다

추천

출처blog.csdn.net/caspar_notes/article/details/133802083