منبع اصلی نوشتار زیر در این لینک قرار دارد

مدیریت دیوایس ها در لینوکس – بخش دوم

udev یک ویژگی اضافه شده به هسته لینوکس از نسخه ۲.۶ به بعد است که امکان مدیریت دیوایس های لینوکسی را ساده می کند. از نقطه نظر مدیریت دیوایس ها، دو دسته از دیوایس ها وجود دارند. دسته اول دیوایس هایی هستند که پیش از روشن کردن (Power on) به سیستم متصل شده اند که در اصطلاح Cold-Plugged Dvice ها گفته می شوند. دسته دوم دیوایس هایی مانند USB, Flash Memory, Camaera و موبایل ها هستند که می توانند در زمان روشن بودن به سیستم متصل شوند که در اصطلاح Hot-Plugged Dvice ها گفته می شوند.

در مطلب “مدیریت دیوایس ها در لینوکس – بخش نخست” گفته شد که udev در فضای کاربر یا User Mode قرار دارد و به صوت پویا مسئول اضافه یا حذف کردن Device File ها یا Device Node ها به/از دایرکتوری dev/ است. udev از سه مولفه ۱) فرایند udevd و ۲) فایل های پیکربندی و ۳) قوانین یا Rule های udev (یا udev Rules) تشکیل شده است تا بتواند به صورت پویا و در پاسخ به یک رویداد در هسته، Device File را در دایرکتوری dev/ مدیریت کند.

در لینوکس به هر Device File دو عدد ۸ بیتی اختصاص داده می شود که Minor and Major Numbers نامیده می شوند. به هر درایور لینوکسی یک عدد Major اختصاص داده می شود و به همین خاطر به تمامی دیوایس هایی که توسط آن درایور کنترل می شوند نیز همان Major Number مربوط به درایور اختصاص داده می شود. همچنین برای تمایز میان تمامی دیوایس هایی که توسط آن درایور کنترل می شوند، یک Minor Number اختصاص داده می شود.

پیش از معرفی udev در هسته ۲.۶، در نسخه های قبلی از devfsd برای مدیریت دیوایس ها استفاده می شده است. devfsd نیز همانند udev یک مدیر دیوایس (یا Device Manager) است که Device File ها یا Device Node ها را درون دایرکتوری dev/ ایجاد می کرده است. اما با این تفاوت که دایرکتوری dev/ شامل یک Static Device File برای هر کدام از دیوایس هایی است که به سیستم متصل شده اند و توسط درایور خود کنترل می شوند. بنابراین در سیستم هایی که تعداد زیادی از دیوایس ها را پشتیبانی می کرده اند، هر کدام از آن دیوایس ها، Device File یا Device Node خود را داشته است.

در مقایسه با udev که مدیریت و ایجاد Device File ها را به صورت پویا انجام می دهد، استفاده از devfsd دارای مشکلاتی بوده است.

  • در devfsd به ازای هر یک از دیوایس های مصتل به سیستم و در حال کنترل توسط یک درایور، یک Static Device File وجود دارد که این فایل ها زمانی ایجاد می شوند که کرنل از فابل دسترس بودن درایور اطمینان داشته باشد. اما در مقابل udev به صورت پویا و زمانی که دیوایس به سیستم متصل می شود یک Device File برای ایجاد می کند.
  • بر خلاف udev که Major and Minor Number ها به Device File ها اختصاص داده می شوند، در devfsd چنین مکانیزمی وجود ندارد.

همانطور که گفته شد در udev به هر درایور یک عدد Major اختصاص داده می شود و هر دیوایس کنترل شونده توسط آن درایور نیز این عدد Major اختصاص داده خواهد شد و برای تمایز بین تمامی دیوایس های کنترل شونده توسط آن درایور، به آنها یک عدد Minor داده خواهد شد. در devfsd چنین مکانیزمی وجود ندارد. فرض کنید به یک سیستم دو عدد چاپگر USB متصل شده اند و Device File هایی به نام dev/usb/lp0/ و dev/usb/lp1/ وجود دارند. اما در devfsd این امکان وجود ندارد که متوجه شویم کدام Device File به کدام دیوایس اشاره می کند. به طور مثال ترتیب متصل شدن دیوایس ها به سیستم را می تواند یک روش برای اشاره کردن به دیوایس دانست. بنابراین بر خلاف udev یک روش نامگذاری و تمایز قائل شدن برای دیوایس های متصل به سیستم وجود ندارد.

  • udev یک برنامه فضای کاربر است که از رویدادهای صادر شده توسط کرنل، متوجه می شود که کدام دیوایس به سیستم متصل شده و کدام از سیستم قطع شده است و در مقابل این رویداد ها، دیوایس فایلی را به دایرکتوری dev/ اضافه و یا از آن حذف می کند. ولی در devfsd چنین مکانیزمی وجود نداشت.

بنابراین udev در مقایسه با devfs دارای مزیت های زیر است:

  • udev یک برنامه فضای کاربر است بنابراین تعداد کدهای فضای هسته و پیچیدگی های هسته کاسته خواهد شد.
  •  udev دارای یک مکانیزم نامگذاری و تمایز میان دیوایس های مختلف به سیستم است بنابراین ترتیب اتصال به سیستم دیگر اهمیت ندارد.
  • udev به صورت پویا و تنها برای آن دیوایس هایی که در حال حاضر به سیستم متصل هستند درون دایرکتوری dev/ یک Device File ایجاد می کند.

 

مدیریت دیوایس ها در لینوکس – بخش نخست

مدیریت دیوایس ها در لینوکس – سوم



برچسب ها : , ,