PDA

View Full Version : RealMode Rings



Delphi Skyline
سه شنبه 06 شهریور 1386, 12:48 عصر
با سلام . می خواستم یه چیزی بگم ببینم آیا کارآمده یا نه . مطلبی که بیان می کنم رو می خوام توی یه سیستم عاملی که خودم ساختم بزارم و به ویندوز مربوط نیست . فرض کنید ما در مد Real هستیم . بعد می خواهیم اجازه ندیم که برنامه ای که رویOS مان اجرا میشه بتونه به پورت ها دسترسی داشته باشه . آیا میشه بعد از بارگذاری برنامه در حافظه و قبل از اجرای اون بعد از هر دستور العمل یه جامپ به سیستم عامل زد و سیستم عامل چک کنه که آیا اینستراکشن بعدی IN یا OUT هست یا نه ؟؟
امیدوارم منظورم رو فهمیده باشید . باتشکر . :لبخندساده: .

illegalyasync
جمعه 09 شهریور 1386, 13:34 عصر
شدنش که میشه اما به دلائل مختلف کار بی معنی ای هست
تو ریل مود کاری نمیتونی انجام بدی که دسترسی رو به اینستراکشنها محدود کنی و بعدش انتظار داشته باشی سیستم عاملت کار هم بکنه . بهتره به پراتکتدمود فکر کنی اما اگه هیچ چاره ای نداره میتونی دنبال یه ویرچوال ماشین ریل مود بگردی و برنامه هاتو توی وی ام اجرا کنی که به پورت های ماشین واقعی دسترسی نداشته باشن ...اما بازم به نظر من کار بیهوده ای هست چون اصلا ریل مود محیط خوبی برای اینجور کارا نیست

Delphi Skyline
جمعه 09 شهریور 1386, 14:13 عصر
اول تشکر . بعدش . من با Protected Mode کار کردم . من می خوام به فرض یه شبیه سازی از اون بکنم . یعنی سیستم عامل فوق که ریل مد هست ساب سیستم داشته باشه و اون برنامه ها رو اجرا کنه و مثلا اون جلوی یه سری کار ها رو بگیره .

Inprise
جمعه 09 شهریور 1386, 22:53 عصر
یعنی سیستم عامل فوق که ریل مد هست ساب سیستم داشته باشه و اون برنامه ها رو اجرا کنه و مثلا اون جلوی یه سری کار ها رو بگیره

نمیشه ، و اگر میشد Protected Mode ارائه نمیشد .

Delphi Skyline
شنبه 10 شهریور 1386, 22:04 عصر
درسته . ولی نگاه کنید من چی میگم ::
خوب من یه سیستم عامل مثلا نوشتم بر اساس همون گفته های خودم . خوب حالا می خواد برنامه X رو اجرا کنه . اول میاد میبرش تو حافظه . بعد به جای اینکه CS و IP رو به اول نقطه برنامه ست کنه بیاد دستورات برنامه رو بخونه . اگه اشکالی نداشت اجراش کنه وگرنه برنامه ترمینیت بشه . مثلا دستور اول MOV AX,0 است . خوب این مثلا اشکالی نداره و کد اجرا میشه و حالا مثلا یه دستور میگه OUT 60h,AX . خوب مثلا این رو اجرا نمیکنه .
منظورم این بود . باز هم از توجهتون ممنونم .

mountainking
یک شنبه 11 شهریور 1386, 12:29 عصر
آ،آ.
فکر کنم نمیشه. چون نمیدونی که دقیقا یه قسمت چه کار قراره بکنه. چون ممکنه یه بایت یه داده باشه نه یه دستور. برای این هم باید یه بار سیستم عاملت کل برنامه رو طوری چک کنه که ببینه نهایتا یه بایت ویژه قراره به عنوان دستور به کار بره یا نه حالا اگه دستور بود چه دستوری هست و فکر میکنم این خیلی از سیستم زمان بگیره؟ البته مطمئن نیستم.

Delphi Skyline
یک شنبه 11 شهریور 1386, 12:59 عصر
چرا . اتفاقا میشه . می تونیم ساختار فایل های اجرایی رو در اون سیستم عامل طوری طراحی کنیم که داده کاملا متمایز از کد ها باشن .

illegalyasync
دوشنبه 12 شهریور 1386, 00:43 صبح
یعنی لودرت دیس اسمبلر داشته باشه ؟ این نشدنی نیست اما !
اما فایده نداره ! موقع اجرا کردن برنامه ها از کجا میدونی کدوم برنامه حق داره دستورات خاص رو اجرا کنه ؟ بانک اطلاعاتی تو کرنل سیستم عامل ؟ خوب همه به این بانک همونقدر دسترسی دارن که خود سیستم عامل دسترسی داره چون همه تو یه رینگ هستن پس چه فایده ای داره ؟ اگه کسی داره با هدف خاصی برای یه سیستم کد مینویسه خوب اینو میتونه راحت آزمایش کنه !
هدف تقسیم بندی ها و رینگ ها فقط مجوز اجرای دستورات نیست....دلائل دیگه ای هم داره
اگه بشینی و یه مجموعه از کارهائی که لازمه یه سیستم عامل مدرن انجام بده رو لیست بکنی و بعد راه حلشون رو منطقی در بیاری....آخرش به همین نتیجه میرسی که سالها قبل اینتل و بقیه رسیدن
اگرم پلت فرمت خیلی خیلی خیلی خاص هستش چه لزومی داره به سیستم عامل فکر کنی ؟ سیستم عامل برای محیطی خوبه که برنامه های متنوع و سطح بالا اجرا میکنه ! اگه کارت خیلی خیلی خاص هستش بهتره کدت رو بنویسی و ازش سخت افزار بگیری و ببری رو اف پی جی ای و تمام