آموزش همگام سازی در برنامه نویسی هسته لینوکس

Synchronization in Linux Kernel Programming

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
توضیحات دوره: برنامه نویسی کرنل لینوکس - مفاهیم همگام سازی و همگام سازی همزمان در لینوکس کرنل پیش نیازها:باید قادر به نوشتن/فهم Hello World لینوکس ماژول کرنل باید قادر به نوشتن/درک ماژول های هسته لینوکس برای فایل سیستم فایل proc باشد.

به‌روزرسانی: 15 سپتامبر: بخش RCU اضافه شد

آنچه در این دوره خواهید آموخت

  • مفاهیم مختلف مرتبط با همزمانی مانند: preemption، سوئیچ زمینه، ورود مجدد، بخش بحرانی، شرایط مسابقه

  • تکنیک های مختلف همگام سازی

    • متغیرهای هر CPU

    • متغیرهای اتمی

    • Spinlocks

    • سمافورها

    • Mutexes

    • قفل‌های نوشتن را بخوانید

    • قفل های توالی

    • خواندن به‌روزرسانی کپی (RCU)


API/Macros/Structures:

  • spinlock_t، DEFINE_SPINLOCK، spin_lock، spin_unlock، spin_trylock، spin_lock_irqsave، spin_unlock_irqrestore،spin_lock_irq، spin_unlock_irq

  • atomic_t، atomic64_t، ATOMIC_INIT، atomic_inc، atomic_dec، atomic_set، atomic_read، atomic_add، atomic_sub،

    atomic_dec_and_test, atomic_inc_and_test, atomic_sub_and_test, atomic_add_negative,atomic_add_return, atomic_sub_return, atomic_inc_return, atomic_dec_return,atomic_fetch_add, atomic_fetch_sub, atomic_cmpxchg, atomic_xchg,set_bit, clear_bit, change_bit, test_and_set_bit, test_and_clear_bit, test_and_change_bit,

  • NR_CPUS,num_online_cpus,smp_processor_id,get_cpu,put_cpu,DEFINE_PER_CPU,get_cpu_var, put_cpu_var, per_cpu, for_each_online_cpu, alloc_percpu, free_percpu,

  • rcu_read_lock، rcu_read_unlock، synchronize_rcu، call_rcu، rcu_assign_pointer، rcu_dereference

  • seqlock_t، seqcount_t، DEFINE_SEQLOCK، seqlock_init، write_seqlock، write_sequnlock

  • struct rw_semaphore، DECLARE_RWSEM، init_rwsem، down_read، up_read، down_write، up_write، down_read_trylock، down_write_trylock، downgrade_write

  • struct rwlock_t، DEFINE_RWLOCK، rwlock_init، read_lock، read_unlock، write_lock، write_unlock

  • struct mutex، DEFINE_MUTEX، mutex_init، mutex_lock، mutex_unlock، mutex_trylock، mutex_lock_interruptible، mutex_unlock_interruptible، mutex_is_locked

  • ساختار سمافور، sema_init، DEFINE_SEMAPHORE، پایین، بالا، down_interruptible، down_trylock، down_timeout، down_killable


دستورات استفاده شده در دوره

  • nproc

  • ps -eaF

  • ps aux


سرفصل ها و درس ها

همزمانی Concurrency

  • مسئله Problem

  • مقدمه ای بر همزمانی Introduction to concurrency

  • پیشینه چند پردازش Background of Multiprocessing

  • Preemption و سوئیچ زمینه در کرنل لینوکس Preemption and context switch in Linux Kernel

  • Preemption در فضای کاربر و هسته Preemption in user and kernel space

  • چه زمانی ممکن است پیش‌پرداخت هسته اتفاق بیفتد When can kernel preemption happen

  • نمونه ای از Preemption هسته Example of kernel preemption

  • ورود مجدد Reentrancy

  • همگام سازی شرایط مسابقه و مناطق بحرانی Synchronization Race Condition and critical regions

  • علل همزمانی Causes of concurrency

  • راه حل برای همزمانی Solution for concurrency

  • حداکثر تعداد پردازنده ها را در Kernel بیابید Find out maximum number of processors in Kernel

  • دریابید که کدام پردازنده در حال اجرای مسیر کنترل هسته است Find out which processor is running kernel control path

  • ماژول هسته لینوکس مثالی از شناسه پردازنده هسته Thread Linux Kernel Module Example of processor id of Kernel Thread

  • ماژول هسته لینوکس مثالی از شناسه پردازنده در سیستم تک پردازنده Linux Kernel Module Example of processor id on uniprocessor system

متغیرهای هر CPU Per CPU Variables

  • معرفی Introduction

  • نمونه ای از متغیرهای هر CPU Example of Per CPU variables

  • رابط جدید متغیرهای هر CPU New Interface of Per CPU Variables

  • نمونه ای از رابط جدید متغیرهای هر CPU Example of new interface of Per CPU Variables

  • نمونه ای از هر cpu Example of per cpu

  • نمونه ای از for_each_online_cpu Example of for_each_online_cpu

  • تخصیص داده به ازای هر cpu در زمان اجرا Allocating per cpu data at runtime

  • مشکل با متغیرهای هر CPU Problems with Per CPU Variables

اپراتورهای اتمی Atomic Operators

  • مشکل Read Modify Write Problem Read Modify Write

  • مقدمه ای بر اپراتورهای اتمی Introduction to Atomic Operators

  • نمونه ای از اپراتورهای اتمی Example of Atomic Operators

  • کاربردهای رایج عملیات اتمی Common uses of Atomic Operations

  • عملیات اتمی و آزمایش Atomic Operation and test

  • جمع اتمی تفریق و برگرداندن Atomic add subtract and return

  • عملیات اتمی بیشتر More Atomic Operations

  • عملیات اتمی 64 بیتی 64-bit Atomic Operations

  • عملیات بیتی اتمی Atomic bitwise operations

  • عملیات بیتی اتمی با مقدار بازگشتی Atomic bitwise operations with return value

  • عملیات بیتی غیر اتمی Non Atomic bitwise operations

قفل چرخشی Spin Locks

  • معرفی Introduction

  • Spinlock API Spinlock API's

  • راه اندازی اسپینلاک Initializing spinlock

  • Spinlock مثالی از دو رشته هسته Spinlock Example of two kernel threads

  • چه اتفاقی می‌افتد اگر قفلی را که قبلاً توسط CPU نگه داشته شده است به دست بیاورم What happens if i acquire a lock which is already held by CPU

  • اجرای busyloop با استفاده از spinlock در درایورهای char Implement busyloop using spinlock in char drivers

  • spin_trylock spin_trylock

  • آیا می توانم از spinlock استفاده کنم اگر منبع بین فرآیند و زمینه وقفه مشترک باشد؟ Can i use spinlock if resource is shared between process and interrupt context

  • آیا پیش‌پرداخت هسته زمانی که قفل چرخشی به دست می‌آید غیرفعال است؟ Is kernel preemption disabled when spinlock is acquired

  • نکات مهمی که هنگام استفاده از اسپینلاک باید در نظر بگیرید Important points to consider while using spinlock

  • مثال فراخوانی msleep در بخش بحرانی Example of calling msleep in critical section

  • Will Spinlock در سیستم تک پردازنده وجود دارد Will spinlock exists on uniprocessor system

  • اجرای اسپینلاک Implementation of spinlock

سمافور Semaphore

  • معرفی Introduction

  • اجرای سمافور Implementation of semaphore

  • انواع سمافور Types of semaphores

  • آیا می توانم از سمافورهای شمارش در بخش بحرانی استفاده کنم؟ Can I use counting semaphores in critical section

  • Semaphore API Semaphore API

  • نمونه ماژول هسته لینوکس با استفاده از API سمافور Linux Kernel Module Example using semaphore API

  • مثال ماژول هسته لینوکس با استفاده از پایین و بالا Linux Kernel Module Example using down and up

  • مثال ماژول هسته لینوکس که دو بار خاموش می شود Linux Kernel Module Example calling down twice

  • ماژول هسته لینوکس نمونه ای از مصرف کننده تولید کننده Linux Kernel Module Example of producer consumer

  • down_interruptible down_interruptible

  • down_trylock down_trylock

  • down_timeout down_timeout

  • پایین_کشنده down_killable

  • نکات مهم هنگام استفاده از سمافور Important points while using semaphore

  • اسپینلاک در مقابل سمافور` spinlock vs semaphore`

موتکس Mutex

  • معرفی Introduction

  • Mutex در مقابل سمافور Mutex vs semaphore

  • پیاده سازی Mutex در کرنل لینوکس Mutex Implementation in Linux Kernel

  • Mutex API Mutex API

  • نمونه ماژول هسته لینوکس با استفاده از مقداردهی اولیه پویا mutex API Linux Kernel Module Example using mutex API dynamic initialization

  • نمونه ماژول هسته لینوکس با استفاده از مقداردهی اولیه استاتیک API mutex Linux Kernel Module Example using mutex API static initialization

  • نمونه ماژول هسته لینوکس که خواب فراخوانی را در بخش بحرانی نشان می دهد Linux Kernel Module Example demonstrating calling sleep in critical section

  • mutex_trylock mutex_trylock

  • چه اتفاقی می‌افتد وقتی رشته‌های دیگر mutex را باز کند What happens when other thread calls unlock mutex

  • در حال امتحان قفل‌های mutex بازگشتی Trying recursive mutex locks

  • mutex_is_locked mutex_is_locked

  • بین سمافور و موتکس کدام را انتخاب می کنید Which one do you choose between semaphore and mutex

  • بین spinlock و mutex کدام را انتخاب می کنید Which one do you choose between spinlock and mutex

قفل نوشتن را بخوانید Read Write Locks

  • بیان مسأله Problem Statement

  • راه حل Solution

  • مقدمه ای بر ReadWrite Spinlock Introduction to ReadWrite Spinlock

  • مثال ماژول هسته لینوکس با استفاده از RW Spinlock API Linux Kernel Module Example using RW Spinlock API

  • وقتی یکی پس از دیگری قفل خواندن و نوشتن قفل را صدا می زنیم چه اتفاقی می افتد What happens when we call read lock and write lock one after another

  • قفل خواندن بازگشتی Recursive read locks

  • وقتی نویسنده منتظر است و خواننده از راه می رسد چه اتفاقی می افتد What happens when writer is waiting and reader arrives

  • مثال ماژول هسته لینوکس با استفاده از RWLOCKS با 3 رشته هسته Linux Kernel Module Example using RWLOCKS with 3 kernel threads

  • مثال ماژول هسته لینوکس با استفاده از RWLOCKS با 4 رشته هسته Linux Kernel Module Example using RWLOCKS with 4 kernel threads

Semaphores RWLocks Semaphores RWLocks

  • مقدمه ای بر ReadWrite Semaphores Introduction to ReadWrite Semaphores

  • ReadWrite Semaphore API ReadWrite Semaphore API

  • down_read_trylock و down_write_trylock down_read_trylock and down_write_trylock

  • downgrade_write downgrade_write

  • قفل نوشتن بازگشتی Recursive write locks

  • مثال ماژول هسته لینوکس با استفاده از موضوعات متعدد Linux Kernel Module Example using multiple threads

قفل های متوالی Sequential Locks

  • مسئله Problem

  • راه حل Solution

  • قفل های دنباله ای Sequence Locks

  • Sequence Locks چگونه کار می کند How Sequence Locks works

  • عملیات را در قفل ترتیبی بنویسید Write operation in sequence lock

  • خواندن عملیات در قفل ترتیبی Read operation in sequence lock

  • مثال ماژول هسته لینوکس با استفاده از قفل ترتیبی Linux Kernel Module Example using sequence lock

  • آیا Preemption هسته با استفاده از قفل دنباله غیرفعال است Is Kernel Preemption Disabled using sequence lock

  • محدودیت قفل های توالی Limitation of sequence locks

  • Sequence Locks در هسته لینوکس Sequence Locks in Linux kernel

  • توالی در وقفه قفل می شود Sequence locks in interrupts

قفل های RCU RCU Locks

  • معرفی Introduction

  • لینکدلیست مثال نحوه حذف قفل گره رایگان Linkedlist example of how to delete node lock free

  • طراحی RCU RCU Design

  • چرا باید از rcu_assign_pointer استفاده کنم Why should i use rcu_assign_pointer

  • خواندن عملیات در RCU Read operation in RCU

  • چرا باید از rcu_dereference استفاده کنم Why should i use rcu_dereference

  • ماژول هسته لینوکس مثال 1 از موضوعات خواندن و نوشتن Linux Kernel Module example 1 of read and write threads

  • ماژول هسته لینوکس مثال 2 از موضوعات خواندن و نوشتن Linux Kernel Module example 2 of read and write threads

  • چه زمانی باید حافظه را آزاد کنیم When should we free memory

  • synchronize_rcu synchronize_rcu

  • call_rcu call_rcu

  • آیا می‌توان بخش‌های حساس جانبی خواندن rcu را تودرتو کرد Can rcu read side critical sections be nested

  • synchronize_rcu چگونه در داخل کار می کند How does synchronize_rcu works internally

  • اصطلاحات RCU RCU Terminology

  • انواع RCU برای لیست های پیوندی RCU variants for Linked Lists

  • نمونه ماژول هسته لینوکس از لیست های مرتبط با rcu Linux Kernel Module example of rcu linked lists

  • مزایای RCU Advantages of RCU

  • پرسش و پاسخ Question and Answer

دانلودها Downloads

  • یادداشت Notes

نمایش نظرات

نظری ارسال نشده است.

آموزش همگام سازی در برنامه نویسی هسته لینوکس
خرید اشتراک و دانلود خرید تکی و دانلود | 160,000 تومان (5 روز مهلت دانلود) زمان تقریبی آماده سازی لینک دانلود این دوره آموزشی حدود 5 تا 24 ساعت می باشد.
جزییات دوره
4.5 hours
120
Udemy (یودمی) udemy-small
02 آذر 1399 (آخرین آپدیت رو دریافت می‌کنید، حتی اگر این تاریخ بروز نباشد.)
913
4.4 از 5
دارد
دارد
دارد
Linux Trainer

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Linux Trainer Linux Trainer

مربی در آموزش آخر هفته لینوکس

Udemy (یودمی)

یودمی یکی از بزرگ‌ترین پلتفرم‌های آموزشی آنلاین است که به میلیون‌ها کاربر در سراسر جهان امکان دسترسی به دوره‌های متنوع و کاربردی را فراهم می‌کند. این پلتفرم امکان آموزش در زمینه‌های مختلف از فناوری اطلاعات و برنامه‌نویسی گرفته تا زبان‌های خارجی، مدیریت، و هنر را به کاربران ارائه می‌دهد. با استفاده از یودمی، کاربران می‌توانند به صورت انعطاف‌پذیر و بهینه، مهارت‌های جدیدی را یاد بگیرند و خود را برای بازار کار آماده کنند.

یکی از ویژگی‌های برجسته یودمی، کیفیت بالای دوره‌ها و حضور استادان مجرب و با تجربه در هر حوزه است. این امر به کاربران اعتماد می‌دهد که در حال دریافت آموزش از منابع قابل اعتماد و معتبر هستند و می‌توانند به بهترین شکل ممکن از آموزش‌ها بهره ببرند. به طور خلاصه، یودمی به عنوان یکی از معتبرترین و موثرترین پلتفرم‌های آموزشی آنلاین، به افراد امکان می‌دهد تا به راحتی و با کیفیت، مهارت‌های مورد نیاز خود را ارتقا دهند و به دنبال رشد و پیشرفت شغلی خود باشند.