PDA

View Full Version : سوال: درباره ی ثبات ها



dddsss
سه شنبه 10 مرداد 1391, 13:12 عصر
سلام

مگه نه اینکه چند تا ثبات عمومی داریم و همه ی برنامه ها ازش استفاده میکنن. وقتی من Ax رو تغییر میدم چرا برنامه های دیگه به مشکل بر نمیخورن؟

ممنون

fjm11100
سه شنبه 10 مرداد 1391, 13:30 عصر
اول بگو چطور همزمان 2 تا برنامه را اجرا می کنی؟توی ویندوز؟ یا توی یک محیط single task؟

dddsss
سه شنبه 10 مرداد 1391, 20:52 عصر
توی ویندوز. Multitasking

فرض بر این که من Ax رو برابر 10 گذاشتم. بعدش Cpu سوییچ شد رو یه برنامه دیگه. بر سر Ax چه خواهد آمد؟
سی پی یو چه طور این ثبات های محدود رو تقسیم میکنه بین این همه برنامه که در حال اجرا هستند؟

fjm11100
سه شنبه 10 مرداد 1391, 22:36 عصر
این کار سیستم عامله. سیستم عامله که بر مقداری که رجیسترها در هر برنامه دارند نظارت میکنه و آنها را نگهداری میکنه. سیستم عامله که فضای مجازی حافظه در اختیار برنامه ها میزاره و بعد آدرس مجازی را به آدرس حقیقی تبدیل میکنه.

dddsss
چهارشنبه 11 مرداد 1391, 09:34 صبح
آقا یه مقاله ای انگلیسی، فارسی چیزی نیست ما بخونیم؟

برای آیندگان که این تاپیک رو میخونن منظورم رو واضح میگم:

یه برنامه نوشتم اما دو تا exe ازش گرفتم. برنامه اول رو اجرا میکنم که میگه در Ax عدد 6 رو قرار بده. برنامه منتظره ورودی میشه. بعد exe دوم رو اجرا میکنم اون میگه که ax رو بذار 19 و بعد منتظر ورودی میشه.

حالا ax اولی رو اگه چاپ کنی میده 6 و چاپ دومی میده 19. چه طور این حرکت رخ میده؟

tdkhakpur
چهارشنبه 11 مرداد 1391, 15:41 عصر
حالا ax اولی رو اگه چاپ کنی میده 6 و چاپ دومی میده 19. چه طور این حرکت رخ میده؟
در حالت کلی رجیستر یعنی کش ثابت یا حافظه ثابت cpu که cpu از اون مکانها استفاده میکنه تا بفهمه کدوم کد رو باید اجرا کنه به فرض اگه ax مثلا 16 و شما int رو به اجرا کرده باشید cpu با توجه به این مقادیر موجود میفهمه که باید کار شماره 16 رو انجام بده(به فرض).
به همین دلیل بودن عددهای متفاوت داخل رجیسترها یه کار عادی و مدام میتونه تغییر کنه.
حالا در مورد اون دو exe که عددهای متفاوتی میده دلیلش هم همینه که وقتی شما اجرا میکنید ممکنه کار قبل از اجرای شما یه چیز دیگه بوده و کد نمایش داده شده مربوط به کار قبلی باشه و به دلیل اینکه cpu منتظر اینتراپت هاست و ax مدام میتونه کد کار خاصی رو داشته باشه پس این هم جواب سوال شما میشه که چرا ax ثابت نمیمونه.

dddsss
چهارشنبه 11 مرداد 1391, 16:13 عصر
در حالت کلی رجیستر یعنی کش ثابت یا حافظه ثابت cpu که cpu از اون مکانها استفاده میکنه تا بفهمه کدوم کد رو باید اجرا کنه به فرض اگه ax مثلا 16 و شما int رو به اجرا کرده باشید cpu با توجه به این مقادیر موجود میفهمه که باید کار شماره 16 رو انجام بده(به فرض).
به همین دلیل بودن عددهای متفاوت داخل رجیسترها یه کار عادی و مدام میتونه تغییر کنه.
حالا در مورد اون دو exe که عددهای متفاوتی میده دلیلش هم همینه که وقتی شما اجرا میکنید ممکنه کار قبل از اجرای شما یه چیز دیگه بوده و کد نمایش داده شده مربوط به کار قبلی باشه و به دلیل اینکه cpu منتظر اینتراپت هاست و ax مدام میتونه کد کار خاصی رو داشته باشه پس این هم جواب سوال شما میشه که چرا ax ثابت نمیمونه.

یکم ساده تر توضیح میدین.:لبخندساده:

pesar irooni
یک شنبه 15 مرداد 1391, 12:06 عصر
یه مبحثی هست به نام context switch توی سیستم عامل
فک کنم اونو بخونی به کارت میاد. همونطور که از اسمش پیداست وقتی سیستم عامل میخواد سی پی یو رو از یه برنامه ای بگیره و بده به یکی دیگه وضعیت جاری تمام ثبات ها رو یه جا ذخیره میکنه (که لان اسمش یادم رفته) و بعد همه منابع رو میده به یه برنامه دیگه. بعد که خواست دوباره برنامه قبلی رو اجرا کنه همه اون مقادیر رو توی ثبات ها و.... restore میکنه.

dddsss
یک شنبه 15 مرداد 1391, 13:59 عصر
یه مبحثی هست به نام context switch توی سیستم عامل
فک کنم اونو بخونی به کارت میاد. همونطور که از اسمش پیداست وقتی سیستم عامل میخواد سی پی یو رو از یه برنامه ای بگیره و بده به یکی دیگه وضعیت جاری تمام ثبات ها رو یه جا ذخیره میکنه (که لان اسمش یادم رفته) و بعد همه منابع رو میده به یه برنامه دیگه. بعد که خواست دوباره برنامه قبلی رو اجرا کنه همه اون مقادیر رو توی ثبات ها و.... restore میکنه.

تشکر بزرگوار
تو ویکی پدیا زده توی PCB ذخیره میکنه.


The state of the process includes all the registers that the process may be using, especially the program counter (http://en.wikipedia.org/wiki/Program_counter), plus any other operating system specific data that may be necessary. This data is usually stored in a data structure called a process control block (http://en.wikipedia.org/wiki/Process_control_block) (PCB)

میگه وضعیت یک پردازش شامل تمامی ثبات هایی است که اون پردازش در حال استفاده میباشد. مخصوصا PC.
بعدش میگه PCB ناحیه ای از هسته سیستم عامل است که اطلاعات مربوط به مدیریت یک پردازش در اون ذخیره میشه.


Location of the PCB

Since PCB contains the critical information for the process, it must be kept in an area of memory protected from normal user access. In some operating systems the PCB is placed in the beginning of the kernel stack (http://en.wikipedia.org/wiki/Call_stack) of the process since that is a convenient protected location


بازم ممنون

pesar irooni
دوشنبه 16 مرداد 1391, 00:17 صبح
آره آفرین
PCB بود
دانشجوهای ما اینا رو باید تو دانشگاه یاد بگیرن. درس سیستم عامل فوق العاده مهمه که متاسفانه زیاد جدی گرفته نمیشه (بیشتر از سوی دانشجوها). اینا رو همه رو تو کتاب تننباوم گفته که تو دانشگاه ها تدریس میشه!!! خوشحالم که به مورد کاربردش پی بردی! وگرنه عمرا سر کلاس میفهمیدی PCB چیه!!!! :چشمک: