موضوع مقاله: گنو هرد | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # گنو هرد | مقدمه: گنو هرد یک هسته سیستم‌عامل است که به عنوان هسته سیستم عامل گنو و جایگزینی برای هسته یونیکس که مالکیتی است طراحی و توسعه داده شده‌است. | ## بخش 1: گنو هرد | گنو هرد از سال ۱۹۹۰ به وسیلهٔ پروژه گنو از بنیاد نرم‌افزار آزاد در حال توسعه است. گنو هرد شامل مجموعه‌ای از پروتکل‌ها و فرایندهای سرور (یا دیمن daemon در اصطلاح یونیکس) است که در ریزهسته گنو ماک اجرا می‌شود و در نظر گرفته شده‌اند که با همدیگر هسته سیستم عامل گنو را شکل دهند. هدف هرد پیش افتادن از سیستم عامل یونیکس در عملکرد، امنیت و ثبات است در حالی که تا حد زیادی با این سیستم‌عامل سازگار است. پروژه گنو معماری کارخواه-کارساز ریزهسته را به دلیل مزایای بیشتر نسبت به معماری سنتی هسته یکپارچه یونیکس برای این هسته انتخاب کرده‌است. ابزارهای آزاد گنو شهرت خوبی به دست‌آورد و به ابزارهای اختصاصی ارائه شده توسطه فروشندگان سیستم اولویت پیدا کرد. به گفته توماس بوشنل، معمار اولیه هرد، برنامه اولیه آن‌ها این بود که که با هسته 4.4BSD-Lite انطباق داشته باشد و اعلام کرد «در حال حاضر کاملاً برای من آشکار شده که این موفق خواهد بود و امروز دنیا مکان بسیار متفاوتی خواهد بود.» با این حال در سال ۱۹۸۷، به دلیل عدم همکاری برنامه نویسان برکلی، ریچارد استالمن پیشنهاد کرد به جای آن از ریزهسته ماک دانشگاه کارنگی ملون استفاده کنند. کار بروی هسته به دلیل عدم اطمینان از اینکه آیا دانشگاه کارنگی ملون کد ماخ را تحت یک مجوز مناسب عرضه خواهد کرد یا نه به تعویق افتاد. با انتشار هسته لینوکس در ۱۹۹۱، کاربران اجزای فضای کاربر گنو را به هسته لینوکس منتقل کردند و توزیع لینوکس را به وجود آوردند که در نهایت منجر به بحث نامگذاری گنو/لینوکس شد. با وجود یک اعلان خوش‌بینانه توسط استالمن در سال ۲۰۰۲ که پیش‌بینی کرده بود یک انشار از گنو هرد بعد از آن سال منتشر شود هرد هنوز هم مناسب محیط‌های تولید نیست. توسعه تا به حال انتظارات را برآورده نکرده‌است و هنوز هم اشکالات و ویژگی‌های ناتمام وجود دارد. در سال ۲۰۱۰ بعد از بیست سال توسعه، استالمن گفت که او «چندان به گنو هرد خوشبین نیست، پیشرفت‌هایی بوده اما برای اینکه به نظر فوق‌العاده باشد باید تعداد زیادی مشکل عمیق را حل کنیم.»، اما اضافه کرد «اتمام آن برای سیستم گنو خیلی مهم نیست» چون یک هسته آزاد در حال حاضر وجود دارد (لینوکس) و به پایان رساندن هرد مشکلات باقی ماننده سیستم عامل آزاد یعنی پشتیبانی از دستگاه‌ها را حل نمی‌کند. پروژه دبیان روی پروژه هرد کار کرده و توزیع دبیان گنو/هرد را برای سیستم‌های سازگار با IBM PC تولید کرد. | ## بخش 2: گنو هرد | در آگوست ۲۰۱۵، در پروژه تابستان کد گوگل، مدیر بسته گنو گیکس به گنو هرد پورت شد و به اولین مدیر بسته بومی برای گنو هرد تبدیل شد. معماری برخلاف اکثر هسته‌های شبه-یونیکس، هرد از معماری کارخواه-کارساز که در ریزهسته است استفاده می‌کند که مسئولیت ارائه اکثر سرویس‌های هسته - هماهنگی دسترسی به سخت‌افزار رایانه: واحد پردازش مرکزی (از طریق مدیریت فرایند، زمان‌بندی)، حافظه (از طریق مدیریت حافظه)، و دیگر دستگاه‌های ورودی/خروجی دیگر (از طریق زمان‌بند ورودی/خروجی) برای صدا، گرافیک، ذخیره‌سازی انبوه و غیره را فراهم می‌کند. در تئوری ریزهسته باید به همه راه‌اندازهای دستگاه‌ها اجازه دهد تا به صورت سرور در فضای کاربر ساخته شوند. دلیل این است که در ابتدا، راه‌اندازهای فضای کاربر به دلیل سربار ارتباطات بین فرایندی در هسته ماک عملکرد مناسبی نخواهند داشت. با کمک عملکرد ماشین‌های امروزی، ممکن است که این سربار باعث مشکل قابل توجهی نشود. این یک تصمیم فنی بود که به وسیلهٔ ریچارد استالمن گرفته شده‌است که فکر می‌کرد به دلیل صرفه‌جویی در کار، سرعت توسعه را افزایش خواهد داد اما او اذعان کرده که این تصمیم او اشتباه بوده‌است. الحاقات یونیکس تعدادی از مفاهیم سنتی یونیکس در هرد تغییر کرده یا توسعه یافته‌است. در یونیکس هر برنامه در حال اجرا یک شناسه کاربر (user id) دارد، که به‌طور معمول مربوط به کاربری است که فرایند را آغاز کرده‌است. یک فرایند هرد، از سوی دیگر، ریز مجموعه‌ای از شناسه‌های کاربر اجرا می‌شود که در نتیجه می‌تواند شامل یک شناسه، شناسه‌های متعدد یا حتی بدون شناسه باشد. برای مثال یک سرور کلمه عبور وجود دارد که می‌تواند بعد از ورود موفق آی‌دی را برگرداند. با توجه به فایل سیستم، یک برنامه مناسب می‌تواند به عنوان یک مترجم برای یک فایل تنها یا کل یک دایرکتوری به صورت سلسله مراتبی طراحی شود. هر دسترسی به فایل ترجمه شده یا در حالت بعد فایل‌های زیر ساختار سلسله مراتبی در حقیقت به وسیلهٔ برنامه به کار گرفته شده‌است. | ## بخش 3: گنو هرد | برای مثال یک مترجم فایل ممکن است بر خلاف لینک در یونیکس به سادگی عملیات خواندن و نوشتن را به فایل دیگری تغییر مسیر دهد. اثر مونت در یونیکس به دست آورده شده به وسیلهٔ راه‌اندازی یک مترجم فایل سیستم (با استفاده از دستور SETTRANS) مترجم‌ها همچینی می‌توانند برای ارائه خدمات به کاربر مورد استفاده قرار گیرند. آنگاه ابزارهای استانداردی ماننده ls و cp و rm می‌توانند دستکاری فایل‌ها در سیستم راه دور استفاده شوند. معماری سرور با توجه به مستندات دبیان، ۲۴ سرور (۱۸ سرور اصلی و ۶ سرور سیستم پرونده) با نام‌های زیر وجود دارد. سرورهای اصلی احراز هویت (سرور تأیید هویت): درخواست‌ها و پسوردها را از برنامه‌ها دریافت می‌کند و به آن‌ها یک شماره یکتا (ID) می‌دهد که مجوز برنامه را تغییر می‌دهد. proc (سرور فرایند): شماره فرایند را اختصاص می‌دهد و اقدامات سطح فرایند را مدیریت می‌کند. symlink (مترجم لینک‌های نمادی): لینک‌های نمادی را برای سیستم پرونده که آن‌ها را پشتیبانی نمی‌کند پیاده‌سازی می‌کند. بلوک‌های دیسک را از ریزهسته دریافت می‌کند و فایل‌ها و دایرکتوری‌ها را به برنامه‌های کاربردی می‌دهد. بلاک‌های سی‌دی یا دی‌وی‌دی را به فایل و دایرکتوری برای برنامه‌های کاربردی ترجمه می‌کند. nfsسیستم پرونده شبکه ufs مترجم سیستم پروندههای بی‌اس‌دی ftpfs مترجم سیستم پرونده اف‌تی‌پی storeio مترجم ذخیره‌سازی همه سرورها با رابط برنامه‌نویسی نرم‌افزار پازیکس پیاده‌سازی شده‌است، با هر سرور بخشی از رابط پیاده‌سازی شده‌است. | ## جمع‌بندی | به عنوان مثال، سرورهای سیستم پرونده مختلف هرکدام تماس سیستم پرونده را پیاده‌سازی کرده‌اند.