tgoop.com/linuxtnt/4568
Last Update:
⭐️لینوکس پیشرفته
⭐️مفهوم Copy-on-Write (COW) در لینوکس
🔸در سیستمعامل لینوکس، زمانی که چند پردازش (Process) از یک ناحیه حافظه یا فایل مشترک استفاده میکنند ، کرنل در ابتدا فقط یک نسخهی مشترک از دادهها را در حافظه نگه میدارد.
در این حالت، تمام پردازش ها بهصورت همزمان به همان دادهها دسترسی دارند، اما هیچیک تا زمانی که داده را تغییر ندادهاند، مالک واقعی آن کپی نیستند.
🔸به محض اینکه یکی از پردازش ها تلاش کند بخشی از داده را تغییر دهد (Write)، مکانیزم Copy-on-Write (COW) فعال میشود.
در این لحظه، کرنل یک کپی مستقل از همان صفحهی حافظه (Memory Page) را فقط برای همان پردازش میسازد و سایر پردازهها همچنان به نسخهی اصلی دسترسی دارند.
ربه این ترتیب، عملیات نوشتن باعث میشود دادهها از حالت اشتراک خارج شوند، در حالی که خواندن همچنان بدون تکرار حافظه انجام میشود.
🔸این روش باعث صرفهجویی چشمگیر در حافظه میشود، بهویژه زمانی که چند پردازه از یک برنامه واحد ایجاد شده باشند (مانند فرآیندهای متعدد سرورهای وب یا برنامههای چندرشتهای).
🔹 درون کرنل لینوکس:
پیادهسازی اصلی این رفتار در فایل زیر قرار دارد:
mm/memory.c
در این بخش از کرنل، مکانیزم COW هنگام بروز page fault مدیریت میشود.
مشاهدهی رفتار حافظهی اشتراکی و صفحههای COW
با این ابزارها میتونی بفهمی چند صفحهی حافظه واقعاً فیزیکی مشترک است و کجاها COW رخ داده.
نمونه:
pmap -x <PID>
نویسنده: حسین سیلانی.اموزش بیشتر در:
https://learninghive.ir
BY linuxtnt(linux tips and tricks)
Share with your friend now:
tgoop.com/linuxtnt/4568