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

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

کرنل یا هسته هر سیستم عاملی به جز کنترل مولفه های سیستم عامل مانند مدیریت فرایندها و حافظه اصلی، مسئول راه اندازی و  مدیریت دیوایس های سخت افزاری متصل به سیستم نیز است. udev مدیر دیوایس های سخت افزاری است که درون هسته سیستم عامل لینوکس قرار دارد که جایگزین devfsd شده است.

در سیستم عامل لینوکس هر دیوایس درون دایرکتوری dev/ دارای یک فایل خاص خود است که آنرا Device File یا Device Node گفته می شود. به طور کلی در سیستم عامل لینوکس و دیگر سیستم عامل های یونیکسی یک نوع دیوایس داریم که آنرا شبه دیوایس ها نیز می گویند. این نوع دیوایس ها، سخت افزارهای واقعی نیستند، اما گونه ای از Device File ها هستند که درون دایرکتوری dev/ وجود دارند. همچنین در یک دسته بندی دیگر می توان دیوایس ها را به دو دسته Block and Character تقسیم کرد.

فایل هایی که درون دایرکتوری dev/ هستند مجزا از درایورهایی هستند که درون هسته قرار دارند. البته مدیران لینوکس نیازی ندارند تا به صورت مستقیم با درایورهای درون هسته و نه با فایل های درون دایرکتوری dev/ کار کنند، بلکه از طریق دستورهای مانند fdisk, parted با فایل های مربوط به هارد دیسک ها کار کنند و یا زمانی که یک ترمینال را باز می کنند یک شبه دیوایس TTY به آن ترمینال اختصاص داده خواهد شد.

اما چگونه مدیران نیازی به ارتباط با فایل های درون dev/ ندارند و یا نرم افزارها با این فایل ها کار می کنند؟ در هسته سیستم عامل ها، یکی از وظایف مدیریت دیوایس هایی است که به سیستم متصل شده اند و یا به صورت  Plugable به سیستم متصل می شوند. اما لازم است تا این پیچیدگی ها از دید کاربران و توسعه دهندگان نرم افزاری مخفی باشد و یک دایرکتوری با فایل هایی ارائه شود که در نهایت از آن استفاده شود. دایرکتوری dev/ به صورت پویا با اضافه یا حذف شدن یک دیوایس از سیستم بروز خواهد شد. بنابراین udev یک دایرکتوری پویا را فراهم می کند که تنها شامل فایل هایی (Device File ها) است که دیوایس را ارائه می دهند. udev مسئول اضافه یا حذف کردن Device Node ها از درون دایرکتوری udev/ است. توجه کنید که udev بخشی از هسته سیستم عامل لینوکس است.

udev تحت فرایند udevd عمل می کند و event ها را در صورت اضافه یا حذف شدن یک دیوایس را به صورت مستقیم از هسته دریافت می کند. udev از نسخه ۲.۶ به بعد به هسته لینوکس اضافه شد و تا پیش از آن از devfsd در لینوکس استفاده می شده است. udev در فضای کاربر یا User Mode کار می کند و کاربران  از طریق udev Rule ها می توانند نام دیوایس ها را تغییر دهند. توجه داشته باشید به صورت پیشفرض و کلی نامگذاری دیوایس ها توسط هسته سیستم عامل لینوکس انجام می شود. به طور مثال در CentOS 6 نام اینترفیس های شبکه eth0 است ولی این نامگذاری در CentOS7 تغییر کرده است.

udev با هسته سیستم عامل لینوکس در ارتباط است و به محض اینکه رویدادی رخ می دهد، کرنل به فرایند udevd اطلاع خواهد داد. فرایند udevd به منظور پاسخ دادن مناسب به رویداد پیکربندی شده است. بنابراین رویداد در سطح هسته یا Kernel Mode اتفاق می افتد زیرا مدیریت دیوایس ها و درایورها در سطح کرنل صورت می گیرد. همچنین عکس العمل مناسب به رویداد صادر شده از هسته، در سطح فضای کاربر یا User Mode صورت می گیرد، زیرا udev و فرایند udevd در فضای کاربر در حال اجرا هستند. عکس العملی که در مقابل رویداد صادر شده از هسته صورت می گیرد، با توجه به Rule های مربوط به udev خواهد بود. بنابراین به صورت خلاصه می توان گفت که با افزودن یک دیوایس سخت جدید یک رویداد در هسته صادر شده و به طور مستقیم فرایند udevd مطلع خواهد شد و سپس با توجه به Rule های udev یک عکس العمل صورت می گیرد.



برچسب ها : , ,