پنل اس ام اس
صفحه: [1]   پایین
  چاپ صفحه  
نويسنده موضوع: مقیم در حافظه  (دفعات بازدید: 2526 بار)
sajede
کاربر جدید
*

تشكرها : 1
آفلاین آفلاین

جنسيت : دختر
تعداد ارسال: 18



ديدن مشخصات
« : 20 فروردين 1389,ساعت 23:08:27 »

سلام
منظور از ماشین حساب مقیم در حافظه چیه؟لطفا توضیح بدهید.
با تشکر
خارج شده است

هر چیز که شمردنی است ، پایان می پذیرد و هرچه را که انتظار می کشیدی ، خواهد رسید.
امام علی (ع)
تقدسی
Super Manager
*

تشكرها : 100
آفلاین آفلاین

جنسيت : دختر
تعداد ارسال: 380

هیهات من الذله ...


ديدن مشخصات WWW
« پاسخ #1 : 20 فروردين 1389,ساعت 23:19:33 »

ببينيد وقتي برنامه عادي داس تموم ميشه کل حافظه اي که alloc کرده بود آزاد ميشه و در واقع جزو حافظه آزاد ميشه . پس براي اينکه برنامه اي مقيم شه 2 مسئله مهم داريم که بايد حل بشه.

1. برنامه از حافظه پاک نشه در واقع داس به محدوده حافظه اون به شکل حافظه غير قابل استفاده نگاه کنه . تمام درايور هاي sys که خودشون در واقع exe  هستند و ... هم همينجوري عمل ميکنند و قبل از خروج مقداري حافظه رو نگه ميدارند .

2. روشي براي اجراي همزمان کد پيدا کنيم . آسونترين و مرسوم ترين راه ها يکي استفاده از تايمره که هر ثانيه 18 بار تيک ميکنه (بين برنامه نويس ها به تيکر معروفه تا تايمر چون تايم رو نگه نميداره) و يا استفاده از وقفه کيبرد تا با زدن همزمان چند کليد که اصلاحا hotkey ميگيم فعال شه. در اين حالت هم برنامه فعاله عملا و هر کليدي که ميزنيد رو چک ميکنه و اگر ترکيب مناسب رو بزنيد کار خاصي ميکنه مثلا يک کپي از صفحه بفرستيم پرينتر يا هر کار ديگه.
براي مشکل اول راه حل در خود داس و حتي بايوس هست . سرويس 31 از وقفه داس و وقفه 27 هردو ميتونن اينکارو کنن که وقفه 27 قديمي تره فرقشون اينم که در سرويس 31 سايز حافظه اي که ميخوايد نگه داريد رو به پاراف ميدين و ميشه کد برگشت هم برگردوند اما در 27 فقط آدرس جايي که از از اون به بعد بايد آزاد شه . معمولا براي برنامه کوچيک مثل بالا همين 27 جواب ميده اما اگر بخواين قشنگتر بشه بايد تو لودر يک بخش حافظه به سايز کافي alloc کنيد کد جديد وقفه رو توش کپي کنيد البته psp براي stack فراموش نشه و اونوقت با سرويس 31 فقط همين بلوک رو حفظ کنيد که اصلا جاش ربطي به برنامه اصلي نداره بعدم کل برنامه اول از حافظه پاک ميشه و اينجوري مقداري در مصرف حافظه صرفه جويي ميشه . وقفه 27 نه فقط دم برنامه اول يعني همون لودر رو ميچينه. 

اين کل قضيه مقيم شدن در حافظه از بعد چگونگي حفظ حافظه است و روشهاي ديگه هم اساسا همين هستن فقط براي سيو حافظه ارزشمند داس ميشه کارهايي مثل کمپرس کردن و بردن بدنه برنامه تو ems يا xms و لود کردنش زمان لازم واسه برنامه هاي بزرگ و ... رو هم اضافه کرد .
خارج شده است

كاربران گرامی : لطفاً قبل از هرگونه فعاليت ابتدا قوانين انجمن را مطالعه  و قبل از ارسال جديد در انجمن جستجو نماييد.
انجمن تخصصی استادان و دانشجویان کامپیوتر ایران
   

 خارج شده است
صفحه: [1]   بالا
  چاپ صفحه  
 
پرش به :