صفحه اصلیارائه اولین بخش از کد M:N thread به‌صورت متن‌باز در هسته لینوکس

گوگل طرح خود مبنی بر ادغام برخی کدها در هسته لینوکس را ارائه و تأیید کرده است.

در این طرح انگیزه گوگل از انجام این کار بیان نشده است.

Multi_Thread_Code_To_Linux

این فن­اوری یک زیرسیستم M:N threading در سطح کاربر(userspace) است که در گوگل برای زیرسیستم‌های بسیار حساس به زمان، به‌صورت گسترده مورد استفاده قرار می‌گیرد.

زمان‌بندی و مدیریت Threadها زمانی اهمیت پیدا می‌کند که ما می‌خواهیم مطمئن شویم پردازنده‌ها، درحالی‌که فعالیتی برای اجرا توسط آنها وجود دارد، غیرفعال (بیکار) نخواهند بود.

Multi_Thread_Code_To_Linux

M:N threading یک راهکار است که بسیار بهتر از شیوه 1:1 عمل می‌کند.

راهکارهای مختص مدیریت Threadها 

  • 1:1

در این شیوه هر Thread سطح کاربر به یک واحد زمان‌بندی (Scheduled Entity) در سطح کرنل، map می‌شود. این راهکار را به عنوان مدیریت Thread در سطح کرنل می‌شناسیم.

این شیوه راهکار مورد استفاده در ویندوز است. در لینوکس این راهکار توسط کتابخانه‌های C توسعه یافته است.

  • 1:N

در این راهکار تعداد N عدد از Threadهای سطح کاربر به یک واحد زمان‌بندی (Scheduled Entity) در سطح کرنل، map می‌شوند. این راهکار به‌عنوان مدیریت Thread در سطح کاربر شناخته می‌شود.

در این شیوه فعالیت‌های زمان‌بندی در سطح userspace انجام می‌شود. این راهکار قادر نیست از توانایی‌های چند پردازنده‌ای یا چند Threadی پردازنده‌ها برای یک برنامه استفاده کند.

  • M:N

از این راهکار که به‌عنوان راهکار ترکیبی یاد می‌شود، M عدد از threadهای سطح کاربر به N واحد زمان‌بندی (Scheduled Entity) در سطح کرنل، map می‌شوند. پیاده‌سازی این راهکار پیچیده‌تر از دیگر راهکارها است. به این دلیل که نیاز به تغییراتی در هر دو سطح کرنل و کاربر دارد.

در شیوه M:N کتابخانه مربوطه مسئولیت زمان‌بندی تردها بر روی واحدهای زمان‌بندی هسته را بر عهده دارد. این موضوع باعث می‌شود که context switch مربوط به تردها بسیار سریع و بدون نیاز به استفاده از system call انجام شود.

به نظر می‌رسد که توسعه‌دهندگان گوگل این راهکار پیچیده را پیاده‌سازی و استفاده کرده‌اند.

گوگل اولین بار در سال 2013 در مورد این مفهوم اظهار نظر کرد و هم‌اکنون بعد از گذشت مدت زمان نسبتا طولانی، به نظر می‌رسد که گوگل از کد پیشرفته‌ای برای اجرای برنامه‌های خود استفاده می‌کند.

Multi_Thread_Code_To_Linux

به اشتراک بگذارید.

بیشتر بخوانیم

مقالات مرتبط

1399-10-22 08:36:00 +00:00
Go to Top