42.10526315789473% Complete

تولد یک سیستم‌عامل، بخش هشتم

خوره‌ترین‌های دنیای سیستم‌عامل احساس کردند که جرقه‌ای در حال تولد است. پیشنهادهای چندانی در مورد مینیکس به دستم نرسید، ولی بعضی‌ها شروع به پرس و جو کردند.

بیشتر بگو! احتیاجی به MMU داره؟

جواب: بله

چقدرش به سی است؟ مشکلات انتقال به دیگر سیستم‌ها چیست؟ هیچ کس باور نمی‌کند که کلا غیرقابل انتقال باشد ): من دوست دارم به آمیگا منتقلش کنم.

جواب: اکثر به سی نوشته شده، ولی خب اکثر مردم چیزی که من می‌نویسم را به عنوان سی قبول نخواهند کرد. چون به عنوان یک پروژه ۳۸۶ هم هست، از هر قابلیت اختصاصی آن که نام ببرید استفاده کرده. بعضی از فایل‌های «سی» من همان قدر که سی هستند، اسمبلی هم هستند.

همان طور که قبلا گفتم، از MMU استفاده می‌کند. هم برای صفحه بندی (فعلا نه برای دیسک) و هم برای سگمنت‌بندی. همین سگمنت‌بندی است که اینقدر به ۳۸۶ وابسته‌اش کرده (هر وظیفه ۶۴ مگ برای کد دارد و ۶۴ وظیفه کلا به ۴ گیگ نیاز دارند).

حتی چند نفری هم بودند که پیشنهاد کردند آزمایشگرهای بتا باشند.

در نهایت چاره‌ای نبود جز فرستادن برنامه. این روشی بود که عادت کرده بودم بر اساس آن برنامه‌هایم را مبادله کنم. تنها چیزی که باید واقعا در موردش تصمیم می‌گرفتم، این بود که چه زمانی برای ارسال برنامه و سهیم شدن آن با دیگران مناسب است. یا اگر بهتر بگویم: کی برنامه به اندازه کافی بهتر شده تا از نشان دادن آن به دیگران خجالت نکشم؟

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

همان زمانی که پوسته با موفقیت کمپایل شد، چند کد باینری دیگر هم داشتم که روی آن کار می‌کردند. عملا نمی‌شد کار خاصی در این سیستم‌عامل جدید انجام داد؛ ولی می‌دیدید که یک جورهایی یادآور یونیکس است. درحقیقت چیزی بود شبیه به یک یونیکس مفلوج.

پس تصمیم گرفتم که در دسترس دیگران هم بگذارمش. البته به شکل عمومی جریان را اعلام نمی‌کردم و در عوض با ایمیل‌های خصوصی به تعداد کمی از دوستان -بین پنج تا ده نفر- اطلاع دادم که آن را روی سرویس دهنده اف.تی.پی. گذاشته‌ام. بروس اوانز مشهور در دنیای مینیکس و آری لمکه هم جزو این افراد بودند. کد منبع خود لینوکس و چند فایل اجرایی را آپلود کردم تا افراد بتوانند کار را شروع کنند. همین طور در ایمیل به آن‌ها گفتم که برای راه اندازی و تنظیمات اولیه آن باید چه‌کار کنند. آن‌ها هنوز نیازمند مینیکس -نسخه ۳۸۶- بودند و باید از قبل، gcc را به شکل نصب شده می‌داشتند. در حقیقت باید دقیقا نسخه من از gcc را می‌داشتند و به همین خاطر آن را هم عمومی کردم.

برای نسخه‌بندی، پروتکل خاصی هست. یک مساله روانی هم در آن دخیل است. وقتی احساس می‌کنید که نسخه‌ای واقعا برای انتشار آماده است، آن را نسخه 1.0 می‌نامید. قبل از این مرحله، شماره نسخه‌ها مشخص می‌کند که به نظر شما چقدر از کار تا رسیدن به نسخه 1.0 باقی است. با در نظر گرفتن این موضوع، من نسخه‌ای از سیستم‌عامل که در اف.تی.پی. گذاشتم را نسخه 0.01 نامیدم. این عدد به همه گوشزد می‌کرد که این سیستم‌عامل به هیچ وجه آماده انتشار نیست.

و بله! تاریخ را دقیق یادم هست: ۱۷ سپتامبر ۱۹۹۱.

بعید می‌دانم بیشتر از یکی دو نفر آن را تست کرده باشند. آن‌ها باید دردسر نصب یک کمپایلر خاص، خالی کردن یک پارتیشن برای بوت کردن سیستم و در نهایت کمپایل کردن کرنل جدید را تحمل می‌کردند تا تنها یک پوسته را اجرا کنند. اجرای پوسته عملا تنها چیزی بود که سیستم‌عامل من قادر بود انجام دهد. می‌توانستید کد منبع را چاپ کنید که فقط حدود ۱۰۰۰۰ خط بود. اگر با فونت کوچک چاپ می‌کردید، چیزی کمتر از ۱۰۰ صفحه (این روزها این کد در محدوده ۱۰ میلیون خط است).

یکی از دلایل اصلی‌ای که سیستم‌عامل را منتشر کردم این بود که نشان دهم این مدت فقط جو نمی‌داده‌ام و واقعا کاری انجام شده است. در اینترنت حرف زدن و ادعا کردن ارزشی ندارد. جدای از اینکه بحث سر چه چیزی است -چه سیستم‌عامل و چه سکس- خیلی‌ها در اینترنت مشغول ادعاهای غیرواقعی هستند. پس خوب است که بعد از صحبت با کلی آدم در این مورد که مشغول نوشتن یک سیستم‌عامل هستید، بتوانید بگویید: «ببینید! واقعا یک کاری کرده‌ام. این همه وقت شما را فیلم نکرده بودم. نتیجه را ببینید...»

و آری لمکه که راه رسیدن برنامه به سرویس‌دهنده اف.تی.پی. را هموار کرده بود؛ از اسم فریکس خوشش نیامد. او اسم دیگری که در پروژه استفاده شده بود یعنی لینوکس را بیشتر پسندید و ارسال من را به pub/OS/Linux تغییر نام داد. قبول دارم که به این کار اعتراضی نکردم. اما به هرحال او بود که این کار را کرد. پس من می‌توانم با صداقت بگویم که خودخواه نیستم. یا حداقل می‌توانم با صداقت نسبی بگویم که خودخواه نیستم. نظر من این بود که این اسم خوبی است و همیشه هم می‌توانم انتخابش را گردن کس دیگری بیندازم. دقیقا همین کاری که الان دارم می‌کنم.

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

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

باز‌خورد آن‌ها مثبت بود ولی مثبت به این معنی که «خوب است این کار را هم بکند» یا «به نظر جالب می‌رسد ولی روی دستگاه من که اجرا نشد.»

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

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

42.10526315789473% Complete

مقدمه مقدمه تولد یک نِرد تولد یک نرد، بخش یکم تولد یک نرد تولد یک نرد، بخش دوم تولد یک نرد، بخش سوم تولد یک نرد، بخش چهارم تولد یک نرد، بخش پنجم تولد یک نرد، بخش ششم تولد یک نرد، بخش هفتم تولد یک سیستم‌عامل تولد یک سیستم‌عامل، بخش یکم تولد یک سیستم‌عامل، بخش دوم تولد یک سیستم‌عامل، بخش سوم تولد یک سیستم‌عامل، بخش چهارم تولد یک سیستم‌عامل، بخش پنجم تولد یک سیستم‌عامل، بخش ششم تولد یک سیستم‌عامل، بخش هفتم

تولد یک سیستم‌عامل، بخش هشتم

تولد یک سیستم‌عامل، بخش نهم تولد یک سیستم‌عامل، بخش دهم تولد یک سیستم‌عامل، بخش یازدهم تولد یک سیستم‌عامل، بخش دوازدهم فرش قرمز فرش قرمز، بخش یکم فرش قرمز، بخش دوم فرش قرمز، بخش سوم فرش قرمز، بخش چهارم فرش قرمز، بخش پنجم فرش قرمز، بخش ششم فرش قرمز، بخش هفتم فرش قرمز، بخش هشتم فرش قرمز، بخش نهم فرش قرمز، بخش دهم فرش قرمز، بخش یازدهم فرش قرمز، بخش دوازدهم مقالات دارایی معنوی پایانی بر کنترل راه جذاب پیش رو چرا متن‌باز مهم است شهرت و ثروت معنای زندگی ۲