نمایش نتایج 1 تا 6 از 6

نام تاپیک: حافظه مجازی

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    آذر 1392
    محل زندگی
    IRAN/NORTH
    سن
    34
    پست
    41

    حافظه مجازی

    آیا در ویندوز به ازای هر process یک حافظه مجازی اختصاصی تعلق میگیرد؟ اگر بله هر process یعنی دیدش به این حافظه مجازی که برای خودش هست از کدام آدرس تا کدام آدرس را شامل میشود؟
    مثلا آدرس 0x00000000 تا 0xFFFFFFFF ؟

    در واقع آن وقت مثلا یک آدرس مشابه مثلا 0x0F0F0F0F در دو process مختلف در واقع به دو خانه حافظه مستقل واقعی اشاره می کنند؟

  2. #2

    نقل قول: حافظه مجازی

    به نظر میاد شما دو مفهوم فضای آدرس یک process را با فضای alloc شده توسط process اشتباه گرفتید . آدرس 0x00000000 تا 0xFFFFFFFF فضای آدرسی یک process است اما هنوز هیچ صفحه ای از حافظه به آن اختصاص پیدا نکرده است.حال در ویندوز فضای آدرس دهی به دو بخش تقسیم می شود فضای آدرس دهی بالایی که مختص process جاری است و در محدوده 0x00000000 تا 0x7FFFFFFF قرار دارد و فضای آدرس دهی پایینی که بین اکثر process ها مشترک است و از آدرس 0x80000000 به بعد قرار دارد. اما آدرسی مثل 0x0F0F0F0F اگر هنوز به برنامه اختصاص نیافته باشد تنها یک مفهوم انتزاعی است و در حقیقت وجود خارجی ندارد . اما بعد از اختصاص یک حافظه از حافظه مجازی به آن مربوط می گردد و این کار توسط تنظیم جداول paging صورت می گیرد. این جداول آدرسهای منطقی برنامه را به آدرسهای خطی و آدرسهای خطی را به آدرسهای فیزیکی تبدیل می کنند.
    http://wiki.osdev.org/Paging
    http://www.cs.rutgers.edu/~pxk/416/n...9a-paging.html

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    آذر 1392
    محل زندگی
    IRAN/NORTH
    سن
    34
    پست
    41

    نقل قول: حافظه مجازی

    بسیار تشکر. البته منظور من از آدرس 0x0F0F0F0F در حافظه مجازی بود نه حافظه فیزیکی. با تفاسیر شما این آدرس در فضای آدرس دهی بالایی قرار میگیرد، درست؟ پس فرض کنیم processA به این آدرس از حافظه مجازی مقداری منتقل کند. و بعد processB به همین آدرس مجازی مقداری منتقل کند. حالا منظور من اینه که چون این آدرس در فضای آدرس بالایی به قول شما حساب میشود آیا در اصل تداخلی صورت نمی گیرد؟ در واقع در حافظه فیزیکی (فرض کنیم آدرس مربوطه به هارد دیسک منتقل نشده و خود رم چهار گیگ گنجایش دارد) این آدرس مجازی در پروسس اول در یک آدرس فیزیکی و این آدرس مجازی در پروسس دوم در آدرس فیزیکی دیگری قرار میگیرد، درسته؟

    این سوال رو میپرسم چون در ویکی پدیای انگلیسی عکسی از تناظر بین حافظه فیزیکی و حافظه مجازی روی نمودار حافظه مجازی نوشته شده بود per process همچنین:

    Most modern operating systems that support virtual memory also run each process in its own dedicated address space. Each program thus appears to have sole access to the virtual memory. However, some older operating systems (such as OS/VS1 and OS/VS2 SVS) and even modern ones (such as IBM i) are single address space operating systems that run all processes in a single address space composed of virtualized memory.

    به نظر میاد شما دو مفهوم فضای آدرس یک process را با فضای alloc شده توسط process اشتباه گرفتید
    میشه لینکی برای مطالعه در این زمینه پیشنهاد بدید؟ ترجیحا ویکی پدیا

  4. #4

    نقل قول: حافظه مجازی

    خوب نکته اینکه حافظه در سیستم عامل به دو صورت تعریف می شود حالت اول حافظه مخصوص یک پروسس است این حافظه تنها در اختیار پروسس می باشد. یعنی سیستم عامل می داند هیچگاه به پروسس های دیگر نباید اجازه دهد به این حافظه دسترسی پیدا کند و نوع دیگر حافظه اشتراکی است که بین دو یا چند پردازش به اشتراک گذاشته می شود البته یک حالت میانی هم وجود دارد که مهم نیست. شما در واقع مفاهیم paging را مشکل دارید هر پروسس تنها می تواند آدرسهای منطقی را آدرس دهی کند اما اینکه این آدرس منطقی به چه داده ای اشاره دارد در یک همکاری فشرده بین سیستم عامل و پردازنده صورت میگیرد . سیستم عامل برای شروع به کار یک پروسس جداول مربوط به پروسس را راه اندازی می کند این جداول این امکان را به سیستم عامل می دهد تا یک قسمت از حافظه را در اختیار پروسس قرار دهد یا اینکه از تقاضای یک پروسس به حافظه ای که در حافظه مجازی هست اما در حافظه فیزیکی وجود ندارد اطلاع پیدا کند . آن را در اختیار پروسس قرار دهد . اما نکته بعدی که باید مورد توجه قرار گیرید فرایند تعویض وظیفه است تعویض وظیفه در حقیقت می تواند باعث تعوض پروسس نیز گردد در واقع بعد از تغییر وظیفه منجر به تعویض پروسس، فضای آدرس دهی نیز عوض می شود و جداول با پروسس جدید بروز می شوند و آدرس منطقی که به یک مکان از حافظه مجازی اشاره دارد دیگر به آن آدرس اشاره نخواهد کرد .
    http://en.wikipedia.org/wiki/Paging
    http://en.wikipedia.org/wiki/Virtual_memory

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    آذر 1392
    محل زندگی
    IRAN/NORTH
    سن
    34
    پست
    41

    نقل قول: حافظه مجازی

    میشه یه خورده راجعبه static memory allocation و فرقش با dynamic memory allocatin توضیح بدید.

  6. #6

    نقل قول: حافظه مجازی

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

تاپیک های مشابه

  1. از حافظه مجازی می توان در برنامه استفاده کرد؟
    نوشته شده توسط Mah6447 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 4
    آخرین پست: پنج شنبه 29 شهریور 1386, 09:36 صبح
  2. DBISAM و فایلهای حافظه مجازی در هنگام اجرای برنامه
    نوشته شده توسط FirstLine در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 3
    آخرین پست: یک شنبه 20 آذر 1384, 18:36 عصر
  3. ایجاد حافظه مجازی اضافی برای مانیتور
    نوشته شده توسط بمب منطقی در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 17
    آخرین پست: پنج شنبه 07 خرداد 1383, 03:03 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •