نوشتن سیستم عامل، آسان یا سخت؟

نوشتن سیستم عامل، آسان یا سخت؟

توسعه ی یک سیستم عامل، هرچند ساده و محدود باشد و حتی در حد و حدود سیستم عامل Dos باشد، احتمالا یکی از دشوارترین اعمالی باشد که می توان با یک کامپیوتر انجام داد (اگر اهل بازی کامپیوتری باشید، تقریبا به اندازه ی سختی کشتن غول بازی Doom بر روی درجه ی سختی “کابوس”) …

ساخت سیستم عامل نیاز به اطلاعات بسیار زیادی در مورد چندین بخش پیچیده ی دانش کامپیوتر دارد؛ به طور مثال باید برای این که بتوانید یک سیستم عامل بنویسید، در ابتدای کار بدانید که قطعات سخت افزاری چگونه کار می کنند، باید بتوانید سطح بسیار پیچیده ای از کدنویسی اسمبلی را تحلیل کنید و یا حتی به یک زبان برنامه نویسی سطح بالاتر (مانند C یا پاسکال) مسلط باشید. مغز شما باید قابلیت انعطاف در مسائل مختلف انتزاعی را داشته باشد تا بتواند ایده هایی که به ذهنتان می رسد را پردازش کند.

آیا همین الان دلسرد شده اید؟ البته این سختی ها می تواند هنگامی که کد نویسی یک بخش را به پایان رسانده اید و به کدهای نوشته شده نگاه می کند، باعث خوشحالی شما شوند و لذت وصف ناپذیری را برایتان به ارمغان بیاورند.

واقعیت این است که توسعه ی یک سیستم عامل واقعا بخش بی همتایی در دانش کامپیوتری است که نیازمند صبر و شکیبایی بسیار بالا، دقت فوق العاده زیاد و عدم دلسر شدن است. زیرا این بخش از برنامه نویسی، چیزی نیست که شما با هر بار اجرا کردن برنامه ی خود ارضا شوید. شما باید خطوط بسیاری از کد را نوشته و سپس نرم افزار خود را اجرا کنید تا بتوانید اندکی از سیستم عامل پیش رو را به چشم خود ببینید.

تا این جای کار باید با کمی از سختی های نوشتن یک سیستم عامل آشنا شده باشید، اما اگر هنوز علاقه ای برایتان مانده تا ادامه ی متن را بخوانید، با ما همراه باشید.

افراد سازنده ی سیستم عامل باید خود را برای گیج شدن زیاد، نا امیدی و حتی گاهی اوقات دیوانگی آماده کنند. اگر این افراد از ابتدا با مسیر طولانی ساخت سیستم عامل آشنا نباشند، در اواسط کار به مرز جنون خواهند رسید.  دقت کنید این ها فقط سختی های پایه ای نوشتن سیستم عاملی ساده مانند DOS است که عملا نسبت به سیستم عامل هایی مانند Windows و OS X حرفی برای گفتن ندارد.

بهینگی کد نویسی:

شاید شما فکر کنید که نوشتن دو خط کد اضافه در برنامه نویسی تاثیری در عملکرد برنامه هایتان نخواهد داشت و احتمالا نیز حق با شماست، اما وقتی در ابعاد بزرگتری مانند یک سیستم عامل نگاه کنیم در می یابیم که یک کد ممکن است بارها و بارها در یک مدت کوتاه نیاز به اجرا شدن داشته باشند. بنابراین نویسندگان یک سیستم عامل باید نهایت تلا خود را انجام دهندو تا جای امکان کدهای نوشته شده را خلاصه کرده و خطوط اضافی را پاک کنند.

سایر سختی های توسعه ی سیستم عامل پیشرفته:

برای نوشتن یک سیستم عامل همانند Windows که در آن نرم افزار های مختلفی در پس زمینه توانایی اجرا شدن دارند، در کنار این موضوع که باید بهینگی کدها تا جایی که امکان دارد انجام شده باشد، سختی های دیگری نیز پیش روی توسعه دهندگان وجود دارد. به طور مثال سیستم عامل ویندوز برای 110 زبان مختلف عرضه شده است و بنابراین شرکت سازنده باید تک تک کلماتی که در سیستم عامل می نویسد را برای تمام زبان ها در نظر بگیرد، یا این که باید امنیت سیستم عاملش را به حدی بالا ببرد تا جامعه ی میلیاردی کاربران آن در معرض خطر نفوذ قرار نگیرند. به علاوه دولت ها و عابربانک های بسیاری نیز از سیستم عامل های بزرگ استفاده می کنند که سازندگان آن باید به آن ها نیز توجه داشته باشند.

اکنون باید زمان بردن طولانی عملیات ساخت ویندوز 10 موبایل را درک کرده باشید. این نسخه مانند اندروید 5، 6 یا حتی iOS 9 نیست، بلکه سیستم عاملی است که از پایه دوباره نوشته شده است. اکثر کدهای ساختاری تغییر کرده اند تا هسته ی این سیستم عامل با Windows کامپیوتر یکسان شود و بتواند نرم افزارهای Universal را اجرا کند.

همانطوری که وقتی چندین کتاب را روی هم بگذارید و بخواهید کتاب های زیرین را تغییر دهید، باید پس از انجام این کار کتاب های بالایی را مرتب کنید، در نوشتن سیستم عامل نیز وقتی یک کد پایه ای تغییر داده می شود، مشکلات و نا همواری هایی پیش می آید که سبب عدم بهینگی سیستم عامل می شود، توجه داشته باشید که پیدا کردن و رفع باگ های پیش آمده نیز به نوبه ی خود زمان بر است، همانطوری که مرتب کردن کتاب های بالایی نیازمند این است که توجه داشته باشیم مشکلات دیگری برای کتاب های بالاتر پیش نیاید.

SaeedZeroOne وب‌سایت
All the world's infinite possibilities rest within just one simple circle.

‫20 نظر

  • Yaya گفت:

    بعضی ها فکر می کنند سیستم عامل ساختن آب خوردنه ، خود ساختن یه اپ چلنج خیلی بزرگیه حالا شما در نظر بگیر کد بیس ها که اساس یه سیستم عامل هستند راه حل های جایگزینی براشون پیدا کنند ، لینوکس که متن بازه تغییر داخل کد بیس ها واقعا زمان میبره، باید ببینی این تغییر چه باگ های جدیدی ایجاد میکنه . واقعا مثل زنجیر به هم وصله هر تغییر میتونه رشته ای از تغییرات ایجاد کنه، اگر خیلی مشتاق ویندوز ۱۰ هستید اینسایدر بشید، اینسایدر شدن به معنی کاربر پیشرفته و برنامه نویس نیست ، اینسایدر شدن هدف اصلیش گنجاندن نظرات مردمه

    • Amir گفت:

      معمولا آپدیت های بزرگ مشکلات زیادی دارند.چه اندروید چه ios و چه ویندوز.
      همین ios 7 که آپدیت بزرگی برای سیستم عامل ios محسوب می‌شد حتی موقع انشار نسخه رسمی نیز مشکلات عجیب و غریبی داشت از کار نکردن وافای و بلوتوث بگیر تا گیر کردن روی لوگوی استارتر اپل بالا نیامدن سیتسم عامل.
      اما اینکه ماکروسافت ویندوز موبایل رو در اولویت‌های اول خودش قراره نمیده واقعا جای بسی تعجب و کمی هم خشم (گفتم کمی هاااا !!!! دوستان جدی نگیرن :-D ) داره . وگرنه برای شرکتی که لقب بزرگترین شرکت نرم افزاری رو یدک می کشه نوشتن سیستم عامل کار تازه‌ای نیست و تا دلت بخواد تا حالا سیستم عامل نوشته.

  • D.KING گفت:

    <>
    خب این جمله بالا در مورد ماکروسافت تقریبا بی معنی هستش . کارنامه این شرکت نشون میده که عملا اینگونه افراد در این شرکت جایی ندارند حتی در گنو لینوکس هم اینگونه نیست درسته متن باز هستش و هرکی یه کدی بهش اضافه میکنه اما اونهایی که کاملا حرفه ای و از این راه کسب درآمد می کنند در اینگونه تیمها گنجانده میشند خود لینوس تروالدز هم هفته ها خونه میشینه کد میزنه و آزمون خطا میکنه ، در مورد ویندوز 10 موبایل هم بحث کمی متفاوت هست برای ماکروسافت مهم هست نه به اندازه ویندوز 10 دسکتاپ . سرفیس ها . هالو لنز و البته ایکس باکس . تیمهای این پرژه ها بسیار قوی تر از تیمی که بر روی نسخه 10 موبایل کار میکنه . از توییت های گابریل هم میشه فهمید که زمانی که نزدیک به برزو رسانی هایی که برای نسخه دسکتاپ هست تیمشون میره برای کمک ، همه این حرفهای من دلیلی بر بی اهمیت بودن ویندوز 10 موبایل یا اینکه . نوشتن سیستم عامل همانند آب خوردن نیست برای cout کردن یک اسم که یک کد ساده تو سی پلاس هست کوچکترین اشتباهی = اخطار در خروجی هست و از این پست شما هم لذت بردم . اما حتی نسخه نهایی هم بدون باگ باشه برای کامل شدن راه زیادی مونده ، باید به ویندوز 10 موبایل به عنوان سیستم عامل تجاری نگاه کرد و در همون حد هم ازش انتظار داشت

  • hamid reza گفت:

    دست گلت طلا سعید محمدی عزیز خیلی عالی بود.واقعا دست برنامه نویسهای عزیز چه وطنی و چه غیر وطنی درد نکنه.

  • ارسلان گفت:

    فوق العاده بود تشکر

    • علی گفت:

      هیچ سیستم عاملی که در این اواخر ساخته شده کدهاش از پایه نوشته نشده. ویندوز 10 هم از این قاعده مستثنی نیست. یعنی خلاف اصول برنامه نویسی است.
      لطفا تاخیرهای اخیر را توجیه نفرمایید.
      با تشکر

    • سعید محمدی گفت:

      برای این که یک سیستم عامل توانایی اجرای نرم افزارهای جدید (بر اساس سیستم جدید یونیورسال) رو داشته باشه باید در هسته ی اون تغییراتی اعمال بشه. این تغییرات مساوی هستند با به هم خوردن بسیاری از زنجیره های به هم متصل.

  • بنیامین گفت:

    به منچه که سخته یا اسونه،من پول میدم و میخوام از تکنولوژی روز استفاده کنم.و در بازار تکنولوژی بسته به پولم و خواسته ام بهترین رو انتخاب میکنم.مگه مایکروسافت شرکت بابای منه که بخوام با کم و کاستیاش بسازم و درکش کنم که اخی چون ساختن سیستم عامل سخته اشکال نداره صبر میکنم.
    متوجه منظورم شدید؟خیلیا اینطوری فکر میکنن و کاملا هم حق دارند.

    • ابراهیم محاجری گفت:

      خب اگر مشکل دارید گوشیتون رو عوض کنید. این ساده ترین کار ممکنه.
      استاد محمدی در این مقاله توضیح میدن که سیستم عامل نویسی کار راحتی نیست که هر روز یک خواسته ی جدید داشته باشیم و منتظر باشیم که فردا این خواسته اجابت بشه.
      قطعا شما بی علم گوشی ویندوزفونی نخریدید و به طبع از اکثر مزایا و معایبش مطلع بودید. گوشی های ویندوز فونی بر عکس دو پلت فرم محبوب دیگه کاملا میانه رو عمل کردن. امنیت فوق العاده در کنار روانی سیستم عامل و دارایی حداقل محدویت.
      لازم ببینیم مایکروسافت هم به نقد می کشیم.

    • alireza07 گفت:

      بله دوست عزیز نوشتن کدی که قابلیت ضبط تماس رو واسه 8 و 8.1 فراهم میکرد حریم شخصی دیگران رو نقص میکرد ولی مایکی اینبار اومده یه جوری کد نوشته که حریم شخصی رو نقص نکنه!!!
      فکر نکنم کسی جوابی واسه این حرفم داشته باشه. منم با حرف های بنیامین موافقم.

    • بنیامین گفت:

      این لحن بیان و طرز صحبت از کسی که خودش رو نویسنده بین المللی داخل سایت وزززیییییییین ویندز سنتر میدونه واقعا خجالت اوره،بیخود نیست که نظرات کاربران برای هر خبری که میدید در مقایسه با سایتهای دیگه خیلی کمتره.شما اگه حرفه ای بودید بحث جدالهایی که بین خودتون و دوستاتون بوجود میاد رو نمیومدید داخل سایت جلو کاربرای سایت ادامه بدید.منم اگه داخل سایت شما میومدم بخاطر اخبار شما نبود،چون اخباری که شما میدید یا به درد نخوره یا قبلا سایتهای دیگه منتشر کردن،من فقط بخاطر حضور خانوم فرجی میومدم داخل سایتتوتون،تا خبرایی که میده رو دنبال کنم که اونم عطا شو میبخشم به لقاش و دیگه نمیام از سایتتون دیدن نمیکنم.شما اول طرز صحبت کردن رو یاد بگیر و قلدر بازی رو بزار کنار بعد بیا سایت باز کن.

    • ابراهیم محاجری گفت:

      بزرگوار اگر نظرتون با بنده بود بنده قصد جسارت نداشتم فکر می کنم اشتباه برداشت کردین.

  • amir_2014 گفت:

    یکبار خواستم برنامه نویسی کنم واقعاً به درجه دیوانگی رسیدم نه میشد ولش کرد نه میشد فکرت ب جایی برسه. تجربه سختی بود

  • FERE6TE گفت:

    دروووود

  • مانی گفت:

    مقاله بسیار عالی بود. موفق باشید

  • حصین گفت:

    من هم برنامه نویسم و عاشق ویندوز فون هستم ولی فعلا به خاطر درامد زایی برای پلتفرم اندروید برنامه توسعه میدن یه ذره فراگیر شه ویندوز فون خوب میشه ، طراحی سیستم عامل ۵ قسمت اصلی داره: شناسایی و کار با سحت افزار – امنیت – ui – دو تای دیگه یادم رفت یادم بیاد مینویسم

  • Seyedmm گفت:

    قابل توجه خیلیا که میگن نوشتن سیتم عامل آسونه
    نمدونم بر چه اساسی اینو میگن؟؟
    اگه آسون بود که … منم میتونس بنویسه
    سیستم عامل باید مث یه سیتم باهوش باشه
    بتونه اطلاعات رو تجزیه کنه
    و …….

    • Pourya گفت:

      برادر من امپراطوری ها یک روزه ساخته نمیشن و فک نکن که با دو روز می تونی سیستم عامل بنویسی و اگه درکی از هدف بزرگ داری همین الان که داری اینو می خونی به خودت بگو که می تونم و یه روزی به خودت خواهی گفت که سخت بود ولی من انجامش دادم. (واقعا چرا ایرانیا اینطورن؟ ) کمی به خودتون باور داشته باشید.

  • Pourya گفت:

    ببخشید ولی ایران بخاطر اینه که داره پیشرفت نمی کنه . شما اصلا درکی از هدف ندارید اگه داشتید چنین نمی گقتید و + این شما باید برین پیش مشاور.
    بنده خودم 13 سال دارم و برنامه نویس پایتون و سی پلاس پلاس ام و با اچ تی ام ال و سی اس اس و جاوا اسکریپت هم آشنام + شبکه و لینوکس (به امنیت علاقه دارم) و وضع مالی خوبی هم نداریم که بتونم دوره های آموزشی عالی دریاقت کنم ولی باز با این حال با یه کامپیوتر قدیمی دارم تلاش می کنم که سیستم عامل نویسی یاد بگیرم و حتی برنامه های عالی هم نوشتم و واقعا هم لذت می برم.

    اینارو گفتم چون خواستم بگم که فک نکنید همه مثل شمان و مردم رو نا امید نکنید.
    هیچ چیزی غیر ممکن نیست و نخواهد شد و من می خواستم ابزار بنویسم گفتن نمی تونی بچه ای و من هم گوش نکردم و شروع کردم و الانم می تونم ابزار های زیادی (گرافیکی و کنسولی) بنویسم . چون نترسیدم و شروع کردم و اگه هیچ کس نیاد یروزی توی ایران سیستم عامل بنویسه پس چطوری پیشرفت می کنیم . حرف آخر : اونوفت باید پس بیل گیتس و اینا هم اینارو می گفتن.

    cout << end; // Bye

    • امیرحسین گفت:

      سلام موافقم و از افرادی مثل شمل استقبال میکنم اگر این پیام من را دیدی در پیام رسان تلگرامم یک پیام بفرس شما با عنوان 13 ساله سیستم عامل.آیدیم@amir_hn_hn , @amir_h_hn

  • دیدگاهتان را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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