کانفیگ و کاوش کرنل لینوکس- ۸

POSIX Message Queues [*]

باز هم برمیگرده به همون مبحث IPC اما این بار یک IPC مبتنی بر استاندارد POSIX. این رو هم انتخاب میکنیم.

Enable process_vm_readv/writev syscalls [*]

این یک آپشن بسیار مفیده. در حقیقت یه میانبر سریع. این آپشن به سیس‌کالهایی که مجوزهاشون اوکیه دوتا پارامتر میده: process_vm_readv و process_vm_writev که باعث میشه بجای کمک گرفتن از کرنل، پروسه‌ها مستقیم از حافظه همدیگه دیتا بخونن یا بنویسن. خیلی باحاله دیگه.

uselib syscall []

میگه آیا دوست دارید از ()uselib استفاده کنید یا خیر. تابع uselib برای برنامه‌های قدیمی که هنوز به جای glibc از libc5 و قبلتر استفاده میکنن کاربرد داره. الان همه توسعه دهنده ها برنامه‌هاشون رو با glibc تطبیق دادند پس من ازش استفاده نمیکنم هرچند بصورت پیشفرض فعاله. این هم یکی دیگه از مزایای کانفیگ شخصی.

Auditing support -*-

این آپشن بسیار لازم و ضروری هست در حدی که جزو یه آپشن امنیتی نیست بلکه در قسمت general قرار گرفته. دلیلش اینه که تا کرنل روی پروسه‌ها مسلط نباشه چجوری میتونه اطمینان حاصل کنه که هر پروسه به جایگاه درستی دسترسی خواهد داشت؟ ما ازین آپشن برای دسترسی دادن کرنل به بررسی مجوزها استفاده میکنیم. همچنان که در توضیحات این پارامتر نوشته شده که ساز و کارهایی مثل AppArmor و SELinux بهش نیاز دارند.

<— IRQ subsystem

Expose irq internals in debugfs []

بحث جالبیه IRQ. برای فهمیدنش من از چند پله قبلترش شروع به توضیح میکنم.

تو کامپیوتر ما یه سری قطعات داریم مثل کارت گرافیک، کارت صدا، دی‌وی‌دی رام، هارد دیسک و …

هرکدوم ازین وسایل کاری انجام میدن. اما چیزی که مسلمه اینه که تمام کارها باید پردازش بشن. و کی پردازش میکنه؟ پردازنده. حالا ما یه ساز و کار رو شبیه‌سازی میکنیم. فرض کنید میخوایم یه فیلم رو از DVD کپی کنیم تو هارد دیسک. ساز و کار به این صورته:

-دی‌وی‌دی رام: میخوام یه فایل کپی کنم.

+پردازنده: به هارد میگم الان.

+پردازنده به دی‌وی‌دی رام: به هارد گفتم. تو شروع کن الان.

-دی‌وی‌دی رام به پردازنده: یه بلوک داده فرستادم.

+پردازنده به هارد: یه بلوک داده داره میاد.

*هارد به پردازنده: بلوک داده رو گرفتم.

+پردازنده به دی‌وی‌دی رام: بلوک قبلی رو هارد گرفت. بعدی رو بفرست.

و همینطور الی آخر. پردازنده دیوانه میشه. یه پردازنده سریع باید علاف این پروسه‌های کند بشه. درست مثل اینکه یه قطار سریع السیر هر صد متر وایسته یکی رو پیاده یا سوار کنه. برای جلوگیری از این اتلاف وقت و انرژی سازندگان این قطعات اومدن رو این قطعه‌ها کنترلری بنام DMA یا Direct Memory Access رو طراحی و تعبیه کردن. ساز و کارش به چه صورته؟

دی‌وی‌دی رام درخواستش رو مبنی بر انتقال داده از خودش به هارد رو میفرسته به DMA. بعد DMA جمع بندی میکنه درخواست رو. مثلا اینکه مبدا و مقصد کجاست. درخواست رو میفرسته به پردازنده. پردازنده چک بررسی میکنه. یا تایید میکنه یا رد. چنانچه درخواست اوکی باشه درخواست تایید میشه. پردازنده به DMA میگه من واقعا وقت این رو ندارم بشینم همچین پروسه‌ای رو کنترل کنم. خودت کنترلش کن و انجامش بده. فقط هر زمان کارت تموم شد بهم یه ندا بده. ندا یا همان Request.

پردازنده میگه تو هروقت این ندا رو به من دادی، من آب دستم باشه میزارم زمین و به درخواستت جواب میدم یا به اصطلاح کارهامو interrupt میکنم. درخواست یا ندایی که DMA به پردازنده میده رو بهش میگن IRQ یا Interrupt Request. با این درخواست DMA از پردازنده میخواد کارهاشو ول کنه. پردازنده هم کارهاشو تو یه رجیستر ‌ذخیره میکنه در کش خودش و به درخواست DMA جواب میده.پس از جواب دادن irq مجددا پردازنده میره و کارهاشو از همونجا که سیو کرده بود شروع میکنه و ادامه میده. هر دستگاهی در کامپیوتر کنترلر خودشو داره و برای کنترلر هر دستگاه هم کدی مشخص تعریف شده. مثلا کد irq کیبورد با کد ‌irq هارد فرق داره.

حالا این آپشن میگه که آیا میخواهید که لاگ دیباگ irqهای سیستمت رو تو لاگهای سیستمیت بیارم یا نه؟ من میگم نه. چون واقعا به درد من نمیخوره الان و این برای توسعه دهنده های کرنله که لاگ irqهایی رو که استفاده میکنن ببینن و عیبیابی کنن.



درباره نویسنده: titanstrix

مطالب زیر را حتما بخوانید

1 Comment

  1. سلام
    ممنون بخاطر مطالب خوبت، شما که انقدر خوب شروع کردی چرا ادامه ندادی مطالبت در وب فارسی کم نظیر پس لطفا ادامه بده یک مقدار هم در باره منابع استفاده شدت بنویس

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *