تالار گفتمان مانشت
تبدیل ادرس از روی جدول قطعه - نسخه‌ی قابل چاپ

صفحه‌ها: ۱ ۲ ۳
تبدیل ادرس از روی جدول قطعه - nina69 - 17 بهمن ۱۳۹۱ ۱۱:۵۵ ق.ظ

سلام
دوستان من این روند تبدیل ادرس مجازی در سیستم های قطعه بندی
نمیفهمم
اگه بلدید تو رو خدا توضح بدید
نمونه اش این تست پارسه

تبدیل ادرس از روی جدول قطعه - armin_b00ter - 17 بهمن ۱۳۹۱ ۱۲:۵۳ ب.ظ

اول واسه به دست آوردن آدرس جدول صفحه آدرس جدول قطعه را با ۰۲H * 2 با توجه به دوبایتی بودن هر مدخل جدول قطعه جمع میکنیم. که میشه ۰AFE + 04 = 0B02. حالا از این آدرس به اندازه ی ۲ بایت که اندازه ی مدخل جدول قطعه است می خونیم تا آدرس شروع جدول صفحه به دست بیاد که میشه ۰B08. حالا با توجه به ۴kb بودن صفحه که ۱۲ بیت واسه آدرس دهی می خواد و اینکه ۰۲ هم مربوط به ایندکس جدول قطعه است ایندکس جدول صفحه میشه ۰۰۳/ حالا با توجه به یک بایتی بودن مدخل جدول صفحه یک بایت از آدرس ۰B08 + 003 = 0B0B می خونیم تا شماره ی فریم رو پیدا کنیم که میشه C2. پس کل آدرس میشه C262A.

تبدیل ادرس از روی جدول قطعه - azad_ahmadi - 17 بهمن ۱۳۹۱ ۰۱:۰۶ ب.ظ

سلام. آدرس دهی که تو عکس هست ناقصه. فکر کنم.
چون صفحه ها ۴ کیلویی هستن پس ۱۲ بیت مربوط به انحرافه. پس از همون اول معلوم شد که انحراف ۶۲A هست. در صورت سوال گفته که ۰۲ شماره قطعه هست. پس هرچی که بمونه مال شماره صفحه میشه.
۰۲ شماره قطعه
۰۰۳ شماره صفحه
۲۶َA افست یا انحراف
قطعه بندی صفحه بندی شده بر این اساس کار می کنه که شماره صفحه رو باید در e (که همون تعداد بیت های جدول قطعه هست ضرب کنیم و سپس با ادرس پایه جدول قطعه جمع کنیم. پس خودش گفته ۸ بیت سمت چپ مربوط به شماره قطعه هست. ۰۲ رو در ۱۶ ضرب می کنیم.(۱۶ بخاطر اینه که هر مدخل جدول قطعه ۲ بایتی یا ۱۶ بیتی هست). خب بعد ضرب ۰۲ در ۱۶ باید نتیجه رو با آدرس پایه جدول قطعه جمع کنیم تا PTBA (آدرس پایه جدول صفحه)بدست بیاد.
برای شماره صفحه هم چون گفته مدخل جدول صفحه یک بایتی هست (۸بیت) پس باید ۰۰۳ رو در ۸ ضرب کنیم و به PTBA که در مرحله قبلی بدست اومده جمع کنیم، تا آدرس مربوط به شماره قاب صفحه بدست بیاد. آدرس رو که بدست اومد با افست الصاق میکنی میشه آدرس واقعی. همین. خودت آدرس ها رو از عکس دربیار بعد ببین جواب چی تو گزینه ها هست.

تبدیل ادرس از روی جدول قطعه - armin_b00ter - 17 بهمن ۱۳۹۱ ۰۱:۱۴ ب.ظ

(۱۷ بهمن ۱۳۹۱ ۰۱:۰۶ ب.ظ)azad_ahmadi نوشته شده توسط:  ۰۲ رو در ۱۶ ضرب می کنیم
(۱۷ بهمن ۱۳۹۱ ۰۱:۰۶ ب.ظ)azad_ahmadi نوشته شده توسط:  پس باید ۰۰۳ رو در ۸ ضرب کنیم
آدرس دهی بر حسب بایته نه بیت دوست عزیز. یعنی هر آدرس به یک بایت حافظه اشاره می کنه نه یک بیت.

تبدیل ادرس از روی جدول قطعه - azad_ahmadi - 17 بهمن ۱۳۹۱ ۰۱:۲۰ ب.ظ

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

تبدیل ادرس از روی جدول قطعه - armin_b00ter - 17 بهمن ۱۳۹۱ ۰۱:۲۶ ب.ظ

(۱۷ بهمن ۱۳۹۱ ۰۱:۲۰ ب.ظ)azad_ahmadi نوشته شده توسط:  برای اینکه به اون اندازه در جدول قطعه یا صفحه جابجا بشیم باید آدرس رو در تعداد بیت های مدخل جدول صفحه یا قطعه ضرب کنیم.
اتفاقا چون آدرس دهی بر حسب بایته باید ایندکس رو در تعداد بایت های مدخل جدول صفحه یا قطعه ضرب کنیم و به علاوه آدرس شروع کنیم Wink

تبدیل ادرس از روی جدول قطعه - azad_ahmadi - 17 بهمن ۱۳۹۱ ۰۱:۳۲ ب.ظ

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

تبدیل ادرس از روی جدول قطعه - armin_b00ter - 17 بهمن ۱۳۹۱ ۰۱:۳۶ ب.ظ

(۱۷ بهمن ۱۳۹۱ ۰۱:۳۲ ب.ظ)azad_ahmadi نوشته شده توسط:  آقا حق با شما. اما من که گفتم کارم دوباره کاریه. بعدش می تونی تبدیل به بایتش کنی. ایراد از من بود. شما ببخش.Smile
فهمیدم که نیازی به اون ضرب نیست و کافیه به اندازه همون یک بایت یا دو بایت در جدول صفحه یا قطعه حرکت کنی و ادرس رو بدست بیاری.
من نگرفتم Big Grin فکر کردم متوجه نشدی شما Big Grin

تبدیل ادرس از روی جدول قطعه - atti joon - 17 بهمن ۱۳۹۱ ۰۱:۴۰ ب.ظ

اقای armin میشه این قسمت و توضیح بدید؟

(حالا از این آدرس به اندازه ی ۲ بایت که اندازه ی مدخل جدول قطعه است می خونیم تا آدرس شروع جدول صفحه به دست بیاد که میشه ۰B08)


من نفهمیدم؟؟؟؟؟؟؟؟؟؟؟؟

تبدیل ادرس از روی جدول قطعه - fsi2013 - 17 بهمن ۱۳۹۱ ۰۱:۴۴ ب.ظ

جواب ۲ میشه؟

تبدیل ادرس از روی جدول قطعه - armin_b00ter - 17 بهمن ۱۳۹۱ ۰۱:۴۵ ب.ظ

(۱۷ بهمن ۱۳۹۱ ۰۱:۴۰ ب.ظ)atti joon نوشته شده توسط:  اقای armin میشه این قسمت و توضیح بدید؟

(حالا از این آدرس به اندازه ی ۲ بایت که اندازه ی مدخل جدول قطعه است می خونیم تا آدرس شروع جدول صفحه به دست بیاد که میشه ۰B08)


من نفهمیدم؟؟؟؟؟؟؟؟؟؟؟؟
یعنی که آدرس ۰B02 و ۰B03 که مقادیرشون برابر ۰B و ۰۸ می خونیم و می چسبونیم به هم که میشه ۰B08 Wink

تبدیل ادرس از روی جدول قطعه - nina69 - 17 بهمن ۱۳۹۱ ۰۱:۵۱ ب.ظ

ممنون
ولی گیج شدم
با هر دو روش شما که حل میکنم
جوابم بدست نمیاد

من اینجوری از صحبت های دوستان استنباط کردم درسته
ادرس جدول صفحه=بایت مدخل جدول قطعه* شماره قطعه
ادرس قاب=ادرس جدول صفحه+ شماره صفحه*بایت های مدخل صفحه
درسته؟
من این روش میرم جواب بدست نمیاد چرا؟

تبدیل ادرس از روی جدول قطعه - azad_ahmadi - 17 بهمن ۱۳۹۱ ۰۲:۰۴ ب.ظ

ببینید. ساده هست سوال. فقط باید نحوه کار قطعه بندی صفحه بندی شده رو بلد باشی. هر چی که از جدول "قطعه" بیرون میاد با آدرس پایه جدول "صفحه" جمع میشه و به عنوان آدرس جدول "صفحه" استفاده میشه. و هر چی از جدول "صفحه" بیرون بیاد، آدرس قاب صفحه رو مشخص می کنه. نکته سوال تو همون یک بایت و دو بایت مربوط به جدول صفحه و جدول قطعه هست.
تو جمع مبنای ۱۶ هم باید دقت کرد. آدرس مجازی منطقی بصورت S#,P#,OFSET داده میشه. باید تعداد بیتهای هر کدوم رو در بیاریم. یه بار دیگه حلش کن.

تبدیل ادرس از روی جدول قطعه - nina69 - 17 بهمن ۱۳۹۱ ۰۲:۲۶ ب.ظ

چطور از ۰b02 دو بایت بخونیم
میشه ۰b08

RE: تبدیل ادرس از روی جدول قطعه - fsi2013 - 17 بهمن ۱۳۹۱ ۰۲:۳۶ ب.ظ

(۱۷ بهمن ۱۳۹۱ ۱۲:۵۳ ب.ظ)armin_b00ter نوشته شده توسط:  اول واسه به دست آوردن آدرس جدول صفحه آدرس جدول قطعه را با ۰۲H * 2 با توجه به دوبایتی بودن هر مدخل جدول قطعه جمع میکنیم. که میشه ۰AFE + 04 = 0B02. حالا از این آدرس به اندازه ی ۲ بایت که اندازه ی مدخل جدول قطعه است می خونیم تا آدرس شروع جدول صفحه به دست بیاد که میشه ۰B08. حالا با توجه به ۴kb بودن صفحه که ۱۲ بیت واسه آدرس دهی می خواد و اینکه ۰۲ هم مربوط به ایندکس جدول قطعه است ایندکس جدول صفحه میشه ۰۰۳/ حالا با توجه به یک بایتی بودن مدخل جدول صفحه یک بایت از آدرس ۰B08 + 003 = 0B0B می خونیم تا شماره ی فریم رو پیدا کنیم که میشه C2. پس کل آدرس میشه C262A.

مگه نمیگیم قطعه ۰۲ هستش حالا باید با ادرس پایه جمع بشه که ادرس پایه ۰AFE هستش؟
چرا با ۴ جمع کردی؟؟؟!!! دلیلش چی بوده؟