تالار گفتمان مانشت
سوال از حافظه ها مبحث TLB - نسخه‌ی قابل چاپ

سوال از حافظه ها مبحث TLB - m@hboobe - 08 مهر ۱۳۹۲ ۰۳:۴۷ ب.ظ

یه سوالی خیلی فنی در مورد حافظه ها دارم درباره دسترسی به TLB :

اگر دو وارده از یک جدول به قاب صفحه یکسانی از حافظه اشاره کنند چه پیامدی دارد؟ ( توضیح دهید این پیامد چگونه میتواند زمان لازم برای کپی حجم بزرگی از حافظه را از یک مکان به مکان دیگر کاهش دهد. بروز کردن بایتی از یک صفحه چه تاثیری روی صفحه دیگر خواهد داشت؟)

ممنون میشم کمکم کنید

RE: سوال از حافظه ها مبحث TLB - m@hboobe - 09 مهر ۱۳۹۲ ۰۱:۱۲ ق.ظ

یکم خودم فکر کردم ! بعدشم از حل مسائل سیلبر رفتم نگاه کردم (تقلبی Big Grin )
به این نتیجه رسیدم فقط نمیدونم درست استنباط کردم یا نه؟!

اگر این اجازه داده شود که در جدول صفحه دو ورودی باشد که به یک قاب صفحه در حافظه اشاره کنند، کاربران میتوانند کدها و داده ها رو به اشتراک (صفحات مشترک) بگذارند دو حالت پیش میآید! ۱- کد چند مدخلی باشد ۲- کد چند مدخلی نباشد.
کد چند مدخلی:کدی غیر خود تغییر است به این معنی که در طول اجرا هیچ وقت تغییر نمیکنه پس همزمان دو یا چند فرایند میتونند کد یکسانی را همزمان اجرا کنند و فقط کپی ثبات ها و حافظه داده های خودشون رو جداگانه نگه داری کنند.
در این صورت در حالت اول: یک کپی از کد داشته باشد و به تعداد دسترسی ها برای داده ها وثباتهای مختلف که به این کد دسترسی شده بخش های جداگانه ساخته میشه و تغییرات رو هر فرایندی که میده خود اون فرایند میبیند.
در صورتیکه در حالت دوم اگر کد چند مدخلی نباشه به تعداد دسترسی ها میاد کپی های مختلف میسازه که کلی حافظه اینجور لازم میشه و البته تغییرات برای هر فرایند در فرایندهای دیگه منعکس میشه!!

متن انگلیسی جواب:
By allowing two entries in a page table to point to the same page frame
in memory, users can share code and data. If the code is reentrant, much
memory space can be saved through the shared use of large programs
such as text editors, compilers, and database systems. “Copying” large
amounts of memory could be effected by having different page tables
point to the same memory location.
However, sharing of nonreentrant code or data means that any user
having access to the code can modify it and these modifications would
be reflected in the other user’s “copy.”