깔때기(동시 컴퓨팅)

Funnel (concurrent computing)

컴퓨터 과학에서 깔때기는 시스템 자원을 보호하기 위해 커널 개발에 사용되는 동기화 프리미티브입니다.Digital UNIX에서 디바이스 드라이버 실행을 단일 프로세서에 "터널링"하는 방법으로 처음 사용되었던 깔때기는 이제 XNU의 BSD 부분에 대한 액세스를 직렬화하기 위해 Mac OS X 커널에서 사용됩니다.

깔때기는 여러 스레드가 특정 커널 리소스에 동시에 액세스하지 못하도록 하는 상호 제외(뮤텍스) 메커니즘입니다.각 스레드는 커널의 동기 부분에 들어갈 때 깔때기를 획득하고 나갈 때 이를 방출합니다.스레드가 깔때기를 잡고 있는 동안 차단(sleep)되면 커널은 자동으로 깔때기를 떨어뜨려 다른 스레드가 커널의 동기 부분에 들어갈 수 있도록 합니다.

스레드가 차단되면 깔때기가 자동으로 떨어지기 때문에 차단 작업 후 동기화된 리소스를 다시 획득할 수 있도록 주의해야 합니다.구체적으로 깔때기 획득은 차단작업이 될 수 있으므로 여러 깔때기가 필요한 경우 한 번에 획득해야 한다.이로 인해 한 번에 여러 개의 깔때기를 고정해야 할 때 잠금의 입도가 높아지기 때문에 깔때기의 효용성이 제한됩니다.

Mac OS X의 경우

OS X 10.4 이후에는 깔때기가 1개뿐입니다.버전 10.4 이전 버전에서는 네트워크리소스를 보호하고 다른 BSD 커널리소스를 보호하는 2개의 깔때기가 있습니다.스레드는 한 번에 하나의 깔때기만 유지할 수 있으며, 둘 다 유지할 경우 커널 패닉이 발생합니다.이러한 제한과 세분화 부족으로 인해 Mac OS X에서는 깔때기가 단계적으로 폐지되고 있습니다.예를 들어 네트워크 깔때기는 보다 세분화된 잠금 메커니즘으로 대체되었습니다.

「 」를 참조해 주세요.

메모들

출처를 언급하는 주석에 대해서는, 다음의 참고 문헌을 참조해 주세요.

  1. ^ Singh 07, 1223-1229 페이지

레퍼런스

  • Singh, Amit (2007). Mac OS X Internals, A Systems Approach. Boston, Massachusetts: Addison-Wesley. ISBN 0-321-27854-2.

외부 링크