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

سوال از فصل اول سیستم - mina1 - 27 شهریور ۱۳۹۰ ۰۸:۱۸ ب.ظ

سلام . دوستان عزیز کسی میتونه کمک کنه ؟؟؟ علت ممنوعیت تغییر مد و خواندن و نوشتن در حافظه و تغییر تایمر در مد کاربر چیه ؟؟ و یه سوال دیگه ایا لزومی وجود دارد که هر فرایند استک مخصوص داشته باشد ؟؟(با توجه به خاصیت استکlifo ،داشتن یه پشته برای ذخیره‌ی مقدارهای رجیستر های مهم در برنامه های تو در تو کافی به نظر میرسه).

سوال از فصل اول سیستم - رضا_ایرانی - ۲۷ شهریور ۱۳۹۰ ۱۰:۱۹ ب.ظ

در مد هسته امکان اجرای دستورات ممتاز (دستوراتی که اجراشون حساسیت زیادی داره و حتما میبایست کنترل شده استفاده بشن) وجود داره، یعنی اگر کاربر بتونه تغییر مد پردازنده رو انجام بده، عملا دستش برای اعمال مخرب باز شده.

تایمر یک سخت افزاره که کارهایی از قبیل شمردن مدت زمان استفاده از CPU توسط یک فرایند و... رو انجام میده و توسط سیستم عامل ست میشه. اگر بشه تایمرو دستکاری کرد یعنی اطلاعات حسابداری سیستم عامل مخدوش شده و بسیاری از فاکتورهای سیستم عامل مثل عدالتش زیر سوال میره. نوشتن در حافظه میبایست کنترل شده باشه که این کنترل توسط سخت افزار و سیستم عامل انجام میشه.

استک فقط برای ذخیره ریجستر نیست.
حتما باید برای هر فرایند یک استک باشه. فرض کنید که یک استک مشترک برای فرایندها داشته باشیم. فرایند A یک تابع بازگشتی رو اجرا میکنه و چند آدرس در استک میزاره. فرایند B هم بعد از فرایند A همین کارو انجام میده. بعدش فرایند C در استک مینویسه. حالا به فرایند A سویچ کنیم چطور به آدرسهای بازگشتی فرایند A که در استک ذخیره شده دسترسی داشته باشیم؟ چون ترتیبی برای اجرا شدن فرایندها در تئوری نمیشه قائل بود و در عمل الگویتم زمانبندی تعیین کننده س.

یک نکته خیلی مهم اینه که در عملیات تعویض فرایند، CPU تنها وقفه رو پشتیبانی میکنه و این وسط عملا با تغییر استک فرایند تعویض میشه! پس داشتن استک جدا خیلی اساسیه. یعنی اگر استک جدا نداشته باشیم اساس سیستم عاملهای امروزی بهم میریزه.

البته برای هر کدام از این سیاستها دلایل بسیار مختلف دیگه هم وجود داره.