ما هو الـ Device file؟

قبل قراءة هذا الموضوع الرجاء الاطلاع على المقاليّن السابقين: طبيعة الملفات في نظام لينكس، و كل شيء هو ملف؛ وذلك لتكون الرؤية واضحة بالنسبة لك.

في يونكس واﻷنظمة الشبيهة به مثل لينكس يعتبر الـ device file أو الـ special file بمثابة واجهة (interface) للتعاريف (device driver) التي تبدو في نظام الملفات (filesystem) كأنها ملفات اعتيادية. وتسمح هذه الملفات (special files) للبرامج بالتحاور مع تعاريف القطع واﻷجهزة وذلك باستخدام معايير الدخل والخرج القياسي (standard I\O)، اﻷمر الذي يبسّط العديد من المهام ويوحّد آليات الدخل والخرج I\O.

وغالبًا ما توفّر الـ device files واجهة بسيطة للأجهزة الثانوية مثل الطابعات واﻷجهزة ذات المنافذ التسلسلية، ويمكن أن تستخدم للوصول إلى موارد معيّنة على تلك اﻷجهزة، مثل بارتشنات اﻷقراص (disk partitions)، كما أنها مفيدة للوصول إلى موارد النظام التي ليس لها اتصال فيزيائي مع أي جهاز، مثل مولّدات اﻷرقام العشوائية والـ data sinks.

ولقد استعار نظام MS-DOS مفهوم الـ device files من نظام يونكس لكن مع إعادة تسميته إلى الاسم devices. وﻷن MS-DOS لم يكن يدعم التسلسل الهرمي في بنائه الهيكيلي (directory hierarchy)، فإن اﻷجهزة قد تمّ تمييزها عن الملفات الاعتيادية، وذلك بجعل أسمائها بمثابة كلمات محجوزة في النظام، وهذا يعني أن تلك اﻷسماء المحجوزة التي خصصت للأجهزة لا يجوز استخدامها في تسمية الملفات والمجلدات في النظام، تلك الأسماء المحجوزة تمّ اختيارها لتكون متوافقة مع الـ special files ويُقسّم MS-DOS اﻷجهزة إلى نوعين أولاهما Block Devices المتعلقة بمحركات اﻷقراص، والثاني Character Devices المتعلّق بعموم بقية القطع والأجهزة.

هنالك نوعان عموميان من الـ device files في أشباه يونكس اﻷول character special files والثاني block special files ويكمن الفرق بينهما في كيفية معالجتهما للبيانات المكتوبة عليهما وقراءتهما بعد معالجتها من نظام التشغيل واﻷجهزة، كلاهما يقعان في تصنيف device special files والتي هي على العكس من الـ pipes (اﻷنابيب) التي لا ترتبط فعليًا بأيّ جهاز ولكنها في نفس الوقت لا تُعدّ ملفات اعتيادية أيضًا.

Character devices

أو الـ Character special files، التي توفّر وصولًا مباشرًا غير انتقاليّ أو وصولًا بلا وسطاء\غير مؤقت (unbuffered access) إلى العتاد (hardware devices)، وتقرأ وتكتب حرفًا واحدًا، وهي ليس بالضرورة أن تسمح لمجموعة من البرامج بالقراءة والكتابة في وقت واحد.

Block devices

أو الـ Block special files التي توفّر وصولًا انتقاليًا وسيطًا\مؤقتًا (buffered access) إلى العتاد، مع طبقة من التجريد، وعلى عكس اﻷولى التي تسمح للمبرمجين بقراءة\كتابة حرف واحد فقط، فإن الـ Block devices تسمح بقراءة\كتابة أي حجم من البيانات.

ملخص الفرق بين النوعين

  • تتحاور الـ Character devices عن طريق إرسال واستقبال حرف واحد أو رقم أو رمز واحد single character (البايتات والبتات).
  • تتحاور الـ Block devices عن طريق إرسال كتلة من البيانات بأيّ حجم.
  • من اﻷمثلة على الـ Character devices: بطاقات الصوت، اﻷجهزة ذات المنافذ التسلسلية واﻷجهزة ذات المنافذ الموزعة.
  • من اﻷمثلة على الـ Block devices: الأقراص الصلبة، كاميرات الـ USB، فلاشات الـ USB.

pseudo-devices

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

  • /dev/null – يتجاهل المدخلات وبالتالي فهو لا ينتج مخرجات، وهو بالواقع أحد الملفات الخاصة المستعملة لحذف البيانات التي توجّه نحوه، وذلك للتخلص من المخرجات التي لا نحتاجها والتي قد تتضارب مع أشياء أخرى.
  • /dev/zero – يتجاهل المدخلات، ولكنه ينتج دفقًا مستمرًا من القيم الصفرية والبايتات.
  • /dev/full – ينتج دفقًا مستمرًا من القيم الصفرية والبايتات عند القراءة ويرجع الرسالة “disk full” عند الكتابة إليه.
  • /dev/random و /dev/urandom – ينتجان دفقًا مستمرًا من اﻷرقام العشوائية الزائفة.

كانت هذه مقدّمة مبسطة إلى شرح مفهوم device file في الأنظمة الشبيهة بيونكس.

[device file]

  • delphi17

    مقال اكتر من رائع برك الله فيك

مشاركة