تاریخچه یونیکس و لینوکس
سلام و درود به لرنیایی های عزیز ما تو این مطلب راجع سیستم عامل های یونیکسی و هسته سیستم عامل لینوکس میپردازیم و اول تاریخچشونو مرور میکنیم اینکه چرا لینوکس به وجود اومد؟ چطوری به وجود اومد؟ چطوری به اینجا رسید؟ چه تاریخچه ای داشت؟ اگه نبود چی میشد؟ و …
قبلش باید بگم ممکنه خیلی براتون سؤال پیش بیاد که پاسخ دادن بهشون ممکنه حتی به اندازه یک کتاب قطور بشه چون دنیای لینوکس خیلی گستردهتر از چیزیست که فکرشو می کنین!
لینوکس چی هست؟
خیلی زوده بخواهیم بریم یک راست سراغ اینکه که بگیم لینوکس چیه؟ اما بازم لازم بود اول کار بهش برسیم تا موضوع کار دستمون بیاد؛ لینوکس درواقع مغز یک سیستم عامل یونیکسی هست پس تا الان برامون معلوم شد حقیقت چیه!
تو همین چهارتا خط هزاران هزار سؤال برامون ممکنه پیش بیاد از جمله اینکه مغز سیستم عامل چیه؟ سیستم عامل یونیکسی چیه؟ و …
خوب قبل از پاسخ کامل به اینکه لینوکس چی هست بریم به سالهای قبل از ۱۳۷۰ یا همون ۱۹۹۱.
می تونین مطالب مشابه رو در بلاگ لرنیا دنبال کنین
یونیکس چی هستش؟
تو مطالب دیگرمون هم راجعش بحث زیاد کردیم حالا بازم بحثو تو این مطلب بیشتر می کنیم؛ یونیکس یک سیستم عاملی استاندارد جهانیست که اکثر سیستم عاملا بر پایه همین یونیکس ساخته شدن و از ساختار همین سیستم عامل پیروی میکنند. یونیکس در گذشته های نه چندان دور در آزمایشگاه بل توسط دو دوستی که مخترع زبان سی بودن (به نام های دنیس ریچی و کنت تامسون) بر پایه سیستم عامل مولتیکس نوشته شد. مولتیکس درواقع یک سیستم عامل ساده بود و برای هر کسی توسعه نمی یافت و فقط در مقاصد امنیتی استفاده میشد.
یونیکس کم کم توسط دنیس ریچی و کنت تامسون توسعه پیدا کرد و قدرتمند شد.
اون زمان این سیستم عامل توسعه یافته که فقط خط فرمانی بود در کامپیوترهای بزرگی به اسم PDP اجرا میشد و میشد باهاش کارکرد.
این سیستم عامل برای محققان و یا به صورت تجاری و پولی برای دیگر کاربران منتشر میشد و همواره توسعه می یافت تا اینکه به نسخه ۵ ام اش رسید؛ تمام لینوکس های فعلی از برنامههای اجرایی بر پایه همین نسخه از یونیکس استفاده می کنن.
یونیکس ابتدا با زبان اسمبلی نوشته شده بود اما بعدها بیشترش به زبان سی بازنویسیش کردن و بالاخره شرکت سازنده یونیکس که اسمش AT&T بود استانداردی رو منتشر ساخت به اسم POSIX که امروز خیلی از سیستم عامل ها حتی ویندوز که یونیکسی نیست حداقل در فایل سیستم درایو هایش از این استاندارد استفاده می کنه.
انشعاب هایی جدید از یونیکس
کم کم دانشجویان اون زمان با این سیستم عامل خام و استاندارد آشنا شدن و تصمیم گرفتن اونو تست کنن اینو بدونین که تست کردن سیستم عامل های اون زمان و همچنین پیکربندیشون گذر از ۱۰۰ خان رستم بود تا ۷ خان رستم!
همین الانم ممکنه بیشتری ها نتونن یک کرنل لینوکسو کامپایل و پیکر بندی کنن پیکربندی کردن که کار خیلی سختی بود با ظهور ویندوز و سیستم عامل هایی با واسط کاربری کمتر شد و مدیریت بسته ها و نصاب ها جاشونو گرفتن و درواقع کار نصب برنامه ها، سیستم عامل ها رو برامون مثل آب خوردن کردن.
خوب بریم سراغ اصل مطلب در اون زمان که دانشجویان با یونیکس آشنا شدن تصمیم گرفتن بیان اونو پیکربندی کنن؛ بالاخره این دانشجویان که در دانشگاه برکلی بودند تونستن یک سیستم عاملی جدید بر پایه یونیکس بسازن به اسم 1BSD و اونو کم کم توسعه دادن.
با انتشار 1BSD کم کم یونیکس هایی جدید و مستقل از نسخه اصلی یونیکس توسعه پیدا کردن و به بازار اومدن.
می تونین مطالب مشابه رو در بلاگ لرنیا دنبال کنین
توسعه دیگر انشعاب ها در کنار یونیکس
همزمان با توسعه یونیکس و سیستم عامل BSD دیگر سیستم عامل هایی بر پایه یونیکس توسعه پیدا می کردن که مستقیماً بر پایه کدهای تجاری یونیکس بودن یعنی توسط دیگر شرکت ها از شرکت AT&T خریداری شده بودن؛ ما دوست داریم یک معرفی ازشون داشته باشیم تا برامون مبحث یونیکس واقعی و شبه یونیکس (مینیکس، لینوکس و …) بیشتر روشن بشه:
* سیستم عامل خورشید یا Sun OS: شرکت مایکروسیستمز که خیلی ما برنامه نویسا بهش مدیونیم (کارهای این شرکت توسعه دادن زبان جاوا، ماشین مجازی جاوا و ویچرال باکس و قویترین فایل سیستم جهان به اسم ZFS و … بود) یک انشعابی خوب از سیستم عامل یونیکس درست کرد به اسم سیستم عامل خورشید یا Sun OS این شرکت فایل سیستم یونیکس رو که اسمش UFS بود را برای سیستم عامل خورشید کنار گذاشت و از فایل سیستم ZFS که خودش توسعه دهندش بود رونمایی کرد این فایل سیستم درواقع اگر کل اقیانوس های جهان تبخیر بشن نمی تونن به آخر پر شدن حجم فایل سیستم ZFS برسن؛ سیستم عامل خورشید درواقع یک یونیکس واقعی بود همانند BSD اما ساختارشون با هم تفاوت داشت.
* سیستم عامل زنیکس: شرکت مایکروسافت هم تازه پا به عرصه گذاشته بود و یونیکس رو خریداری کرد و سیستم عامل یونیکسی خودشو به اسم زنیکس توسعه داد اما اینکه چرا از داس برای توسعه ویندوز استفاده کرد واقعاً عجبیب بود! چون امکانات و امنیت یک یونیکس چندین برابر داس بود (ویندوز متأسفانه بر پایه داس توسعه پیدا کرده).
* سیستم عامل های بی اس دی: بی اس دی که در دانشگاه برکلی توسعه پیدا میکرد بازم انشعاب های زیادی ازش ساخته شد و بیشترین تأثیر رو روی توسعه یونیکس گذاشت اما بعدها توسط شرکت سازنده یونیکس (AT&T) به خاطر استفاده کردن غیرقانونی از کدهایش در سیستم عامل BSD کارش به دادگاه کشید و ۲ سال توسعش حدودی متوقف شد و اگه همین توقف و کند شدن کار بی اس دی نبود لینوکسی دیگه امروز به وجود نمی اومد و همه برنامه نویسا از بی اس دی استفاده می کردن.
شبه یونیکس چیه؟
خوب حالا دوست داریم بدونیم شبه یونیکس چیه که انقدر امروزه یکی از نسخه هایش به اسم گنو/لینوکس غوغا به پا کرده!
شبه یونیکس یعنی سیستم عاملی شبیه به یونیکس اما بازم خوبه بدونیم تو چی باهم شباهت دارن:
* همشون از استاندارد پازیکس POSIX پیروی می کنن.
* فایل سیستم هاشون هم از همین استاندارد پیروی می کنن.
* تمام برنامههای اجرایی، بایت کدها همشون بر پایه برنامههای یونیکسی هستن.
* ساختار مراتب دایکتوریشون یعنی مراتب بندی پوشهاشون مثل یا شبیه یونیکس هستن که بهش می گن FHS.
* دستوراتشون کاملاً مثل هم هست مثلاً دستور ls پوشه ها رو تو یونیکس لیست می کنه که در سیستم عامل های لینوکسی هم همین شکلیه.
* همشون بر پایه زبان اسمبلی و سی نوشته شدن.
خوب ما تونستیم به شباهتهای مهم یک شبه یونیکس با یونیکسو برشماریم حالا میخواهیم شبه یونیکس هایی که پابه عرصه گذاشتن رو برسی کنیم:
* سیستم عامل فری بی اس دی: این سیستم عامل درواقع یکی از انشعاب های اصلی سیستم عامل بی اس دی بود اما رایگان عرضه میشه؛ فری بی اس دی به صورت متن باز منتشر میشه و همواره در حال توسعه هستش اما مثل لینوکس نتونسته غوغا به پا کنه و خیلی مشهور نشده اما بیشترین استفاده رو در بین خانواده بی اس دی داره؛ سیستم عامل بی اس دی دیگه منقرض شده و انشعاب هاش که دیگه رایگان عرضه میشن جاشو گرفتن؛ فری بی اس دی خیلی امنیت بالایی داره و شبیه ترین سیستم عامل به یونیکس هست اما یک یونیکس نیست چون کدهاشو دوباره باز نویسی کردن و درواقع هیچ یک از کدهای نوشته شده توسط شرکت تجاری AT&T داخلش وجود نداره. فری بی اس دی بدون واسط گرافیکی عرضه میشه اما میشه داخلش میزکار گنوم رو نصب کرد و همچنین جدیداً سیستم عامل دبیان که یکی از توزیعهای لینوکس هستش از هسته سیستم عامل فری بی اس دی هم استفاده می کنه.
* مینیکس: قبل از ظهور لینوکس سیستم عاملی شبیه به یونیکس پا به عرصه گذاشت که فقط جنبه آموزشی داشت و استفاده کردن از کداش محدودیت داشت؛ مینیکس متن باز بود ولی اونطور که گمان می کنین رایگان باشه نبود! بلکه محدودیتهایی هم داشت و همچنین هسته سیستم عامل مینیکس میکروکرنل بود بر عکس لینوکس که یک هسته یکپارچه هستش.
* گنو/هرد: شرکت گنو یک شرکت ناسود بر هست و همه کاراش در حوزه رایانه رایگان و متن باز انجام میشد (به قول خودمون صلواتی کدنویسی می کردن و همه برنامه هاشون رایگان بوده و هست) این شرکت در گذشته قبل از ظهور لینوکس تونسته بود تمام بخشهای یک یونیکس رو خودش به صورت رایگان باز نویسی کنه چون یونیکس پولی و تجاری بود اما شرکت گنو فقط یک چیز کم داشت که از همه هم مهمتر بود اونم هسته سیستم عاملش بود اما بالاخره شروع کرد به ساختن هستش اما کمی بعدش لینوکس ظهور کرد و قابله رو برد؛ بعد از ظهور لینوکس برنامه نویسا تصمیم گرفتن از لینوکس در سیستم عامل گنو استفاده کن اما بازم شرکت گنو هسته مخصوص خودشو توسعه میداد (اسمش هرد بود) اما این هسته خیلی روند کندی داشت.
* گنو/لینوکس: لینوکس درواقع سیستم عامل نیست اما به اشتباه یا به عادت به هر توزیع لینوکسی لینوکس می گن؛ درواقع بیشتر یک سیستم عامل لینوکسی از برنامههای شرکت گنو ساخته شدن؛ لینوکس مهمترین بخش یک سیستم عامله که بهش می گن کرنل یا هسته سیستم عامل که کارش بارگذاری، توقف، بستن برنامهها و دستورات هست و خیلی کارای دیگه؛ لینوکس یک هسته یکپارچه هست که به علاوه بر کارهای معمولی که یک هسته ازش بر میاد کار درایور های مهم رو هم انجام میده برای همینه که ما برای نصب ویندوز باید درایور جداگونه نصب کنیم اما تو توزیعهای لینوکسی لازم نیست. پس به سیستم عامل های لینوکسی درواقع باید بگیم گنو/لینوکس اما اجباری در کار نیست ولی حقیقت همینه!
آشنایی با هسته سیستم عامل
مهمترین بخش یک سیستم عامل هسته اونه؛ حالا ممکنه بپرسیم هسته سیستم عامل چی هست دقیقاً؟
خوب هسته سیستم عامل در حقیقت یک برنامه قابل اجرا هستش که کارش مدیریت تمام رایانه است؛ تمام کارهایی که تو یک رایانه نظیر کپی، پیست، نصب برنامه، حذف برنامه، نمایش تصویر، دابل کلیک برای اجرای یک برنامه و … انجام میدید بدون وجود هسته سیستم عامل امکانپذیر نیست اصلاً!
هسته های سیستم عامل به طور شفافتر بگم حکم مغزو در بدن بازی می کنن و کارشون خیلی مهمه.
در ابتدای توسعه سیستم عامل هایی نظیر داس و یونیکس هسته ها بسیار اندازه کوچکی داشتن چون خطوط کدها و همچنین برنامهها کم بودن اما با ظهور سیستم عامل هایی نظیر گنو/لینوکس، فری بی اس دی هسته ها برای مدیریتی بهتر باید بزرگتر میشدن؛ هسته لینوکس فعلی با نسخه ۵.۸ حدود ۱۰ مگابایت حجم داره در حالی که هسته های پیشین حجمی بسیار ناچیزی داشتن.
خوب حالا وقتش رسیده برای آشنایی بیشتر با هسته لینوکس بریم انواع هسته های سیستم عامل رو برسی بکنیم:
* میکروکرنل یا ریزهسته: یک هسته بسیار کوچکی هست که در تمام کارهای سیستم عامل دخالت نمی کنه و فقط کارش پردازش اصلی، خط فرمان و دستورات هستش. بخش درایور ها در سیستم عامل هایی که از این نوع هسته استفاده میکنند جدا هست. سیستم عاملی هایی نظیر گنو/هرد، مینیکس از این نوع هسته ها استفاده می کنن؛ یکی از بزرگترین بدی هاش اینه که خیلی سرعت پایینی داره ولی خوبی که داره اینه که اگه اتفاقی برای نرم افزارهای اصلی رایانه بیافته کل رایانه کرش نمی کنه.
* هسته یکپارچه: برخلاف ریزهسته هست و افزون بر مدیریت برنامهها از قابلیت درایو مجازی VFS، همچنین پشتیبانی از فایل سیستمها، درایور سخت افزارها بیشتر در هسته یکپارچه قرار میگیرن؛ سرعت هسته یکپارچه بسیار بالاست و همچنین اولین برنامهای که بعد از بوت شدن سیستم عامل بالا میاد هسته هستش. سیستم عامل هایی نظیر گنو/لینوکس و داس و فری بی اس دی از همین نوع هسته استفاده می کنن.
* هسته هیبریدی یا ترکیبی: هم هسته یکپارچه مشکلاتی ممکنه نظیر کرش کردن کل سیستم داشته باشه و هم ریزهسته سرعت پایینی داره اما هسته هیبریدی درواقع ترکیبی از این دو نوع هستش که بخشهای خوبشونو استفاده می کنه سیستم عامل هایی نظیر ویندوز و مک از این نوع هسته استفاده می کنن.
خوب پس دونستیم که لینوکس از نوع یکپارچه استفاده می کنه حالا بازم باز بر میگردیم به تاریخ تا ظهور لینوکس رو تو دهه ۷۰ خودمون برسیش کنیم.
می تونین مطالب مشابه رو در بلاگ لرنیا دنبال کنین
ظهور لینوکس
همونطور که قبلاً هم گفتیم قبل از ظهور لینوکس سیستم عامل هایی نظیر بی اس دی در حال توسعه بودن اما به دلیل مشکلات قضایی به دادگاه کشیده شدن؛ شرکت ناسودبر گنو هم در انتظار ساخت یک هسته بود فقط چون تمام ابزارهای یک یونیکس رو به جز هسته سیستم عامل طراحی کرده بود؛ زمان ها گذشت تا اینکه در سال ۱۹۹۱ (۱۳۷۰ خودمون) فردی علاقهمند به رایانه در کشور فلاند اونم به عنوان تفریح بدون اینکه قصد بزرگی داشته باشه به اسم لینوس توروالدز نشست پای برنامه نویسی و شروع کرد به نوشتن کرنلی؛ این کرنل تقریباً کارش تموم شد و دوست لینوس براش نام لینوکس رو انتخاب کرد؛ کم کم برنامههای پروژه گنو که اصل محیط یک سیستم عامل یونیکسی بودن رو به محیط قابل پشتیبانی لینوکس اضافه کرد و پیامی به انجمن مینیکس راجع کرنل تازه ساخت خودش فرستاد و لینوکسو معرفی کرد.
هسته لینوکس اولاش خیلی کم امکانات بود اما خوبیش این بود که هم یکپارچه بود و هم رایگان همین قضیه باعث شد خیلی سریع در عرض چند ماه خیلی ابزارها بهش اضافه بشه نظیر تمام ابزارهای گنو (کامپایلر ها، اسمبلر ها، لینکر ها و …) و از همه مهمتر پنجره X11 هم در عرض چند ماه خیلی راحت بهش اضافه شد و همین قضیه لینوکسو پیشرفتهتر کرد؛ پنجره X11 درواقع واسط گرافیکی سیستم عامل های یونیکسی بود که به صورت رایگان عرضه میشد.
خلاصه خیلی راحت لینوکس به اوج قدرت رسید و به خطر کند شدن روند پروژه بی اس دی تونست از رقیبش جلو بیافته و جای تمام شبه یونیکس ها رو بگیره؛ لینوکس فقط یک هسته ساده بود ولی آنقدر سریع در دل مردم و برنامه نویسان جا گرفت که همه اونو به اسم لینوکس میشناسن؛ پیشرفت لینوکس به عنوان یک شبه یونیکسی قدرتمند تونست در عرصه امنیت اطلاعات، سیستم عامل های سرور جای یونیکس رو برای همیشه بگیره.
می تونین مطالب مشابه رو در بلاگ لرنیا دنبال کنین
توزیع های لینوکس چی هستن؟
لینوکس کم کم توسط بسیاری از برنامه نویسان دنیا توسعه پیدا کرد و هر روز و هر ماه بهش قابلیتهای زیادی اضافه میشد؛ یکی از خوبیهای لینوکس این بود که ازش توزیعهای زیادی به وجود اومد یعنی چی؟
لینوکس یک هسته بود رایگان و همچنین برنامههای گنو هم رایگان بودن پس هر کسی که علم رایانش اون موقع زیاد بود با پیکربندی این دو می تونست یک سیستم عامل طراحی و منتشر کنه به این کار میگن درست کردن یک توزیع یا انشعاب از گنو/لینوکس.
اولین توزیع لینوکس خیلی نتونست پیشرفت بکنه و خیلی باگ داشت برای همین پروژش متوقف شد سپس دبیان پروژه ای بهتر روی کار اومد؛ امروزه توزیعها و انشعاب های زیادی بر پایه دبیان هستن؛ دبیان یکی از توزیعهای خام، خالص و محبوب گنو/لینوکس هستش که حتی میشه به جای هسته لینوکس داخلش هسته هرد یا فری بی اس دی رو هم نصب کرد.
لینوکس در سالهای گذشته فقط برای پردازنده هایی با معماری 80386 (همون ۳۲ بیتی خودمون) طراحی شده بود اما بعدها برای دیگر معماری ها نظیر arm64 و amd64 هم ساخته شد این یعنی چی؟
یعنی ابتدا فقط در سیستمهایی ۳۲ بیتی کار میکرد نظیر کامپیوتر های شخصی قدیمی و … اما الان حتی در لپ تاپ ها که ۶۴ بیتی هستن و هم در موبایل ها که arm64 هستن پشتیبانی میشه.
همین قضیه باعث شده لینوکس پاشو در دنیای تلفنهای همراه هم باز کنه!
اندروید یک لینوکس است؟
بله اندروید درواقع یک توزیع مستقل لینوکس هست و ساختارش با دیگر لینوکس ها خیلی متفاوته ما دیگه لازم نیست به اندروید بگیم گنو/لینوکس چون از ابزار های گنو داخلش استفاده نشده و به جاش از ابزارهای اختصاصی استفاده شده.
مثلاً کامپایلر اکثر لینوکس ها gcc هستش اما کامپایلر اندروید clang هست.
در کل سیستم مراتب پوشه بندی اندروید انگار هیچ شباهتی به یونیکس نداره! و برنامههای اجراییش بر پایه جاوا هستن.
یعنی یک لینوکسی در اندروید قرار می گیره و بخش گرافیکی مخصوصشو که بر پایه جاوا نوشته شده رو بالا میاره سپس کارش مدیریت بقیه برنامه هاست.
اندروید پس بر پایه لینوکس ساخته شده و جز یکی از توزیعهای محبوب این سیستم عامل قرار می گیره؛ همچنین اولین سیستم عامل موبایل در جهان هست که مورد استفاده قرار می گیره.
امیدوارم از مطلبون لذت برده باشید ما را در بلاگ لرنیا حتماً دنبال کنین تا مطلبی دیگر خدانگهدار...
رئیس و کارمند خودتی! وقتی به صورت فریلنسری کار کنید دیگه فقط دارید برای خودتون کار می کنید و به کسی نباید جواب پس بدید و کسی نیست که بهتون دستور بده چه کاری رو باید انج...
همزمان با توسعه یونیکس و سیستم عامل BSD دیگر سیستم عامل هایی بر پایه یونیکس توسعه پیدا می کردن که مستقیماً بر پایه کدهای تجاری یونیکس بودن یعنی توسط دیگر شرکت ها از شرک...
خیلی از دوستان تو زمان شروع به کار و یادگیری و استارت برنامه نویسی براشون ممکنه پیش بیاد و ذهن شون رو درگیر کنه که در واقع یکی از پیش نیاز ها و از لوازم شروع به کار برنا...
سرعت گسترش هوش مصنوعی و پیشرفت اون در سال های اخیر روندی به شدت صعودی گرفته و هر روز بیش از پیش در زندگی و تعاملات ما نفوذ کرده و تاثیر میذاره و این روز ها اگه بیشتر دقت...
از آنجا که این مقاله بیشتر جنبه راه کاری و راه حلی دارد، پس بدون هیچ مقدمه و مطرح کردن سوالی به سراغ مراحل و کار هایی که برای رسیدن به موفقیت در آزادکاری-فارغ از تخصص و ...
گیت به بیان ساده یه ابزار برای کنترل و مدیریت نسخه هستش. احتمالا شما هم نرمافزارهای زیادی رو دیدین که نسخههای متفاوتی از ابتدای انتشارشون وجود داره و هر بار هم ورژ...