لینوکس یک سیستمعامل متن باز است و این موضوع به این معنی است که شما میتوانید کد آنرا دریافت کرده، تغییر داده و تست کنید. اینکار به شما کمک میکند که از جزئیات طرز کار سیستمعامل اطلاع پیدا کرده و ساختارهای داخلی سیستمعامل را بررسی کرده و به دنیای جذاب #SystemProgramming وارد شوید. یکی از مراحلی که در نوشتن هر برنامهای لازم بوده و هر برنامه نویسی درگیر آن میشود، #debug کردن است. یکی از ابزارهای قدرتمند برای دیباگ برنامهها #gdb است که قبلا معرفی شده و مقدمات کار با آن برای trace کردن برنامههای C معرفی شده است. برای trace کد کرنل لینوکس #kgdb مورد استفاده قرار میگیرد که با بکارگیری gdb به عنوان debugger امکان بررسی کد #kernel را فراهم میکند. در این ویدئو ما با معرفی #LinuxKernel شروع کرده و ابتدا سادهترین راه برای کامپایل کردن آنرا آموزش میدهیم. سپس کدی ساده به یک #SystemCall اضافه کرده و اجرا شدن آنرا بررسی میکنیم. در نهایت شیوهی فعال کردن kgdb برای کرنل جدید و استفاده از آن برای بررسی کد کرنل به کمک gdb نمایش داده میشود.
https://aparat.com/v/uL1Pi
==============
http://telegram.me/OxAA55/57
https://aparat.com/v/uL1Pi
==============
http://telegram.me/OxAA55/57
آپارات - سرویس اشتراک ویدیو
معرفی kgdb برای debug کرنل لینوکس
برای trace کد کرنل لینوکس #kgdb مورد استفاده قرار میگیرد که با بکارگیری gdb به عنوان debugger امکان بررسی کد #kernel را فراهم میکند. در این ویدئو ما با معرفی کرنل #linux شروع کرده و ابتدا سادهترین راه برای کامپایل کردن آنرا آموزش میدهیم. سپس کدی ساده…
👍3
ساعتی با حافظهی مجازی در لینوکس
یکی از کارهایی که سیستمهای عامل از جمله لینوکس انجام میدهند مدیریت حافظه و ایجاد یک لایهی Abstraction برای پروسههاست که به کمک آن هر پروسهای تصور میکند کل حافظهی موجود در سیستم، معمولا ۳ گیگ در مدل ۳۲بیتی و ۱۲۸ترابایت در مدل ۶۴بیتی، را در اختیار داشته و از اینکه واقعا چه مقداری حافظه در سیستم موجود بوده و داده بر روی RAM یا Disk ذخیره میشود اطلاعی نخواهد داشت.
دریافت حافظه از سیستمعامل و نگاشت آن در فضای آدرس دهی پروسهها نیز در واحدهایی به اسم Page و به کمک فراخوانی سیستمی mmap انجام میشود که پیشفرض مقدار 4KB داشته و از یک Page Table برای مشخص کردن اینکه چه فضایی از پروسه در کجای RAM/Disk قرار گرفته است استفاده میشود.
در این ویدئو مفاهیم مربوط به آدرسدهی مجازی Virtual Addressing در لینوکس و بخشهایی که در آن دخیل بوده شرح داده شده و به کمک چند نمونه کد مفاهیم تست میشوند.
برخی از مواردی که در مورد آنها صحبت میکنم به شرح زیر است:
• مقدمهای بر حافظه مجازی و دلیل استفاده از Virtual Addressing
• نحوه نگاشت Page و Frame
• مفهوم Page Table و نقش آن در نگاشت آدرسها
• بررسی فایل proc/iomem/ و نحوه نگاشت حافظه در RAM
• تفاوت Page Faultهای Major و Minor و نحوه مدیریت آنها
• آشنایی با Zoneهای حافظه در لینوکس
• معرفی Slab Allocator و مفهوم کشهای حافظه
• مقایسه روشهای تخصیص حافظه در کرنل kmalloc vs vmalloc
• بررسی اطلاعات در حافظه مجازی و RAM به کمک Qemu
لینک ویدئو در یوتیوب:
https://youtu.be/2bjuqRLFaHc
لینک ویدئو در آپارات:
https://aparat.com/v/xqj64rn
#ShortLinuxInternals #linux #internals #VirtualMemory #MemoryManagement #KernelProgramming #PageTable #PageFault #SlabAllocator #kmalloc #vmalloc #SystemProgramming #EmbeddedLinux
یکی از کارهایی که سیستمهای عامل از جمله لینوکس انجام میدهند مدیریت حافظه و ایجاد یک لایهی Abstraction برای پروسههاست که به کمک آن هر پروسهای تصور میکند کل حافظهی موجود در سیستم، معمولا ۳ گیگ در مدل ۳۲بیتی و ۱۲۸ترابایت در مدل ۶۴بیتی، را در اختیار داشته و از اینکه واقعا چه مقداری حافظه در سیستم موجود بوده و داده بر روی RAM یا Disk ذخیره میشود اطلاعی نخواهد داشت.
دریافت حافظه از سیستمعامل و نگاشت آن در فضای آدرس دهی پروسهها نیز در واحدهایی به اسم Page و به کمک فراخوانی سیستمی mmap انجام میشود که پیشفرض مقدار 4KB داشته و از یک Page Table برای مشخص کردن اینکه چه فضایی از پروسه در کجای RAM/Disk قرار گرفته است استفاده میشود.
در این ویدئو مفاهیم مربوط به آدرسدهی مجازی Virtual Addressing در لینوکس و بخشهایی که در آن دخیل بوده شرح داده شده و به کمک چند نمونه کد مفاهیم تست میشوند.
برخی از مواردی که در مورد آنها صحبت میکنم به شرح زیر است:
• مقدمهای بر حافظه مجازی و دلیل استفاده از Virtual Addressing
• نحوه نگاشت Page و Frame
• مفهوم Page Table و نقش آن در نگاشت آدرسها
• بررسی فایل proc/iomem/ و نحوه نگاشت حافظه در RAM
• تفاوت Page Faultهای Major و Minor و نحوه مدیریت آنها
• آشنایی با Zoneهای حافظه در لینوکس
• معرفی Slab Allocator و مفهوم کشهای حافظه
• مقایسه روشهای تخصیص حافظه در کرنل kmalloc vs vmalloc
• بررسی اطلاعات در حافظه مجازی و RAM به کمک Qemu
لینک ویدئو در یوتیوب:
https://youtu.be/2bjuqRLFaHc
لینک ویدئو در آپارات:
https://aparat.com/v/xqj64rn
#ShortLinuxInternals #linux #internals #VirtualMemory #MemoryManagement #KernelProgramming #PageTable #PageFault #SlabAllocator #kmalloc #vmalloc #SystemProgramming #EmbeddedLinux
YouTube
Virtual Memory in Linux
یکی از کارهایی که سیستمهای عامل از جمله لینوکس انجام میدهند مدیریت حافظه و ایجاد یک لایهی Abstraction برای پروسههاست که به کمک آن هر پروسهای تصور میکند کل حافظهی موجود در سیستم، معمولا ۳ گیگ در مدل ۳۲بیتی و ۱۲۸ترابایت در مدل ۶۴بیتی، را در اختیار داشته…
❤26👍4