در آوریل ۱۹۹۱ لینوس توروالدز که در ان زمان 21 سال سن داشت و داشجوی علوم کامپوتر در دانشگاه هلسینکی فنلاند بود استارت ساخت یک سیستم عامل ساده را زد . در 25 اگست همان سال توروالدز سیستم عامل خود را که فقط دارای یک task switcher و راه انداز ترمینال بود را در یک گروه خبری درusenet ارسال کرد و این آغاز کار کرنل لینوکس بود تا امروز که هزاران نفر بر روی ان کار میکنند در واقع میتوان گفت لینوکس توسط همکاری جهانی توسعه دهندگان ایجاد شده و سالانه هزاران نفر با مدیریت توروادز بر روی این کرنل کار میکنند.
لینوکس
لینوکس که در این مقاله منظور ما از لینوکس کرنل لینوکس است یکی از پر استفاده ترین سورس کد های دنیای اوپن سورس است . شاید اگر در دنیای اطراف خود بنگرید بتوانید ان را هرجایی بیابید در گوشی اندرویدی خود در مایکروویو خانه تان در ATM ها و حتی در ایستگاه فضایی بین الملل( ISS) ابتدا در سال1991 توروالدز ان را برای رایانه شخصی خود طراحی کرد اما پس از ان لینوکس با کمک توسعه دهندگان از سراسر جهان گسترش یافت تا یکی از محبوب ترین سیستم عامل ها باشد لینوکس به کاربران اجازه میدهد تا نرم افزار ها و تنظیمات سیسنم را به صورت آزادانه تغییر دهند این سیستم عامل به طور گسترده در سرور ها دسکتاپ ها و دستگاه هایembedded استفاده میشود ساختار لینوکس به صورت ماژولار طراحی شده . به این معنی که کاربران می توانند اجزای مختلف ان را بر اساس نیاز خود پیکربندی کنند.توزیع های مختلف لینوکس مانند اوبونتو فدورا و دبیان هر کدام ویژگی هاو محیط کاربری خاص خود را دارند.
زبان جدید در کرنل لینوکس
در سال2017 پس از چند دهه کار کردن کرنل لینوکس و توسعه آن با زبان cتوسعه دهندگان اصلی لینوکس تصمیم برآن گرفتند که لینوکس نیاز به یک زبان Memory safe دارد که زبان انتخابی انها زبان Rust بود سپس پروسه اضافه شدن این زبان به کرنل لینوکس شروع شد وتا امروز ادامه دارد .این اتفاق به ان معنا نیست که کرنل دوباره با زبان جدید نوشته شود بلکه به این معناست که این امکان فراهم شود که کرنل لینوکس بتواند برنامه ای راکه با زبان راست نوشته شده را هم بفهمد و به ماژول هایش اضافه کند در نتیجه شما میتوانید درایور جدید خود را با زبان راست توسعه دهید.
کرنل چیست ؟
کرنل هسته اصلی سیستم عامل است که وظیفه مدیریت منابع سخت افزاری و نرم افزاری را بر عهده دارد کرنل ارتباط مستقیم با سخت افزار دارد و وضایفی از جمله مدیریت حافظه پردازش ها و ورودی/خروجی ها را انجام میدهد همچنین امنیت و مدیریت دسترسی ها نیز از دیگر وظایف کرنل است به طور ساده کرنل به عنوان پل ارتباطی و مدیریت کل منابع سیستم عمل میکند.
Memory safety
در Rust هر متغیر یک مالک دارد و زمانی که مالک ازبین برود حافظه آزاد میشود این ساختار به طور خودکار مدیریت حافظه را انجام میدهد و از خطا های رایج مانند dangling pointers جلوگیری میکند و این ویژگی ها باعث ایمن تر شدن برنامه هایی که با زبان Rust نوشته شدن میشود و این موضوع به ان معنا است که شما بابرنامه نویسی نمیتواند مشکلی در مموری ایجاد کنید . زبان سی این قابلیت را دارا نیست و بیشتر باگ های امنیتی و غیر امنیتی به دلیل نبود Memory safety است.
Rust
بیشتر شدن استفاده از تکنولوژی نیاز به تکامل روزافزون زبان های برنامه نویسی دارد و این تکامل باعث هویدا شدن مشکلات زبان های قدیمی شده و زبان های جدید احتمالا مشکلات زبان های قدیمی را ندارد مانند مشکل Memory safety در زبان های ++C/C که احتمالا در زبان های جدید مشاهده نمیشود به همین دلیل تکنولوژی های مدرن معرفی میشوند Rust یک زبان برنامه نویسی با سرعت بسیار بالاست .ابتدا به عنوان پروژه شخصی توسط Graydon Hoare در سال 2006 شروع و سپس توسط Mozilla پشتیبانی شد و و رشد کرد و سپس در می 2015 نسخه پایدار Rustمنتشر شد کتاب “Programing Rust” نوشته ی Jim Blandy و کتاب The Rust Programing Language نوشته ی Steve Klabnik به طور مفصل به اصل برنامه نویسی با زبان راست و همچنین به اصول مموری سیف بودن میپردازد.
حمایت گوگل
پس از شروع پروسه اضافه شدن Rust گوگل حمایت خود را از این موضوع اعلام کرد گوگل اعلام کرده که استفاده از Rust در سیستم عامل اندروید که سیستم عاملی ساخته شده بر اساس لینوکس است مخاطرات امنیتی ناشی از حافظه را به شدت کاهش میدهد به نظر میرسد که توسعه دهندگان اندروید این زبان را برای توسعه در کرنل مناسب میبینند.
سخن پایانی
اضافه کردن یک زبان مموری سیف به کرنل لینوکس آن هم زبان با پشتوانه ای مانند زبان Rust که توسط کمپانی هایی مانند Huawei ,Mozilla , Google و Microsoft حمایت مالی میشود کار عاقلانه ای به نظر برسد اما این پروژه بسیار طولانی شده بسیاری از کارشناسان طولانی شده این موضوع را غیر طبیعی می بینند و معتقد هستند که توسعه دهندگان اصلی لینوکس اشتیاقی به سریع تر انجام دادن این کار ندارند و خوب این موضوع طبیعی به نظر میرسد زیرا برنامه نویسان اصلی کرنل سال ها ست که با زبان سی این کرنل را توسعه دادند و احتمال میرود که اشتیاق یادگیری زبان جدیدی را نداشته باشند اما از نظر کارشناسان در هر صورت تین پروسه انجام میشود حتی بسیار طبیعی است که سیستم عامل سازگار با یونیکس دیگری با زبانRust یا هر زبان Memory safe دیگری توسعه یابد . انجام این پروژه امر بسیار سختی است جدای از دشواری برای شخص توسعه دهندگان ایجاد هماهنگی بین تعداد زیاد توسعه دهندگان نیز خود متحمل هزینه وقت و انرژی است به پایان رسیدن هرچه سریع تر این پروژه به نفع توسعه دهندگان کمپانی ها و در نهایت کاربران است.
منابع
- Love , R . (2010).Linux Kernel Development
- kernel.org / وب سایت رسمی هسته لینوکس
- Blandy Jim/Programing Rust
- Klabnik Steve / The Rust Programing Language
on Rust در Linux