ورود

نسخه کامل مشاهده نسخه کامل : زمانبند حافظه!



Life24
22-11-2013, 00:48
سلام

دوستان عزیز مزاحم همیشگی هستم :n16:
سوالی پیش امده، ما در بحث سیتسم عامل یک وقتی داریم که حافظه اصلی کم میاد و به جای "آماده" - سیستم عامل مجبور میشه پروسس رو ببره توی هارد و اونجا معلق کنه یا همان "معلق آماده "
بعد هم زمانبند حافظه میاد و اونی که الویت بیشتر تا یا معیار خاصی داره رو تعین میکنه و میره توی حافظه تا بهش CPU داده بشه.
حالا سوال این هست که پروسس ی که هنوز سی پی یو در اختیار نگرفته چطور اطلاعات خودش رو کامل میکنه؟ مثل ثبات هاش،مقدار حافظه،پوینتر ها و .... .
و زمانند حافظه چطور کار میکنه؟ (منظورم اینه که بدون سی پی یو اینها قادر به کارند!!!)
یا سی پی یو پروسس رو درسته اول اجرا نمیکنه اما زمانبند حافظه و پر کردن ساختار مروبط به پروسس رو خودش انجام میده(به موازات بقیه کارها؟)
میخوام مطمئن بشم که هیج حرکت و عکس العملی حتی یک دستور کوچک هم بدون CPU پس انجام نمیشه درسته؟
حتی وقتی پروسس اجرا هم نشده و swap شده توی هارد باز هم سی پی یو این موارئ رو انجام داده و مقدمات فراهم کرده؟
این Fetch کردن پروسس و اطلاعات از سمت هارد به رم و رم به سی پی یو توسط خود سی پی یو انجام میشه؟
واکشی اطلاعات حتی از فلش دیسک و دیسک نوری به هارد هم توسط سی پی یو هست؟ یا نقشی نداره؟

با عرض پوزش از سوال های مبتدی :n04:

Msba
25-11-2013, 21:16
همه ی این کار ها با CPU نیست. دقت کنید که اگر لازم باشد CPU به این موارد پاسخ دهد با این سرعت کم خصوصا در هارد و همین پورت USB شما برای انجام یک عمل ساده باید 2 لیوان چایی بخورید!( یعنی بایستید تا حاضر شود)
خوب در CPU یک بلوک هست که در دیاگرام آن عموما توضیح داده نمی شود و آن هم (DMA (Direct Memory Access است. این بخش از کلاک CPU استفاده می کند و یکسری مقدار را از آدرسی به آدرسی دیگر کپی می کند. دقت کنید : کلاک نه پردازش.

شما CPU را یک مدیر در نظر بگیرید. که این مدیر چند منشی دارد که نامه ها را مرتب و به ترتیب می کنند تا مدیر آن ها را بررسی کند. آیا مدیر می نشیند و نامه ها را برای پردازش مرتب می کند؟ مسلما خیر.
این منشی ها دقیقا همین DMA ها هستند. حالا کافیست که این DMA ها تنظیم شوند تا چه آدرس هایی را منتقل کنند. آدرس ها یک Source و یک Destination دارند:
پورت به پورت
پورت به رم
پورت به هارد
هارد به رم
رم به هارد
و بالعکس این ها و هر چیزی که در سیستم دارای آدرس باشد.
DMA ها مد های مختلفی دارند مثلا پیوسته و یا چرخشی عمل کپی را انجام دهند. یک بار انجام دهند. چند بایتی اطلاعات را بردارند و منتقل کنند. تا چه زمان ادامه دهند. چه زمانی وقفه دهند. با چه سرعتی این کار را انجام دهند( Clock Prescaler) و تنظیمات دیگر.....
این DMA ها را سیستم عامل روشن و استفاده می کند.
در CPU هایی هم که Cache وجود دارد عمل خواندن از حافظه چندین کلاک جلوتر انجام می شود تا سرعت پردازش از دست نرود. این عمل نیز رفتاری مشابه DMA هست که اختصاصی خود CPU است و قابل تنظیم نیست. حالا هر چی این Cache بیشتر باشد ظرفیت فرمان های مورد نیاز پردازش بیشتر می شود و در صورتی که این فرمان ها سریع انجام شوند( فرمان های ساده در معماری CISC) پردازشگر حالت (NOP ( No Operation را نخواهد دید و این همان بهینه سازی در استفاده از CPU است.
در پردازشگر هایی که PipeLine وجود دارد نیز عمل بارگذاری از حافظه برای پردازش به صورت موازی انجام می شود یعنی زمانی که پردازشگر شما در حال اجرای یک کد است فرمان بعدی Decode شده و فرمان بعدی آن Fetch شده است. چرا این عمل امکان پذیر است؟ چون واحد های Fetch و Decode و Excecution از هم جدا هستند و لزومی ندارد تا در زمان اجرا بلوک Decode خالی بماند.

موفق باشید.

Msba
16-01-2014, 21:51
لازم به یادآوری است که در برخی CPU ها واحد DMA وجود ندارد و این وظیفه ی خطیر به عهده ی Chipset و یا South Bridge است.(منظور از لفظ CPU در این تاپیک تنها CPU های کامپیوتر نیست.)

موفق باشید.