گوگل اولین بخش از کد M:N thread خود را بهصورت متنباز در هسته لینوکس ارائه میدهد!
گوگل طرح خود مبنی بر ادغام برخی کدها در هسته لینوکس را ارائه و تأیید کرده است.
در این طرح انگیزه گوگل از انجام این کار بیان نشده است.
این فناوری یک زیرسیستم M:N threading در سطح کاربر(userspace) است که در گوگل برای زیرسیستمهای بسیار حساس به زمان، بهصورت گسترده مورد استفاده قرار میگیرد.
زمانبندی و مدیریت Threadها زمانی اهمیت پیدا میکند که ما میخواهیم مطمئن شویم پردازندهها، درحالیکه فعالیتی برای اجرا توسط آنها وجود دارد، غیرفعال (بیکار) نخواهند بود.
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 انجام شود.
به نظر میرسد که توسعهدهندگان گوگل این راهکار پیچیده را پیادهسازی و استفاده کردهاند.
ثبت ديدگاه