جستجو در تالارهای گفتگو
در حال نمایش نتایج برای برچسب های 'حماقت'.
1 نتیجه پیدا شد
-
با سلام، معمولاً یکی از سوألهایی که در ذهن افراد بلندپرواز رجوع میکند این است که من میخواهم سیستمعامل بنویسم! ? از لحاظ تجربیِ من و نظرات اساتید و افراد حرفهای، تولید و توسعهٔ سیستمعامل یکی از پیچیدهترین و مشکلترین کارهای برنامهنویسی در این حوزه است. تولید و توسعهٔ چنین محصولی زمان و دانش بسیار بالایی در زمینههای مختلف علوم کامپیوتر را میطلبد که من در این پست به برخی از آنها اشاره میکنم. اختراع چرخ از اول ممکن است در بعضی از موارد اختراع یک محصول از اول کار منطقی باشد، اما در بسیاری از آنها هم ساخت و توسعهٔ آن از اول از جنبهٔ اقتصادی و حتی علمی قابل توجیح نمیباشد؛ ساخت و تولید سیستمعامل میتواند به عنوان یکی از عواملِ پیشرفت کشوری در حوزهٔ فناوری و اهمیت آن به عنوان یک محصول بومی بسیار موثر باشد، اما همه چیز در اینجا خلاصه نمیشود بنابراین تولید و توسعهٔ چنین محصولاتی باید با مهارت و انگیزههای بسیار حساب کتاب شدهای پیاده سازی شود. بلند پروازی و حماقت تنها نکتهای که موجب شد من این پست را ایجاد کنم، اشاره به اهمیت بلند پروازی در حرفهای شدن و کسب مهارتهای فوق پیشرفته است! این که شما بلند پرواز هستید بسیار خوب است. اما باید این را در نظر داشته باشید بعضی از بلند پروازیهایی که بدون تحقیقات فنی ایجاد میشوند حماقتی بیش نیستند. برای مثال باید در نظر داشته باشید تولید و توسعهٔ سیستمعامل هیچ شباهتی به یک نرمافزار سادهای با عملِ CRUD نیست و نویسندهٔ سیستمعامل حتی یک برنامهنویس متوسط به بالا محسوب نمیشود! چرا که توسعهدهندهٔ سیستمعامل باید به عنوان واقعی یک مهندس کاملِ کامپیوتر به تمام ویژگیهای آن باشد (برنامهنویس کاملاً حرفهای با کولهباری از تجربههای خفن و دانش خوب در رابطه با الگوریتمها و قالبهای طراحی و غیره...). اگر شما یک برنامهنویس تازهکار هستید و در ابتدای کار به سراغ چنین بلندپروازی آمدهاید پیشنهاد میشود در حد آشنایی با این موارد که در ادامه آمده است قانع باشید و تا زمانی که به این سطح از دانش و تجربه نرسیدهاید حتی به فکر نوشتن چنین محصولی نباشید (این کار برای بررسی و آزمایش جهت ارتقاء مهارتهای خود توصیه میشود) اما اگر خارج از آن باشد حماقتی بیش نخواهد بود ? من افراد بسیار زیادی را میشناسم که با هدف تولید سیستمعامل بومی قدم برداشتهاند اما در نهایت وارد یک دامنهٔ وسیعی از پیچیدگی افتادهاند که آنها را منصرف کرده است. بخشهای اصلی سیستمعامل هسته (کرنِل) کرنل به عنوان قلب سیستمعامل محسب میشود، اولین برنامهای است که در آغاز به کار کامپیوتر اجرا میشود، و مدیریت منابع کامپیوتر و همچنین مدیریت درخواستها از طرف برنامههای سیستمی و کاربردی را به عهده میگیرد. برنامههای سیستمی برنامههای سیستمی در بالاترین بخش کرنِل اجرا میشود. این نوع برنامهها به عنوان انجام کارهای مهم و مفید نیستند، بلکه برنامههایی هستند که لازم است برای اتصال هسته به برنامههای کاربر و دستگاههای جانبی استفاده شوند. درایورهای دستگاهها، فایلسیستمها، برنامههای شبکه، و نرمافزارهای سیستمی مانند مباحث مدیریت دیسک که همهٔ آنها مثالهایی از برنامههای سیستمی هستند. برنامههای کاربردی این نوع برنامهها بخشی از برنامههای سیستمعامل نیستند. برنامههایی همچون مرورگری اینترنت، مدیا پلیر و برنامههایی از این قبیل به عنوان برنامههای عامیانهای هستند که بعدها میتواند در کنار سیستمعامل آنها را قرار داد. چه چیزهایی را باید بدانیم؟ علوم پایه و اولیه کامپیوتر تئوری برنامهنویسی کامپیوتر و روشهای بهتر زبانهای برنامهنوسی سطحپایین و سطحبالا توسعهٔ سیستمعامل مانند توسعهٔ نرمافزار یا وب یا اپلیکیشن نیست، این نوع محصول چیزی نیست که شما بتوانید به این راحتی به آن بپردازید و یاد بگیرید. قبل از اینکه وارد این مبحث شوید نیاز است شما یک پایهٔ پایدار و منطقی از یک علوم رایانه را ایجاد کنید. خلاصهای از حداقل مواردی که قبل از ورود به این حوزه لازم است بررسی سیستمعاملهای موجود به خصوص، منابع سکوهای یونیکس و لینوکس را بررسی و مورد مطالعه قرار دهید. در نظر داشته باشید که سیستمعامل خود به عنوان یک محصول بسیار مهم و کامل مانند یک درخت محسوب میشود که ریشهٔ آن مهمترین بخش آن است (هسته یا کرنل). آشنایی با علوم کامپیوتر پایه آشنایی کامل با کامپایلر آشنایی کامل و حرفهای با زبانهای C و ++C آشنایی با لینوکس و یونیکس آشنایی با قالبهای اجرایی، قالبهایی مانند elf و exe آشنایی با پلتفرم به خصوص مطالعات عمیق در رابطه با معماری و ساختار پردازندهٔ مورد نظر محیط توسعهٔ مناسب (جهت برنامهنویسی) که به دو گزینهٔ ویندوز و لینوکس است که بیشتر محیط لینوکس و ابزارهای GNU و کامپایلر GCC و Clang میباشد که در مقابل در ویندوز از کمپایلر MSVC میتوان استفاده کرد. در اختیار داشتن ابزارهای آزمایش مانند شبیهسازهایی همچون VirtualBox و VMWare نیاز است. داشتن اطلاعات کافی در حوزهٔ سختافزار و شبکه (درک و فهم در رابطه با سختافزارها و نحوهٔ عملکرد آنها) یکی از موارد بسیار مهمی است که قبل از توسعهٔ سیستمعامل باید به آنها توجه کرد. و موارد دیگر که در توسعهٔ سیستمعامل بسیار مهم هستند. با توجه به اینکه شما برای توسعهٔ چنین محصولی بر روی پلتفرم x86 و زبان C تصمیم گرفته باشید میتوانید مراحل زیر را در نظر بگیرید: انتخاب بارگذار کنندهٔ بوت سیستمعامل (بوتلودِر) که در اینجا گزینهٔ پیشنهادی Grub است. پیاده سازی نقطهٔ ورودی کد C به زبان اسمبلی یا همان (Entry Point) تولید و توسعهٔ یک لاگر (جهت دیباگینگ) ساده مانند printf مقداردهی اولیه (Initialization) پردازنده (ساخت جدول GDT، برنامهریزی PIC و PIT و ...) پیاده سازی یک چهارچوب کامل از مدیریت حافظه پیاده سازی یک چهارچوب کامل از مدیریت حافظهی مجازی پیاده سازی زمانبندی پردازنده پیاده سازی موارد مورد نیازی که در مهندسی نرمافزار آمده است مانند spinlock پیاده سازی فایلسیستمها پیاده سازی رابطهای برنامهنویسی API پیاده سازی رابطهایی مانند Shell در نهایت برنامهنویسی جانبی جهت توسعه و تکامل سیستمعامل توضیحاتی که به آنها اشاره شد تنها بخشی از هزاران موردی است که باید در طراحی سیستمعامل در نظر داشت که مسلماً افراد حرفهای در این حوزه خود به خوبی میدانند چه مباحثی برای توجه به آنها نیاز است. برخی از منابع جهت طراحی و توسعهٔ سیستمعامل OSDev.org Index page https://www.irantux.org/html/ https://www.kernel.org/ http://www.minix3.org/ بلند پروازی کنید، اما حماقت نکنید ?