http://www.ictnews.ir/
http://ictnews.ir
چهارشنبه 1 مهر 1394
معماري کامپيوتر
معماري کامپيوتر

طرح درس مدرک بين المللي CISSP

معماري کامپيوتر، تمام بخش‌هاي يک سيستم کامپيوتري شامل سيستم عامل، تراشه‌هاي حافظه، مدارهاي منطقي، ابزارهاي ذخيره‌سازي، ابزارهاي ورودي و خروجي، مولفه‌هاي امنيتي، گذرگاه‌ها و اينترفيس‌هاي شبکه‌سازي که براي عملکرد آن ضروري هستند را در بر مي‌گيرد. رابطه مابين اين بخش‌ها و عملکرد داخلي تمام آن‌ها مي‌تواند بسيار پيچيده باشد، در عين حال وادار نمودن آن‌ها به کار با يکديگر در يک قالب امن نيز مستلزم مکانيزم‌ها و شيوه‌هاي پيچيده‌اي است. به‌لطف افراد هوشمندي که راه‌هاي انجام اين کارها را پيدا کرده‌اند، حالا ما تنها بايد نحوه و دليل کارهاي آن‌ها را بياموزيم.
هر چه بيشتر با نحوه کار اين اجزاي مختلف و پردازش داده‌ها توسط آن‌ها آشنا شويد، از نحوه وقوع آسيب‌پذيري‌ها و همچنين اين که اقدامات متقابل چگونه مي‌توانند براي جلوگيري از کشف و بهره‌برداري آسيب‌پذيري‌ها مورد استفاده قرار گيرند، درک بهتري خواهيد داشت.

معماري کامپيوتر
واحد پردازش مرکزي
بارها شنيده‌ايد که CPU يا واحد پردازش مرکزي، مغز يک کامپيوتر است. در کلي‌ترين توضيح ممکن، اين مولفه دستورالعمل‌ها را از حافظه واکشي کرده و آن‌ها را اجراي مي‌نمايد. به‌رغم اين‌که CPU يک قطعه سخت‌افزاري است، اما مجموعه دستورالعمل‌هاي خاص خودش را دارد که براي اجراي وظايف آن الزامي هستند. هر نوع CPU داراي يک معماري خاص و مجموعه‌اي از دستورالعمل‌ها است که مي‌تواند آن‌ها را اجرا کند. سيستم عامل بايد براي کار در داخل اين معماري CPU طراحي شده باشد. به‌همين دليل است که يک سيستم‌عامل مي‌تواند روي يک پردازنده اينتل کار کند اما نمي‌تواند مثلا روي يک پردازنده ARM اجرا شود. سيستم‌عامل نياز دارد که نحوه «صحبت کردن به‌زبان» پردازنده را بداند. اين زبان همان مجموعه دستورالعمل‌هاي پردازنده است.
معماري کامپيوتر
تراشه‌هاي داخل پردازنده تنها چند سانتي‌متر مربع را اشغال مي‌کنند اما در پردازنده‌هاي مدرن امروزي حاوي ميلياردها ترانزيستور هستند. تمام عمليات در داخل CPU با سيگنال‌هاي الکتريکي با ولتاژ‌هاي مختلف در ترکيب‌هاي متفاوت انجام مي‌شوند و هر ترانزيستور اين ولتاژ را نگهداري مي‌کند که صفرها و يک‌ها را به سيستم‌عامل ارايه مي‌نمايند. CPU حاوي رجيسترهايي است که به موقعيت‌هاي حافظه حاوي دستورالعمل‌هاي بعدي براي اجرا، اشاره مي‌کنند. اين ويژگي به CPU امکان مي‌دهد تا اطلاعات وضعيت داده‌هايي که بايد پردازش شوند را نگهدارد. يک رجيستر، يک مکان ذخيره‌سازي موقتي است. فرآيند دسترسي به حافظه براي دريافت اطلاعات درباره اين که چه دستورالعمل و داده‌اي بايد اجرا شوند، بسيار کندتر از دسترسي به رجيستري است که يکي از مولفه‌هاي داخلي خود CPU به‌شمار مي‌آيد. بنابراين وقتي کار CPU با يک وظيفه خاص تمام مي‌شود، از رجيستر‌ها مي‌پرسد: «خوب حالا چه کاري بايد انجام دهم؟» و رجيستر‌ها اطلاعاتي که مشخص مي‌کنند کار بعدي CPU چيست را نگهداري مي‌کنند.
اجراي عملي دستورالعمل‌ها توسط ALU يا Arithmetic Logic Unit انجام مي‌شود. ALU توابع رياضي و عملکردهاي منطقي را روي داده‌ها انجام مي‌دهد. شما مي‌توانيد ALU را به‌عنوان مغز CPU در نظر بگيريد، در حالي که خود CPU مغز کامپيوتر است.
معماري کامپيوتر
نرم‌افزار دستورالعمل‌ها و داده‌هاي خود را در حافظه نگهداري مي‌کند. وقتي بايد اقدامي روي داده‌ها انجام شود، آدرس‌هاي دستورالعمل‌ها و داده‌هاي مربوطه به رجيسترهاي CPU فرستاده مي‌شوند (شکل 2). وقتي واحد کنترل تشخيص داد که CPU مي‌تواند آن‌ها را پردازش کند، آدرس‌هاي حافظه دستورالعمل‌ها و داده‌ها به CPU فرستاده مي‌شوند. CPU درخواستي براي واکشي (Fetch) اين دستورالعمل‌ها و داده‌ها از آدرس‌هاي ارايه شده را ارسال نموده و سپس فرآيند عملي پردازش، خرد کردن اعداد و دستکاري داده‌ها انجام مي‌شود. نتايج بعدا به آدرس‌هاي حافظه درخواست‌کننده پردازش برگردانده مي‌شوند.
معماري کامپيوتر
يک سيستم‌عامل و برنامه‌هاي مختلف صرفا از تعداد بسيار زيادي خطوط دستورالعمل تشکيل شده‌اند. اين دستورالعمل‌ها حاوي متغيرهاي خالي هستند که بايد در زمان اجرا پر شوند. متغيرهاي خالي، داده‌هاي واقعي را نگهداري مي‌کنند. اين يک تفاوت مابين دستورالعمل‌ها و داده‌ها است. دستورالعمل‌ها نوشته شده‌اند تا نوعي عملکرد را روي داده‌ها انجام دهندو براي مثال، اجازه بدهيد فرض کين که شما يک برنامه ماشين‌حساب را باز مي‌کنيد. در واقعيت، اين برنامه تنها خطوطي از دستورالعمل‌ها است که به شما امکان مي‌دهند جمع، تفريق، ضرب، تقسيم و ساير انواع توابع رياضي که روي داده‌هاي ارايه شده توسط شما اجرا خواهند شد را انجام دهيد. بنابراين اگر شما 3+5 را وارد کنيد، اعداد 3 و 5 در واقع ارزش‌هاي داده هستند. به‌محض آن‌که روي کليد =‌ کليک نماييد، برنامه ماشين‌حساب به پردازنده مي‌گويد که بايد دستورالعمل‌هاي مربوط به نحوه انجام عمل جمع را گرفته و اين دستورالعمل‌ها را روي دو ارزش داده 3 و 5 اعمال نمايد. ALU اين دستورالعمل را اجرا کرده و نتيجه 8 را به برنامه متقاضي برمي‌گرداند. در اين زمان است که شما عدد 8 را در فيلد خروجي ماشين‌حساب مي‌بينيد. از ديد کاربران، به‌نظر مي‌رسد برنامه ماشين‌حساب تمام اين کار را به‌تنهايي انجام داده است اما برنامه مذکور چنين توانايي ندارد. اجراي اين نوع کارها به CPU و ساير مولفه‌هاي سيستم وابسته است.

معماري کامپيوتر
واحد کنترل، سيستم را در زماني که کد برنامه‌هاي مختلف و دستورالعمل‌هاي سيستم‌عامل در حال انجام هستند، مديريت و هماهنگ‌سازي مي‌کند. واحد کنترل مولفه‌اي است که کد را واکشي نموده، آن را تفسير کرده و بر اجراي مجموعه دستورالعمل‌هاي مختلف نظارت دارد. اين واحد تعيين مي‌کند که دستورالعمل‌هاي کدام برنامه با چه اولويت و زمان‌بندي بايد اجرا شوند. اين واحد کنترل مي‌کند که اجراي دستورالعمل‌هاي کي به پايان مي‌رسد و اين اجرا به برنامه‌ها امکان مي‌دهد تا داده‌ها را پردازش نمايند. واحد کنترل عملا داده‌ها را پردازش نمي‌کند. همان‌طور که در شکل 3 مي‌بينيد، در واقع اين واحد به يک پليس راهنمايي شباهت دارد که به خودروها مي‌گويد چه زماني متوقف شده يا مجددا حرکت کنند. زمان CPU بايد به واحدهاي جداگانه‌اي تقسيم شده و به پردازش‌ها تخصيص يابد. اين تقسيم‌بندي زماني است که برنامه‌ها و کاربران را فريب مي‌دهد تا فکر کنند سيستم عملا به‌طور هم‌زمان مشغول انجام چند کار مختلف است. در حالي که سيستم عامل مي‌تواند چند کار مختلف را به‌طور هم‌زمان انجام دهد (چندوظيفگي يا Multitasking)، واقعيت اين است که CPU دستورالعمل‌ها را در يک قالب سريالي (هر بار يک دستورالعمل) اجرا مي‌نمايد.
يک CPU داراي چند نوع مختلف از رجيسترها است که اطلاعات مربوط به داده‌ها و مجموعه دستورالعمل‌هايي که بايد اجرا شوند را نگهداري مي‌کنند. رجيسترهاي عمومي (General) براي نگهداري متغيرها و نتايج موقتي در زماني که ALU روي مراحل اجرايي خود کار مي‌کند، مورد استفاده قرار مي‌گيرند. رجيسترهاي عمومي مانند کاغذ چرک‌نويس ALU هستند که در هنگام کار از آن استفاده مي‌کند. رجيسترهاي ويژه (يا رجيسترهاي اختصاصي) اطلاعاتي مانند شمارنده (Counter) برنامه، نشانگر پشته و PSW يا Program Status Word را نگهداري مي‌نمايند. رجيستر شمارنده برنامه حاوي آدرس حافظه دستورالعمل بعدي است که بايد واکشي شود. پس از اجراي دستورالعمل، شمارنده برنامه با آدرس حافظه مجموعه دستورالعمل بعدي که قرار است پردازش شود، به‌روزرساني خواهد شد. در اينجا وضعيتي مانند منشي و رييس برقرار است. منشي مراقب برنامه زمان‌بندي رييس است و وظايف مهمي که بايد انجام دهد را به او گوشزد مي‌کند. اين وضعيت به رييس امکان مي‌دهد تا صرفا روي اجراي وظايف متمرکز شود نه اين که نگران کارهاي مختلفي باشد که در پشت صحنه انجام مي‌شوند.
PSW بيت‌هاي شرطي مختلف را نگهداري مي‌کند. يکي از بيت‌ها تعيين مي‌کند که آيا CPU بايد در حالت کاربر (که تحت عنوان وضعيت مساله نيز شناخته مي‌شود) کار کند يا حالت ممتاز (که تحت عنوان وضعيت کرنل يا ناظر نيز شناخته مي‌شود). توجه داشته باشيد که ما مي‌خواهيم به شما بياموزيم سيستم‌هاي عامل چطور از خودشان محافظت مي‌کنند. اگر قرار باشد آن‌ها يک محيط پايدار و امن را تامين نمايند، بايد از خود در برابر برنامه‌ها، يوتيليتي‌هاي نرم‌افزاري و فعاليت‌هاي کاربران محافظت کنند. يکي از اين مکانيزم‌هاي محافظتي، با استفاده از اين حالت‌هاي اجرايي مختلف پياده‌سازي مي‌شود. وقتي يک برنامه براي اجراي دستورالعمل‌هاي خود به CPU نياز دارد، CPU در حالت کاربر کار مي‌کند. اين حالت داراي يک سطح امتياز پايين‌تر بوده و بسياري از توابع و دستورالعمل‌هاي CPU براي برنامه درخواست‌کننده قابل دسترسي نيستند. دليل احتياط اضافي در حالت مذکور اين است که توسعه‌دهندگان سيستم‌عامل و CPU نمي‌دانند چه کسي برنامه را نوشته يا اين برنامه قرار است چطور واکنش نشان دهد، بنابراين CPU هنگام اجراي اين نوع دستورالعمل‌ها در يک حالت امتياز پايين‌تر کار مي‌کند. به‌عنوان يک قياس مشابه، وقتي منتظر مهماناني هستند که قرار است فرزند دو ساله خود را همراه بياورند، تمام اجسام شکستني که شخصي با قد کمتر از يک متر مي‌تواند به آن‌ها برسد را جابه‌جا مي‌کنيد. هيچکس هرگز اطمينان ندارد که يک کودک دو ساله قرار است چه کاري انجام دهد، اما اين کار معمولا به شکستن چيزي مربوط مي‌شود. يک سيستم‌عامل و CPU مطمئن نيستند که برنامه‌ها تلاش مي‌کنند چه کاري انجام دهند، به همين دليل است که کد با يک امتياز پايين‌تر اجرا مي‌شود و منابع حياتي از دسترس کد برنامه دور مي‌مانند.
اگر PSW داراي ارزشي بيتي باشد که نشان مي‌دهد دستورالعمل‌هايي که قرار است اجرا شوند بايد در حالت ممتاز پردازش شوند، به معناي آن است که درخواست از طرف يک پردازش امن (يک پردازش سيستم‌عامل) ارايه شده و مي‌تواند به عملکردهايي که در حالت کاربر قابل دسترسي نيستند، دسترسي پيدا کند. يک مثال از اين وضعيت زماني است که سيستم‌عامل بايد با يک ابزار جانبي ارتباط برقرار نمايد. اين يک فعاليت ممتاز (Privileged) است که برنامه نمي‌توانند انجام دهند. وقتي اين نوع دستورالعمل‌ها به CPU فرستاده مي‌شوند، PSW اساسا به CPU مي‌گويد: «پردازشي که اين درخواست را فرستاده مشکلي ندارد و مي‌توانيم به آن اعتماد کنيم. شروع کن و اين کار را برايش انجام بده».
آدرس‌هاي حافظه دستورالعمل‌ها و داده‌هايي که قرار است پردازش شوند تا زماني که CPU به آن‌ها احتياج پيدا کند در رجيسترها نگهداري مي‌شوند. CPU به يک گذرگاه آدرس متصل شده که يک اتصال مستقيم سخت‌افزاري به تراشه‌هاي RAM در سيستم و ابزارهاي ورودي/خروجي جداگانه است. حافظه به بخش‌هايي تقسيم شده که آدرس‌هاي مجزايي به آن‌ها تخصيص يافته است. ابزارهاي I/O (درايو اپتيکال، ابزار USB، چاپگرها و...) نيز داراي آدرس‌هاي منحصربه‌فردي هستند که به آن‌ها تخصيص يافته است. اگر CPU نياز داشته باشد به داده‌هايي دسترسي پيدا کند (چه از حافظه و چه از يک ابزار I/O) يک درخواست واکشي را روي گذرگاه آدرس مي‌فرستد. درخواست واکشي حاوي آدرس محلي است که داده‌هاي مورد نياز در آن قرار گرفته‌اند. مدار مربوط به حافظه يا ابزار I/O، آدرسي که CPU روي گذرگاه آدرس ارسال کرده است را تشخيص داده و به حافظه يا ابزار دستور مي‌دهد تا داده‌هاي درخواست شده را خوانده و آن‌ را روي گذرگاه داده قرار دهد. بنابراين CPU از گذرگاه آدرس استفاده مي‌کند تا مکان دستوالعمل‌هايي که بايد پردازش شوند را مشخص کند. از سوي ديگر، حافظه يا ابزار I/O با ارسال داده‌هاي مورد نظر از طريق گذرگاه داده پاسخ مي‌دهد. به‌عنوان يک قياس، اگر شما با رستوراني تماس تلفني گرفته و غذايي را سفارش دهيد، اين فرآيند به ارسال درخواست واکشي توسط CPU شباهت دارد. سپس رستوران سفارش شما را آماده کرده و از طريق يک پيک برايتان مي‌فرستد که به آماده‌سازي داده‌هاي درخواستي و ارسال آن روي درگاه داده براي CPU توسط حافظه يا ابزار I/O شبيه است. اين فرآيند در شکل 4 نشان داده شده است.
پس از آن که CPU کار پردازش خود را به اتمام رساند، بايد نتايج را به حافظه برنامه درخواست‌کننده بفرستد. بنابراين CPU آدرس برنامه درخواست کننده را از طريق گذرگاه آدرس و نتايج جديد را با فرمان write از طريق گذرگاه داده ارسال مي‌کند. سپس اين داده‌هاي جديد به فضاي حافظه برنامه درخواست‌کننده نوشته مي‌شوند. در ادامه مثال ماشين‌حساب، وقتي CPU عدد 3 و 5 را با هم جمع مي‌کند، داده‌هاي به‌دست آمده جديد به‌صورت عدد 8 را در حافظه برنامه ماشين‌حساب مي‌نويسد و به اين ترتيب شما حاصل جمع را مشاهده مي‌کنيد.
گذرگاه‌هاي آدرس و داده مي‌توانند پهنايي معادل 8، 16، 32 يا 64 بيت داشته باشند. اکثر سيستم‌هاي امروزي از گذرگاه آدرس 64 بيتي استفاده مي‌کنند. اين ويژگي به‌معناي آن است که سيستم مي‌تواند يک فضاي آدرس بسيار بزرگ معادل 2 به‌توان 64 آدرس داشته باشد. سيستم‌ها همچنين مي‌توانند يک گذرگاه داده 64 بيتي داشته باشند که به‌اين ترتيب امکان انتقال موازي داده‌ها مابين حافظه، ابزارهاي I/O و CPU با همين پهناي گذرگاه به‌دست مي‌آورد. يک گذرگاه داده 64 بيتي به‌معناي آن است که اندازه قطعات داده‌اي که CPU هر بار مي‌تواند درخواست کند، 64 بيت خواهد بود. اما اين موضوع واقعا چه معنايي داشته و چرا اهميت دارد؟ اگر قرار باشد تعداد زيادي اتومبيل از يک مسير عبور کنند، يک بزرگراه دو خطه مي‌تواند به يک گلوگاه تبديل شود. به‌همين دليل است که بزرگراه‌ها با 4، 6 و يا حتي 8 مسير ساخته مي‌شوند. با پيچيده‌تر شدن کامپيوترها و نرم‌افزارها و همچنين افزايش تقاضا براي عملکرد، ما بايد داده‌ها و دستورالعمل‌هاي بيشتري را با سرعت بالاتري به CPU برسانيم تا بتواند کار خود را روي اين آيتم‌ها انجام داده و نتايج را با بالاترين سرعت ممکن به برنامه درخواست‌کننده، بفرستد. بنابراين ما به لوله‌هاي (گذرگاه‌هاي) عريض‌تري براي انتقال مواد بيشتر از يک مکان به مکان ديگر نياز داريم.

چندپردازشي
بعضي از کامپيوترهاي تخصصي داراي بيش از يک CPU هستند تا عملکرد بالاتري داشته باشند. يک سيستم‌عامل بايد به‌طور ويژه توسعه يابد تا از توانايي شناسايي بيش از يک پردازنده و کار با آن‌ها برخوردار باشد. اگر سيستم کامپيوتر براي کار در حالت متقارن (Symmetric) پيکربندي شده باشد، به‌معناي آن است که پردازنده‌ها در صورت نياز کارها را به يکديگر مي‌سپارند. اين وضعيت در مورد CPU 1 و CPU 2 در شکل 5 نشان داده شده است. اين حالت به يک محيط توازن بار شباهت دارد. وقتي يک پردازش نياز دارد دستورالعمل‌هايي اجرا شوند، يک واحد زمان‌بندي (scheduler) تعيين مي‌کند کدام پردازنده براي کار بيشتر آمادگي دارد و دستورالعمل‌ها را براي آن مي‌فرستد. اگر قرار باشد يک پردازنده به کار يا برنامه مشخصي اختصاص پيدا کند، تمام نرم‌افزارهاي ديگر روي يک پردازنده متفاوت اجرا خواهند شد. در شکل 5، CPU 4 به يک برنامه و رشته‌هاي آن اختصاص پيدا کرده، در حالي که CPU 3 توس سيستم‌عامل مورد استفاده قرار مي‌گيرد. وقتي يک پردازنده اختصاص پيدا کرده (همانند اين مثال)، سيستم در حالت نامتقارن (Asymmetrics) کار مي‌کند. اين معمولا به‌معناي آن است که کامپيوتر نوعي برنامه حساس به زمان دارد که بايد پردازنده اختصاصي خودش را داشته باشد. در اين حالت scheduler دستورالعمل‌هاي برنامه حساس به زمان را به CPU 4 فرستاده و تمام دستورالعمل‌هاي ديگر (از سيستم‌عامل و ساير برنامه‌ها) را به CPU 3 مي‌سپارد.


مطالب مرتبط
نظرات کاربران

ارسال نظر در مورد این مطلب:
نام شما : *
آدرس ایمیل : *
متن نظر : *
کد امنیتی :
Refresh Code

لطفا عبارت درج شده در تصویر بالا را در کادر زیر بنویسید

*
 


کليه حقوق اين سایت متعلق به ICTNEWS است.
انتشار مطالب با ذکر منبع و لینک به سایت مجاز است.
تماس با ما: 88946450  فرم تماس با ما
این پرتال قدرت گرفته از :
سیستم مدیریت پرتال و خبرگزاری دیاسافت
ارتباط با ما : 1000030200