دادههای یک برنامهٔ Python کجا در حافظه قرار میگیرند و فضای آنها چه زمانی آزاد میشود؟ مطلب آموزشی Real Python برای ورود به این موضوع، ابتدا تصویری کلی از مدیریت حافظه و لایههای میان برنامه و سختافزار ارائه میکند. بخش موجود از مقاله به همین مبانی و معرفی CPython میپردازد، نه جزئیات الگوریتمهای داخلی آن.
مقاله حافظه را به کتابی تشبیه میکند که نویسندههای مختلف میخواهند در صفحههای آن داستان بنویسند. هر نویسنده باید فضای مشخصی بگیرد تا نوشتهٔ دیگری را بازنویسی نکند. در این تشبیه، برنامهها و processها نقش نویسنده را دارند و memory manager تعیین میکند دادههای هرکدام کجا قرار بگیرد. پیدا کردن فضای آزاد و در اختیار برنامه گذاشتن آن، allocation نام دارد.
ظرفیت این کتاب محدود است. وقتی دادهای دیگر لازم نباشد، فضای آن میتواند آزاد شود تا برای دادههای دیگر جا باز شود. مقاله نقش کسی را که داستانهای قدیمی و بدون خواننده را حذف میکند، به Garbage Collector تشبیه میکند. همچنین اشاره میکند که در اصطلاح حافظه، بخشهای پیوسته با اندازهٔ ثابت page نام دارند.
میان برنامهٔ Python و سختافزار چند لایه وجود دارد. سیستمعامل یکی از لایههای اصلی بالای سختافزار است و درخواستهای خواندن و نوشتن در حافظه را میپذیرد یا رد میکند. بالاتر از آن، برنامهها قرار دارند؛ از جمله پیادهسازی پیشفرض Python که مدیریت حافظهٔ برنامهٔ Python را بر عهده دارد.
این پیادهسازی، CPython، با زبان C نوشته شده است. مقاله میان تعریف زبان Python و برنامهای که آن را اجرا میکند تفاوت میگذارد: قواعد زبان در یک راهنمای مرجع انگلیسی تعریف شدهاند، اما برای تفسیر و اجرای برنامه به یک پیادهسازی نیاز است. CPython برنامهٔ Python را به دستورهایی تبدیل میکند که سپس روی یک virtual machine اجرا میشوند.




