گنو/لینوکس با ویندوز چه تفاوتی دارد؟
یکی از نخستین سوالاتی که در ذهن هر کاربری که به تازگی نام گنو/لینوکس به گوشش خورده است، مطرح میشود، این است که خوب گنو/لینوکس چه تفاوتی با ویندوز دارد؟ من در این مقاله قصد دارم بدون اینکه وارد مسائل خیلی فنی شوم، به طور اجمالی این موضوع را تشریح کنم.
لینوکس چیست؟
لینوکس به خودی خود، یک هسته (Kernel) است. هسته، بخش اصلی سیستمعامل را تشکیل میدهد که کار آن کنترل داده ها، مدیریت حافظه، سختافزار، ورود و خروج دادهها و تمامی موارد اصلی سیستمعامل میباشد. همانطور که گفتم، لینوکس به خودی خود سیستمعامل به شمار نمیرود، بلکه با استفاده از ابزارهایی که پروژه گنو (GNU) برای آن تولید کرده است، تبدیل به یک سیستمعامل کامل میشود (به همین دلیل است که لینوکس را معمولا گنو/گنو/لینوکس یا GNU/Linux مینامند) و با اضافه کردن سایر نرمافزارهای بازمتن به آن، میتوان از آن در موارد متعددی مانند سرویسدهندهها، ایستگاههای کاری، کامپیوترهای رویمیزی، ابر رایانهها، ابزارهای صنعتی و پزشکی که دارای سیستم های درونه ای (Embedded) میباشند و... استفاده کرد.
از نظر فنی، گنو/لینوکس را میتوان نمونه بازمتن و آزاد سیستمعاملهای خانواده یونیکس نامید. زیرا بر اساس استاندارد POSIX پیاده سازی شده و کاملا با آن سازگار است. بنابراین گنو/لینوکس را میتوان نواده سیستمعامل پرسابقه و مستحکم یونیکس دانست که البته خواص خوب آنرا نیز به ارث برده است. اکنون تفاوتهای اصلی گنو/لینوکس و ویندوز را با هم میشماریم:
گنو/لینوکس : سیستمعامل آزاد
گنو/لینوکس یک سیستم عامل آزاد و بازمتن است. کد منبع آن در اختیار همگان قرار دارد و همه میتوانند در کدهای آن تغییر ایجاد کرده و بنا به نیازشان استفاده کنند. آزاد و در دسترس بودن کدهای منبع سبب میشود تا بتوانید از طرز کارکرد دقیق سیستمعامل مطلع شوید. شما بسیاری از توزیعهای گنو/لینوکس را میتوانید به هر تعداد کپی کرده و بین دوستانتان پخش کنید. در سمت مقابل، ویندوز یک سیستمعامل اختصاصی است که کد منبع آن سری نگهداشته شده و برای همگان در دسترس نیست. شما نمیتوانید بفهمید که واقعا در زیر سیستمعامل ویندوزتان چه میگذرد؟ آیا یک برنامه جاسوسی در آن پنهان نشده است؟ بعید نیست. سیستم عامل ویندوز رایگان نبوده و شما نمیتوانید آنرا کپی کرده و پخش کنید. در صورت این کار شما خلافکار هستید و جریمه و مجازات خواهید شد. (فعلا نه در ایران ولی در ۴-۶ سال آینده بله)
گنو/لینوکس را به هواپیمایی تشبیه کردهاند که هر قسمت از انرا در جایی ساختهاند. گنو/لینوکس واقعا محصول کشور خاصی نیست. تعداد زیادی از مردم در سرتاسر جهان در حال کار بر روی بخشهای مختلف آن و توسعه آن هستند. تعداد برنامه نویسانی که روی بخشهای مختلف سیستمعامل گنو/لینوکس کار میکنند، به حدود ۴۰۰ هزار نفر میرسد، تفاوت کیفیت کار را مشخص میکند.
شما با سیستمعامل گنو/لینوکس آزاد هستید. لازم ندارید تا از نرمافزارهای اختصاصی استفاده کنید و تحت انقیاد آنها در آیید.
گنو/لینوکس : سرعت، قدرت، پایداری
همانطور که گفتم، گنو/لینوکس نواده سیستمعامل یونیکس است. بنابراین ساختار کلی این سیستمعامل کاملا با ویندوز متفاوت است. این به این معنی است که مثلا شما نخواهید توانست برنامههایی که در ویندوز دارید، روی گنو/لینوکس اجرا نمایید (البته راههایی وجود دارد – شبیه سازها - ولی در حالت عادی خیر). یکی از خواص اصلی سیستمعاملهای خانواده یونیکس، پایداری و استقامت بسیار بالای آنهاست. این سیستمعاملها به این راحتیها خراب نشده و به ندرت نیاز به بوت مجدد پیدا میکنند. گنو/لینوکسهایی وجود دارند که شما میتوانید سالها بدون نیاز به بوت، از آنها استفاده نمایید. در سمت مقابل، حتی جدیدترین و پایدارترین سیستمهای ویندوز نیز اندازه گنو/لینوکس پایدار نیستند. برای بکارگیری سیستمهای ویندوز به عنوان سرویس دهنده به حافظه و پردازندههای قویتری نیاز دارید و مطمئن باشید اگر هر چند روز آنرا بوت نکنید، از کار خواهد افتاد! معمولا سیستمعامل گنو/لینوکس به راحتی خراب نمیشود و برعکس ویندوز مجبور نیستید تا آنرا هر چندماه یکبار مجددا نصب کنید. حتی برخی از انواع گنو/لینوکس به نصب «یکبار برای تمامی عمر» مشهور هستند. این گونه سیستمها را میتوانید حین کار و حتی بدون بوت، به نسخههای جدیدتر ارتقا دهید.
گنو/لینوکس : امنیت، امنیت، امنیت
امروزه در دنیایی متکی بر فناوری اطلاعات زندگی میکنیم که هر لحظه به خطر افتادن جریان اطلاعات منجر به بروز خسارتهای تجاری جبران ناپذیری خواهد شد. امروزه همه به دنبال یک سکوی (Platform) امنتر برای اجرای برنامههای کاربردی و سرویدهندهها هستند. با اینکه مبحث امنیت یک مقوله نسبی است، گنو/لینوکس حرفهای زیادی برای گفتن در سمت امنیت دارد. بسیاری از قابلیتهای امنیتی که در ویندوز وجود ندارند و یا فقط با اضافه کردن نرمافزارهای اضافی قابل دسترسی میباشند، بطور درونی و پیشگزیده در گنو/لینوکس پیاده سازی شدهاند. گنو/لینوکس از ابتدا برای محیطهای شبکهای و چند کاربره طراحی شده است و همین باعث رعایت مسائل امنیتی از ابتدا در ان شده است، درحالی که ویندوز اینگونه نبوده و درحال حاضر نیز از نظر امنیتی دارای نقاط ضعف فراوانی است. مثلا یک برنامه مخرب با استفاده از همین ضعفهای امنیتی میتواند کل سیستمعامل را نابود کند، ولی در صورتی که مورد مشابهی در گنو/لینوکس وجود داشته باشد، حداکثر به دایرکتوری خانگی کاربر اجرا کننده آسیب خواهد رسید، نه کل سیستمعامل.
اینطور نیست که گنو/لینوکس فاقد هر گونه اشکال امنیتی باشد، خیر، ولی باز بودن کد منبع آن باعث میشود تا بسیاری از اشکالات امنیتی پیش از ایجاد خسارت و در مراحل توسعه و برنامه نویسی برنامه بر ملا شده و رفع شوند. در صورتی که اشکالی نیز در برنامههای منتشر شده یافت شود، بدلیل موجود بودن کد منبع سریعا برطرف میگردد. در صورتی که در سیستم عامل ویندوز شما باید منتظر مایکروسافت بمانید و بمانید و بمانید (مثلا هم اکنون ۲۱ اشکال امنیتی در مرورگر IE وجود دارد که مایکروسافت هنوز هیچ وصلهای برای آن ارائه نداده است). سیستمعامل ویندوز دارای اشکالات امنیتی بسیاری است که به راحتی هم کشف نمیشوند و هنگامی کشف میشوند که خسارات جبران ناپذیری در اثر حمله از طریق آن ضعفهای امنیتی رخ دهد که امثال آنرا شاهد هستیم. در دنیای امنیت ضرب المثلی وجود دارد که امنیت با مخفی کاری حاصل نمیشود.
میتوان ادعا کرد که تقریبا هیچ ویروسی برای گنو/لینوکس وجود ندارد و این درحالی است که سالیانه بیش از ۱۰۰۰ ویروس و کرم مختلف برای سیستمعامل ویندوز ایجاد میشود. این بخاطر عدم گسترده بودن گنو/لینوکس نیست (حدود ۷۰ درصد از سایت های وب در جهان بر روی سیستمعاملهای خانواده یونیکس و گنو/لینوکس و سرویس دهنده وب آپاچی درحال اجرا هستند) بلکه بدلیل وجود حفرههای امنیتی متعدد ویندوز و سیاست انحصار گرایی مایکروسافت است. یعنی چه؟ مایکروسافت طوری رفتار و سیاست گذاری کرده است که مشتریان خود را تنها به محصولات خودش عادت دهد. بسیاری از کاربران ویندوز از اینترنت اکسپلورر و آتلوک برای مرور وب و پست الکترونیک استفاده میکنند. من به عنوان یک ویروس نویس، میدانم که اگر ویروسی را برای کاربران ویندوز بنویسم، بر روی کامپیوترهای ۹۰ درصد آنها اثر خواهد کرد. چون اکثرا از IE و Outlook استفاده میکنند. ولی در گنو/لینوکس چطور؟ در گنو/لینوکس شما طیف وسیعی از انتخاب و عدم اجبار دارید. من از مرورگر موزیلا استفاده میکنم. دوستی دارم که Konqueror را ترجیح میدهد. دیگری از Opera استفاده میکند. من از Kmail استفاده میکنم. دوستم از Evolution، دیگری از Pine و بعدی از Mutt و برادرم هم از Mozilla Mail. من فقط میتوانم برای یکی از اینها ویروس بنویسم چون روی بقیه کار نخواهد کرد و عملا میزان اثر آن انداک خواهد بود. ضمنا هیچیک از ویروسهایی که برای ویندوز نوشته شدهاند، بر روی گنو/لینوکس کار نمیکنند.
گنو/لینوکس : تعدد سکوهای اجرایی
گنو/لینوکس برخلاف ویندوز بر روی تعداد زیادی از سکوهای مختلف سختافزاری اجرا میشود و شما حتی قادرید آنرا برای کار بر روی سکوی مورد نظرتان تغییر دهید. این قابلیت، گنو/لینوکس را برای بکارگیری در سختافزارهای درونهای (Embedded) بسیار مناسب میسازد. هسته 2.6 گنو/لینوکس این امکان را فراهم میسازد تا گنو/لینوکس را بر روی دستگاههای بسیار کوچک و یا ابر رایانههای بسیار بزرگ اجرا نمایید.
گنو/لینوکس : گستردهترین تنوع در کاربرد
گنو/لینوکس را میتوانید برای انجام وظایف بسیار متعددی بکار بگیرید. از دستگاه چک کردن اتصالات شبکه، دیوار آتش، مسیریاب (Router) شبکه، سرویسدهندههای مختلف مانند وب، بانک اطلاعاتی، فایل، چاپ و...، میزهای کار (Desktop)، ایستگاههای کاری (Workstations) و... سیستمعامل گنو/لینوکس حتی این امکان را دارد که از آن بتوان به صورت یک سیستم زنده و پرتابل استفاده کرد. به این معنی که کل سیستمعامل از روی یک دیسک CD اجرا شود و شما آنرا با خودتان جابجا کنید و میزکار و تنظیماتتان را همراه خودتان منتقل کنید. علاوه بر این، این قابلیت برای رفع اشکال و نمایش آن نیز بسیار مفید است.
گنو/لینوکس : تنوع در انتخاب
بدلیل آزاد بودن سیستمعامل گنو/لینوکس، هر گروه یا موسسه تجاری، یک نسخه خاص از آن که به توزیع یا پخش (Distribution) معروف هستند، منتشر ساخته است. این توزیعهای مختلف همگی گنو/لینوکس هستند، ولی هریک معمولا برای یک یا چند امر خاص مانند سرویسدهنده، دیوار آتش، میزکار و... طراحی شدهاند و هریک قابلیتها و بهینه سازیها خاص خودشان را به کاربران ارائه میکنند. کاربران در این میان آزادی انتخاب زیادی داشته و میتوانند چیزی که کاملا نیازشان را برطرف میکند، انتخاب کنند. چیزی که در ویندوز نمیتوان مفهومی برای آن پیدا کرد.
گنو/لینوکس : سیستمعاملی حرفهای
گنو/لینوکس یک سیستمعامل حرفهای است. یعنی ممکن است یک کاربر کاملا غیر فنی برای مدیریت آن و انجام برخی از تنظیمات سختافزاری دچار مشکل شود و نتواند به راحتی این کار را انجام دهد. البته برخی از توزیعهای گنو/لینوکس این امور را بسیار راحت (و حتی راحتتر از ویندوز) کردهاند، ولی با این حال به طور کلی، گنو/لینوکس یک سیستمعامل حرفهای است که در عین سادگی، از پیچیدگیهای فنی زیادی برخوردار است. البته تمام کاربران لازم نیست این امور را بدانند. مثلا یک کارمند دفتری که اموری مانند تایپ و حسابداری را با کامپیوترش انجام میدهد، ممکن است از نظر فنی تفاوتی را احساس نکند، ولی گنو/لینوکس خوراکی ۴ ساله برای کاربران خوره فراهم میسازد! برخلاف ویندوز، نکات بیپایانی برای یادگیری در گنو/لینوکس وجود دارد. این سیستمعامل ۴ سال به راحتی شما را مشغول خواهد کرد و میتوانید مطمئن باشید پس از آن بازهم مطالب جدیدی برای یادگیری وجود خواهند داشت! پس خورههای کامپیوتری از آن لذت وافری خواهند برد و هرگز آنرا رها نخواهند کرد.
برخلاف ویندوز، در گنو/لینوکس راحتتر هستید تا بسیاری از کارهای پیکربندی و سیستمی را از خط فرمان بسیار قدرتمند و عالی آن انجام دهید. با اینکه برای بسیاری از امور مانند ویندوز ابزارهای گرافیکی طراحی شده است، یک کاربر حرفهای واقعا از خط فرمان گنو/لینوکس لذت خواهد برد. خط فرمان ویندوز را اصلا میتوان خط فرمان نامید؟
گنو/لینوکس : بهشت برنامه نویسان!
گنو/لینوکس را بهشت برنامه نویسان نامیدهاند. برخلاف ویندوز که اکثر ابزارهای برنامه نویسی روی آنرا باید جداگانه نصب و حتی خریداری نمایید، گنو/لینوکس به همراه تمامی ابزارهای برنامه نویسی مورد نیازتان و با هر زبانی که فکر کنید ارائه میشود. کافی است آنرا نصب کنید و کار برنامه نویسیتان را با ابزارهای دلخواهتان شروع کنید.
گنو/لینوکس : یک جعبه ابزار کامل
گنو/لینوکس برای کاربران حرفهای، یک جعبه ابزار کامل به شما میرود که در آن تمامی ابزارهای مورد نیاز مانند برنامههای اینترنتی، ابزارهای امنیتی مانند ابزارهای آزمایش شبکه، ابزارهای برنامه نویسی، هزاران صفحه کتاب و راهنما در آن پیدا خواهید کرد. ابزارهایی که در اختیارتان قرار دارد چنان متنوع هستند که میتوانید ۹۰ درصد اطمینان داشته باشید که پس از نصب آن به چیز دیگری نیاز نخواهید داشت.
گنو/لینوکس : یکی از زیباترین دستاوردهای بشری
گنو/لینوکس در سایه همکاری و تبادلات علمی هزاران نفر در سرتاسر جهان ایجاد شده و توسعه یافته است. این همکاری چنان گسترده و زیبا بوده و هست، که به سیستمعامل گنو/لینوکس لقب «یکی از زیباترین دستاوردهای همکاری جمعی بشر» داده شده است. فرهنگ حاکم در جامعه گنو/لینوکس و بازمتن، فرهنگ کمک، اشتراک اطلاعات و تلاش برای بهبود هرچه بیشتر محصولات و «انجام هرکاری که از دستت برمیآید» است. هرکس که میخواهد با این سیستمعامل کار کند، باید تمامی دیدگاهها و عقاید قبلی خود را درباره نرمافزارها و سیستمعامل کنار گذاشته و با یک دیدگاه جدید و طرز فکر متحول شده وارد دنیای گنو/لینوکس شود، زیرا با فرهنگ حاکم متفاوتی روبرو خواهد بود. گنو/لینوکس نوید دهنده آزادی است...
مفاهیم کلاسترها و OpenMosix
پیشدرآمد
مبحث کلاسترها در لینوکس یکی از جذابترین و جالبترین مباحث برای افراد علاقهمند به پردازشهای موازی است. مقاله حاضر برگرفته از نوشتههای دانیل رابینز (Daniel Robbins) میباشد. این نوشتهها را میتوانید از این نشانی دریافت نمایید(ww.technotux.org). دانیل رابینز طراح و خالق لینوکس Gentoo میباشد. در بخش نخست این مقاله که اکنون در حال خواندن آن هستید، با مفاهیم کلاسترهای لینوکس تا حدودی آشنا خواهید شد.
کلاسترها چه هستند؟
به طور عمومی هنگامی که صحبت از کلاسترها میشود، مقصود فناوریهایی است که از طریق آن کامپیوترهای مختلف بتوانند با هم و با اشتراک قدرت پردازش هم، بتوانند امور پردازشی را که به آنها محول شده است، انجام دهند. این امور پردازشی همه چیز میتواند باشد. از پردازشهای سنگین علمی تا تبدیل فایلهای موسیقی و یا رندر کردن جلوههای ویژه فیلمهای سینمایی. برای مثال، تمامی جلوههای ویژه فیلمهای ارباب حلقهها توسط کلاسترهای لینوکس رندر و پردازش شدهاند.
انواع مختلفی از فناوریهای کلاستر سازی برای سیستمعامل لینوکس وجود دارند. یکی از شناخته شده ترین آنها کلاستر Beowulf است. این کلاستر حاوی چندین ماشین است که توسط یک شبکه محلی پرسرعت به هم متصل شدهاند. برای استفاده از این سیستمهای کلاستر، برنامههای کاربردی باید مجددا برای استفاده از آن با استفاده از کتابخانههای کلاستر سازی نوشته شوند. عمومیترین کتابخانههای کلاستر سازی عبارتند از PVM و MPI. هر دوی این کتابخانهها بسیار عالی کار میکنند. با استفاده این کتابخانهها، برنامه نویسان قادر به نوشتن برنامههایی هستند که از منابع روی کلاستر همانند منابع روی یک کامپیوتر، بهره گیری نمایند.برای بسیاری از برنامههای کاربردی، PVM و MPI امکان افزایش خطی قدرت پردازش کلاسترها را با توجه به تعداد ماشینهای روی آن فراهم مینمایند.
PVM و MPI به درد همه نمیخورد!
با اینکه کلاسترهای Beowulf بسیار قدرتمند هستند، ولی به درد همه کس نمیخورند! بزرگترین اشکال آنها نیاز به نرمافزارهای خاص میباشد که با استفاده از PVM و MPI نوشته شده باشند تا بتوانند از مزایای کلاستر استفاده کنند. البته این برای مراکز علمی و تحقیقاتی که برنامههای کاربردی خاص خود را از ابتدا مینویسند، اشکال مهمی نیست. آنها به راحتی قادرند تا از MPI و PVM استفاده کنند.
حقیقتا درصد افراد و موسساتی که برنامههای کاربردی خود را از ابتدا مینویسند بسیار پایین است. برای کسانی که مایل هستند تا یک کلاستر بنا کرده و از مزایای آن در اجرای برنامههای کاربردی عادی استفاده کنند، این یک مسئله بزرگ است! برنامههای کاربردی این دسته از موسسات بدون استفاده از کتابخانههای کلاستر سازی نوشته شدهاند، بنابراین این گونه موسسات قادر نیستند تا از مزایای کلاسترها بهرهگیری نمایند.
آیا جالب نیست که یک فناوری وجود داشته باشد تا بتوانید با استفاده از آن از مزایای کلاسترهای لینوکس استفاده کنید، بدون آنکه نیاز داشته باشید تا برنامههای کاربردی خود را از ابتدا نوشته و یا حتی آنها را مجددا کامپایل نمایید؟ خوشبختانه چنین فناوری وجود دارد و نام آن OpenMosix است!
ورود به OpenMosix
OpenMosix قابلیتهای کلاستر سازی را به هسته لینوکس اضافه میکند، بنابراین هر پروسه استاندارد لینوکس قادر خواهد بود تا از مزایای منابع کلاستر استفاده نماید. با استفاده از تکنیکهای موازنه بار تطبیقی (Adaptive Load Balancing) پردازشهای در حال اجرا بر روی یک گره (node) از کلاستر، قادرند تا بطور نامحسوس به یک گره دیگر از کلاستر مهاجرت کرده و بتوانند سریعتر اجرا شوند. بدلیل اینکه OpenMosix بطور کاملا نامحسوس (Transparent) عمل میکند، پردازشهایی که از یک گره به گره دیگر مهاجرت میکنند، حتی نمیدانند (لازم هم نیست بدانند) که در یک ماشین دیگر در حال اجرا هستند!
نامحسوس بودن OpenMosix به این معنی است که برای استفاده از مزایای موازنه بار تطبیقی آن، نیازی به برنامه نویسی خاصی نیست. در حقیقت، یک نصب پیشگزیده OpenMosix به طور خودکار پردازشها را به بهترین گره منتقل خواهد کرد. این قابلیت OpenMosix را تبدیل به یک راهحل کلاستر سازی میکند که میتواند برای بخش عظیمی از برنامهها مفید باشد.