چه زمانی از mutex_lock_interruptible استفاده کنیم؟

فهرست مطالب:

چه زمانی از mutex_lock_interruptible استفاده کنیم؟
چه زمانی از mutex_lock_interruptible استفاده کنیم؟

تصویری: چه زمانی از mutex_lock_interruptible استفاده کنیم؟

تصویری: چه زمانی از mutex_lock_interruptible استفاده کنیم؟
تصویری: قفل Mutex 2024, سپتامبر
Anonim

از تابع mutex_lock_interruptible استفاده کنید تا اجازه دهید راننده شما با هر سیگنالی قطع شود. این بدان معناست که تماس سیستم شما باید نوشته شود تا بتوان آن را مجددا راه اندازی کرد. (همچنین ERESTARTSYS را ببینید.)

آیا می توانم یک spinlock را در یک CPU قفل کنم و قفل CPU دیگری را باز کنم؟

استفاده از اسپینلاک در یک سیستم تک هسته ای/تک سی پی یو معمولاً معنی ندارد، زیرا تا زمانی که نظرسنجی اسپینلاک تنها هسته CPU موجود را مسدود می کند، هیچ رشته دیگری نمی تواند اجرا شود و از آنجایی که هیچ رشته دیگری نمی تواند اجرا شود. قفل هم باز نمی شود.

آیا می توانم در حالی که یک قفل چرخشی در دست دارم با Kmalloc Gfp_kernel تماس بگیرم؟

شما نمی توانید، با این حال، در حالی که یک قفل چرخشی در دست دارید، کاری انجام دهید که بخوابد.به عنوان مثال، هرگز هیچ تابعی را که حافظه کاربر را لمس می کند، kmalloc با پرچم GFP_KERNEL، هر توابع سمافور یا هر یک از توابع زمانبندی را در حالی که یک قفل چرخشی نگه می دارید، فراخوانی نکنید. … سمافورها در لینوکس قفل های خواب هستند.

Spinlock_t چیست؟

int spin_trylock(spinlock_t lock) قفل چرخش را قفل می کند اگر قبلاً قفل نشده باشد. اگر نتوانید قفل را بدست آورید با خطا خارج می شود و قفل نمی چرخد. spin_lock_irq: spin_lock_irq(spinlock_t lock)

کرنل mutex چیست؟

در هسته لینوکس، mutexes به یک قفل اولیه خاص اشاره دارد که سریال‌سازی را در سیستم‌های حافظه مشترک اعمال می‌کند، و نه تنها به اصطلاح عمومی اشاره دارد به "حذف متقابل" موجود در آکادمیک یا کتابهای درسی نظری مشابه.

توصیه شده: