OS Internals
3.45K subscribers
6 photos
29 videos
12 files
84 links
مقاله و فیلم آموزش مدیریت و برنامه‌نویسی سیستم‌های عامل، شبکه و امنیت اطلاعات.

مقالات من در ویرگول:
https://virgool.io/@akazemi

ویدئوهای کانال در آپارات:
https://www.aparat.com/oxaa55

ارتباط با مدیر کانال از طریق:
@akazemi67
Download Telegram
لینوکس یک سیستم‌عامل متن باز است و این موضوع به این معنی است که شما می‌توانید کد آنرا دریافت کرده، تغییر داده و تست کنید. اینکار به شما کمک می‌کند که از جزئیات طرز کار سیستم‌عامل اطلاع پیدا کرده و ساختارهای داخلی سیستم‌عامل را بررسی کرده و به دنیای جذاب #SystemProgramming وارد شوید. یکی از مراحلی که در نوشتن هر برنامه‌ای لازم بوده و هر برنامه نویسی درگیر آن می‌شود، #debug کردن است. یکی از ابزارهای قدرتمند برای دیباگ برنامه‌ها #gdb‌ است که قبلا معرفی شده و مقدمات کار با آن برای trace کردن برنامه‌های C معرفی شده است. برای trace کد کرنل لینوکس #kgdb مورد استفاده قرار می‌گیرد که با بکارگیری gdb به عنوان debugger امکان بررسی کد #kernel را فراهم می‌کند. در این ویدئو ما با معرفی #LinuxKernel شروع کرده و ابتدا ساده‌ترین راه برای کامپایل کردن آنرا آموزش می‌دهیم. سپس کدی ساده به یک #SystemCall اضافه کرده و اجرا شدن آنرا بررسی می‌کنیم. در نهایت شیوه‌ی فعال کردن kgdb برای کرنل جدید و استفاده از آن برای بررسی کد کرنل به کمک gdb نمایش داده می‌شود.

https://aparat.com/v/uL1Pi
==============
http://telegram.me/OxAA55/57
👍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
26👍4