تولد MS-DOS: از 86-DOS تا استاندارد جهانی

پیش از آنکه رایانه‌های شخصی با رابط‌های گرافیکی روان و اکوسیستم چند میلیارد دلاری امروزی آشنا شوند، یک بستر متنی و خاموش حکم‌فرما بود: MS-DOS. همین سیستم‌عامل متنی، سنگ‌بنای امپراتوری مایکروسافت شد و نخستین تجربهٔ گام‌به‌گامِ این شرکت در ورود به دنیای گرافیک، یعنی ویندوز 1.0، از دل همین معماری قدیمی زاده شد. مروری بر اسناد تاریخی دقیق نشان می‌دهد که چگونه کدهای اولیه به استانداردی جهانی تبدیل شدند.

سیستم‌عامل MS-DOS در شرکت مایکروسافت متولد نشد. خاستگاهِ واقعیِ آن به Seattle Computer Products و برنامه‌نویسی به نام تیم پترسون بازمی‌گردد. در اوت 1980، پترسون نسخه‌ای از یک سیستم‌عامل به نام 86-DOS را تکمیل کرد. توسعهٔ این سیستم‌عامل تنها در عرض شش هفته به طول انجامید. دلیلِ این سرعتِ بالا ساده بود: 86-DOS در اصل پورتی از سیستم‌عامل CP/M متعلق به Digital Research بود که برای پردازنده‌های Intel 8080 و Z80 طراحی شده بود. پترسون مفاهیم CP/M را به معماریِ جدید Intel 8086 منتقل کرد و دو بهبودِ کلیدی را به آن افزود: یک منطقِ بافرینگِ بخشِ دیسک (Disk Sector Buffering) ارتقا یافته و جایگزینیِ سیستم‌فایل FAT12 به‌جای ساختار قدیمیِ CP/M.

مایکروسافت که آن دوران بیشتر بر زبان‌های برنامه‌نویسی تمرکز داشت، برای پروژهٔ IBM PC 5150 به یک سیستم‌عاملِ نیازِ فوری پیدا کرد. تیم پترسون در مهٔ 1981 استخدام شد و در ژوئیهٔ همان سال، مایکروسافت لایسنسِ نسخهٔ 1.10 را با مبلغِ 25,000 دلار خریداری کرد. محصولِ نهایی با حفظِ شمارهٔ نسخه، نام MS-DOS گرفت و به IBM واگذار شد تا با نام PC DOS 1.0 در اوتِ 1981 منتشر شود.

معماری ماژولار و استراتژی فتحِ بازار

استراتژیِ مایکروسافت در عرضهٔ MS-DOS ترکیبی از جسارت و آینده‌نگری بود. در کمتر از یک سال، لایسنسِ این سیستم‌عامل به بیش از 70 شرکتِ سخت‌افزاری مختلف فروخته شد. طراحیِ MS-DOS بر پایهٔ ساختارِ ماژولار استوار بود. هستهٔ سیستم‌عامل (Kernel) به‌همراه درایور‌های پایهٔ دیسک و کنسول در قالبِ DOS BIOS یکپارچه می‌شد و توسط بوت‌لودر بارگذاری می‌گردید. این ساختار به تولیدکنندگانِ تجهیزاتِ اصلی (OEM) اجازه می‌داد تا با استفاده از کیت‌های توسعهٔ مایکروسافت، درایور‌های اختصاصیِ سخت‌افزارِ خود را به هستهٔ استاندارد اضافه کنند. نتیجهٔ این انعطاف‌پذیری، ظهورِ نسخه‌های متعددی برای پلتفرم‌های مختلف بود و مرزِ باریکی میان سازگاری با IBM و سازگاری با MS-DOS ایجاد کرد. نمونهٔ بارزِ آن رایانهٔ Tandy 2000 بود که بدون وابستگی به سخت‌افزارهای جانبیِ IBM، کاملاً قادر به اجرایِ نرم‌افزارهای MS-DOS بود.

مفسّرِ فرمان COMMAND.COM، دریچهٔ اصلیِ ارتباطِ کاربر با ماشین بود. این برنامه زمانی فعال می‌شد که هیچ نرم‌افزارِ دیگری در حالِ اجرا نبود. بازگشت به محیطِ فرمان پس از بستنِ یک برنامه، با مکانیزم‌های خاصی در حافظهٔ موقت انجام می‌گرفت. تطبیقِ نامِ فایل‌ها و دستورها بدون حساسیت به حروفِ بزرگ و کوچک انجام می‌شد، اما پارامترهای ورودی با همان املای تایپ‌شده حفظ می‌گردیدند.

نسخهٔ اولیهٔ ویندوز 1.0 در حال اجرا روی سیستم‌عامل MS-DOS

تحول به رابطِ گرافیکی: زایمانِ ویندوز 1.0

MS-DOS در مجموعِ 8 نسخه را پشتِ سر گذاشت. نسخهٔ 6.22 در سالِ 1994 آخرینِ نسخهٔ مستقلِ آن بود و نسخه‌های 7 و 8 بعدها صرفاً برای بوتِ سیستم‌عامل‌های Windows 9x و Me در پس‌زمینه استفاده می‌شدند. توقفِ توسعهٔ آن در سالِ 2000 نشان‌دهندهٔ گذارِ قطعیِ کاربران به محیط‌های گرافیکی بود.

اما ایدهٔ جایگزینیِ خط‌فرمان با رابطِ گرافیکی از سالِ 1981 در مایکروسافت جوانه زد. مشاهدهٔ بیل گیتس از نرم‌افزارِ Visi On شرکتِ VisiCorp در نمایشگاهِ COMDEX سالِ 1982، جرقهٔ اصلی را زد. یک سال بعد، آشنایی با توسعه‌های اپل و پژوهش‌های Xerox PARC در حوزهٔ نقشه‌های بیتی، مایکروسافت را متوجهِ یک واقعیت کرد: برای غلبه بر رقبا باید مسیرِ خود را متمایز می‌کرد. در اوتِ 1983، اسکاتِ مک‌گرگور، از معمارانِ اولیهٔ سیستمِ پنجره‌ایِ PARC، استخدام شد تا تیمی را برای توسعهٔ محصولِ جدید رهبری کند. نمایِ عمومیِ این پروژه در سپتامبرِ 1983 رونمایی شد. دموی اولیه که در آن زمان معرفی گردید، ساختاری شبیهِ رابطِ کاربریِ برنامهٔ Multiplanِ مایکروسافت داشت و روی یک بسترِ دوگانه اجرا می‌شد: یک نسخهٔ پایهٔ متنی برای MS-DOS و یک لایهٔ گرافیکی که وظیفهٔ مدیریتِ پنجره‌ها، آیکون‌ها و تعاملِ ماوس را برعهده داشت.

معماریِ ویندوز 1.0 بر پایهٔ چند مفهومِ کلیدی استوار بود. این سیستم‌عامل از حالتِ Shared-Mode استفاده می‌کرد و پنجره‌ها رویِ هم می‌افتادند (Overlapping Windows). برای جلوگیری از تداخلِ حافظه، مایکروسافت از تکنیک‌های شبیه‌سازیِ حافظهٔ 8086 بهره برد. اگرچه ویندوز 1.0 به‌دلیلِ محدودیت‌های سخت‌افزاریِ زمان و قیمتِ بالا در شروعِ کار موفقیتِ تجاریِ چشمگیری نداشت، اما معماریِ پایه، مدیریتِ درایور‌ها و زیرساختِ API آن، بسترِ لازم برای آیندهٔ ویندوز را فراهم کرد.

معماری درختی و مدیریتِ پنجره‌ها در ویندوز 1.0

برای مطالعهٔ دقیق‌تر دربارهٔ تأثیرِ سیستم‌عامل‌های اولیه بر توسعهٔ نرم‌افزارهای مدرن می‌توانید به مستنداتِ تاریخیِ مایکروسافت مراجعه کنید.

نگاهی به عقب برای ساختِ آینده

پیدایشِ MS-DOS و ویندوز 1.0 تنها یک خطِ زمانیِ تاریخی نیست؛ این رویداد نشان می‌دهد چگونه زیرساخت‌های متنی و محدود می‌توانند الفبای انقلاب‌های نرم‌افزاری را تعریف کنند. آنچه امروز به‌عنوان تجربهٔ بصری و روان می‌دانیم، ریشه در همان کدهای خشک و خط‌فرمان‌های اولیهٔ مایکروسافت دارد. با پیشرفتِ شتابانِ تکنولوژی و گذار به سیستم‌عامل‌های مدرن و کانتینری، نگاهی به این خشتِ اول نه برای حسرتِ دوردست‌ها، بلکه برای فهمِ ریشه‌های معماری است که هنوز هم در لایه‌های پنهانِ نرم‌افزارهای امروزی نفس می‌کشد و مسیرهایِ جدیدی را پیشِ پایِ توسعه‌دهندگان می‌گشاید.