View Full Version : سوال: memory,process
yassersajjadi
سه شنبه 10 مرداد 1391, 01:36 صبح
واسه طراحی حالت چند برنامه ای وقتی یه پردازش در حال اجراست ما رجیستر ها رو ذخیره میکنیم و یه سری رجیستر مربوط به پردازش بعدی رو بهش میدیم ، تا پردازش بعدی رو انجام بده ، و کلا بصورت یه چرخه واسه کل پردازش هاست ، خوب حالا بریم ببینیم مشکل من کجاست
ما واسه انجام این کارا باید بدونیم هر برنامه که لود شده در کجای حافظه قرار داره تا واسه اون یه پردازش ایجاد کنیم , ما میدونیم دسترسی به حافظه بصورت تصادفی صورت میگیره ,حالا چطوری محل این ذخیره سازی ها تعیین میشه؟
pswin.pooya
سه شنبه 10 مرداد 1391, 12:52 عصر
از حافظه مجازی توی این حالت استفاده میشه
yassersajjadi
سه شنبه 10 مرداد 1391, 15:27 عصر
آره از virtual memory استفاده میشه ولی مشکل منم همین سازو کار حافظه مجازیه , اگه میشه دوستان راجب virtual memory توضیح بدن ممنون میشم
pswin.pooya
سه شنبه 10 مرداد 1391, 17:35 عصر
آره از virtual memory استفاده میشه ولی مشکل منم همین سازو کار حافظه مجازیه , اگه میشه دوستان راجب virtual memory توضیح بدن ممنون میشم
براي آشنايي با سازكار حافظه مجازي پيشنهاد مي كنم يه كتاب سيستم عامل بخونيد. اما بطور خلاصه حافظه مجازي به كمك قطعه اي به اسم MMU مسئوليت تبديل آدرسهاي مجازي به آدرسهاي فيزيكي داخل RAM رو به عهده داره. مثلا برنامه امكان داره فرض كنه كه توي آدرس يك مگابايت قرار داره اما عملا تو آدرس متفاوت باشه. حالا برنامه هر درخواستي رو كه ميده اون آدرس مجازي كه در خواست داده به يه آدرس حقيقي تبديل و اجرا ميشه.
m.j_banitaba
جمعه 18 اسفند 1391, 22:17 عصر
منظور از دسترسی تصادفی بر میگرده به انواع حافظه .
باید برگردیم به دوران دایناسورها
در ابتدا دو نوع حافظه وجود داشت . حافظه با دسرسی ترتیبی و حافظه با دسترسی تصادفی.
در حافظه با دسترسی ترتیبی برای خواندن یک حافظه مثلا آدرس 100 از آدرس یک باید شروع می کردید یکی یکی آدرس را افزایش می دادید تا به آدرس 100 می رسدید
اما در دسترسی تصادفی در هر لحظه به هر آدرسی که بخواهید می توانید دسترسی پیدا کنید.
از دید یک سیستم عامل محل دقیق هر آدرس در حافظه کاملا مشخص م صد در صد ثابته
yassersajjadi
دوشنبه 21 اسفند 1391, 01:56 صبح
آره شما درست میگی ولی منظور من یه چیز دیگست
ما از وقفه ها استفاده میکنیم تا بتونیم روی پردازش ها سویچ کنیم واسه همین میایم یه تایمر تعریف میکنیم و اونو روی irq0 که مرتبط با اونه تنظیم میکنیم و بعد اونجا دستور تعویض پردازشو میدیم ولی تو این اگه ما رجیستر ها رو بگیریم مثلا eip خوب این eip مربوط به همین لحظست دیگه ،درسته؟خوب یعنی ما اطلاعات پردازشو نگرفتیم بلکه مربوط به همون لحظه رو گرفتیم و ذخیرش کردیم
البته الان دیگه میدونم باید چیکار کنم ، بازم مرسی از توجهتون دوست عزیز
pswin.pooya
دوشنبه 21 اسفند 1391, 18:35 عصر
ما از وقفه ها استفاده میکنیم تا بتونیم روی پردازش ها سویچ کنیم واسه همین میایم یه تایمر تعریف میکنیم و اونو روی irq0 که مرتبط با اونه تنظیم میکنیم و بعد اونجا دستور تعویض پردازشو میدیم ولی تو این اگه ما رجیستر ها رو بگیریم مثلا eip خوب این eip مربوط به همین لحظست دیگه ،درسته؟خوب یعنی ما اطلاعات پردازشو نگرفتیم بلکه مربوط به همون لحظه رو گرفتیم و ذخیرش کردیم
باید از فریم پشته استفاده کنی و آدرس ip رو از روی پشته برداری. یه مقدار در مورد ساختار برنامه های زبان C/c++ و نحوه عملکرد کامپایلر باید مطالعه کنید. اون موقع متوجه میشید که می تونید خیلی راه حل های بهتری از ذخیره ثباتها و ... پیدا کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.