هسته لینوکس

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
لینوکس
NewTux.svg
Linux-x86-under-qemu.png
هسته لینوکس ۲٫۶٫۲۵٫۱۷ در حال بالاآمدن (بوت شدن)
نویسنده(های) اصلی لینوس توروالدز
انتشار ابتدایی ۱۹۹۱
انتشار پایدار ۴٬۰ / ۱۲ آوریل ۲۰۱۵؛ ۳ ماه پیش (۲۰۱۵-۰۴-12)
انتشار پیش‌نمایش ۴٬۰ آرسی ۷ / ۶ آوریل ۲۰۱۵؛ ۳ ماه پیش (۲۰۱۵-۰۴-06)
نوشته‌شده به سی و اسمبلی
سیستم‌عامل شبه-یونیکس
موجود به انگلیسی
گونه هسته
پروانه جی‌پی‌ال نسخه ۲
وب‌گاه www.kernel.org

هستهٔ لینوکس یک هسته سیستم‌عامل آزاد شبه یونیکس است که در ابتدا توسط لینوس توروالدز در سال ۱۹۹۱ ساخته شد و سپس با کمک توسعه‌دهندگان در سراسر جهان پیشرفت داده شد.

این هسته در اصل بر روی پردازندهٔ اینتل مدل ۸۰۳۸۶ و تقریباً بطور کامل با استفاده از زبان برنامه‌نویسی سی نوشته شده است. این هستهٔ سیستم‌عامل تحت مجوز عمومی گنو بصورت نرم‌افزار آزاد توزیع می‌شود.

هستهٔ لینوکس بهترین هستهٔ شناخته شده برای هسته سیستم‌عامل گنو/لینوکس است. توزیع نرم‌افزار براساس این هسته «توزیع گنو/لینوکس» نامیده می‌شود.

هستهٔ لینوکس یک هستهٔ سیستم‌عامل کامپیوتر شبه یونیکس هست. هستهٔ لینوکس یکی از پراستفاده‌ترین هستهٔ سیستم‌عامل در جهان می‌باشد، که سیستم عامل لینوکس مبتنی بر آن می‌باشد و بر سیستم کامپیوترهای سنتی، معمولاً در شکل توزیع لینوکس، و همچنین بر روی تجهیزات تعبیه شده مانند روترها گسترش یافته است.

سیستم عامل اندروید برای تبلت‌ها، کامپیوترها و تلفن‌های هوشمند به طور معمول بر روی هستهٔ لینوکس بنا شده‌اند.

در اصل، هستهٔ لینوکس در سال ۱۹۹۱ توسط یک دانشجوی علوم کامپیوتر فنلاندی به نام «لینوس توروالدز» خلق شد، برای کامپیوتر شخصی وی و بدون هیچ‌گونه قصد چند سکویی (نرم‌افزارهایی که در چندین سکوی رایانه قابل اجرا باشند)، اما دارای علم توسعه‌یافته‌ای بود که یک آرایه‌ای از معماری‌های کامپیوتر را، بیشتر از هر سیستم‌عامل دیگر یا هسته، پشتیبانی کند. لینوکس به سرعت توسعه‌دهندگان و کاربرانی که کدهایی از پروژه‌های نرم‌افزاری رایگان برای استفادهٔ سیستم‌عامل‌های جدید درست کردند را به خود جذب کرد. هستهٔ لینوکس کمک و همکاری‌های زیادی از جانب هزاران برنامه‌نویس دریافت کرد. با اینکه قسمتی از هسته عاملیت هست، برنامهٔ راه‌اندازی دستگاه‌ها سخت‌افزار را کنترل می‌کنند؛ (مین لاین) یا «وانیل» برنامه راه‌اندازی دستگاه‌ها به طور معمول ثابت و پایدار می‌باشد.

به‌هرحال، واسط بین هسته و ”LKM” (یک فایلی که شامل کد برای اجرای هسته می‌باشد)، بر خلاف بسیاری از هسته‌ها و سیستم‌عامل‌های دیگر، خیلی ثابت و پایدار توسط طرح نمی‌باشد.

هستهٔ لینوکس، توسط شرکت‌کنندگان جهانی توسعه یافته است، که یک مثال برجسته از منبع نرم‌افزارهای رایگان و باز می‌باشد. بحث‌های روزانهٔ توسعه‌دهندگان جایگاه خود را در لیست نامه‌های هستهٔ لینوکس (LKML) قرار دادند. هستهٔ لینوکس تحت GLPv2 منتشر شد، و با تعدادی از تصاویر میان افزار (Firmware) تحت گواهی‌های مختلف غیر رایگان منتشر کرد.

پیشینه[ویرایش]

در سال ۱۹۹۱ توروالدز بوجود آمدن این هسته را با یک رایانامهٔ تاریخی و مشهور بر روی یوزنِت در گروه خبری comp.os.minix اعلام کرد

«من یک سیستم‌عامل آزاد و فقط یک سرگرمی که مثل گنو بزرگ و حرفه‌ای نخواهد شد، برای اجرا روی پردازشگرهای اینتل ۸۰۳۸۶ و ۸۰۴۸۶ نوشته‌ام...»

در این زمان پروژه گنو تعداد زیادی از اجزاء مورد نیاز یک سیستم‌عامل آزاد را ساخته بود اما هستهٔ آن ناقص و خارج از دسترس بود؛ بنابراین هستهٔ نوشته شده توسط توروالدز برای این سیستم‌عامل آزاد استفاده شد.

در سال ۱۹۹۱، سیستم‌عامل بی‌اس‌دی هنوز نتوانسته بود خود را از قید و بندهای قانونی رها کند با این وجود، شرکت یک فضا برای هستهٔ لینوکس باز کرد و با وجود عاملیت محدود، نسخه‌های اولیه آن به سرعت توسعه‌دهندگان و کاربرهای خود را جمع کرد. به زودی هکرها در بهینه‌سازی دستورالعمل‌ها و ایده‌های هسته لینوکس شرکت کردند و امروزه تعداد افرادی که در این موارد همکاری می‌کنند به صدها برنامه‌نویس رسیده است.

تاریخ[ویرایش]

در اوریل ۱۹۹۱، لینوس توروالدز، یک دانشجوی ۲۱ ساله در دانشگاه هلسینکی(Helsinki)، در فنلاند بر روی بعضی از ایده‌های سادهٔ یک سیستم عامل شروع به کار کرد. وی با یک task switcher (=رفتن از یک برنامه به برنامه دیگر بدون خروج از برنامهٔ نخست) در زبان اسمبلی اینتل ۸۰۳۸۶ و یک راه انداز ترمینال شروع کرد. در ۲۵ اوت ۱۹۹۱، توروالدز اطلاعاتی رابر روی “comp.os.minix”، یک گروه خبری در Usenet قرار داد:من در حال انجام یک سیستم عامل رایگان (فقط برای سرگرمی و از روی علاقه، و بزرگ و حرفه‌ای مانند GUN نخواهد شد) برای هم نوع‌های 386(486)AT هستم. این از اوریل در حال ساخته شدن هست، و در حال آماده شدن می‌باشد. من هر بازخوردی در Minix بر روی چیزهایی که مردم می‌پسندند یا نمی‌پسندند را می‌خواهم، با این وجود سیستم عامل من هم تا حدی به این شباهت دارد (بعضی از ارایش‌های فیزیکی فابل‌های سیستم در میان اشیا دیگر).

در حال حاضر من بش(bash) 1.08و gcc(1.40) را انتقال داده‌ام، و همچنین اشبا یی که بنظر می‌رسند که کار کنند. این دلالت دارد بر اینکه من در مدت چندین ماه چیزهایی را به دست آوردم. [...] بله – این از هر مینیکس کدی آزاد هست، ویک fs چند رشته‌ای دارد. این یک سبک نیست (استفاده کردن از task switching 386)، و این به درستی نسبت به دیسک‌های سخت AT حمایت نمی‌شود، با این وجود این تمام چیزی هست که من دارم .

[…] این به طور معمول با زبان C نوشته شده، اما بیشتر مردم نخواهند گفت که من چه چیزی را باC نوشتم. این از هر ویژگی امکان پذیز۳۸۶ که من می‌توانم پیدا کنم استفاده می‌کند، همچنان که این یک پروژه ست به من درباره ۳۸۶ یاد داد. همان طور که اشاره شد، آن از MMU، برای صفحه بندی و همچنین برای قطعه سازی استفاده می‌کند.

آن تقسیم بندی که باعث می‌شود آن را واقعاً به ۳۸۶ وابسته سازد (هر کاری دارای یک بخش 64 Mb برای کد و اطلاعات می‌باشد- بیشترین حد ۶۴ کار در 4Gb. هر شخصی که بیشتر از 64 Mb نیاز داشته باشد – کوکی‌های سخت).[…] برخی تز فایل‌های C من (بویژه mm.c) تقریباً به اندازهٔ اسمبلرها هستند. […]

بعد از آن، بیشتر مردم کد به پروژه کمک کردند. در اوایل، انجمن MINIX کدهاییو ایده‌هایی به هستهٔ لینوکس کمک کرد.

در سپتامبر ۱۹۹۱، نسخه لینوکس ۰٫۰۱ بر روی سرور FTP(ftp.funet.fi) دانشگاه فنلاند و Research Network(FUNET) منتشر شد. آن دارای ۱۰۲۳۹ کد خط می‌باشد. در نهایت در اکتبر ۱۹۹۱، نسخه لینوکس ۰٫۰۲ منتشر شد.

در دسامبر۱۹۹۱، لینوکس ۰٫۱۱ منتشر شد. این نسخه اولین نسخهٔ خود میزبان(self-hosted) لینوکس ۰٫۱۱ می‌توانست توسط یک کامپیوتر در حال اجرای لینوکس ۰٫۱۱ کامپایل شود.

وقتی او نسخهٔ ۰٫۱۲ ر در فوریه ۱۹۹۲ منتشر کرد، توروالدزGPL را بر روی گواهی نامهٔ پیش نویس قبلی خود، که اجازهٔ توزبع مجدد تجاری نداشت، پذیرفت.

یک گروه خبری به اسم alt.os.linux شروع به کار کرد، و در ۱۹ ژانویه ۱۹۹۲، اواین اطلاعیه ساخته شد. در ۳۱ مارچ1992 alt.os.linux به comp.os.linux تبدیل شد.

سیستم XWindow به زودی به لینوکس منتقل شد. این پرش بزرگ اعداد نسخه (از ۰٫۱ تا ۰٫۹) این احساس را به وجود آورد که که یک نسخه با شماره ۱٫۰ بدون هیچگونه ضعفی نزدیک است و در حال آماده شدن است.

به هر حال، این مقدار کمی خوش بینی را اثبات می‌کند، و از ۱۹۹۳ تا اوایل ۱۹۹۴ ،۱۵ نسخه توسعه یافتهٔ ورژن ۰٫۹۹ ظاهر شد. در ۱۴ مارچ ۱۹۹۴، لینوکس ۱٫۰٫۰ منتشر شد، با ۱۷۶۲۵۰ خط کد. در مارچ ۱۹۹۵، لینوکس ۱٫۲٫۰ منتشر شد.(۳۱۰۹۵۰).

ورژن ۲ لینوکس، در ۹ ژوئن ۱۹۹۶، توسط نسخه‌های اصلی تحت عنوان نسخه ۲ در جریان افتاد.

ویژگی‌ها[ویرایش]

«لینوکس» فقط نام هستهٔ سیستم‌عامل گنو/لینوکس است. واژهٔ «هسته»، به سامانهٔ نرم‌افزاری سطح پایینی (به معنی نزدیک‌تر به سخت‌افزار در رده‌بندی معماری سیستم‌عامل) اشاره می‌کند که لایه‌ای در معماری سیستم‌عامل به نام لایه انتزاع سخت‌افزار را تأمین می‌کند و دیسک‌ها و سامانهٔ پرونده‌گردانی را بررسی می‌نماید و تراز کردن (Balancing) ذخیره‌سازی داده‌ها و شبکه‌بندی و برقراری امنیت را برعهده دارد.

باید توجه کرد که هسته یک سامانهٔ کامل نیست، ساخت یک سامانهٔ کامل براساس هستهٔ لینوکس به نام سیستم‌عامل لینوکس شهرت یافت (اگرچه بعضی‌ها ترجیح می‌دهند آن را سیستم‌عامل گنو/لینوکس بنامند و بر سر این نکته مجادله بسیاری وجود دارد. مردم عموماً هسته و سیستم‌عامل را با هم اشتباه می‌گیرند و این مساله که سیستم‌عامل به عنوان «گنو/لینوکس» نامیده شود، تصورات اشتباه را به سمت صحیح هدایت می‌کند)

تاریخ‌های مهم[ویرایش]

  • ۲۱ آوریل ۱۹۹۱: در این زمان «لینوس تروالدز» فعالیت خود را بر روی تعدادی ایده برای یک سیستم‌عامل جدید آغاز کرد. او کار خود را با زبان برنامه‌نویسی اسمبلی روی یک رایانه مبتنی بر پردازندهٔ اینتل ۸۰۳۸۶ آغاز کرد. اولین تلاش او در این راستا طراحی و پیاده‌سازی یک درایور بود.

مدل به‌کاررفته در طراحی هسته[ویرایش]

هسته‌های متنوعی برای سیستم‌های عامل وجود دارد که از این بین می‌توان به مهمترین آنها اشاره کرد:

  1. هسته یکپارچه (هسته یکپارچه)
  2. ریزهسته
  3. هسته ترکیبی (hybrid kernel)
  4. برون هسته (Exo-kernel)

مدل هسته لینوکس یکپارچه است.[۱] لینوکس طراحی ساخت یافته(modular) دارد و چون ملحقات هسته در فضای کرنل اجرا می‌شوند، از سرعت بالایی برخوردار می‌باشد.

مزایا[ویرایش]

  • با اینکه هسته لینوکس یکپارچه است ولی قابلیت بار کردن (Load) کردن پویای (Dynamic) ماژول‌های هسته (kernel modules) را دارد.
  • هسته لینوکس از چند پردازندگی موازی (Symmetric Multi Processing) حمایت می‌کند.
  • هسته لینوکس غیر انحصاری است. (Preemptive)
  • از نخ‌های هسته (Kernel Threads) برای ایجاد ساختار ریز هسته هر چه کوچکتر استفاده می‌کند.

حالات فرایندها در لینوکس[ویرایش]

  • اجرا (Running): در حال اجرا یا در وضعیت انتظار برای دریافت CPU
  • انتظار (Waiting): در حال انتظار برای یک وقفه یا رخداد که خود دوحالت دارد:
  1. وقفه پذیر (Interruptible): فرایندهای منتظر می‌توانند توسط signalها وقفه پذیرند.
  2. وقفه ناپذیر (Uninterruptible): در این حالت فرایند مستقیماً با سخت‌افزار درگیر است و وقفه نمی‌پذیرد.
  • توقف (Stopped): فرایند متوقف شده است. حالت دیباگ هم جزو این وضعیت است.
  • زامبی (Zombie): فرایند به هر دلیلی halt شده ولی هنوز اشاره گری در بردار فرایند دارد.
  • Swapping: در ارتباط با حافظه مجازی است.

هسته‌های بر پایه لینوکس[ویرایش]

لینوکس-لیبره[ویرایش]

نوشتار اصلی: لینوکس-لیبره

لینوکس-لیبره نام پروژه‌ای از بنیاد نرم‌افزار آزاد آمریکای لاتین است که به نگهداری و نشر هسته‌ای صددرصد آزاد بر پایهٔ هستهٔ لینوکس می‌پردازد. بدین منظور کلیهٔ نرم‌افزارهایی که بدون کد متن در لینوکس به کار رفته‌اند یا کد متنشان تا حدودی گیج‌کننده یا پنهان است، یا از پروانه‌های ناآزادی استفاده می‌کنند که اجازهٔ تغییر در نرم‌افزار را نمی‌دهد، یا به نوعی لازم می‌دارند که از نرم‌افزارهای ناآزاد دیگر استفاده شود، کنار گذاشته می‌شود

موسی‌لینوکس[ویرایش]

نوشتار اصلی: موسی‌لینوکس

این هسته مخصوص میکروکنترولرهایی طراحی شده که فاقد واحد مدیریت حافظه می‌باشند.

منابع[ویرایش]

  1. [http://en.wikipedia.org/w/index.php title=Linux_kernel&oldid=436879490#Architecture "Linux Kernel Architecture in English Wikipedia"]. 
  • مشارکت‌کنندگان ویکی‌پدیا، «‎Linux kernel‎»، ویکی‌پدیای انگلیسی، دانشنامهٔ آزاد (بازیابی در ۲۵ مارس، ۲۰۱۰).
  • Rusling, David. The Linux Kernel
  • Bovet, Daniel و Cesati, Macro. Understanding the Linux Kernel, ۳rd edition November 2005. O'Reilly publications

پیوند به بیرون[ویرایش]

  • kernel.org - آرشیو رسمی هسته‌های لینوکس