نظام يونكس (Unix) هو واحد من أقدم وأهم الأنظمة التشغيلية في عالم الحوسبة. يتسم هذا النظام بتاريخ طويل ومعقد بدأ في الستينات، ويعتبر حجر الزاوية في العديد من الأنظمة التشغيلية الحديثة التي نستخدمها اليوم. في هذا المقال، سوف نتناول بداية نظام يونكس، تطوره، مكوناته الأساسية، وأثره على عالم التكنولوجيا المعاصر.
مقدمة
نظام يونكس هو نظام تشغيل متعدد المستخدمين ومتعدد المهام، والذي نشأ في معهد AT&T Bell Labs في الولايات المتحدة. تم تطوير هذا النظام لأول مرة في أواخر الستينات وأوائل السبعينات من القرن العشرين، ومر بعدة مراحل تطور ليتحول إلى ما هو عليه اليوم من أنظمة تشغيل شائعة ومستخدمة في مختلف المجالات.
جذور نظام يونكس
تعود بداية نظام يونكس إلى عام 1969، عندما كان هناك فريق من المهندسين والمبرمجين في معهد Bell Labs يحاولون تطوير نظام تشغيل جديد. كان هذا الفريق بقيادة كين تومسون (Ken Thompson) ودينيس ريتشي (Dennis Ritchie)، وهما من العلماء الذين ساهموا في تطوير العديد من التقنيات الأساسية التي تعتمد عليها الحوسبة الحديثة.
قبل أن يتم تطوير يونكس، كانت هناك عدة أنظمة تشغيل أخرى تستخدم على الآلات الكبيرة (mainframes) والتي كانت شديدة التعقيد وغير قابلة للتطوير بشكل كبير. كان من الضروري تطوير نظام تشغيل جديد يتميز بالمرونة، والكفاءة، وقابلية التوسع، وفي الوقت نفسه يكون بسيطًا وسهل الاستخدام.
نظام Multics ونشأة يونكس
بدأت فكرة نظام يونكس بالتشكل في بيئة العمل التي كانت تستند إلى مشروع “Multics” (Multiplexed Information and Computing Service) الذي كان يهدف إلى تطوير نظام تشغيل متقدم على الآلات الكبيرة. كان هذا المشروع مشتركًا بين معهد ماساتشوستس للتكنولوجيا (MIT) وشركة “ATT” بالإضافة إلى شركات أخرى. ومع ذلك، كان مشروع Multics معقدًا جدًا وصعب التنفيذ، مما دفع فريق معهد Bell Labs للبحث عن بديل أبسط وأكثر فاعلية.
في عام 1969، قام كين تومسون، وهو مهندس في Bell Labs، بتطوير أول نسخة من نظام يونكس على آلة PDP-7. هذه النسخة الأولى كانت بسيطة جدًا، وكانت تحتوي على العديد من المفاهيم التي أصبحت حجر الزاوية في أنظمة يونكس الحديثة مثل تعدد المهام (multitasking) والتعامل مع الملفات (file handling).
أول إصدار من يونكس
في البداية، كان نظام يونكس يعمل فقط على جهاز PDP-7 الذي كان يمتلك ذاكرة صغيرة جدًا وقدرات محدودة. ورغم هذه القيود، استطاع تومسون تطوير نظام تشغيل يسمح بتشغيل عدة مهام في وقت واحد. وفي عام 1971، أُعلن عن الإصدار الأول من نظام يونكس، وهو كان يحتوي على جميع الأساسيات التي يحتاجها المبرمجون في ذلك الوقت، مثل إدارة الملفات ومعالجة النصوص وإدارة المهام.
تطوير لغة C وارتباطها بنظام يونكس
في عام 1972، قام دينيس ريتشي بتطوير لغة البرمجة C في معهد Bell Labs. كانت لغة C مفتوحة وسهلة الاستخدام، وهي لغة منخفضة المستوى، لكنها كانت تسمح بتطوير أنظمة تشغيل معقدة بكفاءة. كانت هذه اللغة مثالية لتطوير نظام يونكس، ولذلك قام ريتشي مع فريقه باستخدام لغة C لإعادة كتابة معظم الأجزاء الأساسية من نظام يونكس.
أدى ذلك إلى تحويل يونكس إلى نظام تشغيل أكثر قوة ومرونة. أصبحت لغة C أداة حيوية لتطوير النظام، مما سمح بتوسيع نطاق نظام يونكس ليشمل منصات مختلفة. أصبح من الممكن تشغيل يونكس على مجموعة متنوعة من الأجهزة، مما ساعد في انتشاره.
مرحلة الانتشار والتوسع
خلال السبعينات، بدأ نظام يونكس في الانتشار بين الجامعات ومراكز البحث العلمي، حيث كانت البيئة الأكاديمية بحاجة إلى نظام تشغيل يدعم الأبحاث العلمية وبرامج الكمبيوتر المعقدة. في عام 1975، أُعلن عن إصدار يونكس 6 الذي كان أول إصدار يستخدم على نطاق واسع في العديد من الجامعات في جميع أنحاء العالم.
في عام 1977، بدأ AT&T (شركة هاتف أمريكا) في ترخيص يونكس لشركات أخرى، مما سمح بانتشار النظام خارج نطاق المعهد. ثم أُعلن عن إصدار يونكس 7 في عام 1979، الذي كان يحتوي على العديد من التحسينات التي جعلت النظام أكثر استقرارًا وسهولة في الاستخدام.
يونكس في الثمانينات: التطور والانقسام
في الثمانينات، أصبح نظام يونكس أكثر تطورًا وانتشارًا، حيث بدأ العديد من الشركات في تبني يونكس كنظام تشغيل على الخوادم والأجهزة المتقدمة. في هذه المرحلة، بدأ تظهر نسخ مختلفة من نظام يونكس نتيجة للتراخيص المختلفة والاختلافات في طريقة التنفيذ.
إحدى هذه النسخ كانت “BSD” (Berkeley Software Distribution)، التي كانت نسخة معدلة من يونكس طورتها جامعة كاليفورنيا في بيركلي. أصبحت BSD واحدة من النسخ الأكثر شعبية، حيث قدمت العديد من التحسينات مثل دعم الشبكات (Networking) وتحسينات الأداء.
ومع تطور النسخ المختلفة من يونكس، بدأ النظام يتفرع إلى العديد من الإصدارات، مثل AIX (من شركة IBM) وHP-UX (من شركة HP)، بالإضافة إلى النسخة الأصلية من AT&T يونكس.
يونكس ونظام Linux
في أواخر الثمانينات وأوائل التسعينات، ظهرت فكرة إنشاء نظام تشغيل مشابه ليونكس ولكنه مفتوح المصدر. في عام 1991، قام لينوس تورفالدس، وهو طالب فنلندي، بتطوير نظام تشغيل “لينكس” الذي كان يعتمد على فلسفة يونكس ولكنه يختلف عنه في كونه مفتوح المصدر بالكامل. من هنا بدأ نظام لينكس في جذب الانتباه وأصبح بديلاً قويًا لأنظمة يونكس المدفوعة.
اليوم، يستخدم العديد من أنظمة التشغيل الحديثة، مثل لينكس وmacOS، مفاهيم ومكونات مستوحاة من يونكس، مما يجعل يونكس بمثابة العمود الفقري للعديد من أنظمة التشغيل المعاصرة.
دور يونكس في الثورة الرقمية
اليوم، لا يزال نظام يونكس يشكل الأساس للعديد من الأنظمة الحديثة، مثل أنظمة تشغيل الخوادم، والأنظمة المستخدمة في الهواتف الذكية (مثل iOS المبني على Unix)، وكذلك العديد من الأدوات البرمجية والتطبيقات الحديثة. تعتمد الكثير من أنظمة التشغيل الحديثة على تصميم يونكس، مما يعكس تأثيره العميق والدائم في مجال الحوسبة.
المزيد من المعلومات
فى زمن كان كل ما كمبيوتر جديد بينزل السوق كان بيتعمله لغة برمجة جديدة كان فى اتنين موظفين فى معامل بيل (Bell Labs) اسمهم دينس ريتشي وكين تومسون الشباب دول عملوا نظام تشغيل صغير “بسيط” وسموه UNIX كانوا بيشتغلوا على كمبيوترات اسمها PDP أحجام كبيرة جداً بمواصفات قوية جداً ساعتها ولكنها حاجة تضحك النهاردة لو قلتلك ان العملاق PDP7 كان فيه 9KB memory فأنت غالباً هتقف شوية تستوعب الرقم ده صح ولا غلطة فى الكتابة بس هو صح تسعة كيلو بايت ذاكرة.
فى الوقت ده لغات زي Fortran و CPL و حتى BCPL وغيرهم كانوا موجدين فى الدنيا .. وكين تومسون كان عايز يحط لغة منهم على ال PDP7
لكن ال 9 كيلو بايت بتوع PDP مكنوش كفاية علشان اللغة تشتغل وده لأن متاح ليها نصف مساحة الذاكرة فقط .. والعهدة على كين تومسون فى الكلام ده.
وبدأ يعمل لغة جديدة عبارة عن نسخة مستوحاة من BCPL و Fortran علشان تقدر تشتغل على 4k فقط من الذاكرة .. وسماها B .. وكان ده الهدف من اللغة .. انها تشتغل على 4K فقط من الذاكرة.
جدير بالذكر ان BCPL كانت نسخة مبسطة من CPL .. وب B نسخة مبسطة او معدلة من النسخة المبسطة بتاعة ال CPL .. واللى عايز اقوله ان CPL كانت لغة متكاملة وفيها حاجات كتير من اللى انت تعرفها النهاردة زي ال data types وال call by reference و call by value وحتى ال lambda expressions .. وكان فيها pointers اللى انت بتحبها .. وتخيل كان فيها garbage collector !!
وغيرها من ال features .. بس كانت مشكلتها ان مع كتر ال features دي بقى صعب ان تكتب لها compiler لكل كمبيوتر .. وصاحبها اضطر يشيل منها feature كتير علشان تبقى سهل تنزل على كمبيوترات كتير وسمى النسخة المبسطة منها BCPL.
خدت بالك ان الشباب مشاكلهم مع اللغات مش ان اللغة ضعيفة ولا بعيده عن الهاردوير ولا اى كلام من ده! .. مشكلتهم ان اللغة مش مناسبة للمكنة اللى هيشتغلوا عليها.
المهم بعد كدة بفترة قصيرة الشركة المنتجة لأجهزة PDP نزلت اصدار جديد اسمه PDP11 بمواصفات اعلى .. فبدأ كين وريتشي يفكروا فى استغلال المواصفات الأعلى دي فى انهم يعيدوا كتابة Unix بلغة high level شوية .. لأن Unix الى هذا الوقت كان مكتوب بـ Assembly.
دينس ريتشي هو اللى اخد على عاتقه تحويل لغة B الى لغة جديدة وسماها C علشان يستخدموها فى إعادة كتابة Linux.
= الـ C تبقى high level اازى معلش ؟؟
يا عم ده كلام اللي عملوها .. متتكلمش معايا انا .. روح اتخانق مع كين ودينس.
المهم .. دينس بدأ يضيف data types للـ C .. ودي مكنتش موجودة فى ال B .. لأن على كلام كين ان PDP7 الميمورى بتاعته كانت متقسمة words فلغة B كانت معتمدة ان كل داتا عندها تبقى word وخلاص .. لكن فى PDP11 بدأت تتقسم لـ bytes .. وبما ان الـ word تساوي اتنين byte يبقى احنا عندنا امكانية توفير كبيرة فى الذاكرة .. لأن كان ممكن يكون احتياجك من وحدة الذاكرة مثلاُ 4 bits فقط لكنك مضطر تخزنها فى أصغر وحدة فى الجهاز وهى word فى الحالة دي هيضيع مننا 12 bits مش هنقدر نستخدمها .. لكن لو اصغر وحدة فى الميمورى هى byte يبقى اللى هيضيع مننا 4 bits فقط .. وكل ما وحدة الميمورى تقل كل ما المساحة الضائعة هتقل.
لو انت مش مستوعب الكلام ده فالموضع ببساطة ان ال memory اللى فى جهاز الكمبيوتر فيها مخازن كتير للداتا والمخزن ده له مساحة ثابته .. وانت ونصيبك مع البيانات اللى بتتخزن فيه .. يا تاخد المخزن بالكامل يا تاخد جزء منه يا تاخد اكتر من مخزن .. الفكرة هنا ان لو فى مخزن تم استخدام جزء منه فمش هينفع نستخدم الجزء الفاضى لأى بيانات اخرى. لأن الجزء الفاضي فى الحقيقة مابيبقاش فاضي فعلاً.. بس مش موضوعنا.
المهم .. على حد قول كين فلغة B هى C بس بدون data types .. وكانت أهم سمة فى الـ C انك تقدر تـ Build ال program بتاعك على اكتر من compiler مش compiler واحد فقط بتاع جهاز واحد فقط .. وكمان انك تعملها compiler جديد مكنش بصعوبة اللغات اللى قبلها .. والكلام ده بأكد ان زمان كان حوار اصعب من النهاردة .. المهم الوضع الجديد ده ادى الى ان Unix ممكن نعمله build ونستخدمه على اى machine جديدة .. مش هنقعد نكتب نسخة Unix جديدة لكل machine .. وده طبعاً مصلحة.
ومش عارف هتتقبل المعلومة دي ازاى بس Unix فى الأساس كان معمول للاستخدام الشخصي .. كين تومسون كان عامله لنفسه بالتعاون مع دينس .. وأقنع معامل بيل بصعوبة واكتر من مرة انه يبقى الـ OS اللى الشركة كلها تعتمد عليه .. وده لأن الشركة كان عندها تجربة سيئة حديثة فى المشاركة مع MIT فى بناء نظام تشغيل معقد اسمه multics (مالتيكس) وخرجوا منه من غير ما يكملوا شغل فيه.
وبالمناسبة كين ودينس اتعرفوا على لغة BCPL لما كانوا شغالين فى مشروع Multics وده لأن صاحب اللغة كان معاهم فى المشروع.
وفى معلومة كدة مش مهمة وهى ان الـ C compiler اتكتب بلغة الـ C .. دي معلومة تخليك مش عارف تنام .. يلا عيش معاها.
فى الوقت ده فى واحد محترم اسمه Brian Kernighan كان زميل كين ودينس فى معامل بيل وحالياً بروفيسور علوم حاسب فى إحدى الجامعات الأمريكية .. الراجل ده اشتغل مع دينس وطلعوا كتاب اسمه “C Programming Language” .. وكان هدف الكتاب ده انه يعلم الناس اللى مش نينجا فى نفسهم ازاى يستخدموا لغة الـ C بأسلوب مبسط .. وده طبعاً ادى الى انتشار اللغة بشكل أسرع.
الـ Unix كان من ضمن اهدافه انه يبقى OS بسيط ومرن وغير معقد .. وكمان انه يوفر building blocks جاهزة تقدر تستخدمها كمبرمج بدل ما تضطر تكتب البرنامج بتاعك from scratch .. والكلام ده فاهمه كويس اى حد اتعامل مع Linux .. عندنا كمية commands جاهزة كتير اللى هى عبارة عن برامج جاهزة بتعمل حاجة واحدة فقط .. ممكن نستخدمها ونرصها فى bash script يعملنا task معقدة بدون ما نحتاج نكتب كل حاجة بنفسنا.
شكل الـ Applications بتاعة النهاردة دي مكنش فى دماغ اى حد من الشباب اللى عملوا C و Unix .. الحقبة الزمنية مختلفة والمجال كان مختلف وال requirements مختلفة .. والمؤكد أن صناعة لغات البرمجة ما وقفتش عند النقطة الزمنية دي .. من الحكاية اللى حكيناها كان ديماً فى دافع للغة جديدة مالوش علاقة بضعف أو قوة اللغات المتاحة .. له علاقة بالـ use case اللى محتاجين فيها اللغة و ال environment اللى هتشتغل عليها اللغة .. ودى الفكرة اللى العلماء المحترمين دول كانوا متبنينها .. وكين تومسون لو ماتعرفش فأخر أعماله كانت لغة Go .. نسأل نفسنا بقى .. ليه تومسون ماتوقفش عند الـ C وقرر بعد العمر يشارك فى كتابة لغة جديدة؟
الخلاصة
لقد بدأ نظام يونكس في معهد Bell Labs في أواخر الستينات، وتم تطويره ليصبح واحدًا من الأنظمة التشغيلية الأكثر شهرة ونجاحًا في تاريخ الحوسبة. من خلال تطوره المستمر واعتماد العديد من الأنظمة الحديثة على مكوناته، لا يزال يونكس يشكل أساسًا رئيسيًا للتكنولوجيا الحديثة، وهو يواصل تأثيره في العديد من المجالات، بما في ذلك الحوسبة السحابية، والخوادم، والأنظمة المتقدمة.