PDA

View Full Version : استفاده از وقفه ها در protected mode



Delphi Coder
پنج شنبه 29 آذر 1386, 08:12 صبح
در قدمهای اولیه برای نوشتن یه سیستم عامل طبیعتا باید یه سری سرویسهایی رو باید برای خواندن و نوشتن روی صفحه و همچنین فلاپی و هارد نصب کنیم. حالا من میخوام بدونم اگر بخواهیم OS مون از Protected Mode استفاده بکنه باز هم میتونیم از وقفه های Bios برای این کار استفاده کنیم یا نه حتما باید Driver براشون در نظر بگیریم و با دستورات Port خودمونو درگیر کنیم.
من یه جایی خونده بودم Exception میده ولی نمی دونم چقدر میشد اعتبار داد به این حرف فقط باعث شد حتی برای تست حتی سعی هم نکنم چون همین تست هم به نوبه خودش وقت گیر بود و حوصله می خواست.
در ضمن اینم میدونم که بدون درایور نمیشه از همه امکانات یه کارت گرافیکی استفاده کرد. من همون امکانات استاندارد VESA منظورم هست.

Inprise
پنج شنبه 29 آذر 1386, 16:04 عصر
ماشینهای اینتل برای حفظ سازگاری با سیستم عاملهای قدیمی تر هنوز در حالت Real Mode روشن میشن و بعد به Protected Mode _ در صورت لزوم _ سوئیچ میکنن . پس اولا لازم هست که یک لودر Real Mode داشته باشی که اونجا میتونی از هر وقفه ای استفاده کنی . بعد از سوئیچ کردن به Protected Mode باید یه چیزی مثل Sysenter رو صدا بزنی و وقتی رفتی به Ring0 به وقفه ها و پورتها دسترسی داری و البته بعدش باید با مثلا Sysexit برگردی

illegalyasync
پنج شنبه 06 دی 1386, 15:58 عصر
حالا من میخوام بدونم اگر بخواهیم OS مون از Protected Mode استفاده بکنه باز هم میتونیم از وقفه های Bios برای این کار استفاده کنیم یا نه حتما باید Driver براشون در نظر بگیریم و با دستورات Port خودمونو درگیر کنیم.


مسئله ای که باید بهش توجه کنین اینه که در حالت Protected Mode بخاطر آدرس دهی نسبی و سلکتورها کدها میتونن با چهار مجوز مختلف اجرا بشن که بهشون ring 0 تا ring 3 گفته میشه شما برای اینکه بتونی با سخت افزارها صحبت کنی یا وقفه ها رو مدیریت کنی باید در حالت ring 0 باشی . اصطلاح درایور مال سیستم عاملهای شناخته شده و عمومی هستش و شما میتونی تو سیستم عامل خودت هر چیزی رو هر جوری میخواهی درست کنی پس برای اینکه یه وقفه بایاس رو مدیریت کنی فقط کافی هستش که در لحظه اجرای دستور روی ring 0 باشید

Delphi Coder
جمعه 14 دی 1386, 17:07 عصر
خیلی ممنونم از راهنمایی هاتون. آیا امکانش رو دارید که برنامه اول تو این پست رو جوری برام تغییر بدین که همین کار رو توی Protected Mode انجام بده یا کارش زیاده؟http://barnamenevis.org/forum/showthread.php?t=87856
اینو گفتم چون احساس میکنم تو این حالت میدان خالی خالی هست بدون نگرانی از OS و برنامه های دیگه انجام این کار راحتتره اگه اینطور نیست حتی یه برنامه کوچولو که توی DOS اجرا بشه و بره تو Protected Mode و مثلا بنویسه Hello from Protected Mode کمک خوبی میتونه برای من باشه.
در ضمن اگه سایت فارسی یا یه Tutorial خوب و کامل برای Protected Mode سراغ دارید ممنون میشم معرفی کنید. من با Real Mode هیچ مشکلی ندارم و همه کار میتونم اونجا انجام بدم. ولی اطلاعات لازم رو برای انتقال یه سری سرویس که برای یه OS تمرینی نوشتم رو از RealMode به Protected Mode ندارم.

Inprise
جمعه 14 دی 1386, 18:15 عصر
اینتل راهنمای برنامه نویسان سیستمی رو منتشر کرده که در مجموع حدود 3000 صفحه هست . بهترین منبع و مرجع یک برنامه نویس سیستم قطعا چیزی جز همین مستندات نیست .


حتی یه برنامه کوچولو که توی DOS اجرا بشه و بره تو Protected Mode و مثلا بنویسه Hello from Protected Mode کمک خوبی میتونه برای من باشه.

داس در Real Mode کار میکنه . تو نمیتونی سیستم رو به حالت Protected Mode ببری چون اگر برنامه ات توسط داس اجرا بشه ( که چارهء دیگری هم نیست ) طبعا از مدل آدرس دهی Real Mode هم استفاده کرده و اساسا برنامه ات نمیتونه در Protected Mode کار کنه یا انتقالی رو انجام بده . در کل ، Real Mode یا Protected Mode انتخابی هست که همان اول و توسط سیستم عامل باید انجام بشه ، و من دلیلی برای نوشتن کدی که با وقفه های بایاس کار مستقلی رو انجام بده نمیشناسم . کلی سیستم عامل کوچک و خیلی سریع و خوب برای Real Mode و Protected Mode هست . نوشتن کد با توابع سیستم عامل به مراتب بهتر و دیباگش هم ساده تر هست . برای برنامه های خیلی خاص لینوکس در این زمینه بهترین انتخابه چون بسادگی میشه اختصاصی و برای هر کاری تنظیمش کرد و با تنظیمات کرنل میشه از قدیمی ترین ماشینها تا جدیدترین ماشین روی هر معماری ای اجراش کرد ، حتی از روی فلاپی و با همون حجم .

Delphi Coder
جمعه 14 دی 1386, 19:52 عصر
داس در Real Mode کار میکنه . تو نمیتونی سیستم رو به حالت Protected Mode ببری چون اگر برنامه ات توسط داس اجرا بشه ( که چارهء دیگری هم نیست ) طبعا از مدل آدرس دهی Real Mode هم استفاده کرده و اساسا برنامه ات نمیتونه در Protected Mode کار کنه یا انتقالی رو انجام بده . در کل ، Real Mode یا Protected Mode انتخابی هست که همان اول و توسط سیستم عامل باید انجام بشه ، و من دلیلی برای نوشتن کدی که با وقفه های بایاس کار مستقلی رو انجام بده نمیشناسم .
خیلی از برنامه ها توی DOS هستند که تو Protected Mode کار میکنن. اکثر این برنامه ها از DPMI استفاده می کنن ولی بعضی هاشون خودشون این کار رو انجام میدن مثل QV که در حقیقت همون Media Player داس هست.
من یه سیستم عامل نصفه نیمه دارم که فعلا یکی دو تا سرویس برای خواندن دیسک و کار با Video بیشتر نداره ابتدا توی RealMode شروع کردم و الان پشیمون شدم. می خوام توی Protected Mode شروع کنم. یه سری Document راجع به Protected Mode خوندم ولی فعلا تو درک مطلب مشکل دارم و 100% نتونستم قضیه رو هذمش کنم و دقیقا به همین خاطره که یه کد کوچیک خواستم برای سویچ به Protected Mode و یه کار ساده با BIOS .

Inprise
جمعه 14 دی 1386, 21:21 عصر
خیلی از برنامه ها توی DOS هستند که تو Protected Mode کار میکنن. اکثر این برنامه ها از DPMI استفاده می کنن

همهء برنامه های داس در Protected Mode کار میکنن . یا با اینترفیس یا با VM . جواب من توضیحی بر جواب تو برای سوئیچ به Protected Mode بود " یه برنامه کوچولو که توی DOS اجرا بشه و بره تو Protected Mode و مثلا بنویسه Hello from Protected Mode " که این رو گفتم عملی نیست . مثلا Extender ها هیچکدام وقفه ها رو در حالت Protected Mode مدیریت نمیکنن ، و نمیتونن که اینکار رو بکنن فقط امکان دسترسی به حافظه بیشتر و ترجمه آفست ها برای دسترسی پذیر بودن توسط داس رو انجام میدن . اگه خیلی حوصله داری پیشنهاد میکنم سورس کد bootroot شرکت eeye رو یه نگاهی بندازی . یه ارائه هم همراهش هست که توضیح خوبی داده

Delphi Coder
پنج شنبه 27 دی 1386, 15:08 عصر
همهء برنامه های داس در Protected Mode کار میکنن . یا با اینترفیس یا با VM . جواب من توضیحی بر جواب تو برای سوئیچ به Protected Mode بود " یه برنامه کوچولو که توی DOS اجرا بشه و بره تو Protected Mode و مثلا بنویسه Hello from Protected Mode " که این رو گفتم عملی نیست . اینطور نیست. خود سیستم عامل و اکثر برنامه ها تو RealMode کار می کنن و هیچ سنمی با Protected Mode ندارن. Protected Mode از زمان 80286 به بعد تازه معنی پیدا کرده.

اینتل راهنمای برنامه نویسان سیستمی رو منتشر کرده که در مجموع حدود 3000 صفحه هست . بهترین منبع و مرجع یک برنامه نویس سیستم قطعا چیزی جز همین مستندات نیست . ممنون از توضیحتون. document های اینتل رو دانلود کردم تقریبا میشه گفت همه چیز رو توضیح داده و بهترین مرجع هست.
http://developer.intel.com/products/processor/manuals/index.htm

Inprise
پنج شنبه 27 دی 1386, 17:20 عصر
خود سیستم عامل و اکثر برنامه ها تو RealMode کار می کنن و هیچ سنمی با Protected Mode ندارن

البته این بدیهی هست که داس RealMode کار میکنه . در جواب ابهامت در مورد اینکه چطور بعضی از برنامه ها در حالت PM هم کار میکنه یا نه نوشتم که : برنامه های داس در Protected Mode کار میکنن . یا با اینترفیس یا با. VM
جوابهائی که بهت داده میشه رو با دقت بیشتری بخون .