آموزش مدیریت حافظه در کرنل لینوکس

Memory Management in Linux Kernel

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

به‌روزرسانی: 16 اکتبر 2020: یادداشت‌های اضافه شده/نمونه‌های استفاده شده در دوره

از این دوره چه چیزی یاد خواهید گرفت؟

  • فضای آدرس فیزیکی پردازنده و نحوه مشاهده آن در لینوکس

  • فضای آدرس مجازی پردازنده

  • فضای آدرس مجازی هسته و فضای کاربر

  • صفحات و خطای صفحه

  • نحوه تبدیل آدرس مجازی به آدرس فیزیکی و فرمت های مورد استفاده برای چاپ

  • حافظه کم و حافظه بالا

  • مکانیسم تخصیص حافظه - تخصیص دهنده دوستان

  • مناطق -/proc/buddyinfo

  • تخصیص حافظه پویا در هسته لینوکس

  • پرچم‌های مختلف مورد استفاده در kmalloc - GFP_KERNEL، GFP_ATOMIC، GFP_DMA

  • تفاوت بین kmalloc و vmalloc

  • وقتی 0 را در kmalloc و vmalloc پاس می کنید چه اتفاقی می افتد

  • پشته هسته

APIهای تحت پوشش این دوره آموزشی:

  • virt_to_phys

  • phys_to_virt

  • kmalloc

  • kfree

  • krealloc

  • ksize

  • vmalloc

  • vfree

دستورات استفاده شده در این دوره:

  • qemu-system-x86


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

مدیریت حافظه قسمت 1 Memory Management Part 1

  • فضای آدرس فیزیکی چیست؟ What is Physical Address Space

  • نحوه مشاهده نقشه حافظه/فضای آدرس فیزیکی در لینوکس -/proc/iomem How to view memory map/physical address space in Linux - /proc/iomem

  • اجرای تصویر Buildroot 32 بیتی در QEMU Running 32-bit Buildroot image in QEMU

  • مشاهده/تغییر اندازه RAM در QEMU -/proc/meminfo، free -m View/Change RAM Size in QEMU - /proc/meminfo, free -m

  • فضای آدرس مجازی برای پردازنده های 32 بیتی Virtual Address Space for 32-bit processors

  • چرا هسته فضای آدرس خود را برای همه فرآیندها به اشتراک می گذارد Why kernel shares its address space for all processes

  • نقشه حافظه 64 بیتی 64-bit Memory Map

  • تبدیل آدرس مجازی به آدرس فیزیکی و بالعکس Converting Virtual address to physical address and vice versa

  • صفحات - PAGE_SIZE ماکرو Pages - PAGE_SIZE macro

  • صفحه ساختار struct page

  • خطای صفحه Page Fault

  • وقتی حافظه 4 کیلوبایت باشد، صفحه خطا می کند Page Faults when memory is 4 KB

  • فضای کاربری فضای آدرس مجازی User space virtual address space

  • فضای آدرس مجازی هسته - حافظه کم و حافظه بالا Kernel Virtual address space - low mem and high mem

  • حافظه کم Low Memory

  • چگونه می توانم بفهمم مم کم و مم بالا چقدر است How can i find out how much is my low mem and high mem

  • حافظه بالا High Memory

  • مکانیسم تخصیص حافظه Memory Allocation Mechanism

  • kmalloc و kfree kmalloc and kfree

  • نمونه ماژول هسته لینوکس kmalloc و kfree Linux Kernel Module example of kmalloc and kfree

مدیریت حافظه قسمت 2 Memory Management Part 2

  • مناطق Zones

  • تخصیص دهنده سیستم دوستان Buddy System allocator

  • چیدمان حافظه هسته مجازی Virtual Kernel Memory Layout

  • آیا می توانم از virt_to_phy برای دریافت آدرس فیزیکی اشاره گر kmalloc استفاده کنم Can i use virt_to_phy to get physical address of kmalloc pointer

  • نمونه ای از ارسال GFP_FLAGS های مختلف به kmalloc Example of passing various GFP_FLAGS to kmalloc

  • حداکثر اندازه ای که می توان با استفاده از kmalloc اختصاص داد Maximum size that can be allocated using kmalloc

  • اگر حافظه اختصاص داده شده با استفاده از kmalloc را آزاد نکنیم چه اتفاقی می افتد What happens if we don't free memory allocated using kmalloc

  • ksize ksize

  • kzalloc kzalloc

  • krealloc krealloc

  • مثال برای نشان دادن kmalloc به صورت فیزیکی و مجازی به هم پیوسته است Example to demonstrate kmalloc is contiguous in physical and virtual

  • vmalloc vmalloc

  • حداکثر اندازه ای که می توان با استفاده از vmalloc اختصاص داد Maximum size that can be allocated using vmalloc

  • vmalloc در مقابل kmalloc vmalloc vs kmalloc

  • حداکثر اندازه ای که می توان با استفاده از vmalloc در 32 بیت اختصاص داد Maximum size that can be allocated using vmalloc on 32-bit

  • چرا VmallocUsed همیشه 0 است Why is VmallocUsed always 0

  • آیا می توانم از ksize با vmalloc استفاده کنم؟ Can i use ksize with vmalloc

  • حداکثر مقدار حافظه قابل تخصیص با استفاده از vmalloc Maximum amount of memory that can be allocated using vmalloc

  • وقتی kmalloc 0 صفر بایتی انجام می دهم چه اتفاقی می افتد What happens when i do kmalloc of 0 zero bytes

  • وقتی vmalloc 0 بایتی انجام می دهم چه اتفاقی می افتد What happens when i do vmalloc of 0 bytes

  • پشته هسته Kernel Stack

  • CONFIG_FRAME_WARN CONFIG_FRAME_WARN

  • اسکریپت check_stack.pl check_stack.pl script

منابع Resources

  • منابع Resources

نمایش نظرات

آموزش مدیریت حافظه در کرنل لینوکس
جزییات دوره
2 hours
44
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
1,070
4.4 از 5
دارد
دارد
دارد
Linux Trainer
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Linux Trainer Linux Trainer

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