مدیریت حافظه

اولین نگاه و شروع در ساده ترین سیستم مدیریت حافظه و سپس بررسی تدریجی برای جزئیات بیشتر وبیشتر.
۱-۴ مدیریت حافظة اصلی

سیستم های مدیریت حافظه به دو دسته تقسیم می شوند: آنهایی که مراحل را عقب وجلو بین حافظه اصلی ودیسک در طی کارحرکت می دهند و آنهایی که کار نمی کنند. آخری آسان تر است بنابراین ما آنها را ابتدا مطالعه خواهیم کرد. بعداض در بخ،ما صفحه گذاری کردن و معاوضه کردن را آزمایش خواهیم کرد. در این بخش خواننده باید درذهنش نگهدارد که معاوضه کردن و صفحه بندی کردن واقعیات هنری هستند که توسط فقدان حافظه اصلی کافی برای نگهداشتن تمام برنامه ها یک درجا بوجود می آیند. بدلیل اینکه حافظه اصلی ارزان تر بدست می آید. استدلال ها در رفتار یک نوع از دیدگاه مدیریت حافظه یا نوع دیگر ممکن است کنار گذاشته شوند. اگرچه برنامه ها سریعتر و بیشتر از حافظه ی که ارزان تر بدست می آید، در دسترس هستند.

۱-۱-۴ برنامه ریزی تکی بدون صفحه گذاری یا معاوضه
ساده ترین امکان دیدگاه مدیریت حافظه فقط بکاربردن یک برنامه در یک زمان است، سهیم کردن حافظه بین آن برنامه و سیستم کاربردی. سه نوع متفاوت در این زمنیه در شکل ۱-۴ نشان داده شده اند. سیستم کاربردی ممکن است در ته حافظه در RAM باشد، همانطورکه در شکل a 1-4 نشان داده می شود ممکن است در بالای حافه در یک ROM باشد و استراحت سیستم در RAM پانی باشد همانطور که در شکل c1-4 نشان داده می شود مدل آخری توسط سیستم

های Ms-Dos کوچک استفاده می شود. روی IBMPC ها، سیستم موجود در BISO,ROM نامیده میشود.( سیستم داده، پردازه اصلی) وقتی سیستم در این راه زمان دهی می شود فقط یک مرحله در یک زمان می تواند انجام شود. به همان زودی که مصرف کننده یک سفارش را تایپ میکند سیستم کاربردی برنامه مورد نیاز را از دیسک به حافظه کپی می کند و بکار می برد. وقتی مرحبه به پایان می رسد سیستم بکاربرده شده یک مشخصه یا خصوصیت را نشان می دهد و برای یک سفارش جدید منتظر می ماند. وقتی یک سفارش دریافت می کند، یک برنامه جدید را به حافظه می برد.

۲-۱-۴ برنامه ریزی چندگانه با قسمت بندی های ثابت
اگرچه برنامه ریزی منفرد بعضی وقتها روی کامپیوترهای کوچک بدون سیستم های کاربردی ساده استفاده می شود اغلب انجام می شود تا به مراحل چندگانه اجازه بدهد که اجرا شوند.در سیستم های زمان دار، داشتن مراحل چندگانه درحافظه در ابتدا به این معنی است که وقتی یک مرحله انجام شود و منتظر پایان

رسین I/O را افزایش می دهد. به هر صورت حتی در کامپیوتر های شخصی،اغلب قادربودن به انجام دو یا چند برنامه در یک جا مفید است. آسان ترین راه برای دستیابی به برنامه ریزی چندگانه آسان است و آن تقسیم حافظه به قسمت بندی های n میباشد. این تقسیم بندی می تواند برای مثال بطور سالانه وقتی که سیستم شروع به کار می کند انجام شود. وقتی کاری پیش می آید می تواند در ورودی برای کوچکترین قسمت بندی قرارداده شود که آن را نگهدارد. از آنجائیکه قسمت بندی ها در این قسمت ثابت می شوند، هیچ فضای در یک قسمت بندی توسط یک کار از دست داده شده استفاده نمی شود. در شکل a 2-4 ما

هچیگونه این سیستم از دو قسمت بندی های ثابت و مجزای ورودی را می بینیم. یک سازماندهی متناوب برای حفظ یک ردیف تکی در شکل b 2-4 نشان داده شده است.در هرجا که تقسیم بندی آزاد می شود، نزدیکترین کار به جلوی ردیفی که در آن ثابت می شود میتواند به سمت قسمت بدی خالی رانده شود و به اجرا دربیاید. از آنجائیکه تلف کردن یک قسمت بندی بزرگ روی یک کار کوچک رضایت بخش نیست، یک استراتژی متفاوتی برای جستجوی تمام ردیف ورودی در جائیکه قسمت بندی آزاد میشود وجود دارد. توجه کنید که آلگوریتم آخری در مقابل کارهای کوچک بعنوان بی ارزش بودن یک قسمت بندی کلی عملی می کن

د. در اینجا معمولاً دادن کوچکترین کارها، مهمترین سرویس، نه بدترین مورد نظ راست. یک راه آخر داشتن یک محدوده قسمت بندی کوچک می باشد. اینچنین قسمت بندی به کارهای کوچک اجازه خواهد داد که بدون داشتن یک قسمت بندی بزرگ برای آنها وارد عمل شوند. موضوع بعدی داشتن یک قانون است که یک کاری که در نظر گرفته می شود ممکن است بیشتر از زمان های k انجام شود. هر زمانی که در نظر گرفته می مشود به یک نقطه می رود. وقتی نقاط k را درنظر می گیریم ممکن نیست که دوباره موضع را عوض کرده و رد شوند.

این سیستم با قسمت بندی های ثابت توسط کاربرد صحیح و بدون تغییر بعد از آن توسط ۲۶۰/OS روی چارچوبهای اصلی IBM بزرگ را چندین سال استفاده شوند که MFT نامیده شدند( برنامه ریزی چندگانه با یک تعداد ثابتی از وظایف را OS/MFT ) فهمیدن آن ساده است و بطور ساده وبرابری اجرا می شود. کارهای ورودی ردیف می شوند تا یک تقسیم بندی مناسب قابل دسترسی باشد در زمانی که کار بارگیری می شود به آن قسمت بندی و تا اینکه به پایان برسد و در آنجا انجام می شود. امروزه تعداد کمی از سیستم های کاربردی این مدل را پشتیبانی می کند.

جایگذاری مجدد و پشتیبانی
برنامه ریزی چندگانه دو مشکل اساسی را که باید حل شود را معرفی می کند. جایگذاری مجدد و پشتیبانی. کشل ۲-۴ را نگاه کنید. از شکل واضح است که کارهای متفاوتی در نشانی های متفاوتی انجام خواهد شد. وقتی یک برنامه نصب می شود نصل کننده باید بداند در کدام آدرس برنامه در حافظه شروع خواهد شد. برای مثال فرض کنید که اولین ساختار یک نام به یک مرحله در نشانی کامل ۱۰ در فایل تولید شده توسط نصب کننده است. اگر این برنامع فرستاده شود و در قسمت ۱ که ساختار به نشانی کامل ۱۰۰ خواهد پرید که در داخل سیستم کاربردی است آنچه که مورد نیاز است یک نام به k 100+100 است. اگر برنامه

فرستاده شود به بخش ۲ باید بعنوان یک نام به k200+100 و غیره فرستاده شود. این مسئله بعنوان مسئله جایگزینی دوباره شناخته می شود. یک راه حل ممکن تعیین کردن ساختارها بعنوان برنامه فرستاده شده به حافظه می باشد . برنامه های برده شده به بخش ۱، k 100 اضافه شده اند به هر نشانی برنامه های برده شده به قسمت ۲ ، k 200 به نشانی ها اضافه شده اند. برای اجرای جایگزینی مجدد درطی فرستادن شبیه این، نصب کنندنه باید یک لیست یا نقشه بایت را که لغت های برنامه هستند برای جایگزینی شدن بفرستد.بعضی از میکروکامپیوترها شبیه به این کار می کنند.و

جایگزینی مجدد در طی بردن مشکل را پشتیبانی را حل نمی کند. یک برنامه هیمشه میتواند یک ساختار جدیدی را بسازد و به آن جهش کند. زیرا برنامه ها در این سیسم از نشانی های حافظه کامل بیشتر از نشانی های مربوط به یک register استفاده می کند. هیچ راهی برای متوقف کردن یک برنامه از ساختن یک ساختار که هر لغتی را در حافظه می خواند یا می نویسد وجود ندارد. در سیستم های مصرف کنندة چندگانه، اجازه دادن به

مراحل حافظه خواندن و نوشتن به مصرف کننده دیگری است.
راه حلی که IBM برای پشتیبانی ۳۶۰ انتخاب می کند تقسیم کردن حافظه به دو بلوک k 2 بایت و یک کد پشتیبانی ۴ بایت برای هر بلوک می باشد. psw شامل یک کلید ۴ بایت می شود سخت افزار ۳۶۰ هر چیزی را توسط رفتن به مرحله حافظه ورودی کد پشتیبانی را متفاوت از کلید psw می کند به دام می

اندازد. از آنجائیکه فقط سیستم کاربردی می تواند کدهای پیشتبانی و کلید آن را تغییر بدهد مراحل مصرف کننده از مواجه با یک مورد دیگر با خود سیستم کاربردی پیشگیری می کند. یک راه حل متفاوت برای هر دو مشکل مجهزکردن ماشین با دو سخت افزار مخصوص می باشد کهbase ,limit نامید ه می شود. وقتی یک مرحله را انجام می شود عاملbase ( اصلی) با نشانی شروع قسمتش بارگیری می شد و عامل محدود(limit ) با طول قسمت بارگیری می شود هر

نشانی حافظه بطور اتوماتیک بکار برده می شود و عامل اصلی موارد اضافی را شامل می شود قبل از اینکه به حافظه فرستاده شود. بنابراین اگر عامل اصلی، k 100 یک ساختار ۱۰۰ CALL است بطور مؤثری به یک ۱۰۰ + k 100 بدون اینکه خودساختار تعیین شود برگردانده می شود. نشانی ها در مقابل عامل محدود برای اطمینان از اینکه آنها برای نشانی حافظه بیرون از قسمت اخیر بکار برده نشده باشند بررسی می شوند. سخت افزار عوامل محدود اصلی(base,limit) را حمایت می کند تا برنامه های مصرف کننده را از تغییر شدن آنها پیشگیری کند. ۶۶۰۰ CDC – اولین سوپر کامپیوتر دنیا- از این دیدگاه استفاده کردcpu 8088 برای IBMPC اصلی استفاده کرد یک بخش ضعیف تر از این دیدگاه – عوامل اصلی اما نه عوامل محدود. شروع با ۲۸۶ یک دیدگاه بهتر قابل قبول شد.
۲-۴ معاوضه کردن
با یک سیستم گروهی، سازماندهی حافظه به سمت قسمت بندی های ثابت ساده و مؤثر است. هرکاری به یک قسمت وقتی که به سر ردیف می رسد فرستاده می شود و تا وقتی تمام شود درحافظه می ماند.کارهای کافی می توانند در حافظه نگهداشته شوند تا cpu را در تمام مدت مشغول نگه دارند. هیچ دلیلی رای استفاده از اجراشدن دیگری وجود ندارد. با سیستم های وقت دار یا کامپیوترهای شخصی گرافیکی موقعیت فرق می کند. بعضی وقتها حافظه اصلی کافی برای نگهداشتن تمام مراحل فعال وجود ندارد بنابراین مراحل باید وی دیسک نگهداشته شوند و به مرحله دینامیکی برده شوند. د و طرح عمومی به

مدیریت حافظه می تواند انجام شود، البته وابسته به سخت افزار قابل دسترسی.ساده ترین استراتژی معاوضه نامیده می شود که شامل شورع در هر مرحله در سراسر ن بکار نداختن آن برای زمان، سپس قراردادن آن پشت دیسک می باشد. استراتژی دیگر حافظه مجازی نامیده میشود که به برنامه های اجازه می دهد حتی وقتی که در حافظه اصلی هستند بکار انداخته شوند. در قسمت پائین ما معاوضه کردن را مطالعه خواهیم کرد. در بخش ۳-۴ حافظه مجازی را آزمایش خواهیم کرد. کاربرد یک سیستم معاوضه در شکل ۳-۴ بیان شده است در ابتدا فقط مرحله A در حافظه است. سپس مراحل C,B خلق می شوند تا از دیسک

معاوضه شوند. در شکل d 3-4 A به پایان می رسد یا معاوضه شوند به دیسک سپس D می آید و B می رود. بالاخره E می آید. اخلتلاف اساسی بین تقسیم بندی های ثابت شکل ۲-۴ و تقسیم بندیهای متغیر شکل ۳-۴ وجود دارد این است که تعداد،محل و سایز تقسیم بندی ها بطور دینامیکی در مرحله بعدی بعنوان مراحل آمده و رفته تغییر می کند. تداومی در تعداد ثابت تقسیم بندی ها که ممکن است خیلی بزرگ یا کوچک کاربرد حافظه را بهبود ببخشد وجود ندارد اما

جایگیری و عدم جایگیری حافظه همانند نگهداری آن مهماست وقتی معاوضه کردن حفره های چندگانه ای را در حافظه خلق می کند ممکن است که آنها هم را به مورد بزرگ توسط حرکت دادن بعد مراحل به سمت پائین تا آنجا که ممکن است ترکیب کند. ای تکنیک بعنوان حافظه شناخته می شود و معمولاً انجام نمی شود. زیرا برنامه نیاز به زمان cpu بسیاری دارد. برای مثال روی یک ماشین MB -32 که می تواند ۱۶ بایت در هر میکروثانیه کپی کند sec 2 راحت تماس پیداکردن تمام حافظه می آورد. یک نکته که ارزش بسیاری دارد مقدار حافظه ای است که باید برای یک مرحله وقتی که خلق می وشد یا معاوضه می شود است. اگر

مراحل با یک سایر ثابت بوجود می آیند که هرگز تغییر نمی کنند پس جایگزینی آسان است شما دقیقاً آنچه را که نیاز است نه کمتر و نه بیشتر جایگزین می کنید. برای مثال قراردادن دینامیکی حافظه ای یک چیپ، همانند بسیاری از زبانهای برنامه نویسی یک مشکل بحساب می شاید وقتی که یک مرحله سعی می کند رشد کند.اگر یک حفره درمرحله ایجاد شود میتواند جایگزین شود و مرحله به حفره اجازه میدهد که رشد کند. از طرف دیگر اگر مرحله مربوط به مرحله دیگری بشود رشد مرحله مجبور است به یک حفره در حافظه که به اندازه کافی برای آن بزرگ است حرکت داده شود یا یک یا چند مرحله مجبورند که معاوضه

شوند تا یک حفره به اندازه کافی بزرگ را خلق کنند. ارگ یک مرحله ی می تواند در حافظه رشد کند و منطقه را روی دیسکی که پر است معاوضه کند، مرحله مجبور خواهد بود که برای از بین رفتن صبر کند و اگر قابل قبول باشد که مراحل همانطوری که انجام می شود رشد خواهند کرد. احتمالاً یک عقیده خوب برای جایگزینی یک حافظه فوق العاده کوچ است این زمانی است که یک مرحله معاوضه یا حرکت کند تا همکاری باحرکت کردن و پردازش معاوضه شدن که خیلی در حافظه اختصاصی شان مناسب نیست را کاهش بدهد.