موضوع مقاله: دراگون‌فلای بی‌اس‌دی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # دراگون‌فلای بی‌اس‌دی | مقدمه: دراگون‌فلای بی‌اس‌دی یک سیستم‌عامل آزاد و شبه یونیکس است که از فری‌بی‌اس‌دی ۴٫۸ منشعب شده‌است. | ## بخش 1: دراگون‌فلای بی‌اس‌دی | بنیان‌گذار این پروژه، متیو دیلونMatthew Dillon است که یک توسعه‌دهندهٔ آمیگا در اواخر دههٔ ۱۹۸۰ و اوایل ۱۹۹۰ و همچنین یکی از توسعه‌دهندگان فری‌بی‌اس‌دی طی سال‌های ۱۹۹۴ تا ۲۰۰۳ بود. او کار بر روی دراگون‌فلای بی‌اس‌دی را در ژوئن ۲۰۰۳ آغاز کرد و خبر آغاز بکار این پروژه را در ۱۶ ژوئن ۲۰۰۳ در لیست پستی فری‌بی‌اس‌دی اعلام کرد. دیلون به این دلیل پروژه دراگون‌فلای بی‌اس‌دی را آغاز کرد که باور داشت روش‌ها و تکنیک‌هایی که در فری‌بی‌اس‌دی نسخه ۵ برای پیاده‌سازی چند پردازشی متقارن و ریسه‌بندی انتخاب شده بود، باعث می‌شد تا عملکرد سیستم ضعیف شود و نگهداری از کدهای منبع آن سخت شود. او قصد داشت این مشکلات را در فری‌بی‌اس‌دی اصلاح کند اما به دلیل اختلاف نظر با دیگر توسعه‌دهندگان فری‌بی‌اس‌دی بر سر پیاده‌سازی این ایده‌ها، سرانجام دسترسی کامیت کردن به صورت مستقیم در درخت کد منبع فری‌بی‌اس‌دی، از او گرفته شد. با این وجود، پروژه‌های فری‌بی‌اس‌دی و دراگون‌فلای بی‌اس‌دی هنوز هم در زمینه‌هایی از جمله رفع باگ‌های نرم‌افزاری، بروزرسانی درایورها و دیگر موارد، با هم همکاری می‌کنند و در ارتباط هستند. در حال حاضر، توسعهٔ دراگون‌فلای، که قرار بوده ادامه‌دهندهٔ راه سری ۴ فری‌بی‌اس‌دی باشد، فاصلهٔ زیادی با نسخه‌های حال حاضر فری‌بی‌اس‌دی گرفته‌است. اهداف پروژهٔ دراگون‌فلای بی‌اس‌دی، عمدتاً با الهام‌گیری از سیستم‌عامل آمیگااواس تدوین شده‌اند. تاریخچه راست|انگشتی|متیو دیلون، بنیان‌گذار و رهبر دراگون‌فلای بی‌اس‌دی پروژهٔ دراگون‌فلای بی‌اس‌دی، توسط متیو دیلون (زادهٔ ۱۹۶۶)، مهندس نرم‌افزار اهل ایالات متحده آمریکا بنیان نهاده شد. او در رشته‌های مهندسی الکترونیک و علوم رایانه در دانشگاه کالیفرنیا، برکلی تحصیل کرده‌است و اولین بار در همان دانشگاه در سال ۱۹۸۵ با بی‌اس‌دی آشنا شد. دیلون همچنین بخاطر نوشتن یک کامپایلر برای زبان برنامه‌نویسی سی بنام DICE، برنامه‌نویسی بر روی آمیگا، کار بر روی هستهٔ لینوکس و همچنین کشف یک باگ در پردازندهٔ مدل اوپترون شرکت AMD شناخته می‌شود. دیلون یک برنامهٔ خبررسان اینترنتی به نام «دیابلو» نوشته بود که برنامهٔ محبوبی در میان ارائه‌دهندگان خدمات اینترنتیISP بود. دیلون در سال ۱۹۹۷، دسترسی کامیت به کد منبع فری‌بی‌اس‌دی دریافت کرد و در کنار مشارکت‌های دیگرش در این پروژه، کمک‌های زیادی به زیرسیستم حافظهٔ مجازی در این سیستم‌عامل کرد. او در سال ۲۰۰۳ پروژهٔ دراگون‌فلای بی‌اس‌دی را با انشعاب از فری‌بی‌اس‌دی بنیان نهاد. علت این‌کار، کشمکش و نزاع با دیگر توسعه‌دهندگان فری‌بی‌اس‌دی بود که باعث شده بود دسترسی او به مخازن کد منبع فری‌بی‌اس‌دی قطع شود. پروژهٔ دراگون فلی‌بی‌اس‌دی منجر به توسعه‌یافتن یک فایل سیستم جدید به نام HAMMER شد که دیلون این فایل سیستم را براساس ساختاردادهٔ درخت بی نوشته‌است. ساختار سیستم هسته هستهٔ دراگون‌فلای یک هستهٔ پیوندی است که هم ویژگی‌های هستهٔ یکپارچه و هم ویژگی‌های ریزهسته را باهم دارد. برای مثال، هستهٔ دراگون‌فلای مجهز به قابلیت ارسال پیغام است که در ریزهسته‌ها پیدا می‌شود؛ این قابلیت اجازه می‌دهد تا قسمت‌های بیشتری از سیستم‌عامل بتواند از حافظهٔ محافظت‌شده بهره‌مند گردد، به‌طوری‌که همچنان در انجام برخی از کارهای حیاتی، سرعتی برابر با سرعت هسته‌های یکپارچه را داشته باشد. زیرسیستم پیام‌رسانی دراگون‌فلای بی‌اس‌دی، مشابه دیگر زیرسیستم‌های پیام‌رسانی — که در برخی ریزهسته‌ها از جمله گنو ماخ یافت می‌شوند — طراحی شده‌است؛ با این حال، طراحی زیرسیستم پیام‌رسانی دراگون‌فلای از پیچیدگی کمتری برخوردار است. بر طبق گفتهٔ توسعه‌دهندهٔ دراگون‌فلای بی‌اس‌دی، متیو دیلون، پیشرفت‌هایی هم در آماده‌سازی قابلیت پیام‌رسانی هم برای دستگاه‌های ورودی/خروجی و هم برای فایل سیستم مجازی حاصل شده‌است که برآورده شدن باقی اهداف پروژه را تسهیل می‌کند. زیرساخت جدید، این امکان را فراهم می‌کند تا بتوان بسیاری از بخش‌های هسته را به فضای کاربری منتقل کرد. در فضای کاربری، می‌توان این بخش‌ها را راحت‌تر اشکال‌زدایی کرد، چرا که برنامه‌ها در فضای کاربری، کوچکتر و منزوی‌تر هستند؛ برخلاف برنامه‌های موجود در هسته که معمولاً برنامه‌ها بخش‌های کوچکی از یک قطعه کد بزرگتر به حساب می‌آیند و مدیریت آن‌ها سخت‌تر است. علاوه بر آن، منتقل کردن کدهای هسته به بخش فضای کاربری، باعث پایدارتر شدن و مستحکم‌تر شدن سیستم می‌شود، به عنوان مثال، اگر یکی از گرداننده‌های دستگاه دچار اشکال شود، تنها همان بخش تحت تأثیر قرار خواهد گرفت و در کار کل هسته اختلال ایجاد نخواهد کرد. فراخوان‌های سیستمی به دو بخش فضای کاربری و فضای هسته تقسیم شده‌اند و در پیام‌ها کپسوله‌سازی می‌شوند. این کار باعث می‌شود تا با منتقل کردن برخی از فرخوان‌های سیستمی استاندارد، به یک لایهٔ سازگاری که در فضای کاربری قرار دارد، پیچیدگی و حجم هستهٔ سیستم‌عامل کمتر شود. علاوه بر آن، این کار حفظ سازگاری بین نسخه‌های پسین و پیشین دراگون‌فلای را هم راحت‌تر می‌کند. کدهای مربوط به سازگاری با لینوکس و دیگر سیستم‌عامل‌های شبه یونیکس هم به بیرون از هسته منتقل شده‌اند. دراگون‌فلای بی‌اس‌دی هم همانند جد خود فری‌بی‌اس‌دی، از قابلیت زندان‌ها پشتیبانی می‌کند که مدل پیشرفته‌تری از chroot است. | ## بخش 2: دراگون‌فلای بی‌اس‌دی | به کمک زندان‌ها، می‌توان چند سیستم‌عامل مهمان را به صورت هم‌زمان بر روی دراگون‌فلای اجرا کرد، به‌طوری‌که هستهٔ سیستم میزبان، بین همهٔ آن‌ها به اشتراک گذاشته می‌شود. اما زندان‌ها را نمی‌توان به معنای واقعی کلمه، یک راه حل مجازی‌سازی به حساب آورد، چرا که سیستم‌عامل‌های مهمان تنها می‌توانند مشابه سیستم میزبان، دراگون‌فلای بی‌اس‌دی، باشند. ریسه‌بندی از آنجایی که پشتیبانی از چندین معماری پردازنده، باعث می‌شود تا پشتیبانی کردن از چند پردازشی متقارن هم پیچیده‌تر شود، پروژه دراگون‌فلای بی‌اس‌دی، پشتیبانی از سکوهای سخت‌افزاری خود را محدود به تنها سکوی x86-64 کرده‌است. دراگون‌فلی در ابتدا از سکوی x86 هم پشتیبانی می‌کرد، با این حال در نسخهٔ ۴٫۰ پشتیبانی از سکو قطع شد. و در نسخه ۴٫۰، به‌طور کلی پشتیبانی از 32-bit را متوقف کرد، دراگون‌فلای بی‌اس‌دی از نسخهٔ ۱٫۱۰ به بعد، از ریسه‌بندی فضای کاربری به صورت ۱:۱ پشتیبانی می‌کند (یک ریسه در هسته، به ازای هر ریسه در فضای کاربری) که در مقایسه با مدل N:M راه‌حلی نسبتاً آسان محسوب می‌شود و پیاده‌سازی و نگهداری از آن هم راحت‌تر است. همچنین، دراگون‌فلای پشتیبانی از چندریسگی را از فری‌بی‌اس‌دی به ارث برده‌است و از این قابلیت پشتیبانی می‌کند. در دراگون‌فلای بی‌اس‌دی، هر یک از پردازنده‌ها، زمان‌بند LWKT مخصوص به خودش را دارد. ریسه‌ها به محض ایجاد شدن، به یک پردازندهٔ خاص اختصاص می‌یابند و هرگز به‌طور قبضه‌کردنی بین پردازنده‌ها تعویض نمی‌شوند؛ تنها راه منتقل کردن یک ریسه از یک پردازنده به پردازنده دیگر، ردوبدل شدن یک پیغام وقفه بین-پردازنده‌ای یا IPI بین پردازنده‌های درگیر است که این پیغام‌ها، به صورت ناهمگام ارسال می‌شوند. یکی از مزایای این نوع زیرسیستم ریسه‌بندی بخش‌بخش شده، این است که در سیستم‌هایی که دارای چندین پردازنده هستند، حافظه‌های نهان موجود بر روی پردازنده‌ها، دارای اطلاعات تکراری و زائد نخواهند بود که این باعث می‌شود هر پردازنده، بتواند از حافظهٔ نهان خود برای ذخیره کردن اطلاعاتی که قرار است بر روی آن کار کند، استفاده کند و به این ترتیب کارایی سیستم بالاتر رود. به منظور اینکه چندین ریسهٔ مختلف نتوانند به صورت هم‌زمان یک منبع مشترک را تغییر داده یا مورد دسترسی قرار دهند، دراگون‌فلای از نواحی بحرانی و همین‌طور از توکن‌های نوبت‌بندی استفاده می‌کند. تا همین اواخر، دراگون‌فلای بی‌اس‌دی از splها هم استفاده می‌کرد، اما اکنون آن‌ها با نواحی بحرانی جایگزین شده‌اند. بیشتر بخش‌های اصلی سیستم، از جمله زیرسیستم LWKT، زیرسیستم پیام‌رسانی IPI و تخصیص‌دهندهٔ حافظهٔ هستهٔ جدید، به صورت قفل‌نشدنی هستند؛ به این معنی که آن‌ها از mutexها استفاده نمی‌کنند و هر یک از فرایندها هم بر روی یک پردازنده اجرا می‌شود. برای هر پردازنده، ناحیه‌ای بحرانی وجود دارد که از آن برای حفاظت در برابر وقفه‌های محلی استفاده می‌شود؛ این کار تضمین می‌کند ریسه‌ای که هم‌اکنون در حال اجراست، قبضه نخواهد شد. برای جلوگیری از وقوع دسترسی هم‌زمان از طرف دیگر پردازنده‌ها، از توکن‌های نوبت‌بندی استفاده شده‌است و چند ریسه می‌توانند به‌طور هم‌زمان این توکن‌ها را در اختیار داشته باشند تا این اطمینان حاصل شود که در هر زمان، تنها یکی از آن ریسه‌ها می‌تواند اجرا می‌شود. در کنار دیگر چیزها، استفاده از توکن‌های نوبت‌بندی از بسیاری از موقعیت‌هایی که ممکن است باعث وقوع بن‌بست یا واژگونی اولویتی در حین استفاده از mutexها شود، جلوگیری می‌کند و همچنین به‌طور قابل ملاحظه‌ای طراحی و پیاده‌سازی رویهٔ چند مرحله‌ای را ساده‌تر می‌کند که احتیاج به این دارد که یک منبع در میان چند ریسه به اشتراک گذاشته شود. اما برخلاف پیاده‌سازی فعلی RCU در لینوکس، این بخش در دراگون‌فلای طوری پیاده‌سازی شده که تنها پردازنده‌هایی که بر روی توکن یکسانی در رقابت هستند، تحت تأثیر قرار می‌گیرند، نه کل پردازنده‌های موجود در سیستم. دراگون‌فلای از یک تخصیص‌دهنده پاره‌ای استفاده می‌کند که برای اختصاص دادن حافظه به برنامه‌ها، نه نیاز به استفاده از mutexها و نه نیاز به انجام عملیاتی از نوع مسدودشدنی دارد. این تخصیص‌دهنده، برای استفاده در فضای کاربری، به کتابخانه استاندارد سی هم پورت شده و جای پیاده‌سازی malloc فری‌بی‌اس‌دی را گرفته‌است. هسته مجازی از نسخهٔ ۱٫۸ به بعد، دراگون‌فلای بی‌اس‌دی یک راهکار مجازی‌سازی مشابه UML را معرفی کرده که به کمک آن می‌توان یک هستهٔ دیگر که از هستهٔ اصلی سیستم‌عامل مستقل است را در داخل فضای کاربری اجرا کرد. این هستهٔ مجازی،vkernel در یک محیط کاملاً مجزا و قرنطینه اجرا می‌شود و رابط‌های شبکه و رابط‌های ذخیره‌سازی آن هم به صورت شبیه‌سازی‌شده هستند. یکی اینکه این هستهٔ مجازی، بسیاری از روتین‌ها و قابلیت‌های مدیریت سطح پایین سخت‌افزار را ندارد و همچنین تا جایی که امکان دارد از توابع موجود در کتابخانه استاندارد سی، در عوض پیاده‌سازی‌های موجود در هسته، استفاده می‌کند. از آنجایی که هم هستهٔ مجازی و هم هستهٔ واقعی از روی کد منبع یکسانی کامپایل می‌شوند، رویه‌های وابسته به پلتفرمplatform-dependent و پیاده‌سازی‌های مجدد توابع کتابخانه استاندارد سی به‌طور کاملاً مستقل در درخت کدهای منبع نگهداری می‌شوند. سکویی که هستهٔ مجازی بر روی آن اجرا می‌شود، در اصل یک لایهٔ انتزاعی سطح بالا است که هستهٔ اصلی آن را فراهم کرده. این لایهٔ انتزاعی شامل یک زمان‌سنج مبتنی بر kqueue، یک کنسول (که در اصل همان ترمینالی است که هستهٔ مجازی از طریق آن اجرا شده)، ایمیج هارددیسک (یک فایل که با آن مثل دیسک سخت رفتار می‌شود) و یک رابط اترنت، که تمامی بسته‌های دریافتی را به رابط tap سیستم میزبان تونل می‌زند. مدیر بسته در دراگون‌فلای بی‌اس‌دی، می‌توان از طریق pkgng، نرم‌افزارهای جانبی را به صورت بسته‌های باینری از قبل کامپایل شده نصب کرد یا اینکه از طریق یک مجموعه پورت‌های مختص خود دراگون‌فلای که دی‌پورتزDPorts نام دارد، اقدام به نصب برنامه‌های جانبی کرد. دراگون‌فلای بی‌اس‌دی در اوایل از پورت‌های فری‌بی‌اس‌دی به‌عنوان مدیر بستهٔ اصلی خود استفاده می‌کرد. اما از نسخهٔ ۱٫۴ به بعد، توسعه‌دهندگان، پکیج سورس را به‌عنوان مدیر بستهٔ رسمی برگزیدند. | ## بخش 3: دراگون‌فلای بی‌اس‌دی | به این ترتیب، توسعه‌دهندگان دراگون‌فلای بی‌اس‌دی مجبور نبودند وقت زیادی را برای نگه‌داری کردن از تعداد زیادی برنامه جانبی صرف کنند، در حالی که هنوز هم به برنامه‌های بروز دسترسی داشتند. همچنین این کار به توسعه‌دهندگان پکیج سورس هم این امکان را می‌داد تا مطمئن شوند که سامانهٔ مدیریت بسته آن‌ها قابل حمل و سازگارپذیر است. سازگار نگه‌داشتن دراگون‌فلای بی‌اس‌دی با پکیج‌سورس، نیازمند تلاش‌ها و زحمات بیشتری شده بود که در ابتدا پیش‌بینی نشده بود؛ بنابراین، پروژهٔ دراگون‌فلای مکانیزم جدیدی به نام DPorts را معرفی کرد که در اصل یک پوسته برای پورت‌های فری‌بی‌اس‌دی است. فایل سیستم HAMMER در کنار سیستم فایل یونیکس، که در اکثر سیستم‌عاملهای بی‌اس‌دی فایل سیستم پیشفرض است، دراگون‌فلای بی‌اس‌دی فایل سیستم جدیدی به نام HAMMER را معرفی کرده‌است. فایل سیستم HAMMER که اختصاصاً برای دراگون‌فلای توسعه داده شده، فایل سیستمی مشابه ZFS با امکانات بالا و در عین حال با طراحی بهتر است. HAMMER از تاریخچهٔ فایل سیستم قابل تنظیم‌شدن، تصویر لحظه‌ای، چک‌سام، جلوگیری از ذخیره‌شدن اطلاعات دوگانه و تکراری و دیگر قابلیت‌های معمول در فایل سیستم‌هایی از این قبیل پشتیبانی می‌کند. این فایل سیستم به عنوان یکی از قابلیت‌های جالب توجه دراگون‌فلای در نظر گرفته می‌شود. نسل جدید این فایل سیستم موسوم به ،HAMMER2 توسط متیو دیلون در حال توسعه داده شدن است. فایل سیستم HAMMER2 در نسخه ۳٫۸ دراگون‌فلای در نصب پیشفرض قرار گرفت، اما هنوز قابل استفاده نیست و توسعهٔ آن هنوز هم ادامه دارد. devfs در سال ۲۰۰۷ پروژهٔ دراگون‌فلای بی‌اس‌دی از یک فایل سیستم دستگاهی جدید بهره‌مند گشت که گره‌های دستگاهی را به صورت پویا حذف و اضافه می‌کند و دسترسی به دستگاه‌ها را با استفاده از مسیرهای ارتباطی میسر می‌سازد. همچنین، این فایل سیستم، می‌تواند درایورها را با استفاده از شماره سریال آن‌ها شناسایی کند و دیگر به یک فایل سیستم از قبل پر شده در مسیر /dev احتیاج ندارد. به موجب این قابلیت، وقتی که یک برنامهٔ بزرگ که به صورت دینامیک لینک شده، در حافظه اصلی سیستم بارگذاری می‌شود، یک تصویر لحظه‌ای از فضای حافظه مجازی آن برنامه، برای استفاده در آینده، تهیه می‌شود. به این ترتیب، اگر در آینده نیاز به اجرای مجدد آن برنامه بود، برنامه مورد نظر با سرعتی بسیار بیشتر از حد معمول خود اجرا خواهد شد. برنامه‌های بزرگ که دارای کتابخانه‌های اشتراکی زیادی هستند، بیشترین فایده را از این قابلیت خواهند برد. همانند فری‌بی‌اس‌دی و اوپن‌بی‌اس‌دی، توسعه‌دهندگان دراگون‌فلای بی‌اس‌دی هم به آهستگی مشغول جایگزین کردن کدهای خود از شیوهٔ K&R با معادل مدرن‌تر ANSI هستند. همانند دیگر سیستم‌عامل‌ها، قابلیت حفاظت در برابر حملات تخریب پشته به صورت پیشفرض در کامپایلر فعال است. قابل ذکر است که از تاریخ ۲۳ ژوئیهٔ ۲۰۰۵ به بعد، هستهٔ سیستم دیگر به صورت پیشفرض با خاموش بودن این قابلیت کامپایل می‌شود. از آنجایی که دراگون‌فلای بی‌اس‌دی از فری‌بی‌اس‌دی مشتق شده‌است، به راحتی و با اجرای چند دستور ساده می‌توان اقدام به کامپایل مجدد کل سیستم‌عامل از روی کدهای منبع کرد. توسعه‌دهندگان دراگون‌فلای بی‌اس‌دی، از برنامهٔ گیت برای نگهداری، اعمال تغییرات و کنترل کدهای منبع خود استفاده می‌کنند. برخلاف فری‌بی‌اس‌دی، توسعه‌دهندگان دراگون‌فلای بی‌اس‌دی، به سبب کوچکتر بودن تیم توسعه‌دهندگان، هر دو شاخهٔ پایدار و ناپایدار کدهای منبع را در یک درخت نگه می‌دارند. این دیسک‌ها را می‌توان به صورت رایگان، به همراه کدهای منبع، از وبگاه رسمی این سیستم‌عامل دریافت کرد. بدون اینکه نیازی به نصب سیستم‌عامل باشد، می‌توان کل سیستم‌عامل را با تمام قابلیت‌های آن از روی همین رسانه‌ها راه‌اندازی کرد. این دیسک شامل تمام اجزای پایه‌ای سیستم‌عامل و همین‌طور صفحات راهنما است؛ اما ممکن است در آینده کدهای منبع سیستم‌عامل و همچنین تعدادی نرم‌افزار مفید دیگر هم در آن گنجانده شود. مزیت این کار این است که تنها با داشتن یک CD، هم می‌توان سیستم‌عامل را بر روی هارد دیسک نصب کرد، هم می‌توان بدون نیاز به نصب سیستم‌عامل، از ابزارها و قابلیت‌های آن برای اهداف گوناگونی مانند تعمیر یک سیستم‌عامل آسیب دیده و … استفاده کرد و هم می‌توان سیستم‌عامل را بدون نیاز به نصب آن، آزمایش کرد. همانند دیگر سیستم‌عامل‌های متن‌باز خانوادهٔ بی‌اس‌دی، دراگون‌فلای هم تحت اجازه‌نامهٔ بی‌اس‌دی عرضه می‌شود. | ## جمع‌بندی | چرخهٔ انتشار دراگون‌فلای، معمولاً هر شش ماه بوده و دو نسخه از این سیستم در سال عرضه می‌شود.