قطعه‌بندی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Greenstruck (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
Greenstruck (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۱:
'''تقسیم حافظه'''(به انگلیسی: Memory segmentation)، ''قسمت''، ''بخش'' یا ''قطعه‌ای'' از [[حافظه دسترسی تصادفی|حافظه اصلی]] [[رایانه]] در تقسیم‌بندی حافظه میباشد. برای استفاده از تقسیم‌بندی در یک سیستم رایانه‌ای، یک آدرس ارجاع به مکانی در حافظه، محتوی مقداری معین برای شناسایی یک بخش و یک [[آفست سگمنت]] در آن بخش میباشد. این بخشها یا قطعات در آبجکت‌فایل های [[مترجم (رایانه)|برنامه‌های ترجمه شده]] هم زمانی مورد استفاده قرار میگیرند که به یکدیگر در یک فایل اجرایی که در حافظه فراخوانده شده باشد [[پیوندده|پیوند]] داده شده باشند.
 
ممکن است '''بخشهای''' مختلف برای [[برنامه‌نویسی پودمانی|برنامه‌های پودمانی]] مختلف ساخته شده باشند، یا برای استفاده از کلاسهای مختلف حافظه مانند بخش کد، [[بخش داده]]. حتی ممکن است برخی '''بخشها''' بین برنامه‌ها به اشتراک گذاشته شوند.<ref name="en">[http://en.wikipedia.org/w/index.php?title=Memory_segmentation&oldid=527487248 Wikipedia contributors, "Memory segmentation," Wikipedia]، December 11, 2012.</ref>
 
==پیاده‌سازی سخت‌افزاری==
تقسیم حافظه، روشی برای پیاده‌سازی [[حفاظت از حافظه]] (به انگلیسی: Memory Protection) میباشد. [[صفحه‌بندی]] (به انگلیسی:Paging) روش دیگری است که میتواند بصورت ترکیبی با '''حفاظت از حافظه''' بکار گرفته شود. معمولاْ اندازه ''تقسیم حافظه'' ثابت نیست و ممکن است به کوچکی یک [[بایت]] باشد. معمولاْ '''بخشها''' به صورت طبیعی نماینده قسمتی از یک برنامه هستند مانند یک [[روال]] تک یا جدول داده ها بنابراین، ''بخشها'' برای برنامه‌نویسان قابل رویت هستند.
 
یک بخش، دارای ''طول'' و مجموعه‌ای از ''مجوزهای دسترسی'' است. یک [[فرآیند (رایانه)|پردازه]] تنها در حالتی اجازه ارجاع به یک بخش را دارد، که نوع ارجاع آن پردازه، مجوز دسترسی به آن بخش را دارا باشد و [[آفست سگمنت|آفست]] آن بخش نیز در محدوده تعریف شده در طول آن بخش باشد. در غیر اینصورت، یک [[مدیریت استثنا]](به انگلیسی:Hardware Exception) رخ دهد.
 
اطلاعات مربوط به محل وجود بخش در حافظه، چیز دیگری است که به یک بخش مرتبط میگردد. این اطلاعات میتواند آدرس اولین محل بخش در حافظه بوده، یا اگر تقسیم‌بندی با صفحه‌بندی (به انگلیسی:Paging) پیاده‌سازی شده باشد آدرس ''جدول صفحه'' (به انگلیسی: Page Table) آن بخش باشد. در احتمال اول، اگر یک ارجاع به یک مکانی در یک بخش داده شده باشد، برای دادن آدرس آیتم ارجاع شده در حافظه، آفست آن بخش به آدرس اولین مکان در آن بخش اضافه خواهد گردید. در حالت دوم، آفست آن بخش با استفاده از ''جدول صفحه'' به آدرس حافظه ترجمه میگردد.
 
ممکن است بخشها دارای پرچمی باشند تا نشان دهند که آن بخش در حافظه اصلی حضور دارد یا خیر. اگر به یک بخش که در حافظه حاضر نیست، ارجاعی شود، یک [[مدیریت استثنا]] رخ خواهد داد، و [[سیستم عامل]] آن بخش را در حافظه از محل ذخیره‌سازی ثانویه خواهد خواند.
 
وقتی یک بخش به یک جدول صفحه مرتبط نشده باشد، اولین آدرس در آن بخش معمولاْ یک آدرس در حافظه اصلی میباشد. در آن شرایط صفحه‌بندی انجام نخواهد شد. در اینتل ۸۰۳۸۶ به بعد، اگر صفحه‌بندی فعال نباشد آن آدرس میتواند یک آدرس در حافظه اصلی باشد یا اگر صفحه‌بندی فعال باشد، یک آدرس در یک فضای آدرس که Page شده است.
 
یک [[واحد مدیریت حافظه]] وظیفه دارد تا یک بخش و آفست داخل آن بخش را به یک آدرس حافظه ترجمه نماید، و امتحاناتی را برای اطمینان از اینکه ترجمه میتواند انجام پذیرد و ارجاع به آن بخش و آفست آن مجوز دسترسی لازم را دارد انجام دهد.
 
==بیشتر بدانیم==