ما الفرق بين tty وterminal؟

السلام عليكم ورحمة اللّٰه
ما الفرق الفعلي بين الـTTY والـTerminal؟

لم أفهم ما الفرق بينهما رغم بحثي في الموضوع.

إعجابَين (2)

نظرا لعدم وجود رد هنا, دخلت وبحث عن الموضوع.
بحثت الان ووجدت مقالة تشرح الموضوع, وحسب المكتوب ال TTY و Terminal هم نفس الشيء.

    flowchart
         Terminal-Emulator --> Shell -->  TTY-emulated-by-the-kernel --> Kernel

مقالة مثيرة للاهتمام

بوركت
أعتقد ان ال tty تعمل علي مستوي اعمق
يمكن الوصول اليها في حال تجمد النظام و حل المشاكل في اغلب الحالات
ايضا عند بدا النظام تبدا الواجهه الرسوميه في2 ,tty1 و هناك اكثر من tty يمكن الولوج اليها عن طريق {ctrl + alt + fn {3-6

لتفهم الموضوع هيا بِنا لِنعود سويَّةً بالزمنِ لِلوارءِ، لنخوض تجربة تاريخية بتفصيلٍ مَعقُول، ابتداءً من ثلاثينيات القرن التاسع عشر، مرورًا بحِقْبَةِ يُونِكس، وانتهاءً بعصرنا الحالي.

نبذة تاريخية لمصطلح TTY

تبدأ رحلتنا التاريخية في ثلاثينيات وأربعينيات القرن التاسع عشر الميلادي، آنذاك طوِّرت آلة تعرف -ترجمة حرفيَّة- بالطابعة عن بُعد (Teletype/Teletypewriter)، وتُعَرَّب إلى: المُبْرِقَةُ الكاتِبة، وهي جهاز يُمكِنُك استخدامه لإرسال واستقبال الرسائل المكتُوبة عبر الأسلاك (cables)، إلى مسافاتٍ بعيدةٍ. تُكتَبُ الرسائل على لوحةِ المفاتيحِ مِن نوعٍ ما في جِهة المُرسل، ثُمَّ تُطبَعُ على الورقِ لدى المُتلقَّي. لقد أحدثت ثورة حينئذٍ في التلغراف/البَرقِ (عُرِّب telegraph إلى البَرقِ)، ومِن اسمها جاء مُصطَلح “TTY”.

المُبْرِقَةُ الكاتِبة (Teletype)

تُرسَلُ الرَسائِلُ مُرمَّزة (encoded)، فتُستَقبَلُ ويُفكُّ تَرميزها (decoded) وتُطبَع على الورقِ. كان هناك الكثير من التقنيات لترميز وفكِّ ترميز الرسائل، وأشهر أنواع الترميز شهرة هو ترمِيز “Baudot”، والذي ظَهر قَبْل ترمِيز ASCII بسبعةٍ وتسعِين عامًا، إذ كان أقرب إلى معيارٍ في الترميز.

لقد جعلت المُبْرِقَة الكاتِبة البشر قادرين على التواصل عبر الأسلاك دون أي أجهزة حاسوب، وفي عام 1901 طوَّرها دونالد موراي فأضاف لوحة مفاتيح.

في تلك الفترة الزمنية لم تكن الحواسيب متواجدة، وبعد ظهور المُبْرِقَةُ الكاتِبة في السوق ببضع سنوات اُختُرِعَتْ الترانزيستورات أشباه الموصلات، وثُمَّ المعالجات الدقيقة (microprocessors)، والتي جعلت من الحواسيب ممكنة.
آنذاك كانت الحواسيب بدائية مقارنة باليوم، لم يكن هناك مفهوم لوحة مفاتيح، كانت البطاقات المثقوبة هي طريقة الإدخال، ومع مرور الزمن تطوَّرت الحواسيب أكثر فأكثر.

مُبْرِقَات كاتِبة اُستعمِلَت في الحَربِ العالميَّة الثانية

حِقْبَةُ يُونِكس

تخيل معي أجهزة حاسوب بحجم غرفتك، أو منزلك، حواسيبٌ عملاقة تشغل حيزًا شاسعًا، في حين أن حجم هذه الحواسيب شكَّلت مشاكل كبيرة كان هناك شيئًا واحدًا جعل الأمور أسوأ: كل حاسوب لديه نظام تشغيل مختلف!

لطالما خُصِيَصت البرامج لخدمة غرض معين، والبرمجيات الخاصة بنظام معين لا تعمل على نظام آخر. أن تكون قادرًا على العمل بنظام ما لا يعني تلقائيًا أنه يمكنك العمل بنظام آخر. وكان ذلك صعبًا، سواءً بالنسبة للمستخدمين أو مدراء الأنظمة، وكانت أجهزة الحاسوب باهظة الثمن ومكلفة للغاية في ذلك الوقت، وكان لاَ بُدَّ من تقديم التضحيات حتى بعد شراءه، لمجرد جعل المستخدم/المستخدمين يفهم/يفهمون كيفية عمله. كانت التكلفة الإجمالية -أن أردت القيام بمشروع أو شراء حاسوب- هائلة جدًا.

تكنولوجيًا لم يكن العالم متقدمًا إلى هذا الحد آنَذَاكَ، لذا كان عليهم أن يتعايشوا مع تلك العقبات لعقد آخر من الزمن، في نهاية الستينيات من القرن العشرين، وتحديدًا من مختبرات بيل، وبتعاون بعض العباقرة، كانت اللحظة التي غيرت مجرى الأمور، لحظة بزوغ يُونِكس ومجيئه الحياة، لقد أصبح الطريقة الأساسية للتواصلِ مع أجهزة الحاسُوب بفعالية وتغلَّب العالم على تلك العقبة.
كانت الحواسيب الرئيسية/المركزية (mainframes) الضخمة تعمل بنظام يُونِكس، يتصل بها العديد من المستخدمين لكي يعملوا، كل مستخدم يُريد الاتصال بالحاسب الرئيسي يحتاج إلى سلك يمتد من الحاسوب الرئيسي (mainframe) إلى آلة المُبْرِقَةُ الكاتِبة المتواجدة لدى المستخدم حيث يتواجد، ومن هنا جاءت تسمية tty في يونكس والتي ترمز إلى جهاز إدخال وإخراج، ستجده في المسار dev/ttyX (وحرف X مُتغيَّر لأي رقم).
عندما تكتب على المُبْرِقَةُ الكاتِبة سترى النص يُطبع على الورق وإذا رَدَّ الحاسوب سترى الآلة تكتب تلقائيًّا على الورق، لكنها بطبيعة الحال تشغل حيزًا وصاخبة للغاية والأكثر سوءً أنها بطيئة بشكل مزعج.

TTY Video
تسجيل مرئي (video)

كانت المشكلة الأخيرة مزعجة، وإحدى الطرق لتسريع الكتابة جعل الأوامر أقصر، وهذا يُفسر لِمَ أوامر جنو/لينُكس قصيرة؟

بدأت أجهزة الطرفيات في السبعينات باكتساح المجال، كانت أجهزة تستطيع عرض نصّ على الشاشة بدلًا من لفافات الورق، وهذه صورة لجهاز طرفي يسمى VT-100 آنذاك:

VT-100
وهذا جهاز طرفي آخر:
موظف يعمل على جهاز طرفي

أتعلم لماذا سُمَّيت طرفية (Terminal)؟

كلمة terminal تأتي من كلمة terminate والتي تعني إنهاء، فكلمة طرفية (terminal) ترمز إلى نهاية شيءٍ ما، فلو كنت في مدينة ما وركبت في نظام النقل السريع (subway) فإن المحطة التي ستنزل فيها تسمى Terminal، فنهاية رحلتك/مشوارك هناك، وأيضًا ستجدها في أحد المطارات عند خروجك.

فالطرفية آنذاك هي جهاز مادي يحتوي على شاشة ولوحة مفاتيح متصلة بالحاسوب الرئيسي، فالطرفية التي تجلس أمامها تأخذ المدخلات وتعرض المخرجات، أما العمل الحقيقي يحدث خلف الستار، في الطرف الآخر (الحاسوب الرئيسي)، ومن هنا نستنتج بأن فالطرفية هي هي TTY والفرق أنها تطبع النص على شاشة أما الأخرى فتطبع النص على الورق.

أما مصطلح console كان يطلق على جهاز متصل بالحاسوب الرئيسي مباشرةً لغرضِ الصيانةِ إذا حدث عُطل فيه.

رسم توضيحي

العصر الحالي

في ثمانينات القرن الماضي، بدأت الواجهات الرسومية بالظهور، وشاعت بين الناس كالنار في الهشيم، وتطوَّرت أجهزة الحاسوب الشخصي (PC)، وبحلول نهاية الثمانينات امتلك أغلب الناس حواسيب شخصية في بيوتهم، وحُلَّت مشكلة السعر الباهظ والحجم الضخم، وتطوَّر العالَم وتغيَّر كُليًّا كما تراه اليوم.
صَغُرَ حجم الحاسوب، واختفت الطرفية، على الرغم من عدم استخدامنا لتلك الأجهزة -أي: TTYs- إلا أنها ما تزال مغروسة في فلسفة جنو/لينُكس. الطرفية لم تعد جهاز منفصل في بقعة ما، يتمد منه سلك إلى الحاسوب الرئيسي، أصبحت في الحاسوب نفسه، لقد ذابت كل تلك الأشياء في بُوتَقَةٍ واحدةٍ مذهلةٍ صغيرةِ الحجمِ، وأصبح في متناول الجميع.
خذ في عين الإعتبار عند تعلمك لجنو/لينُكس فأنت تتعلم طريقة تفكير يُونِكس وفلسفته، لأن جنو/لينُكس يَرَثُ مفاهيم كثيرة من يُونِكس، وفهم الأمور التاريخية التي تخصَّه مهمة.

الجواب

بعد تلك الرحلة السريعة التي خضناها، والمعلومات التي عرفناها، فأنت جاهز ومُتَهَيِّئ لمعرفة الجواب، بل حلُّ السؤال بنفسك.

حسب سؤالك فلا يوجد فرق، فتلك الـterminal هي هي الـTTY، فهما كلمتان يصفان شيئًا واحدًا.

الطرفية حاليًّا اسمها الفعلي: محاكي طرفية (Terminal Emulator)، أظنك قادر على استنتاج سبب التسمية؟

محاكي الطرفية لأنها تُحاكي تلك الطرفية القديمة داخل واجهة المستخدم الرسومية (GUI) الجميلة، التي بدورها -أي: GUI- تعمل داخل TTY، فالنواة تُحاكي TTY للمُستَخدم.
عند فتح محاكي طرفية فأنت في الواقع لا تفتح TTY بل PTS وهي اختصار لكلمة: pseudo-terminals، ومفردها pseudo-terminal والتي تعني: شبه طرفية، وحسب تعريب Arabeyes تعني: شبه مطراف.
وتلك -أي: PTS- تختلف عن TTY كثيرًا، وأحد الاختلافات البيَّنة أن PTY تعمل في مساحة المستخدم (user space) ولا تحتاج كلمة سر لفتحها، أما TTY فتعمل في مساحة النواة (Kernel space) وتحتاج لكلمة سر لفتحها في أغلب الأحيان. راجع مقالة الأخ فارس المرسلة:

إن لم تكن تدري ماذا يعني مساحة المستخدم والنواة فاقرأ المقال الآتي على لينُكس اليوم:

مكونات توزيعات لينكس

وهذا مقال تقني مفصل عن TTY:

The TTY demystified

ولمعلومات تقنية أكثر عن PTS أُحِيلك إلى كتاب:

The Linux programming interface: A Linux and UNIX system programming handbook

الفصل 64، والفصل 62.

4 إعجابات

شكرا لك ، وجزاك الله خير
الحين صار مفهوم