پارگی (علوم رایانه): تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
FreshmanBot (بحث | مشارکتها) جز ←تکهتکه شدن داخلی: اصلاح فاصله مجازی + اصلاح نویسه با استفاده از AWB |
جز ویرایش بهوسیلهٔ ابرابزار: برچسب: خرابکاری محتمل |
||
خط ۱:
{{ویکی}}
'''تکهتکه شدن''' {{به انگلیسی|Fragmentation}} در ذخیرهسازی کامپیوتری پدیدهای است که در آن فضای ذخیرهسازی بهطور ناکارآمد استفاده میشود و منجر به کاهش ظرفیت واقعی ذخیرهسازی میشود. همچنین به آن فضای هدر رفته نیز اطلاق میگردد.
سه شکل متفاوت اما مرتبط از تکهتکه شدن وجود دارد: تکهتکه شدن خارجی، تکهتکه شدن داخلی و تکهتکه شدن
== مبانی ==
وقتی یک برنامه کامپیوتری بلوکهایی از حافطه را از سیستم کامپیوتر درخواست میکند، بلوکهای حافطه به صورت تکهتکه تخصیص مییابند. وقتی کار برنامه کامپیوتری با یک تکه از حافظه تمام میشود میتواند آن تکه را آزاد کند و به کامپیوتر برگرداند. اندازه هر تکه و مدت زمانی که هر تکه دراختیار یک برنامه باقی میماند متغیر است.
یک برنامه در مدت طول عمر خود میتواند هر تعداد تکه از حافظه را درخواست یا آزاد کند. وقتی یک برنامه شروع به کار میکند، قسمتهای آزاد حافظه طویل و پشت سر هم هستند. در طی زمان و با استفاده برنامهها، آن تکههای طویل و متوالی به تکههای کوچک و کوچکتر تقسیم میشوند. در نهایت ممکن است برای یک برنامه غیرممکن باشد که یک تکه بزرگ از حافظه را درخواست کند.
خط ۱۱:
== انواع تکهتکه شدن ==
=== تکهتکه شدن داخلی ===
به دلیل قوانین و قواعد تخصیص حافظه، گاهی حافظه، بیشتر از مقدار مورد نیاز اختصاص مییابد. برای مثال حافظه تنها میتواند به برنامههایی اختصاص یابد که تکههایی قابل تقسیم بر ۴، ۸ یا ۱۶ داشته باشد. در نتیجه، اگر یک برنامه مثلاً ۲۳ بایت درخواست کند، در واقع یک تکهٔ ۲۴ بایتی دریافت میکند.
وقتی این اتفاق رخ میدهد، حافظهٔ اضافی به هدر میرود. در این سناریو، حافظهٔ غیرقابل استفاده حاوی یک ناحیه تخصیص یافته خواهد بود، بنابراین با عنوان تکه شدن داخلی نامگذاری میشود. برخلاف دیگر انواع، تکهتکه شدن داخلی به سختی احیا میشود و به حالت اولیه
=== تکهتکه شدن خارجی ===
تکهتکه شدن خارجی زمانی مطرح میشود که حافظهٔ آزاد به بلوکهای کوچکی تقسیم شود و توسط حافظهٔ تخصیص یافته پراکنده گردد. این اتفاق ضعف برخی الگوریتمهای تخصیص محل ذخیرهسازی است که نمیتوانند بهطور کارآمد به حافظهٔ مورد استفادهٔ برنامهها دستور دهند.
نتیجه این میشود که اگر چه محل ذخیرهسازی آزاد وجود دارد، اما غیرقابل استفاده میماند چرا که به قسمتهایی تقسیم شدهاست که هر کدام زیادی کوچک هستند و نمیتوانند درخواستهای کاربردی را برآورده سازند. واژهٔ خارجی به این منظور بکار برده شدهاست که در اینجا محل ذخیرهسازی غیرقابل استفاده بیرون نواحی تخصیص یافته قرار دارد.
برای مثال حالتی را تصور کنید که در آن سیستم سه بلوک پیوسته از حافظه را به یک برنامه اختصاص میدهد و بلوک میانی را آزاد میکند. تخصیص دهندهٔ حافظه میتواند در آینده از این بلوک آزاد در تخصیص استفاده کند، با این وجود اگر حافظهای که قرار است در آینده در این بلوک آزاد تخصیص یابد بزرگتر از این بلوک باشد، این امکان وجود نخواهد داشت.
تکهتکه شدن خارجی، در سیستمهای فایل هم اتفاق میافتد که در آنها فایلهایی با سایزهای مختلف ساخته میشوند، تغییر سایز میدهند یا پاک میشوند. این تأثیر حتی در شرایطی که یک فایل که به تکههای بسیار کوچکی تقسیم شدهاست پاک میشود، مخرب تر هم ظاهر میشود، چرا که این کار نواحی کوچک مشابه از فضای خالی را بر جای میگذارد.
=== تکهتکه شدن داده ===
تکهتکه شدن داده زمانی اتفاق میافتد که مجموعهای از دادهها در حافظه به بخشهایی که چندان به هم مرتبط نیستند تقسیم میشوند. این مسئله بهطور معمول نتیجه تلاش برای درج شیئ ای بزرگ در فضای ذخیرهسازی است که خود تحت تأثیر تکهتکه شدن خارجی قرار گرفتهاست.
برای مثال، فایلها در سیستم فایل معمولاً بوسیله واحدهایی به نام بلوک یا خوشه مدیریت میشوند. وقتی که یک فایل سیستم ایجاد میشود، فضای ذخیرهسازی آزاد برای ذخیره کردن بلوکها به صورت پشت سرهم بوجود
وقتی یک فایل با سایز مشخص نوشته میشود در صورت وجود فضاهای خالی بزرگتر از آن فایل، سیستم عامل با قرار دادن فایل در یکی از آن فضاها از تکهتکه شدن داده جلوگیری میکند.
الگوریتمهای متعددی برای انتخاب این فضاهای خالی وجود دارد. الگوریتم " بهترین جای دهی "، کوچکترین فضایی را که به اندازه کافی بزرگ است انتخاب میکند. الگوریتم "بدترین جای دهی "، بزرگترین فضای ممکن را انتخاب میکند. الگوریتم " اولین جای دهی "، اولین فضایی را که سایز کافی داشته باشد، انتخاب میکند. الگوریتم " جای دهی بعدی "، اولین مکان مناسب بعد از جای دهی قبلی را انتخاب میکند. الگوریتم " جای دهی بعدی " از "اولین جای دهی " سریع تر است که آن هم از " بهترین جای دهی " بهتر است.
همانگونه که با انجام فشردگی میتوان تکهتکه شدن خارجی را برطرف کرد، تکهتکه شدن دادهها را نیز میتوان با باز آرایی فضای ذخیرهسازی برطرف کرد. در نتیجه بخشهای مرتبط دادهای در کنار هم قرار میگیرند.
|