مدیریت حافظه در Python؛ از allocation تا نقش CPython

چرا مهم است

اگر می‌خواهی بدانی داده‌های برنامه‌ات کجا قرار می‌گیرند، این مقدمه نقش مدیریت حافظه را روشن می‌کند. همچنین به تو نشان می‌دهد که تعریف زبان Python با پیاده‌سازی اجراکنندهٔ آن یکی نیست.

قبل از خواندن، این‌ها را بدان۳ مفهوم
virtual machine

محیطی نرم‌افزاری برای اجرای دستورها؛ در توضیح این مقاله، CPython دستورهای حاصل از برنامهٔ Python را روی آن اجرا می‌کند.

بیشتر: virtual machine

allocation

فرایند پیدا کردن فضای آزاد حافظه و در اختیار یک برنامه گذاشتن آن برای نگهداری داده.

در حال نگارش: allocation

Garbage Collector

بخشی از سازوکار مدیریت حافظه که فضای داده‌های دیگر موردنیازنبوده را آزاد می‌کند.

در حال نگارش: Garbage Collector

داده‌های یک برنامهٔ Python کجا در حافظه قرار می‌گیرند و فضای آن‌ها چه زمانی آزاد می‌شود؟ مطلب آموزشی Real Python برای ورود به این موضوع، ابتدا تصویری کلی از مدیریت حافظه و لایه‌های میان برنامه و سخت‌افزار ارائه می‌کند. بخش موجود از مقاله به همین مبانی و معرفی CPython می‌پردازد، نه جزئیات الگوریتم‌های داخلی آن.

مقاله حافظه را به کتابی تشبیه می‌کند که نویسنده‌های مختلف می‌خواهند در صفحه‌های آن داستان بنویسند. هر نویسنده باید فضای مشخصی بگیرد تا نوشتهٔ دیگری را بازنویسی نکند. در این تشبیه، برنامه‌ها و process‌ها نقش نویسنده را دارند و memory manager تعیین می‌کند داده‌های هرکدام کجا قرار بگیرد. پیدا کردن فضای آزاد و در اختیار برنامه گذاشتن آن، allocation نام دارد.

ظرفیت این کتاب محدود است. وقتی داده‌ای دیگر لازم نباشد، فضای آن می‌تواند آزاد شود تا برای داده‌های دیگر جا باز شود. مقاله نقش کسی را که داستان‌های قدیمی و بدون خواننده را حذف می‌کند، به Garbage Collector تشبیه می‌کند. همچنین اشاره می‌کند که در اصطلاح حافظه، بخش‌های پیوسته با اندازهٔ ثابت page نام دارند.

میان برنامهٔ Python و سخت‌افزار چند لایه وجود دارد. سیستم‌عامل یکی از لایه‌های اصلی بالای سخت‌افزار است و درخواست‌های خواندن و نوشتن در حافظه را می‌پذیرد یا رد می‌کند. بالاتر از آن، برنامه‌ها قرار دارند؛ از جمله پیاده‌سازی پیش‌فرض Python که مدیریت حافظهٔ برنامهٔ Python را بر عهده دارد.

این پیاده‌سازی، CPython،؜ با زبان C نوشته شده است. مقاله میان تعریف زبان Python و برنامه‌ای که آن را اجرا می‌کند تفاوت می‌گذارد: قواعد زبان در یک راهنمای مرجع انگلیسی تعریف شده‌اند، اما برای تفسیر و اجرای برنامه به یک پیاده‌سازی نیاز است. CPython برنامهٔ Python را به دستورهایی تبدیل می‌کند که سپس روی یک virtual machine اجرا می‌شوند.

نکته کلیدی

برای دنبال کردن بحث حافظه، allocation و آزادسازی فضا را از هم جدا نگه دار. به یاد داشته باش که این بخش فقط مبانی و جایگاه CPython را توضیح می‌دهد و هنوز وارد الگوریتم‌های داخلی نشده است.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۳)