دانلود فایل بهینه‌سازی و پردازش پرس و جو

در این تحقیق ما به تکنیک‌های بکار رفته توسط DMBS برای پردازش، بهینه‌سازی و اجرای پرس و جوهای سطح بالا می‌پردازیم پرس و جوی بیان شده در زبان پرس‌و جوی سطح بالا مثل SQL ابتدا باید پویش و تجزیه معتبر شود
دسته بندی کامپیوتر و IT
بازدید ها 9
فرمت فایل doc
حجم فایل 458 کیلو بایت
تعداد صفحات فایل 68
بهینه‌سازی و پردازش پرس و جو

فروشنده فایل

کد کاربری 1024
کاربر

بهینه‌سازی و پردازش پرس و جو

در این تحقیق ما به تکنیک‌های بکار رفته توسط DMBS برای پردازش، بهینه‌سازی و اجرای پرس و جوهای سطح بالا می‌پردازیم.
پرس و جوی بیان شده در زبان پرس‌و جوی سطح بالا مثل SQL ابتدا باید پویش و تجزیه . معتبر شود. پویشگر (اسکنر) علامت هر زبان، مثل لغات کلیدی SQL، اساس ویژگی، و اساس رابطه، را در متن پرس و جو شناسایی می‌کند،‌ در عوض تجربه کننده، ساختار دستوری پرس و جو را برای تعیین اینکه آیا بر طبق قوانین دستوری زبان پرس و جو تدوین می‌شود یا خیر، چک می‌کند. پرس و جو باید همچنین معتبر شود، با چک کردن اینکه تمام اسامی رابطه و ویژگی معتبر هستند و اسامی معنی‌دار در طرح پایگاه اطلاعاتی ویژها‌ی پرس و جو می‌شوند. نمونه داخلی پرس و جو ایجاد می‌شود،‌‌ که تحت عنوان ساختار داده‌های درختی بنام درخت پرس و جو می‌باشد. ارائه پرس و جو با استفاده از ساختار داده‌های گراف بنام گراف پرس و جو نیز امکان پذیر است. DOMS باید استراتژی اجرایی برای بازیابی نتیجه پرس و جو از فایل‌های پایگاه اطلاعاتی را هدایت کند. پرس و جو استراتژیهای اجرایی بسیاری دارد. و مرحلة انتخاب،‌ مورد مناسبی برای پردازش پرس وجو تحت عنوان بهینه‌سازی پرس و جو شناخته شده است.
تصویر 1، مراحل مختلف پردازش پرس و جوی سطح بالا را نشان می‌دهد. قطعه بر نامه بهینه‌ساز پرس وجو، وظیفه ایجاد طرح اجرایی را بعهده دارد و ژنراتور (تولید کننده) که ، کد را برای اجرای آن طرح ایجاد می‌کند. پردازنده پایگاه اطلاعاتی زمان اجرا وظیفه اجرای که پرس و جو را بعهده دارد،‌ خواه در وضعیت کامپایل شده یا تفسیر شده جهت ایجاد نتیجه پرس و جو. اگر خطای زمان اجرا نتیجه شود،‌ پیام خطا توسط پایگاه اطلاعاتی زمان اجرا ایجاد می‌شود.
اصطلاح بهینه‌سازی نام بی مسمایی است چون در بعضی موارد،‌ طرح اجرایی انتخاب شده، استراتژی بهینه نمی‌باشد، آن فقط استراتژی کارآمد معقول برای اجرای پرس و جو است. یافتن استراتژی بهینه، ضامن صرف زمان زیادی است، بجز برای ساده‌ترین پرس و جوها،‌ ممکن است به اطلاعاتی روی چگونگی اجرای فایل‌ها در فهرست‌های فایل‌ها، اطلاعاتی که ممکن است کاملاً در کاتالوگ DBMS در دسترس نباشد، نیاز باشد. از اینرو،‌ برنامه‌ریزی استراتژی اجرا ممکن است توصیف درست‌تری نسبت به بهینه‌سازی پرس و جو باشد.
برای زبانهای پایگاه اطلاعاتی (دریایی) جهت‌یابی در سطح پایینتر در سیستم‌های قانونی، مثل شبکه DML شبکه‌ای یا MOML سلسله مراتبی،‌ برنامه نویس باید، استراتی اجرای پذیرش و جو را انتخاب کند ضمن اینکه برنامه پایگاه اطلاعاتی را می‌نویسد. اگر DBMS فقط زیان جهت‌یابی را ارائه دهد. فرصت و نیاز محدودی برای بهینه‌سازی پرس وجوی وسیع توسط DBMS وجود دارد، در عوض به برنامه نویس قابلیت انتخاب استراتژی اجرایی بهینه ارائه می‌شود. بعبارت دیگر، زبان پرس و جو در سطح بالا، مثل SQL برای DBMSهای رابطه‌ای یا OQL برای DBMS‌های مقصد،‌ در ماهیت تفریطی‌تر است. چون آنچه نتایج مورد نظر پرس و جو است بغیر از شناسایی جزئیات چگونگی بدست آمدن نتیجه،‌ را تعیین می‌کند. بهینه‌سازی پرس و جو برای پرس و جوهایی ضروی است که در زبان پرس و جوی سطح بالا تعیین می شوند. ما روی توصیف بهینه‌سازی پرس و جو در زمینه ROBMS تمرکز می‌کنیم چون بسیاری از تکنیک‌هایی که توصیف می‌ کنیم برای، برای ODBMSها تطبیق یافته‌اند. DBMS رابطه‌ای باید استراتژیهای اجرای پرس و جوی دیگری را ارزیابی کند و استراتژی بهینه یا کارآمد معقولی را انتخاب کند. هر DBMS ،‌ تعدادی الگاریتم دسترسی به پایگاه اطلاعاتی کلی دارد که علامتهای رابطه‌ای مثل SELECT یا JOIN یا ترکیبی از این عملیات ‌ها را اجرا می‌کند. تنها استراتژیهای اجرایی که می‌توانند توسط الگاریتم‌های دسترسی DBMS اجرا شوند و برای طراحی پایگاه اطلاعاتی فیزیکی ویژه و پرس و جوی خاص بکار روند،‌ می‌توانند توسط قطعه برنامه بهینه‌سازی پرس و جو در نظر گرفته شوند.
ما با بحث کلی چگونگی ترجمه پرس و جوهای SQL به پرس و جوهای جبری رابطه‌ای و در بهینه‌شدن آنها کار را شروع می‌کنیم. بعد ما روی الگاریتم‌ها برای اجرای عملیات‌های رابطه‌ای در بخش 1802 بحث می‌کنیم. بدنبال این مطلب، بررسی از استراتژیهای بهینه‌سازی پرس و جو را ارائه می‌دهیم. دو تکنیک اصلی برای اجرای بهینه‌‌سازی پرس و جو وجود دارد. اولین تکنیک بر اساس قوانین ذهنی جهت ترتیب دادن عملیات‌ها در استراتژی اجرای پرس و جو می‌باشد. ذهن قانونی است که بخوبی در اکثر موارد عمل می‌کند ولی برای کار مناسب در هر مورد کنش تضمین نمی‌شود. قوانین عملیات‌ها را در درخت پرس وجو مجدداً ترتیب می‌دهند. دومین تکنیک شامل برآورد هزینه استراتژیهای اجرای متفاوت و انتخاب طرح اجرایی با پایین‌ترین هزینه برآورد است. دو تکنیک معمولاً در بهینه ساز پرس و جو (باهم ترکیب می‌شوند) بهم ملحق می‌گردند. بررسی مختصری از عوامل در نظر گرفته شده در طول بهینه‌سازی پرس و جو در RDBMS بازرگانی ORACLL= را ارائه می‌دهیم. در بخش بعدی نوعی بهینه‌سازی پرس و جوی معنایی را ارائه می‌دهد که در آن محدودیت‌های شناخته شده برای پرداختن به استراتژیهای اجرایی پرس و جوی کارآمد استفاده می‌شوند.
2 – ترجمه پرس و جوهای SQL به پرس و جوهای رابطه‌ای:
در عمل، SQL زبان پرس وجویی است که در اکثر RDBMS ‌های بازرگانی استفاده می‌شود. پرس وجوی SQL ، ابتدا به عبارت جبری رابطه‌ای توسعه یافته معادل،‌ نمایانگر ساختار داروهای درخت پرس و جو، ترجمه می‌شود و بعد بهینه‌سازی می‌شود. پرس و جوهای SQL به بلوکهای پرس و جو تجزیه می‌شوند،‌ که واحدهای اساسی را تشکیل می‌دهند که می‌توانند به عملکردهای جبری ترجمه شوند و بهینه‌سازی شوند. بلوک پرس و جو شامل عبارت SELECT- FROM-WHERE تکی و بندهای Groop By و HAVING است چنانچه این‌ها بخشی از بلوک باشند. از اینرو،‌ پرس و جوهای تو در تو در پرس و جو بعنوان بلوکهای پرس و جوی مجزا شناسایی می‌شوند. چون SQL شامل عملکردهای گروهی، مثل MAX ،‌ COUNT,SUM می‌باشد، این عملگرها باید در پرس و جوی جبری توسعه یافته‌ای شامل شوند، همانطوریکه در بخش 705 توصیف شد. پرس و جوی SQL در رابطه EMPLOEE در تصویر 705 را در نظر بگیرید:
این پرس و جو شامل، پرس و جوی فرعی تو در تو است و از اینرو به دو بلوک تجزیه می‌شود. بلوک درونی بدین صورت است:
و بلوک بیرونی بدین صورت می باشد:
که C نمایانگر نتیجه حاصله از بلوک درونی است. بلوک درونی به عبارت جبری رابطه‌ای توسعه یافته زیر ترجمه شده است:
و بلوک بیرونی به عبارت زیر ترجمه شده است:
بهینه‌ساز پرس و جو، طرح اجرایی را برای هر بلوک انتخاب می‌کند. ما باید اشاره کنیم به در مثال فوق، بلوک درونی نیاز به ارزیابی شدن دارد تنها زمانی که، حداکثرحقوقی که بعکار می‌رود که بعنوان ثابت C، توسط بلوک بیرونی استفاده می‌شود. ما اینرو پرس و جوی تودرتوی غیرمرتبط نامیدیم (در فصل 8). آن برای بهینه‌سازی پرس و جوهای تو در توی مرتبط پیچیده‌تر، خیلی سخت‌تر است، جایی که متغیر Tuple از بلوک بیرونی در بند WHERE در بلوک درونی ظاهر می‌شود.
1802- الگاریتم های انسانی برای اجرای عملیاتهای پرس و جو:
RDBMS شامل الگاریتم‌هایی برای اجرای انواع مختلف عملیاتهای رابطه‌‌ای است که می‌توانند در استراتژی اجرای پرس و جو نمایان شوند، این عملیات‌ها شامل عملیاتهای جبری بیسیک (اصلی) و توسعه یافته مورد بحث در فصل 7 ، و در بسیاری موارد، الحاقاتی از این عملیات‌ها می‌باشد. برای هر یک از این عملیات ها یا الحاقی از عملیات‌ها، یک یا چند الگاریتم برای اجرای عملیات‌ها در دسترس قرار دارند. الگاریتم ممکن است فقط برای ساختارهای ذخیره خاص مسیرهای دستیابی بکار روند، در اینصورت ،‌ تنها در صورتی استفاده می‌شود که فایل های موجود در عملیات شامل این مسیرهای دستیابی هستند. در این بخش، ما به الگاریتم‌های نمونه بکار رفته برای اجرای SEKECT ، JOIN و دیگر عملیاتهای رابطه‌ای می‌پردازیم. ما بحث مرتب کردن خارجی را در بخش 180201 آغاز می‌کنیم که در قلب عملیاتهای رابطه‌ای قرار دارد که از استراتژیهای ادغام کردن به مرتب کردن استفاده می‌کند. بعد ما به الگاریتم‌هایی برای اجرای عملیات SELECT در بخش 180202 می‌پردازیم،‌ به عملیات ‌JOIN در بخش 180203 و عملیات PRIJECT و عملیاتهای مجموعه در بخش IE 1802 و عملیات‌های گروهی و جمعی در بخش 2 .2 . 18 می‌پردازیم.
1. 2. 18- مرتب کردن خارجی:
مرتب کردن، یکی از الگاریتم‌های اولیه بکار رفته در پردازش پرس و جو است. برای مثال، ‌به هر وقت پرس و جوی SQL ، بعد ORDER BY را تعیین می‌کند، نتیجه پرس و جو باید مرتب گردد. مرتب کردن، مؤلفه کلیدی در الگاریتم‌های مرتب کردن- ادغام کردن (مرتب-ادغام) بکار رفته برای Join و عملیاتهای دیگر، دور الگاریتم‌های حذف کپی برای عملیات PROYECT است. ما روی بعضی از این الگاریتم‌ها در بخش‌ 3. 2. 18 و 4. 02 18 بحث خواهیم کرد. توجه کنید که مرتب کردن در صورتی که اجتناب می‌شود که شاخص مناسب برای امکان دسترسی مرتب شده به ثبت‌ها وجود دارد.
مرتب کردن خارجی به الگاریتم‌های مرتب کردن اشاره می‌کند که برای فایل های بزرگ ثبت ‌های ذخیره شده روی دیسک مناسب هستند که در حافظه اصلی، مثل اکثر فایل های پایگاه اطلاعاتی تناسب نمی‌‌یابد. الگاریتم‌ مرتب کردن خارجی نمونه از استراتژی مرتب- ادغام استفاده می‌کند، که با مرتب کردن- فایل‌های فرعی کوچک بنام اجراها در فایل اصلی شروع می‌شود و بعد اجراها مرتب شده ادغام می‌شوند،‌‍ فایل‌های فرعی مرتب شده بزرگتری ایجاد می‌شوند که بترتیب ادغام می‌شوند. الگاریتم ادغام –مرتب،‌ مثل دیگر الگاریتم های پایگاه اطلاعاتی به فاضی بافر در حافظه اصلی نیاز دارد،‌ جایی که مرتب کردن واقعی و ادغام اجراها انجام می‌ شود. الگاریتم اصلی (سیبک) شرح داده شده در تصویر 1802 ، شامل دو مرحله است: (1) فاز یا مرحله مرتب کردن و (2) مرحله ادغام.
در مرحله مرتب کردن، اجراهای فایلی که می‌تواند در فضای باز موجود تناسب یابد در حافظه اصلی خوانده می‌شوند و با استفاده از الگاریتم مرتب کردن داخلی مرتب می‌شود عقب دیسک بعنوان فایل‌های فرعی مرتب شده متوفی نوشته می‌شود. اندازه اجرا و تعداد اجراهای آغازین توسط تعداد بلوکهای فایل (b) و فضای بافر موجود (NB) بیان می‌شود. برای مثال اگر بلوکو اندازه قایل 1024=b بلوک باشد،‌ بعد یا 205 اجرای آغازین در هر اندازه 5 بلوک است. از اینرو، بعد از مرحله مرتب کردن، 205 اجرای مرتب شده بعنوان فایل‌های فرعی موقتی روی دیسک ذخیره می‌شوند. اجرای مرتب شده بعنوان فایل‌های فرعی موقتی و روی دیسک ذخیره می‌شوند.
در مرحله ادغام شدن، اجراهای مرتب شده،‌ در طول یک یا چند گذر ادغام می‌‌شوند. درجه ادغام شدن تعداد اجراهایی است که می‌توانند با همدیگر در هر گذر ادغام شوند. در هر گذر، یک بلوک بافر، برای حفظ یک بلوک از هر اجرای ادغام شده نیاز می‌باشد، و یک بلوک برای تشکیل یک بلوک نتیجه ادغام لازم است . از اینرو،‌ کوچکتر از و است و تعداد گذرها، است. در مثالها، است. لذا،‌ 205 اجرای مرتب شده آغازین در 25 تا در پایان اولیه گذر ادغام می‌شود: که بعد به 12، بعد 4 بعد یک اجرا ادغام می‌شوند، که بدین معنی است که چهارگذر لازم می‌باشد. حداقل از 2،‌ عملکرد بدترین مورد الگاریتم را ارائه می‌دهد که بدین قرار است:
اولین جمله، تعداد دسترسی‌های بلوک برای مرحله مرتب سازی را نشان می‌دهد، چون هر بلوک فایل دو برابر دسترسی می‌شود، یکبار برای خواندن در حافظه،‌ یکبار برای نوشتن ثبت‌ها دیسک بعد از مرتب کردن. دومین جمله، تعداد دسترسی‌های بلوک برای مرحله ادغام کردن را نشان می‌دهد، با فرض اینکه بدترین مورد از 2 وجود دارد. بطور کلی، ثبت وقایع در مبنای و عبارت برای تعداد دسترسی‌های بلوک نوین قرار می‌شود:
تصویر 1802- شرح الگاریتم ادغام – مرتب کردن برای مرتب کردن خارجی:
2. 2. 18- اجرا و پیاده‌سازی عملیات SELECT :
تعداد Option‌هایی ( انتخاب‌ها) برای اجرای عملیات SELECT وجود دارد، که بعضی به فایل دارای مسیرهای دستیابی خاص بستگی دارند و تنها برای انواع معین شرایط انتخاب بکار می‌رود. ما به الگاریتم‌هایی جهت اجرای SELECT در این بخش می‌پردازیم. ما از عملیاتهای زیر استفاده می‌کنیم که روی پایگاه اطلاعاتی رابطه‌ای در تصویر 507 مشخص شده و بحث ما را روشن می‌سازد:
متدهای جستجو برای انتخاب ساده:
تعدادی الگاریتم های جستجو برای انتخاب ثبت‌ها از فایل امکان‌پذیر می‌باشند،‌ چون ثبت‌‌های فایل نامیده می شوند، چون ثبت‌‌های فایل را برای جستجو و بازیابی ثبت‌هایی که شرایط انتخاب را برآورده می‌سازند، پویش می‌کنند. اگر الگاریتم جستجو شامل کاربرد شاخص باشد،‌ جستحوی شاخص پویش شاخص نامیده می‌شد. متدهای جستجوی زیر ( 1S تا s6 ) مثالهایی از الگاریتم‌های جستجو هستند که می‌توانند برای اجرای عملیات انتخاب بکار روند:
- s1 : جستجوی خطی (روش برنامه‌سازی پر قدرت): بازیابی هر ثبت در فایل، و تست اینکه آیا مقادیر ویژگی آن،‌ شرط انتخاب را براورده می‌سازد یا خیر.
- S2: جستجوی بنیادی (دودویی):‌ اگر شرط انخاب شامل قیاس تساوی روی ویژگی کلیدی باشد که روی آن فایل مرتب می‌شود، جستجوی بنیادی، که نسبت به جستجوی خطی کارآمدتر است، می‌تواند بکار رود. مثال OP1 است چنانچه ssn ، ‌ویژگی کلیدی با شاخص اولیه‌( یا کلید hash) باشد،‌ برای مثال، SNN-‘123456789’ در opt، شاخص اولیه یا کلید hosh) برای بازیابی ثبت استفاده می‌شود، توجه کنید که این شرط، ثبت تکی را بازیابی می‌کند.
- S4: کاربرد شاخص اولیه برای بازیابی ثبت‌های متعدد: اگر شرط انتخاب شدن قیاس تساوی روی ویژگی غیر کلیدی با شاخص خدشه‌سازی باشد،‌ برای مثال در ، شاخص را برای بازیابی کل ثبت‌ها در برآورده ساختن شرط،‌ استفاده کنید.
- S6: بکارگیری شاخص ثانویه (درخت ) روی قیاس تساوی: این متد جستجو می‌تواند برای بازیابی ثبت تکی بکار رود چنانچه فیلد نمایه‌سازی (شاخص‌سازی) کلید باشد یا برای بازیابی ثبت‌های متعدد بکار می‌رود چنانچه فیلد شاخص‌سازی کلید نباشد،‌ این می‌تواند برای مقایساتی شامل یا بکار رود. در بخش 3. 4. 18، ما به چگونگی توسعه فرمول‌هایی می‌پردازیم که هزینه‌دستیابی این متدهای جستجو را در اصطلاحات تعداد دستیابی‌های بلوک و زمان دستیابی برآورد می‌کند. Method S!برای هر فایلی استفاده می‌شود ولی تمام متدهای دیگر به داشتن مسیر دستیابی مناسب روی ویژگی‌بکار رفته در شرط انتخاب بستگی دارند. متدهای S4 و 6،‌ می‌توانند برای بازیابی ثبت‌ها در دامنه معین بکار روند برای مثال پرس و جوها شامل این شرط‌ها، پرس وجوهای دامنه نیامد به می‌شوند.
متدهای جستجو برای انتخاب پیچیده:
اگر شرط عملیات SELECT، شرط تقارنی و مرتبط باشد، در اینصورت اگر از چندین شرط ساده در ارتباط با ارتباط منطقی and مثل op4 فوق تشکیل شود، ‌DBM می‌تواند از متدهای اضافی زیر برای اجرای عملیات استفاده کند:
S7: انتخاب تقارنی یا ارتباطی با استفاده از شاخص اختصاص:‌ اگر ویژگی شامل شده در هر شرط ساده متکی در شرط تقارنی، مسیر دستیابی داشته باشد که به کاربرد یکی از متدهای S2 تا S6 امکان عمل دهد، از آن شرط برای بازیابی ثبت‌های استفاده کنید و بعد کنترل کنید آیا هر ثبت بازیابی شد، شرایط ساده باقیمانده در شرط تقارنی را برآورده می‌کند یا خیر.
S8 : انتخاب تقارنی (ارتباطی) با استفاده از شاخص مرکب: اگر دو یا چند ویژگی در شرایط تساوی در شرط تفاوتی شامل شدند و شاخص مرکب در فیلدهای مرکب وجود داشته باشد، برای مثال اگر شاخص روی کلید مرکب (ESSN, PNO) در فایل Works ON برای OPS ایجاد شده باشد، می توان از شاخص مستقیماً اشاره کرد.

در این تحقیق ما به تکنیک‌های بکار رفته توسط DMBS برای پردازش، بهینه‌سازی و اجرای پرس و جوهای سطح بالا می‌پردازیم. پرس و جوی بیان شده در زبان پرس‌و جوی سطح بالا مثل SQL ابتدا باید پویش و تجزیه . معتبر شود. پویشگر (اسکنر) علامت هر زبان، مثل لغات کلیدی SQL، اساس ویژگی، و اساس رابطه، را در متن پرس و جو شناسایی می‌کند،‌ در عوض تجربه کننده، ساختار دستوری پرس و جو را برای تعیین اینکه آیا بر طبق قوانین دستوری زبان پرس و جو تدوین می‌شود یا خیر، چک می‌کند. پرس و جو باید همچنین معتبر شود، با چک کردن اینکه تمام اسامی رابطه و ویژگی معتبر هستند و اسامی معنی‌دار در طرح پایگاه اطلاعاتی ویژها‌ی پرس و جو می‌شوند. نمونه داخلی پرس و جو ایجاد می‌شود،‌‌ که تحت عنوان ساختار داده‌های درختی بنام درخت پرس و جو می‌باشد. ارائه پرس و جو با استفاده از ساختار داده‌های گراف بنام گراف پرس و جو نیز امکان پذیر است. DOMS باید استراتژی اجرایی برای بازیابی نتیجه پرس و جو از فایل‌های پایگاه اطلاعاتی را هدایت کند. پرس و جو استراتژیهای اجرایی بسیاری دارد. و مرحلة انتخاب،‌ مورد مناسبی برای پردازش پرس وجو تحت عنوان بهینه‌سازی پرس و جو شناخته شده است. تصویر 1، مراحل مختلف پردازش پرس و جوی سطح بالا را نشان می‌دهد. قطعه بر نامه بهینه‌ساز پرس وجو، وظیفه ایجاد طرح اجرایی را بعهده دارد و ژنراتور (تولید کننده) که ، کد را برای اجرای آن طرح ایجاد می‌کند. پردازنده پایگاه اطلاعاتی زمان اجرا وظیفه اجرای که پرس و جو را بعهده دارد،‌ خواه در وضعیت کامپایل شده یا تفسیر شده جهت ایجاد نتیجه پرس و جو. اگر خطای زمان اجرا نتیجه شود،‌ پیام خطا توسط پایگاه اطلاعاتی زمان اجرا ایجاد می‌شود.

اصطلاح بهینه‌سازی نام بی مسمایی است چون در بعضی موارد،‌ طرح اجرایی انتخاب شده، استراتژی بهینه نمی‌باشد، آن فقط استراتژی کارآمد معقول برای اجرای پرس و جو است. یافتن استراتژی بهینه، ضامن صرف زمان زیادی است، بجز برای ساده‌ترین پرس و جوها،‌ ممکن است به اطلاعاتی روی چگونگی اجرای فایل‌ها در فهرست‌های فایل‌ها، اطلاعاتی که ممکن است کاملاً در کاتالوگ DBMS در دسترس نباشد، نیاز باشد. از اینرو،‌ برنامه‌ریزی استراتژی اجرا ممکن است توصیف درست‌تری نسبت به بهینه‌سازی پرس و جو باشد. برای زبانهای پایگاه اطلاعاتی (دریایی) جهت‌یابی در سطح پایینتر در سیستم‌های قانونی، مثل شبکه DML شبکه‌ای یا MOML سلسله مراتبی،‌ برنامه نویس باید، استراتی اجرای پذیرش و جو را انتخاب کند ضمن اینکه برنامه پایگاه اطلاعاتی را می‌نویسد. اگر DBMS فقط زیان جهت‌یابی را ارائه دهد. فرصت و نیاز محدودی برای بهینه‌سازی پرس وجوی وسیع توسط DBMS وجود دارد، در عوض به برنامه نویس قابلیت انتخاب استراتژی اجرایی بهینه ارائه می‌شود. بعبارت دیگر، زبان پرس و جو در سطح بالا، مثل SQL برای DBMSهای رابطه‌ای یا OQL برای DBMS‌های مقصد،‌ در ماهیت تفریطی‌تر است. چون آنچه نتایج مورد نظر پرس و جو است بغیر از شناسایی جزئیات چگونگی بدست آمدن نتیجه،‌ را تعیین می‌کند. بهینه‌سازی پرس و جو برای پرس و جوهایی ضروی است که در زبان پرس و جوی سطح بالا تعیین می شوند. ما روی توصیف بهینه‌سازی پرس و جو در زمینه ROBMS تمرکز می‌کنیم چون بسیاری از تکنیک‌هایی که توصیف می‌ کنیم برای، برای ODBMSها تطبیق یافته‌اند. DBMS رابطه‌ای باید استراتژیهای اجرای پرس و جوی دیگری را ارزیابی کند و استراتژی بهینه یا کارآمد معقولی را انتخاب کند. هر DBMS ،‌ تعدادی الگاریتم دسترسی به پایگاه اطلاعاتی کلی دارد که علامتهای رابطه‌ای مثل SELECT یا JOIN یا ترکیبی از این عملیات ‌ها را اجرا می‌کند. تنها استراتژیهای اجرایی که می‌توانند توسط الگاریتم‌های دسترسی DBMS اجرا شوند و برای طراحی پایگاه اطلاعاتی فیزیکی ویژه و پرس و جوی خاص بکار روند،‌ می‌توانند توسط قطعه برنامه بهینه‌سازی پرس و جو در نظر گرفته شوند. ما با بحث کلی چگونگی ترجمه پرس و جوهای SQL به پرس و جوهای جبری رابطه‌ای و در بهینه‌شدن آنها کار را شروع می‌کنیم. بعد ما روی الگاریتم‌ها برای اجرای عملیات‌های رابطه‌ای در بخش 1802 بحث می‌کنیم. بدنبال این مطلب، بررسی از استراتژیهای بهینه‌سازی پرس و جو را ارائه می‌دهیم. دو تکنیک اصلی برای اجرای بهینه‌‌سازی پرس و جو وجود دارد. اولین تکنیک بر اساس قوانین ذهنی جهت ترتیب دادن عملیات‌ها در استراتژی اجرای پرس و جو می‌باشد. ذهن قانونی است که بخوبی در اکثر موارد عمل می‌کند ولی برای کار مناسب در هر مورد کنش تضمین نمی‌شود. قوانین عملیات‌ها را در درخت پرس وجو مجدداً ترتیب می‌دهند. دومین تکنیک شامل برآورد هزینه استراتژیهای اجرای متفاوت و انتخاب طرح اجرایی با پایین‌ترین هزینه برآورد است. دو تکنیک معمولاً در بهینه ساز پرس و جو (باهم ترکیب می‌شوند) بهم ملحق می‌گردند. بررسی مختصری از عوامل در نظر گرفته شده در طول بهینه‌سازی پرس و جو در RDBMS بازرگانی ORACLL= را ارائه می‌دهیم. در بخش بعدی نوعی بهینه‌سازی پرس و جوی معنایی را ارائه می‌دهد که در آن محدودیت‌های شناخته شده برای پرداختن به استراتژیهای اجرایی پرس و جوی کارآمد استفاده می‌شوند. 2 – ترجمه پرس و جوهای SQL به پرس و جوهای رابطه‌ای: در عمل، SQL زبان پرس وجویی است که در اکثر RDBMS ‌های بازرگانی استفاده می‌شود. پرس وجوی SQL ، ابتدا به عبارت جبری رابطه‌ای توسعه یافته معادل،‌ نمایانگر ساختار داروهای درخت پرس و جو، ترجمه می‌شود و بعد بهینه‌سازی می‌شود. پرس و جوهای SQL به بلوکهای پرس و جو تجزیه می‌شوند،‌ که واحدهای اساسی را تشکیل می‌دهند که می‌توانند به عملکردهای جبری ترجمه شوند و بهینه‌سازی شوند. بلوک پرس و جو شامل عبارت SELECT- FROM-WHERE تکی و بندهای Groop By و HAVING است چنانچه این‌ها بخشی از بلوک باشند. از اینرو،‌ پرس و جوهای تو در تو در پرس و جو بعنوان بلوکهای پرس و جوی مجزا شناسایی می‌شوند. چون SQL شامل عملکردهای گروهی، مثل MAX ،‌ COUNT,SUM می‌باشد، این عملگرها باید در پرس و جوی جبری توسعه یافته‌ای شامل شوند، همانطوریکه در بخش 705 توصیف شد. پرس و جوی SQL در رابطه EMPLOEE در تصویر 705 را در نظر بگیرید: این پرس و جو شامل، پرس و جوی فرعی تو در تو است و از اینرو به دو بلوک تجزیه می‌شود. بلوک درونی بدین صورت است: و بلوک بیرونی بدین صورت می باشد: که C نمایانگر نتیجه حاصله از بلوک درونی است. بلوک درونی به عبارت جبری رابطه‌ای توسعه یافته زیر ترجمه شده است: و بلوک بیرونی به عبارت زیر ترجمه شده است: بهینه‌ساز پرس و جو، طرح اجرایی را برای هر بلوک انتخاب می‌کند. ما باید اشاره کنیم به در مثال فوق، بلوک درونی نیاز به ارزیابی شدن دارد تنها زمانی که، حداکثرحقوقی که بعکار می‌رود که بعنوان ثابت C، توسط بلوک بیرونی استفاده می‌شود. ما اینرو پرس و جوی تودرتوی غیرمرتبط نامیدیم (در فصل 8). آن برای بهینه‌سازی پرس و جوهای تو در توی مرتبط پیچیده‌تر، خیلی سخت‌تر است، جایی که متغیر Tuple از بلوک بیرونی در بند WHERE در بلوک درونی ظاهر می‌شود. 1802- الگاریتم های انسانی برای اجرای عملیاتهای پرس و جو: RDBMS شامل الگاریتم‌هایی برای اجرای انواع مختلف عملیاتهای رابطه‌‌ای است که می‌توانند در استراتژی اجرای پرس و جو نمایان شوند، این عملیات‌ها شامل عملیاتهای جبری بیسیک (اصلی) و توسعه یافته مورد بحث در فصل 7 ، و در بسیاری موارد، الحاقاتی از این عملیات‌ها می‌باشد. برای هر یک از این عملیات ها یا الحاقی از عملیات‌ها، یک یا چند الگاریتم برای اجرای عملیات‌ها در دسترس قرار دارند. الگاریتم ممکن است فقط برای ساختارهای ذخیره خاص مسیرهای دستیابی بکار روند، در اینصورت ،‌ تنها در صورتی استفاده می‌شود که فایل های موجود در عملیات شامل این مسیرهای دستیابی هستند. در این بخش، ما به الگاریتم‌های نمونه بکار رفته برای اجرای SEKECT ، JOIN و دیگر عملیاتهای رابطه‌ای می‌پردازیم. ما بحث مرتب کردن خارجی را در بخش 180201 آغاز می‌کنیم که در قلب عملیاتهای رابطه‌ای قرار دارد که از استراتژیهای ادغام کردن به مرتب کردن استفاده می‌کند. بعد ما به الگاریتم‌هایی برای اجرای عملیات SELECT در بخش 180202 می‌پردازیم،‌ به عملیات ‌JOIN در بخش 180203 و عملیات PRIJECT و عملیاتهای مجموعه در بخش IE 1802 و عملیات‌های گروهی و جمعی در بخش 2 .2 . 18 می‌پردازیم. 1. 2. 18- مرتب کردن خارجی: مرتب کردن، یکی از الگاریتم‌های اولیه بکار رفته در پردازش پرس و جو است. برای مثال، ‌به هر وقت پرس و جوی SQL ، بعد ORDER BY را تعیین می‌کند، نتیجه پرس و جو باید مرتب گردد. مرتب کردن، مؤلفه کلیدی در الگاریتم‌های مرتب کردن- ادغام کردن (مرتب-ادغام) بکار رفته برای Join و عملیاتهای دیگر، دور الگاریتم‌های حذف کپی برای عملیات PROYECT است. ما روی بعضی از این الگاریتم‌ها در بخش‌ 3. 2. 18 و 4. 02 18 بحث خواهیم کرد. توجه کنید که مرتب کردن در صورتی که اجتناب می‌شود که شاخص مناسب برای امکان دسترسی مرتب شده به ثبت‌ها وجود دارد. مرتب کردن خارجی به الگاریتم‌های مرتب کردن اشاره می‌کند که برای فایل های بزرگ ثبت ‌های ذخیره شده روی دیسک مناسب هستند که در حافظه اصلی، مثل اکثر فایل های پایگاه اطلاعاتی تناسب نمی‌‌یابد. الگاریتم‌ مرتب کردن خارجی نمونه از استراتژی مرتب- ادغام استفاده می‌کند، که با مرتب کردن- فایل‌های فرعی کوچک بنام اجراها در فایل اصلی شروع می‌شود و بعد اجراها مرتب شده ادغام می‌شوند،‌‍ فایل‌های فرعی مرتب شده بزرگتری ایجاد می‌شوند که بترتیب ادغام می‌شوند. الگاریتم ادغام –مرتب،‌ مثل دیگر الگاریتم های پایگاه اطلاعاتی به فاضی بافر در حافظه اصلی نیاز دارد،‌ جایی که مرتب کردن واقعی و ادغام اجراها انجام می‌ شود. الگاریتم اصلی (سیبک) شرح داده شده در تصویر 1802 ، شامل دو مرحله است: (1) فاز یا مرحله مرتب کردن و (2) مرحله ادغام.در مرحله مرتب کردن، اجراهای فایلی که می‌تواند در فضای باز موجود تناسب یابد در حافظه اصلی خوانده می‌شوند و با استفاده از الگاریتم مرتب کردن داخلی مرتب می‌شود عقب دیسک بعنوان فایل‌های فرعی مرتب شده متوفی نوشته می‌شود. اندازه اجرا و تعداد اجراهای آغازین توسط تعداد بلوکهای فایل (b) و فضای بافر موجود (NB) بیان می‌شود. برای مثال اگر بلوکو اندازه قایل 1024=b بلوک باشد،‌ بعد یا 205 اجرای آغازین در هر اندازه 5 بلوک است. از اینرو، بعد از مرحله مرتب کردن، 205 اجرای مرتب شده بعنوان فایل‌های فرعی موقتی روی دیسک ذخیره می‌شوند. اجرای مرتب شده بعنوان فایل‌های فرعی موقتی و روی دیسک ذخیره می‌شوند. در مرحله ادغام شدن، اجراهای مرتب شده،‌ در طول یک یا چند گذر ادغام می‌‌شوند. درجه ادغام شدن تعداد اجراهایی است که می‌توانند با همدیگر در هر گذر ادغام شوند. در هر گذر، یک بلوک بافر، برای حفظ یک بلوک از هر اجرای ادغام شده نیاز می‌باشد، و یک بلوک برای تشکیل یک بلوک نتیجه ادغام لازم است . از اینرو،‌ کوچکتر از و است و تعداد گذرها، است. در مثالها، است. لذا،‌ 205 اجرای مرتب شده آغازین در 25 تا در پایان اولیه گذر ادغام می‌شود: که بعد به 12، بعد 4 بعد یک اجرا ادغام می‌شوند، که بدین معنی است که چهارگذر لازم می‌باشد. حداقل از 2،‌ عملکرد بدترین مورد الگاریتم را ارائه می‌دهد که بدین قرار است: اولین جمله، تعداد دسترسی‌های بلوک برای مرحله مرتب سازی را نشان می‌دهد، چون هر بلوک فایل دو برابر دسترسی می‌شود، یکبار برای خواندن در حافظه،‌ یکبار برای نوشتن ثبت‌ها دیسک بعد از مرتب کردن. دومین جمله، تعداد دسترسی‌های بلوک برای مرحله ادغام کردن را نشان می‌دهد، با فرض اینکه بدترین مورد از 2 وجود دارد. بطور کلی، ثبت وقایع در مبنای و عبارت برای تعداد دسترسی‌های بلوک نوین قرار می‌شود: تصویر 1802- شرح الگاریتم ادغام – مرتب کردن برای مرتب کردن خارجی: 2. 2. 18- اجرا و پیاده‌سازی عملیات SELECT : تعداد Option‌هایی ( انتخاب‌ها) برای اجرای عملیات SELECT وجود دارد، که بعضی به فایل دارای مسیرهای دستیابی خاص بستگی دارند و تنها برای انواع معین شرایط انتخاب بکار می‌رود. ما به الگاریتم‌هایی جهت اجرای SELECT در این بخش می‌پردازیم. ما از عملیاتهای زیر استفاده می‌کنیم که روی پایگاه اطلاعاتی رابطه‌ای در تصویر 507 مشخص شده و بحث ما را روشن می‌سازد: متدهای جستجو برای انتخاب ساده: تعدادی الگاریتم های جستجو برای انتخاب ثبت‌ها از فایل امکان‌پذیر می‌باشند،‌ چون ثبت‌‌های فایل نامیده می شوند، چون ثبت‌‌های فایل را برای جستجو و بازیابی ثبت‌هایی که شرایط انتخاب را برآورده می‌سازند، پویش می‌کنند. اگر الگاریتم جستجو شامل کاربرد شاخص باشد،‌ جستحوی شاخص پویش شاخص نامیده می‌شد. متدهای جستجوی زیر ( 1S تا s6 ) مثالهایی از الگاریتم‌های جستجو هستند که می‌توانند برای اجرای عملیات انتخاب بکار روند: - s1 : جستجوی خطی (روش برنامه‌سازی پر قدرت): بازیابی هر ثبت در فایل، و تست اینکه آیا مقادیر ویژگی آن،‌ شرط انتخاب را براورده می‌سازد یا خیر. - S2: جستجوی بنیادی (دودویی):‌ اگر شرط انخاب شامل قیاس تساوی روی ویژگی کلیدی باشد که روی آن فایل مرتب می‌شود، جستجوی بنیادی، که نسبت به جستجوی خطی کارآمدتر است، می‌تواند بکار رود. مثال OP1 است چنانچه ssn ، ‌ویژگی کلیدی با شاخص اولیه‌( یا کلید hash) باشد،‌ برای مثال، SNN-‘123456789’ در opt، شاخص اولیه یا کلید hosh) برای بازیابی ثبت استفاده می‌شود، توجه کنید که این شرط، ثبت تکی را بازیابی می‌کند. - S4: کاربرد شاخص اولیه برای بازیابی ثبت‌های متعدد: اگر شرط انتخاب شدن قیاس تساوی روی ویژگی غیر کلیدی با شاخص خدشه‌سازی باشد،‌ برای مثال در ، شاخص را برای بازیابی کل ثبت‌ها در برآورده ساختن شرط،‌ استفاده کنید. - S6: بکارگیری شاخص ثانویه (درخت ) روی قیاس تساوی: این متد جستجو می‌تواند برای بازیابی ثبت تکی بکار رود چنانچه فیلد نمایه‌سازی (شاخص‌سازی) کلید باشد یا برای بازیابی ثبت‌های متعدد بکار می‌رود چنانچه فیلد شاخص‌سازی کلید نباشد،‌ این می‌تواند برای مقایساتی شامل یا بکار رود. در بخش 3. 4. 18، ما به چگونگی توسعه فرمول‌هایی می‌پردازیم که هزینه‌دستیابی این متدهای جستجو را در اصطلاحات تعداد دستیابی‌های بلوک و زمان دستیابی برآورد می‌کند. Method S!برای هر فایلی استفاده می‌شود ولی تمام متدهای دیگر به داشتن مسیر دستیابی مناسب روی ویژگی‌بکار رفته در شرط انتخاب بستگی دارند. متدهای S4 و 6،‌ می‌توانند برای بازیابی ثبت‌ها در دامنه معین بکار روند برای مثال پرس و جوها شامل این شرط‌ها، پرس وجوهای دامنه نیامد به می‌شوند.متدهای جستجو برای انتخاب پیچیده: اگر شرط عملیات SELECT، شرط تقارنی و مرتبط باشد، در اینصورت اگر از چندین شرط ساده در ارتباط با ارتباط منطقی and مثل op4 فوق تشکیل شود، ‌DBM می‌تواند از متدهای اضافی زیر برای اجرای عملیات استفاده کند: S7: انتخاب تقارنی یا ارتباطی با استفاده از شاخص اختصاص:‌ اگر ویژگی شامل شده در هر شرط ساده متکی در شرط تقارنی، مسیر دستیابی داشته باشد که به کاربرد یکی از متدهای S2 تا S6 امکان عمل دهد، از آن شرط برای بازیابی ثبت‌های استفاده کنید و بعد کنترل کنید آیا هر ثبت بازیابی شد، شرایط ساده باقیمانده در شرط تقارنی را برآورده می‌کند یا خیر. S8 : انتخاب تقارنی (ارتباطی) با استفاده از شاخص مرکب: اگر دو یا چند ویژگی در شرایط تساوی در شرط تفاوتی شامل شدند و شاخص مرکب در فیلدهای مرکب وجود داشته باشد، برای مثال اگر شاخص روی کلید مرکب (ESSN, PNO) در فایل Works ON برای OPS ایجاد شده باشد، می توان از شاخص مستقیماً اشاره کرد.

در این تحقیق ما به تکنیک‌های بکار رفته توسط DMBS برای پردازش، بهینه‌سازی و اجرای پرس و جوهای سطح بالا می‌پردازیم. پرس و جوی بیان شده در زبان پرس‌و جوی سطح بالا مثل SQL ابتدا باید پویش و تجزیه . معتبر شود. پویشگر (اسکنر) علامت هر زبان، مثل لغات کلیدی SQL، اساس ویژگی، و اساس رابطه، را در متن پرس و جو شناسایی می‌کند،‌ در عوض تجربه کننده، ساختار دستوری پرس و جو را برای تعیین اینکه آیا بر طبق قوانین دستوری زبان پرس و جو تدوین می‌شود یا خیر، چک می‌کند. پرس و جو باید همچنین معتبر شود، با چک کردن اینکه تمام اسامی رابطه و ویژگی معتبر هستند و اسامی معنی‌دار در طرح پایگاه اطلاعاتی ویژها‌ی پرس و جو می‌شوند. نمونه داخلی پرس و جو ایجاد می‌شود،‌‌ که تحت عنوان ساختار داده‌های درختی بنام درخت پرس و جو می‌باشد. ارائه پرس و جو با استفاده از ساختار داده‌های گراف بنام گراف پرس و جو نیز امکان پذیر است. DOMS باید استراتژی اجرایی برای بازیابی نتیجه پرس و جو از فایل‌های پایگاه اطلاعاتی را هدایت کند. پرس و جو استراتژیهای اجرایی بسیاری دارد. و مرحلة انتخاب،‌ مورد مناسبی برای پردازش پرس وجو تحت عنوان بهینه‌سازی پرس و جو شناخته شده است. تصویر 1، مراحل مختلف پردازش پرس و جوی سطح بالا را نشان می‌دهد. قطعه بر نامه بهینه‌ساز پرس وجو، وظیفه ایجاد طرح اجرایی را بعهده دارد و ژنراتور (تولید کننده) که ، کد را برای اجرای آن طرح ایجاد می‌کند. پردازنده پایگاه اطلاعاتی زمان اجرا وظیفه اجرای که پرس و جو را بعهده دارد،‌ خواه در وضعیت کامپایل شده یا تفسیر شده جهت ایجاد نتیجه پرس و جو. اگر خطای زمان اجرا نتیجه شود،‌ پیام خطا توسط پایگاه اطلاعاتی زمان اجرا ایجاد می‌شود. اصطلاح بهینه‌سازی نام بی مسمایی است چون در بعضی موارد،‌ طرح اجرایی انتخاب شده، استراتژی بهینه نمی‌باشد، آن فقط استراتژی کارآمد معقول برای اجرای پرس و جو است. یافتن استراتژی بهینه، ضامن صرف زمان زیادی است، بجز برای ساده‌ترین پرس و جوها،‌ ممکن است به اطلاعاتی روی چگونگی اجرای فایل‌ها در فهرست‌های فایل‌ها، اطلاعاتی که ممکن است کاملاً در کاتالوگ DBMS در دسترس نباشد، نیاز باشد. از اینرو،‌ برنامه‌ریزی استراتژی اجرا ممکن است توصیف درست‌تری نسبت به بهینه‌سازی پرس و جو باشد. برای زبانهای پایگاه اطلاعاتی (دریایی) جهت‌یابی در سطح پایینتر در سیستم‌های قانونی، مثل شبکه DML شبکه‌ای یا MOML سلسله مراتبی،‌ برنامه نویس باید، استراتی اجرای پذیرش و جو را انتخاب کند ضمن اینکه برنامه پایگاه اطلاعاتی را می‌نویسد. اگر DBMS فقط زیان جهت‌یابی را ارائه دهد. فرصت و نیاز محدودی برای بهینه‌سازی پرس وجوی وسیع توسط DBMS وجود دارد، در عوض به برنامه نویس قابلیت انتخاب استراتژی اجرایی بهینه ارائه می‌شود. بعبارت دیگر، زبان پرس و جو در سطح بالا، مثل SQL برای DBMSهای رابطه‌ای یا OQL برای DBMS‌های مقصد،‌ در ماهیت تفریطی‌تر است. چون آنچه نتایج مورد نظر پرس و جو است بغیر از شناسایی جزئیات چگونگی بدست آمدن نتیجه،‌ را تعیین می‌کند. بهینه‌سازی پرس و جو برای پرس و جوهایی ضروی است که در زبان پرس و جوی سطح بالا تعیین می شوند. ما روی توصیف بهینه‌سازی پرس و جو در زمینه ROBMS تمرکز می‌کنیم چون بسیاری از تکنیک‌هایی که توصیف می‌ کنیم برای، برای ODBMSها تطبیق یافته‌اند. DBMS رابطه‌ای باید استراتژیهای اجرای پرس و جوی دیگری را ارزیابی کند و استراتژی بهینه یا کارآمد معقولی را انتخاب کند. هر DBMS ،‌ تعدادی الگاریتم دسترسی به پایگاه اطلاعاتی کلی دارد که علامتهای رابطه‌ای مثل SELECT یا JOIN یا ترکیبی از این عملیات ‌ها را اجرا می‌کند. تنها استراتژیهای اجرایی که می‌توانند توسط الگاریتم‌های دسترسی DBMS اجرا شوند و برای طراحی پایگاه اطلاعاتی فیزیکی ویژه و پرس و جوی خاص بکار روند،‌ می‌توانند توسط قطعه برنامه بهینه‌سازی پرس و جو در نظر گرفته شوند. ما با بحث کلی چگونگی ترجمه پرس و جوهای SQL به پرس و جوهای جبری رابطه‌ای و در بهینه‌شدن آنها کار را شروع می‌کنیم. بعد ما روی الگاریتم‌ها برای اجرای عملیات‌های رابطه‌ای در بخش 1802 بحث می‌کنیم. بدنبال این مطلب، بررسی از استراتژیهای بهینه‌سازی پرس و جو را ارائه می‌دهیم. دو تکنیک اصلی برای اجرای بهینه‌‌سازی پرس و جو وجود دارد. اولین تکنیک بر اساس قوانین ذهنی جهت ترتیب دادن عملیات‌ها در استراتژی اجرای پرس و جو می‌باشد. ذهن قانونی است که بخوبی در اکثر موارد عمل می‌کند ولی برای کار مناسب در هر مورد کنش تضمین نمی‌شود. قوانین عملیات‌ها را در درخت پرس وجو مجدداً ترتیب می‌دهند. دومین تکنیک شامل برآورد هزینه استراتژیهای اجرای متفاوت و انتخاب طرح اجرایی با پایین‌ترین هزینه برآورد است. دو تکنیک معمولاً در بهینه ساز پرس و جو (باهم ترکیب می‌شوند) بهم ملحق می‌گردند. بررسی مختصری از عوامل در نظر گرفته شده در طول بهینه‌سازی پرس و جو در RDBMS بازرگانی ORACLL= را ارائه می‌دهیم. در بخش بعدی نوعی بهینه‌سازی پرس و جوی معنایی را ارائه می‌دهد که در آن محدودیت‌های شناخته شده برای پرداختن به استراتژیهای اجرایی پرس و جوی کارآمد استفاده می‌شوند. 2 – ترجمه پرس و جوهای SQL به پرس و جوهای رابطه‌ای: در عمل، SQL زبان پرس وجویی است که در اکثر RDBMS ‌های بازرگانی استفاده می‌شود. پرس وجوی SQL ، ابتدا به عبارت جبری رابطه‌ای توسعه یافته معادل،‌ نمایانگر ساختار داروهای درخت پرس و جو، ترجمه می‌شود و بعد بهینه‌سازی می‌شود. پرس و جوهای SQL به بلوکهای پرس و جو تجزیه می‌شوند،‌ که واحدهای اساسی را تشکیل می‌دهند که می‌توانند به عملکردهای جبری ترجمه شوند و بهینه‌سازی شوند. بلوک پرس و جو شامل عبارت SELECT- FROM-WHERE تکی و بندهای Groop By و HAVING است چنانچه این‌ها بخشی از بلوک باشند. از اینرو،‌ پرس و جوهای تو در تو در پرس و جو بعنوان بلوکهای پرس و جوی مجزا شناسایی می‌شوند. چون SQL شامل عملکردهای گروهی، مثل MAX ،‌ COUNT,SUM می‌باشد، این عملگرها باید در پرس و جوی جبری توسعه یافته‌ای شامل شوند، همانطوریکه در بخش 705 توصیف شد. پرس و جوی SQL در رابطه EMPLOEE در تصویر 705 را در نظر بگیرید: این پرس و جو شامل، پرس و جوی فرعی تو در تو است و از اینرو به دو بلوک تجزیه می‌شود. بلوک درونی بدین صورت است: و بلوک بیرونی بدین صورت می باشد: که C نمایانگر نتیجه حاصله از بلوک درونی است. بلوک درونی به عبارت جبری رابطه‌ای توسعه یافته زیر ترجمه شده است: و بلوک بیرونی به عبارت زیر ترجمه شده است: بهینه‌ساز پرس و جو، طرح اجرایی را برای هر بلوک انتخاب می‌کند. ما باید اشاره کنیم به در مثال فوق، بلوک درونی نیاز به ارزیابی شدن دارد تنها زمانی که، حداکثرحقوقی که بعکار می‌رود که بعنوان ثابت C، توسط بلوک بیرونی استفاده می‌شود. ما اینرو پرس و جوی تودرتوی غیرمرتبط نامیدیم (در فصل 8). آن برای بهینه‌سازی پرس و جوهای تو در توی مرتبط پیچیده‌تر، خیلی سخت‌تر است، جایی که متغیر Tuple از بلوک بیرونی در بند WHERE در بلوک درونی ظاهر می‌شود. 1802- الگاریتم های انسانی برای اجرای عملیاتهای پرس و جو: RDBMS شامل الگاریتم‌هایی برای اجرای انواع مختلف عملیاتهای رابطه‌‌ای است که می‌توانند در استراتژی اجرای پرس و جو نمایان شوند، این عملیات‌ها شامل عملیاتهای جبری بیسیک (اصلی) و توسعه یافته مورد بحث در فصل 7 ، و در بسیاری موارد، الحاقاتی از این عملیات‌ها می‌باشد. برای هر یک از این عملیات ها یا الحاقی از عملیات‌ها، یک یا چند الگاریتم برای اجرای عملیات‌ها در دسترس قرار دارند. الگاریتم ممکن است فقط برای ساختارهای ذخیره خاص مسیرهای دستیابی بکار روند، در اینصورت ،‌ تنها در صورتی استفاده می‌شود که فایل های موجود در عملیات شامل این مسیرهای دستیابی هستند. در این بخش، ما به الگاریتم‌های نمونه بکار رفته برای اجرای SEKECT ، JOIN و دیگر عملیاتهای رابطه‌ای می‌پردازیم. ما بحث مرتب کردن خارجی را در بخش 180201 آغاز می‌کنیم که در قلب عملیاتهای رابطه‌ای قرار دارد که از استراتژیهای ادغام کردن به مرتب کردن استفاده می‌کند. بعد ما به الگاریتم‌هایی برای اجرای عملیات SELECT در بخش 180202 می‌پردازیم،‌ به عملیات ‌JOIN در بخش 180203 و عملیات PRIJECT و عملیاتهای مجموعه در بخش IE 1802 و عملیات‌های گروهی و جمعی در بخش 2 .2 . 18 می‌پردازیم. 1. 2. 18- مرتب کردن خارجی: مرتب کردن، یکی از الگاریتم‌های اولیه بکار رفته در پردازش پرس و جو است. برای مثال، ‌به هر وقت پرس و جوی SQL ، بعد ORDER BY را تعیین می‌کند، نتیجه پرس و جو باید مرتب گردد. مرتب کردن، مؤلفه کلیدی در الگاریتم‌های مرتب کردن- ادغام کردن (مرتب-ادغام) بکار رفته برای Join و عملیاتهای دیگر، دور الگاریتم‌های حذف کپی برای عملیات PROYECT است. ما روی بعضی از این الگاریتم‌ها در بخش‌ 3. 2. 18 و 4. 02 18 بحث خواهیم کرد. توجه کنید که مرتب کردن در صورتی که اجتناب می‌شود که شاخص مناسب برای امکان دسترسی مرتب شده به ثبت‌ها وجود دارد. مرتب کردن خارجی به الگاریتم‌های مرتب کردن اشاره می‌کند که برای فایل های بزرگ ثبت ‌های ذخیره شده روی دیسک مناسب هستند که در حافظه اصلی، مثل اکثر فایل های پایگاه اطلاعاتی تناسب نمی‌‌یابد. الگاریتم‌ مرتب کردن خارجی نمونه از استراتژی مرتب- ادغام استفاده می‌کند، که با مرتب کردن- فایل‌های فرعی کوچک بنام اجراها در فایل اصلی شروع می‌شود و بعد اجراها مرتب شده ادغام می‌شوند،‌‍ فایل‌های فرعی مرتب شده بزرگتری ایجاد می‌شوند که بترتیب ادغام می‌شوند. الگاریتم ادغام –مرتب،‌ مثل دیگر الگاریتم های پایگاه اطلاعاتی به فاضی بافر در حافظه اصلی نیاز دارد،‌ جایی که مرتب کردن واقعی و ادغام اجراها انجام می‌ شود. الگاریتم اصلی (سیبک) شرح داده شده در تصویر 1802 ، شامل دو مرحله است: (1) فاز یا مرحله مرتب کردن و (2) مرحله ادغام.در مرحله مرتب کردن، اجراهای فایلی که می‌تواند در فضای باز موجود تناسب یابد در حافظه اصلی خوانده می‌شوند و با استفاده از الگاریتم مرتب کردن داخلی مرتب می‌شود عقب دیسک بعنوان فایل‌های فرعی مرتب شده متوفی نوشته می‌شود. اندازه اجرا و تعداد اجراهای آغازین توسط تعداد بلوکهای فایل (b) و فضای بافر موجود (NB) بیان می‌شود. برای مثال اگر بلوکو اندازه قایل 1024=b بلوک باشد،‌ بعد یا 205 اجرای آغازین در هر اندازه 5 بلوک است. از اینرو، بعد از مرحله مرتب کردن، 205 اجرای مرتب شده بعنوان فایل‌های فرعی موقتی روی دیسک ذخیره می‌شوند. اجرای مرتب شده بعنوان فایل‌های فرعی موقتی و روی دیسک ذخیره می‌شوند. در مرحله ادغام شدن، اجراهای مرتب شده،‌ در طول یک یا چند گذر ادغام می‌‌شوند. درجه ادغام شدن تعداد اجراهایی است که می‌توانند با همدیگر در هر گذر ادغام شوند. در هر گذر، یک بلوک بافر، برای حفظ یک بلوک از هر اجرای ادغام شده نیاز می‌باشد، و یک بلوک برای تشکیل یک بلوک نتیجه ادغام لازم است . از اینرو،‌ کوچکتر از و است و تعداد گذرها، است. در مثالها، است. لذا،‌ 205 اجرای مرتب شده آغازین در 25 تا در پایان اولیه گذر ادغام می‌شود: که بعد به 12، بعد 4 بعد یک اجرا ادغام می‌شوند، که بدین معنی است که چهارگذر لازم می‌باشد. حداقل از 2،‌ عملکرد بدترین مورد الگاریتم را ارائه می‌دهد که بدین قرار است: اولین جمله، تعداد دسترسی‌های بلوک برای مرحله مرتب سازی را نشان می‌دهد، چون هر بلوک فایل دو برابر دسترسی می‌شود، یکبار برای خواندن در حافظه،‌ یکبار برای نوشتن ثبت‌ها دیسک بعد از مرتب کردن. دومین جمله، تعداد دسترسی‌های بلوک برای مرحله ادغام کردن را نشان می‌دهد، با فرض اینکه بدترین مورد از 2 وجود دارد. بطور کلی، ثبت وقایع در مبنای و عبارت برای تعداد دسترسی‌های بلوک نوین قرار می‌شود: تصویر 1802- شرح الگاریتم ادغام – مرتب کردن برای مرتب کردن خارجی: 2. 2. 18- اجرا و پیاده‌سازی عملیات SELECT : تعداد Option‌هایی ( انتخاب‌ها) برای اجرای عملیات SELECT وجود دارد، که بعضی به فایل دارای مسیرهای دستیابی خاص بستگی دارند و تنها برای انواع معین شرایط انتخاب بکار می‌رود. ما به الگاریتم‌هایی جهت اجرای SELECT در این بخش می‌پردازیم. ما از عملیاتهای زیر استفاده می‌کنیم که روی پایگاه اطلاعاتی رابطه‌ای در تصویر 507 مشخص شده و بحث ما را روشن می‌سازد: متدهای جستجو برای انتخاب ساده: تعدادی الگاریتم های جستجو برای انتخاب ثبت‌ها از فایل امکان‌پذیر می‌باشند،‌ چون ثبت‌‌های فایل نامیده می شوند، چون ثبت‌‌های فایل را برای جستجو و بازیابی ثبت‌هایی که شرایط انتخاب را برآورده می‌سازند، پویش می‌کنند. اگر الگاریتم جستجو شامل کاربرد شاخص باشد،‌ جستحوی شاخص پویش شاخص نامیده می‌شد. متدهای جستجوی زیر ( 1S تا s6 ) مثالهایی از الگاریتم‌های جستجو هستند که می‌توانند برای اجرای عملیات انتخاب بکار روند: - s1 : جستجوی خطی (روش برنامه‌سازی پر قدرت): بازیابی هر ثبت در فایل، و تست اینکه آیا مقادیر ویژگی آن،‌ شرط انتخاب را براورده می‌سازد یا خیر. - S2: جستجوی بنیادی (دودویی):‌ اگر شرط انخاب شامل قیاس تساوی روی ویژگی کلیدی باشد که روی آن فایل مرتب می‌شود، جستجوی بنیادی، که نسبت به جستجوی خطی کارآمدتر است، می‌تواند بکار رود. مثال OP1 است چنانچه ssn ، ‌ویژگی کلیدی با شاخص اولیه‌( یا کلید hash) باشد،‌ برای مثال، SNN-‘123456789’ در opt، شاخص اولیه یا کلید hosh) برای بازیابی ثبت استفاده می‌شود، توجه کنید که این شرط، ثبت تکی را بازیابی می‌کند. - S4: کاربرد شاخص اولیه برای بازیابی ثبت‌های متعدد: اگر شرط انتخاب شدن قیاس تساوی روی ویژگی غیر کلیدی با شاخص خدشه‌سازی باشد،‌ برای مثال در ، شاخص را برای بازیابی کل ثبت‌ها در برآورده ساختن شرط،‌ استفاده کنید. - S6: بکارگیری شاخص ثانویه (درخت ) روی قیاس تساوی: این متد جستجو می‌تواند برای بازیابی ثبت تکی بکار رود چنانچه فیلد نمایه‌سازی (شاخص‌سازی) کلید باشد یا برای بازیابی ثبت‌های متعدد بکار می‌رود چنانچه فیلد شاخص‌سازی کلید نباشد،‌ این می‌تواند برای مقایساتی شامل یا بکار رود. در بخش 3. 4. 18، ما به چگونگی توسعه فرمول‌هایی می‌پردازیم که هزینه‌دستیابی این متدهای جستجو را در اصطلاحات تعداد دستیابی‌های بلوک و زمان دستیابی برآورد می‌کند. Method S!برای هر فایلی استفاده می‌شود ولی تمام متدهای دیگر به داشتن مسیر دستیابی مناسب روی ویژگی‌بکار رفته در شرط انتخاب بستگی دارند. متدهای S4 و 6،‌ می‌توانند برای بازیابی ثبت‌ها در دامنه معین بکار روند برای مثال پرس و جوها شامل این شرط‌ها، پرس وجوهای دامنه نیامد به می‌شوند.متدهای جستجو برای انتخاب پیچیده: اگر شرط عملیات SELECT، شرط تقارنی و مرتبط باشد، در اینصورت اگر از چندین شرط ساده در ارتباط با ارتباط منطقی and مثل op4 فوق تشکیل شود، ‌DBM می‌تواند از متدهای اضافی زیر برای اجرای عملیات استفاده کند: S7: انتخاب تقارنی یا ارتباطی با استفاده از شاخص اختصاص:‌ اگر ویژگی شامل شده در هر شرط ساده متکی در شرط تقارنی، مسیر دستیابی داشته باشد که به کاربرد یکی از متدهای S2 تا S6 امکان عمل دهد، از آن شرط برای بازیابی ثبت‌های استفاده کنید و بعد کنترل کنید آیا هر ثبت بازیابی شد، شرایط ساده باقیمانده در شرط تقارنی را برآورده می‌کند یا خیر. S8 : انتخاب تقارنی (ارتباطی) با استفاده از شاخص مرکب: اگر دو یا چند ویژگی در شرایط تساوی در شرط تفاوتی شامل شدند و شاخص مرکب در فیلدهای مرکب وجود داشته باشد، برای مثال اگر شاخص روی کلید مرکب (ESSN, PNO) در فایل Works ON برای OPS ایجاد شده باشد، می توان از شاخص مستقیماً اشاره کرد.


دانلود فایل تحلیل الگوریتم شاخه و قید موازی آسنکرون

در این مقاله توضیحی درباره کامپیوترهای موازی می‌دهیم و بعد الگوریتمهای موازی را بررسی می‌کنیم ویژگیهای الگوریتم branch bound را بیان می‌کنیم و الگوریتمهای bb موازی را ارائه می‌دهیم
دسته بندی کامپیوتر و IT
بازدید ها 12
فرمت فایل doc
حجم فایل 28 کیلو بایت
تعداد صفحات فایل 32
تحلیل الگوریتم شاخه و قید موازی آسنکرون

فروشنده فایل

کد کاربری 1024
کاربر

تحلیل الگوریتم شاخه و قید موازی آسنکرون

1- خلاصه:

در این مقاله توضیحی درباره کامپیوترهای موازی می‌دهیم و بعد الگوریتمهای موازی را بررسی می‌کنیم. ویژگیهای الگوریتم branch & bound را بیان می‌کنیم و الگوریتمهای b&b موازی را ارائه می‌دهیم و دسته‌ای از الگوریتمهای b&b آسنکرون برای اجرا روی سیستم MIMD را توسعه می‌دهیم. سپس این الگوریتم را که توسط عناصر پردازشی ناهمگن اجرا شده است بررسی می‌کنیم.

نمادهای perfect parallel و achieved effiency را که بطور تجربی معیار مناسبی برای موازی‌سازی است معرفی می‌کنیم زیرا نمادهای قبلی speed up (تسریع) و efficiency (کارایی) توانایی کامل را برای اجرای واقعی الگوریتم موازی آسنکرون نداشتند. و نیز شرایی را فراهم کردیم که از آنومالیهایی که به جهت موازی‌سازی و آسنکرون بودن و یا عدم قطعیت باعث کاهش کارایی الگوریتم شده بود، جلوگیری کند.

2- معرفی:

همیشه نیاز به کامپیوترهای قدرتمند وجود داشته است. در مدل سنتی محاسبات، یک عنصر پردازشی منحصر تمام taskها را بصورت خطی (Seqventia) انجام میدهد. به جهت اجرای یک دستورالعمل داده بایستی از محل یک کامپیوتر به محل دیگری منتقل می‌شد، لذا نیاز هب کامپیوترهای قدرتمند اهمیت روز افزون پیدا کرد. یک مدل جدید از محاسبات توسعه داده شد، که در این مدل جدید چندین عنصر پردازشی در اجرای یک task واحد با هم همکاری می‌کنند. ایده اصل این مدل بر اساس تقسیم یک task به subtask‌های مستقل از یکدیگر است که می‌توانند هر کدام بصورت parallel (موازی) اجرا شوند. این نوع از کامپیوتر را کامپیوتر موازی گویند.

تا زمانیکه این امکان وجود داشته باشد که یک task را به زیر taskهایی تقسیم کنیم که اندازه بزرگترین زیر task همچنان به گونه‌ای باشد که باز هم بتوان آنرا کاهش داد و البته تا زمانیکه عناصر پردازشی کافی برای اجرای این sub task ها بطور موازی وجود داشته باشد، قدرت محاسبه یک کامپیوتر موازی نامحدود است. اما در عمل این دو شرط بطور کامل برقرار نمی‌شوند:

اولاً: این امکان وجود ندارد که هر taskی را بطور دلخواه به تعدادی زیر task‌های مستقل تقسیم کنیم. چون همواره تعدادی زیر task های وابسته وجود دارد که بایستی بطور خطی اجرا شوند. از اینرو زمان مورد نیاز برای اجرای یک task بطور موازی یک حد پایین دارد.

دوماً: هر کامپیوتر موازی که عملاً ساخته می‌شود شامل تعداد معینی عناصر پردازشی (Processing element) است. به محض آنکه تعداد taskها فراتر از تعداد عناصر پردازشی برود، بعضی از sub task ها بایستی بصورت خطی اجرا شوند و بعنوان یک فاکتور ثابت در تسریع کامپیوتر موازی تصور می‌شود.

الگوریتمهای B&B مسائل بهینه سازی گسسته را به روش تقسیم فضای حالت حل می‌کنند. در تمام این مقاله فرض بر این است که تمام مسائل بهینه سازی مسائل می‌نیمم کردن هستند و منظور از حل یک مسئله پیدا کردن یک حل ممکن با مقدار می‌نیمم است. اگر چندین حل وجود داشته باشد، مهم نیست کدامیک از آنها پیدا شده.

الگوریتم B&B یک مسئله را به زیر مسئله‌های کوچکتر بوسیله تقسیم فضای حالت به زیر فضاهای (Subspace) کوچکتر، تجزیه می‌کند. هر زیر مسئله تولید شده یا حل است و یا ثابت می‌شود که به حل بهینه برای مسئله اصلی (Original) نمی‌انجامد و حذف می‌شود. اگر برای یک زیر مسئله هیچ کدام از این دو امکان بلافاصله استنباط نشود، آن زیر مسئله به زیرمسئله‌های کوچکتر دوباره تجزیه می‌شود. این پروسه آنقدر ادامه پیدا می‌کند تا تمام زیر مسئله‌های تولید شده یا حل شوند یا حذف شوند.

در الگوریتمهای B&B کار انجام شده در حین اجرا به شدت تحت تاثیر نمونه مسئله خاص قرار می‌گیرد. بدون انجام دادن اجرای واقعی الگوریتم این امکان وجود ندارد که تخمین درستی از کار انجام شده بدست آورد. علاوه برآن، روشی که کار باید سازمان‌دهی شود بر روی کار انجام شده تاثیر می‌گذارد. هر گامی که در اجرای الگوریتم b&b ی موازی بطور موفقیت‌آمیزی انجام می‌شود و البته به دانشی است که تاکنون بدست آورده. لذا استفاده از استراتژی جستجوی متفاوت یا انشعاب دادن چندین زیر مسئله بطور موازی باعث بدست آمدن دانشی متفاوت می‌شود پس می‌توان با ترتیب متفاوتی زیر مسئله‌ها را انشعاب داد.

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

با این حال اگر قدرت محاسبه یک کامپیوتر موازی با اضافه کردن عناصر پردازشی اضافه افزایش پیدا کند. اجرای الگوریتم b&b بطور آشکاری تغییر می‌کند (به عبارت دیگر ترتیبی که در آن زیر برنامه‌ها انشعاب پیدا می‌کنند تغییر می‌کند). بنابراین حل مسائل بهینه‌سازی گسسته سرسع بوسیله یک کامپیوتر موازی نه تنها باعث افزایش قدرت محاسبه کامپیوتر موازی شده است بلکه باعث گسترش الگوریتمهای موازی نیز گشته است.

3- کامپیوترهای موازی (Parallel computers):

یکی از مدلهای اصلی محاسبات Control drivenmodel است، در این مدل کاربر باید صریحاً ترتیب انجام عملیات را مشخص کند و آن دسته از عملیاتی که باید به طور موازی اجرا شوند را تعیین کند. این مدل مستقل از عناصر پردازش به صورت زیر تقسیم‌بندی می‌شود:

- کامپیوترهای SISD، که یک عنصر پردازشی وجود دارد و توان انجام فقط یک عمل را در یک زمان دارد.

- کامپیوترهای MIMD، دارای چندین عنصر پردازشی هستند که بطور موازی دستورالعمل‌های متفاوت را روی دیتاهای متفاوت انجام می‌دهند.

- کامپیوترهای SIMD، همه عناصر پردازشی‌شان یک دستور یکسان را در یک زمان بر روی داده‌های متفاوتی انجام می‌دهند. اگر چه امکان پنهان کردن عناصر پردازشی وجود دارد. عنصر پردازشی پنهان شده نتیجه عملی را که انجام داده ذخیره نمی‌کند.

سیستمهای SIMD بر اساس نحوه ارتباط و اتصال عناصر پردازشی به یکدیگر خود به بخشهایی تقسیم می‌شوند: اگر تمام عناصر پردازشی به یکدیگر متصل باشند و از طریق یک حافظه مشترک ارتباط داشته باشند، به آن tightly coupled system گویند.

و اگر عناصر پردازش حافظه مشترک نداشته باشند اما از طریق شبکه‌ای بهم متصل باشند و بروش message passing با هم ارتباط داشته باشند، به آن loosely coupled system گویند.

حافظه مشترک در tightly coupled system ها هم نقطه قوت و هم نقطه ضعف این سیستمها است. امکان به اشتراک گذاشتن راحت و سریع اطلاعات بین عناصر پردازشی مختلف را فراهم می‌کند. ارتباط به عملیات ساده read و wite روی حافظه مشترک خلاصه می‌شود و هر عنصر پردازشی مستقیماً با دیگر عناصر پردازشی ارتباط برقرار می‌کند. با این حال، اگر تعداد عناصر پردازشی متصل به حافظه مشترک افزایش یابد، حافظه مشترک تبدیل به گلوگاه (Bottleneck) می‌شود.

بنابراین تعداد عناصر پردازشی در یک سیستم tightly coupled محدود است. به جهت اینکه تمام عناصر پردازشی بایستی به ان حافظه مشترک متصل باشند، این سیستمها بصورت کامل از پیش ساخته هستند و امکان اضافه کردن عناصر پردازش به سیستم وجود ندارد.

از طرف دیگر، ارتباط در یک سیستم loosely coupled کند و آهسته است. تبادل پیامها نیاز به زمانی بیش از زمان لازم برای نوشتن یا خواندن از یک حافظه مشترک دارد. این امکان هم وجود دارد که یک عنصر پردازش مستقیماً به عنصر پردازش دیگر که قصد ارتباط دارد متصل نباشد.

در مقابل compactness بودن سیستمهای tightly coupled ، عناصر پردازشی در یک سیستم loosely coupled می‌توانند در تمام نقاط توزیع شوند. لذا فاصله فیزیکی که یک پیام باید طی کند، بیشتر می‌شود. به جهت این حقیقت که عناصر پردازشی برای ارتباط در یک شبکه از یک پروتکل استفاده می‌کنند، lossely coupled system می‌توانند شامل انواع مختلفی از عناصر پردازشی باشند. امکان اضافه کردن عناصر پردازشی اضافه‌تری به سیستم وجود دارد. در حالت کلی عناصر پردازشی خودشان یک کامپیوتر کاملی هستند.

مثالی از سیستمهای loosely coupled، Distributed Processing utilities Package است که بعداُ به تفضیل درباره آنها توضیح می‌دهیم.

4- الگوریتمهای موازی (Parallel Algorithm):

یک الگوریتم موازی شامل sub taskهایی است که باید انجام شود. بعضی از این sub taskها بصورت موازی اجرا می‌شوند، اما گاهی sub taskهایی هم وجود دارد که باید بصورت خطی اجرا شوند. اجرای هر sub task توسط یک پروسس مجزا انجام می‌شود. از ویژگیهای مهم یک الگوریتم موازی نحوه محاوره این پروسسها، سنکرون بودن و قطعی بودن الگوریتم است. دو پروسس با یکدیگر محاوره (interact) دارند، اگر خروجی یکی از آندو پروسس ورودی دیگری باشد. نحوه محاوره دو پروسس می‌تواند بطور کامل مشخص شده باشد یا نباشد. اگر مشخص شده باشد، این دو پروسس فقط زمانی می‌توانند ارتباط داشته باشند که هر دو مایل به انجام ارتباط باشند. اگر گیرنده هنوز آماده ارتباط نباشد، فرستنده نمی‌تواند اقدامی انجام دهد.

در حین اجرای یک الگوریتم سنکرون تمام پروسسها باید قبل از محاوره با یکدیگر همزمان شوند. سنکرون شدن در اینجا یعنی قبل از آغاز subtask جدید، آنها باید منتظر کامل شدن عمل دیگر پروسسها باشند. وقتی یک الگوریتم آسنکرون اجرا می‌شود، پروسسها لازم نیست که منتظر یکدیگر شوند تا taskهایشان را تمام کنند. البته این امکان وجود دارد که یک الگوریتم آسنکرون تا حدی سنکرون شود.

یک الگوریتم قطعی است اگر هر بار که الگوریتم بر روی ورودی مشابه اجرا شود، نتیجه اجرا یکسان باشد. یعنی دستورالعملهای مشابه به ترتیب مشابه انجام شود. بنابراین اجراهای متوالی از یک الگوریتم همیشه خروجی یکسان دارد در حالیکه در الگوریتمهای غیر قطعی یک تصمیم یکسان خروجیهای متفاوتی دارد. مثلاً خروجی یک تصمیم ممکن است و البته به فاکتورهای محیطی معینی باشد که توسط الگوریتم کنترل نمی‌شود. از اینرو اجراهای پی‌در پی یک الگوریتم غیر قطعی، خروجی‌های متفاوت تولید می‌کند.


دانلود فایل آشنایی با چند سخت افزار کامپیوتر

امروزه کامپیوتر در موارد متعددی به خدمت گرفته می شود برخی از تجهیزات موجود در منازل ، دارای نوعی خاصی از ریز پردازنده می باشند حتی اتومبیل های جدید نیز دارای نوعی کامپیوتر خاص می باشند
دسته بندی کامپیوتر و IT
بازدید ها 4
فرمت فایل doc
حجم فایل 262 کیلو بایت
تعداد صفحات فایل 55
آشنایی با چند سخت افزار کامپیوتر

فروشنده فایل

کد کاربری 1024
کاربر

آشنایی با چند سخت افزار کامپیوتر


چکیده

امروزه کامپیوتر در موارد متعددی به خدمت گرفته می شود . برخی از تجهیزات موجود در منازل ، دارای نوعی خاصی از ریز پردازنده می باشند . حتی اتومبیل های جدید نیز دارای نوعی کامپیوتر خاص می باشند . کامپیوترهای شخصی ، اولین تصویر از انواع کامپیوترهائی است که در ذهن هر شخص نقش پیدا می کند. که به شرح چند نمونه از سخت افزار کامپیوتر می پردازیم.

1- حافظة RAM (Random Access Memory)

RAM نوعی حافظه است که کامپیوتر از آن برای ذخیره برنامه ها و داده ها هنگام پردازش استفاده می کند. اطلاعات اکثر انواع RAMها هنگام خاموش کردن کامپیوتر پاک می شود. در حال حاضر شرکت ها در تلاش هستند RAMهایی تولید کنند که با خاموش شدن کامپیوترهم، داده ها را در خود نگه دارند (با استفاده از نانوتیوب­های کربنی و اثر تونل های مغناطیسی).

امروزه بعضی از انواع RAMها قادرند اشتباهات تصادفی را تصحیح کنند. در سال های اخیر chipهایی ساخته شده است که تا GB10 حافظه دارند، همینطور chipهایی که اندازه آن ها در حدود 18/0 میکرون می باشد .

انواع RAM (نرخهای عملکرد با رنگ سبز نشان داده شده­اند):

  • SDRAM (Synchronous Dynamic RAM) ® 100 MHz
  • DDR SDRAM (Double-Data-Rate SDRAM)
  • DDR1 (or DDR) ® 100-200 MHz
  • DDR2 ® 200-400 MHz
  • DDR3 ® 400-800 MHz
  • RDRAM (Rambus Dynamic RAM) ® 300-800 MHz

2- Modem

3- دیسک سخت

4- Cpu

فصل اول : حافظه RAM

حافظهRAM (Random Access Memory) شناخته ترین نوع حافظه در دنیای کامپیوتر است . روش دستیابی به این نوع از حافظه ها تصادفی است . چون می توان به هر سلول حافظه مستقیما" دستیابی پیدا کرد . در مقابل حافظه های RAM ، حافظه هایSAM (Serial Access Memory) وجود دارند. حافظه های SAM اطلاعات را در مجموعه ای از سلول های حافظه ذخیره و صرفا" امکان دستیابی به آنها بصورت ترتیبی وجود خواهد داشت. ( نظیر نوار کاست ) در صورتیکه داده مورد نظر در محل جاری نباشد هر یک از سلول های حافظه به ترتیب بررسی شده تا داده مورد نظر پیدا گردد. حافظه های SAM در مواردیکه پردازش داده ها الزاما" بصورت ترتیبی خواهد بود مفید می باشند ( نظیر حافظه موجود بر روی کارت های گرافیک ). داده های ذخیره شده در حافظه RAM با هر اولویت دلخواه قابل دستیابی خواهند بود.

مبانی حافظه های RAM

حافظه RAM ، یک تراشه مدار مجتمع (IC) بوده که از میلیون ها ترانزیستور و خازن تشکیل شده است .در اغلب حافظه ها با استفاده و بکارگیری یک خازن و یک ترانزیستور می توان یک سلول را ایجاد کرد. سلول فوق قادر به نگهداری یک بیت داده خواهد بود. خازن اطلاعات مربوط به بیت را که یک و یا صفر است ، در خود نگهداری خواهد کرد.عملکرد ترانزیستور مشابه یک سوییچ بوده که امکان کنترل مدارات موجود بر روی تراشه حافظه را بمنظور خواندن مقدار ذخیره شده در خازن و یا تغییر وضعیت مربوط به آن ، فراهم می نماید.خازن مشابه یک ظرف ( سطل) بوده که قادر به نگهداری الکترون ها است . بمنظور ذخیره سازی مقدار" یک" در حافظه، ظرف فوق می بایست از الکترونها پر گردد. برای ذخیره سازی مقدار صفر، می بایست ظرف فوق خالی گردد.مسئله مهم در رابطه با خازن، نشت اطلاعات است ( وجود سوراخ در ظرف ) بدین ترتیب پس از گذشت چندین میلی ثانیه یک ظرف مملو از الکترون تخلیه می گردد. بنابراین بمنظور اینکه حافظه بصورت پویا اطلاعات خود را نگهداری نماید ، می بایست پردازنده و یا " کنترل کننده حافظه " قبل از تخلیه شدن خازن، مکلف به شارژ مجدد آن بمنظور نگهداری مقدار "یک" باشند.بدین منظور کنترل کننده حافظه اطلاعات حافظه را خوانده و مجددا" اطلاعات را بازنویسی می نماید.عملیات فوق (Refresh)، هزاران مرتبه در یک ثانیه تکرار خواهد شد.علت نامگذاری DRAM بدین دلیل است که این نوع حافظه ها مجبور به بازخوانی اطلاعات بصورت پویا خواهند بود. فرآیند تکراری " بازخوانی / بازنویسی اطلاعات" در این نوع حافظه ها باعث می شود که زمان تلف و سرعت حافظه کند گردد.


سلول های حافظه بر روی یک تراشه سیلیکون و بصورت آرائه ای مشتمل از ستون ها ( خطوط بیت ) و سطرها ( خطوط کلمات) تشکیل می گردند. نقطه تلاقی یک سطر و ستون بیانگر آدرس سلول حافظه است .

حافظه های DRAM با ارسال یک شارژ به ستون مورد نظر باعث فعال شدن ترانزیستور در هر بیت ستون، خواهند شد.در زمان نوشتن خطوط سطر شامل وضعیتی خواهند شد که خازن می بایست به آن وضغیت تبدیل گردد. در زمان خواندن Sense-amplifier ، سطح شارژ موجود در خازن را اندازه گیری می نماید. در صورتیکه سطح فوق بیش از پنجاه درصد باشد مقدار "یک" خوانده شده و در غیراینصورت مقدار "صفر" خوانده خواهد شد. مدت زمان انجام عملیات فوق بسیار کوتاه بوده و بر حسب نانوثانیه ( یک میلیاردم ثانیه ) اندازه گیری می گردد. تراشه حافظه ای که دارای سرعت 70 نانوثانیه است ، 70 نانو ثانیه طول خواهد کشید تا عملیات خواندن و بازنویسی هر سلول را انجام دهد.

سلول های حافظه در صورتیکه از روش هائی بمنظور اخذ اطلاعات موجود در سلول ها استفاده ننمایند، بتنهائی فاقد ارزش خواهند بود. بنابراین لازم است سلول های حافظه دارای یک زیرساخت کامل حمایتی از مدارات خاص دیگر باشند.مدارات فوق عملیات زیر را انجام خواهند داد :

-- مشخص نمودن هر سطر و ستون (انتخاب آدرس سطر و انتخاب آدرس ستون)

-- نگهداری وضعیت بازخوانی و باز نویسی داده ها ( شمارنده )

-- خواندن و برگرداندن سیگنال از یک سلول ( Sense amplifier)

-- اعلام خبر به یک سلول که می بایست شارژ گردد و یا ضرورتی به شارژ وجود ندارد ( Write enable)

سایر عملیات مربوط به "کنترل کننده حافظه" شامل مواردی نظیر : مشخص نمودن نوع سرعت ، میزان حافظه و بررسی خطاء است .

حافظه های SRAM دارای یک تکنولوژی کاملا" متفاوت می باشند. در این نوع از حافظه ها از فلیپ فلاپ برای ذخیره سازی هر بیت حافظه استفاده می گردد. یک فلیپ فلاپ برای یک سلول حافظه، از چهار تا شش ترانزیستور استفاده می کند . حافظه های SRAM نیازمند بازخوانی / بازنویسی اطلاعات نخواهند بود، بنابراین سرعت این نوع از حافظه ها بمراتب از حافظه های DRAM بیشتر است .با توجه به اینکه حافظه های SRAM از بخش های متعددی تشکیل می گردد، فضای استفاده شده آنها بر روی یک تراشه بمراتب بیشتر از یک سلول حافظه از نوع DRAM خواهد بود. در چنین مواردی میزان حافظه بر روی یک تراشه کاهش پیدا کرده و همین امر می تواند باعث افزایش قیمت این نوع از حافظه ها گردد. بنابراین حافظه های SRAM سریع و گران و حافظه های DRAM ارزان و کند می باشند . با توجه به موضوع فوق ، از حافظه های SRAM بمنظور افزایش سرعت پردازنده ( استفاده از (Cacheو از حافظه های DRAM برای فضای حافظه RAM در کامپیوتر استفاده می گردد.


دانلود فایل فرهنگ لغت با استفاده از نر‌م‌افزار Visual Basic

امروزه علم کامپیوتر پیشرفت شگرفی در کلیة‌ علوم و صنایع به وجود آورده است و با پیشرفت این علوم مسائل مربوط به کامپیوتر نیز پیشرفت شگرفی داشته است از جمله می‌توان به پیشرفت در بانک‌های اطلاعاتی اشاره نمود که از جدید‌ترین و مهمترین آن‌ها می‌توان به Visual basic اشاره نمود در اینجا سعی شده است مطالبی در جهت معرفی این نرم‌افزار تقدیم گردد
دسته بندی برنامه نویسی
بازدید ها 7
فرمت فایل doc
حجم فایل 45 کیلو بایت
تعداد صفحات فایل 55
فرهنگ لغت با استفاده از نر‌م‌افزار Visual Basic

فروشنده فایل

کد کاربری 1024
کاربر

فرهنگ لغت با استفاده از نر‌م‌افزار Visual Basic

مقدمه:

امروزه علم کامپیوتر پیشرفت شگرفی در کلیة‌ علوم و صنایع به وجود آورده است و با پیشرفت این علوم مسائل مربوط به کامپیوتر نیز پیشرفت شگرفی داشته است از جمله می‌توان به پیشرفت در بانک‌های اطلاعاتی اشاره نمود که از جدید‌ترین و مهمترین آن‌ها می‌توان به Visual basic اشاره نمود. در اینجا سعی شده است مطالبی در جهت معرفی این نرم‌افزار تقدیم گردد.

فصل اول

نرم افزار ویژوال بیسیک

برنامه‌نویسی با Visual Basic ( آخرین ویرایش Visual Basic ) می‌تواند کار پرزحمت و خسته کننده برنامه‌نویسی را به یک تفریح تبدیل کند.

محبوبیت Visual Basic، علاوه بر گرافیکی و ساده بودن، از آنجا ناشی می‌شود که زبانی اینترپرتری ( interpreter ) و کامپایلری ( Compiler ) است. دیدکه زبانهای اینترپرتری از نظر سهول تولید و توسعه برنامه چقدر به برنامه‌نویسی کمک می‌کنند و از طرف دیگر برنامه‌های کامپایل شده بنحو چشمگیری سریعتر از برنامه‌های اینترپرتری هستند. با ترکیب این دو ویژگی Visual Basic را روانه بازارکرد، بسیاری از منتقدان شکست آن و مرگ خاندان بیسیک را پیش‌بینی می‌کردند. این مخالفان می‌گفتند که بیسیک اساساً یک زبان جدی نیست و ساختار آن ( برخلاف C و پاسکال ) به درد محیط ویندوز نمی‌خورد اما میکروسافت با ارائه Visual Basic درسهای زیادی به جامعه برنامه‌نویسان داد:

- زبانی مانند بیسیک می‌تواند قابل فهم و قوی باشد.

- Visual Basic بسته به نیاز برنامه‌نویس می‌تواند کامپایلری یا اینتر پرتری باشد.

- و Visual Basicنه تنها فراموش نشد بلکه تبدیل به محبوبترین زبان ‌برنامه‌نویسی دنیا شد.

- Visual Basic در چندین مدل مختلف عرضه می‌شود.

- مدل فوق‌العاده : محیط برنامه نویسی مناسب کارهای شبکه و برنامه‌های توزیع شده است.

- مدل آموزشی: مجموعه‌ای از ابزارهای استاندارد و هر آنچه برای شروع برنامه‌نویسی بدان نیاز دارید.

- مدل استودیوی ویژوال در این مدل Visual Basic به همراه چند زبان ویژوال دیگر

( مانند ویژوال ++ ) و ( ویژوال ++J ) در یک بسته نرم افزاری گرد آمده‌اند تا آموختن آنها متضمن کمترین زحمت برای برنامه‌نویسان باشد.

ویژوال بیسیک و فرآیند برنامه‌نویسی

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

1- درباره برنامه تصمیم بگیرید و یک طرح کلی بریزید.

2- قسمت‌های ظاهری برنامه ( پنجره‌ها، منوهاو هر آنچه را که کاربر می‌بینید ) را بوجود آوریم.

3- با نوشتن کد عناصر برنامه را به هم مرتبط کنیم.

4- برنامه‌ را تست کرده و اشکالات آن ( که در قاموس برنامه‌نویسی به آنها باگ گفته می‌شود ) را یافته و برطرف کنیم.

5- برنامه تست شده را کامپایل کنیم.

خصلت بصری برنامه‌نویسی Visual Basic مراحل طراحی برنامه را بسیار ساده و شیرین کرده است چون جای قلم و کاغذ می‌توانیم مراحل اول و دوم را روی صفحه کامپیوتر انجام دهید.

اولین برنامه:

اگر با سایر برنامه‌های ویندوز کار کرده باشیم احتمالاً با جادوگر ( wizard )ها آشنائید، جادوگر برنامه‌ای است که قدم به قدم شما را در فرآیند طراحی همراهی کرده و در پایان الگویی شایسته از آنچه در ذهن دارید برایتان خواهد ساخت. Visual Basic هم برای ایجاد برنامه‌ها دارای جادوگر برنامه ( application wizard ) است. جادوگر برنامه در پایان اسکلت یک برنامه کامل و عملیاتی را برایتان می‌سازد اما اکثر برنامه‌نویسان ترجیح می‌دهند خودشان برنامه را از صفر شروع کنند، بسیاری نیز از کپی برنامه‌های قدیمیشان استفاده کرده و با تغییر دادن در آن برنامه ‌جدیدی می‌سازند. بعد از آن که کمی Visual Basic تجربه کسب کردید احتمالاً ترجیح خواهیم داد از جادوگر برنامه استفاده نکنیم.

برای شروع کار در این قسمت برنامه‌ای با استفاده از جادوگر برنامه ایجاد خواهیم کرد. این برنامه کار چندانی انجام نمی‌دهد و فقط یک پوسته ( Shell ) است. بلافاصله بعد از شروع Visual Basic جادوگر برنامه آماده انجام وظیفه‌ است، گفتگوی پروژه جدید

( New project ) اولین چیزی است که بعد از اجرای Visual Basic خواهیم دید.

- New اجازه می‌دهد تا جادوگرهای مختلفی را به کمک احضار کرده یا برنامه را از صفر شروع کنیم.

- Existing اجازه می‌دهد تا پروژه‌های موجود را باز کنیم.

- Recent لیستی از آخرین پروژه‌های باز شده یا ایجاد شده را نشان می‌دهد.

برای بازکردن گفتگوی پروژه جدید از File New Project هم می‌توانیم استفاده کنیم، اما در این حالت برگه‌های Existing و Recent را نخواهیم دید.

پروژه ( Project ) عبارتست از مجموعه فایل‌های یک برنامه‌ هر برنامه می‌تواند چندین فایل داشته باشید. برخی از این فایل‌ها حاوی کد برنامه، برخی دیگر حاوی مشخصات ظاهری برنامه و برخی دیگر ( احتمالاً ) شامل کدهای ارتباط برنامه با سیستم عامل یا برنامه‌های دیگر هستند. اگر میل ندارید هر بار در شروع Visual Basic گفتگوی پروژه جدید را ببینید، می‌توانیم جعبه یک Don’t show this dialog box in the future را علامت بزنید.

اگر روی آیکون Visual Basic Application Wizard ( در برگه New ) کلیک کنیم جادوگر برنامه کارش را شروع خواهد کرد. صفحه اول جادوگر فقط یک خوشامد گویی و اعلام شروع بکار جادوگر است. مانند تمام جادوگرها وقتی کارتان در یک صفحه تمام شد، باید با کلیک کردن دکمه Next به صفحه بعد بروید.

گزینه‌های این صفحه عبارتند از:

- واسطه چندی سندی ( MID ): این نوع واسط اجازه می‌دهد تا در آن واحد چندین سند ( document ) را در برنامه باز کنیم در حقیقت بااین واسط می‌توانیم با چندین مجموعه داده در پنجره‌های جداگانه کار کنیم. به هر پنجره سند پنجره فرزند

( Child window ) گفته می‌شود.

- واسط تک سندی ( SDI ) : با این واسط در هر لحظه فقط یک پنجره سند می‌تواند باز باشد. احتمالاً اکثر برنامه‌هایی که خواهیم نوشت از این نوعند.

- سبک کاوشگر: با این واسط می‌توانیم برنامه‌هایی شبیه کاوشگر ویندوز

( windows Explorer ) بوجود آوریم که در آن سرفصل مطالب در قاب سمت چپ و توضیحات سرفصل انتخاب شده در قاب سمت راست نمایش داده می‌شوند.

با انتخاب هر گزینه نمونه کوچکی از ظاهر برنامه در قسمت چپ ـ بالای صفحه جادوگر ظاهر خواهد شد. برنامه اول ما از واسط SDI استفاده می‌کند. در همین صفحه نام پروژه را هم می‌توانیم انتخاب کنیم از آنجایی که نام پیش فرض، Project ، چندان با مسما نیست، آن را به First App تغییر داده ( توجه داشته باشیم که فاصله در نام پروژه مجاز نیست) و Next را کلیک کنیم تا صفحه بعدی جادوگر ظاهر شود.

جادوگر برنامه‌ منوهایی را این صفحه انتخاب کنیم به برنامه اضافه خواهد کرد. این منوها در میان اغلب برنامه‌های ویندوز یکسان هستند، منوهایی مانند و File و Edit .

آیتم‌های موجود در هر منو هم قابل انتخاب است، مثلاً، منوی File میتواند دارای آیتم New و Open و Close باشد. علامت & در کنار هر حرف نشان دهنده کلید دسترسی سریع آن آیتم است، به عبارت دیگر، &New در هنگام اجرای برنامه به شکل New ظاهر خواهد شد و کاربر می‌تواند با زدن همزمان کلیدهای N + Alt آن آیتم را فعال کند. اما اگر بخواهیم خود علامت & را در منو داشته باشیم، چه باید بکنیم؟ ساده است، & را دوبار پشت سر هم بنویسید، مثلاً، A&&B هنگام اجرای برنامه به صورت A&B ظاهر خواهد شد. برای مثال ما، منوها را همان گونه که هست رها کرده و با یک کلیک کردن Next به صفحه بعد جادوگر بروید.

صفحه بعد محل انتخاب میله‌های ابزار ( toolbars ) برنامه است. همانطور که می‌بینید، جادوگر برنامه در این زمینه هم سنگ تمام گذاشته و تقریباً هر آنچه را که احتمالاً نیاز دارید در اختیارتان گذاشته است. قاب سمت چپ حاوی تمام ابزارهای موجود و قاب سمت راست حاوی ابزارهای انتخاب شده برای برنامه هستند. با کلیک کردن Next این صفحه را هم پشت سر بگذارید.

صفحه بعد جادوگر محل انتخاب منابع برنامه ( مانند فایل‌های چند زبانی، برای بین المللی کردن برنامه‌ها ) است. در این برنامه به هیچ منبع خارجی نیاز نداریم بنابراین گزینه‌No را علامت زده و به صفحه بعد بروید. صفحه بعد صفحه اتصال به اینترنت است. اگر در این قسمت گزینه Yes ، را انتخاب کنیم، جادو گر برنامه یک کاوشگر اینترنت تمام عیار به برنامه‌تان اضافه خواهد کرد. این کاوشگر درست مانند سایر کاوشگرها می‌تواند شما را از دورن برنامه به هر صفحه‌وبی که مایلند متصل کند. بدون انتخاب گزینه اتصال به اینترنت به صفحه بعد بروید.

در صفحه بعد می‌توانیم گزینه‌هایی ذیل را به برنامه اضافه کنیم:

- صفحه معرفی برنامه ( Splash screen ): صفحه‌ای که در ابتدای شروع برنامه‌ برای مدتی کوتاه ظاهر شده و آن را معرفی می‌کند.

- گفتگوی ورود ( Login dialog ): محلی برای گرفتن نام کاربر، کلمه عبور و سایر اقدامات امنیتی.

- گفتگوی گزینه‌ها ( Options dialog ): صفحه‌ای چند برگه‌ای که کاربر می‌تواند برنامه را از آنجا تنظیم کند.

- پنجره About : گفتگویی که با کلیک کردن Help About ظاهر شده و توضیحاتی درباره برنامه خواهد داد.

در قسمت From Template ، چندین فرم ( که در قاموس Visual Basic همان پنجره است ) دیگر ، از جمله OBDC login ( برای ارتباط با پایگاه‌های داده پیشرفته ) و

Tip of the Dey ( نکته روز )، وجود دارد که می‌توانیم از آنها استفاده کنیم.

به این برنامه فقط پنجره About اضافه کرده و Next را کلیک کنیم. در صفحه ارتباط با پایگاه‌های داده بدون هیچ اقدامی فقط Next را کلیک کنیم در پایان هم با کلیک کردن Finish ایجاد برنامه را به پایان برسانید، با کلیک کردن دکمه View Report می‌توانیم خلاصه‌ای از پروژه ایجاد شده را مشاهده کنیم.

تا این جا بدون‌ آنکه چیزی از برنامه‌نویسی Visual Basic بدانید، یک برنامه تمام و کمال و عملیاتی بوجود آورده‌اید که حتی در همین حالت هم می‌توانیم آن را اجرا کنیم، با کلیک کردن آیتم Run Start ( یا معادل آن، F5 ) برنامه را اجرا کنیم.

این برنامه که با کمک جادوگر برنامه آن را ساختید کار چندانی انجام نمی‌دهد و فقط یک پوسته است.

- برنامه یک پنجره استاندارد دارد که اندازه آن را می‌توان تغییر داد، نام پروژه، Firt App، در میله عنوان ( title bar ) برنامه دیده می‌شود.

- برنامه یک میله وضعیت ( Status bar ) دارد که تاریخ و وقت را نشان می‌دهد. این میله را می‌توان از منوی View ظاهر ساخت و یا پنهان کرد.

- منوهای برنامه نیاز به کدنویسی دارند، ولی برخی از آنها ( مانند Help About ) بدون هیچگونه کوششی سیستم ( از قبیل مقدار حافظه و منابع آزاد سیستم ) ارائه خواهد کرد.

- برنامه یک میله ابزار استاندارد دارد، که از منوی View می‌توان آن را ظاهر یا ضنهان کرد.

- جادوگر برنامه یک الگوی کامل برای شما بوجود آورده که می توانیم آن را مطابق نیاز خود تغییر دهید. فعلاً با کلیک کردن File Exit برنامه را ببندید، در پاسخ به ذخیره کردن پروژه پاسخ NO بدهیم، چون هر وقت خواستید جادوگر برنامه دوباره آنرا برایتان خواهد ساخت.

برنامه‌نویسی رویدادگر

این یک برنامه ویندوز است، این پنجره دارای انواع متعددی از کنترل‌های ویندوز است، کنترلهایی از قبلی دکمه فرمان ( Command button )، جعبه چک ( Check box ) و میله لغزنده ( Scroll bar ) ویندوز دارای کنترل‌های متعددی است که می‌توانیم در محیط برنامه‌نویسی Visual Basic از آنها استفاده کرده و به برنامه اضافه کنیم.

برنامه‌های ویندوز ذاتاً به چنین کنترل‌هایی نیاز دارند چون برخلاف برنامه‌های قدیمی باید به رویداد ( Event ) ها پاسخ دهند. رویداد می‌تواند از این کنترل‌ها یا هر جای دیگر

( کی‌بورد یا ماوس یا ساعت سیستم ) منشاء بگیرد. رویدادها می‌توانند بدون هیچ ترتیبی اتفاق افتند، چون از قبل نمی‌توان پیش‌بینی کرد که کاربر چگونه با کنترل‌ها کار خواهد کرد. برای مقابله با چنین وضعیتی باید خود را برای برنامه‌نویسی رویدادگرا ( event driven ) آماده کنیم. اساساً هر عملی که در حین اجرای برنامه روی دهد یک رویداد است.

ویندوز یک سیستم عامل چند وظیفگی ( multitasking ) است یعنی در آن واحد چندین برنامه می‌توانند در کنار هم اجرا شوند و در این حالت ویندوز باید رویدادهای هر برنامه را به همان برنامه بفرستد. هنگام برنامه‌نویسی، تعدادی از کنترل‌های Visual Basic را روی یک فرم ( پنجره‌) قرار می‌دهید و خاص ظاهری آن را مطابق نیاز خود تنظیم می‌کنیم. هر کنترل دارای ویژگی‌های ظاهری و عملکردی متعددی است که خاصیت ( Property ) نامیده می‌شود. در حقیقت این خواص هستند که کنترلها را از یکدیگر متمایز می‌کند. تمام این کنترلها از نوع دکمه فرمان هستند که فقط خواص متفاوتی برای آنهاست شده است.

هر کنترل به رویدادهای خاص خود پاسخ می‌دهد، مثلاً دکمه فرمان دارای رویداد کلیک شدن است که هرگاه کاربر روی دکمه کلیک کند ( یا Enter را بزند ) روی خواهد داد و برنامه‌نویس باید برای این رویداد کد لازم را بنویسد. برنامه‌های رویدادگرا برخلاف برنامه‌های سابق که لیست بلند بالایی از کد بودند، از قطعات کوچک کد که هر قطعه مجری یک رویداد خاص است، تشکیل می‌شوند. این قطعات کد در حالت عادی هیچ کاری نمی‌کنند و منتظر بروز رویداد مربوط به خود هستند تا وارد صحنه شوند و وظیفه‌شان را انجام دهند.

پنجره پروژه جدید

هرگاه Visual Basic شروع می‌شود پنجره‌ای بنام New Project ( پروژه جدید) ظاهر میشود و به شما امکان می‌دهد تا نوع برنامه خود را انتخاب کنیم.

اغلب برنامه‌های که خواهیم نوشت از نوع Standard EXE خواهند بود. می‌گوید که اگر برنامه را کامپایل کنیم یک فایل exe تولید خواهد شد.

برنامه‌های Standard exe را به صورت اینترترپری هم می‌توان اجرا کرد.

میله ابزار

میله ابزار Visual Basic درست زیر منوی آن قرار دارد و خود از چهار میله ابزار کوچکتر تشکیل شده است.

- دیباگ. این میله ابزار هنگام دیباگ کردن برنامه‌ها فعال خواهد شد.

- ادیت. از این میله ابزار برای ادیت کردن کدهای Visual Basic استفاده خواهیم کرد.

- ادیتورفرم. با این میله ابزار می‌توانیم اشیا روی فرم را کنترل کنیم.

- استاندارد. میله ابزار پیش فرض Visual Basic که در ذیل منو دیده می‌شود. برای ظاهر یا پنهان کردن این میله‌ها می‌توانیم از View Toolbars استفاده کنیم. هر میله ابزار دارای دکمه‌های متعددی است که هر یک راه میانبری برای اجرای فرمانهای Visual Basic هستند و زحمت جستجو در منوهای Visual Basic را از دوش شما بر‌می‌دارند. در تمام این میله‌های ابزار چند دکمه وجود دارد که بطور مرتب مورد استفاده قرار می‌گیرند و بسیار مفید هستند. البته هیچ‌نیازی نیست که میله‌های ابزار Visual Basic می‌توانند چسبیده (‌dicked ) یا شناور (‌float ) باشند، یعنی هر میله ابزار می‌تواند بطور ثابت به سایر قسمتهای محیط Visual Basic بچسبد یا بصورت شناور ( در هر قسمت که برنامه نویس میل داشته باشد) قرار گیرد.

- جعبه ابزار

- پنجره جعبه ابزار ( Toolbox ) با میله ابزار تفاوت دارد. این پنجره که به آن مختصراَ جعبه ابزار گفته می‌شود، انباره کنترل‌های Visual Basic است.

مسئله جاب در مورد توجه جعبه ابزار این است که این جعبه هرگز خالی نمی‌شود. یعنی هر چقدر که از ابزارهای آن استفاده کنیم باز هم این جعبه ابزار می‌تواند ابزارهای دیگری در اختیارتان بگذارد. در حقیقت جعبه ابزارها را خلق کرده و روی فرم قرار می‌دهد.

پنجره فرم

پنجره فرم جائیست که کنترل‌های برنامه روی آن قرار می‌گیرند. البته یک برنامه می‌تواند چندین فرم داشته باشد (‌MDI ) که می‌توانیم آنها را در محیط برنامه‌نویسی Visual Basic همزمان مشاهده کنیم البته در هر لحظه فقط یکی از فرمها فعالی است که رنگ میله عنوان این فرم با سایر فرمها تفاوت خواهد داشت.

پنجره طراحی فرم

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

پنجره پروژه

پنجره پروژه محل کنترل اجزا برنامه است. برنامه می‌تواند دارای چندین فایل باشد و تعداد این فایل‌ها می‌تواند به سرعت بالا رود. پنجره پروژه برای مدیریت این فایل‌هاست و می‌توانیم به کمک آن هر فایل را به ناحیه کاری Visual Basic آورده و روی آن کار کنیم. ( به پنجره پروژه، کاوشگر پروژه هم می‌گویند.)

پنجره پروژه برای نمایش اجزا برنامه و روابط آنها از ساختار درختی استفاده می‌کند. در Visual Basic به هر شی ( از قبیل فرم یا مدول) می‌توان نامی داد و هر آیتم با نامی دیگر روی دیسک ذخیره خواهد شد. نام فایل با نام پروژه متفاوت است( نام پروژه، بر خلاف نام فایل، پسوند ندارد) و در پرانتز نمایش داده می‌شود بدین ترتییب در پنجره پروژه علاوه برنام پروژه سه دکمه دیده می‌شود:

- دکمه Visual Basic: که با آن می‌توانیم پنجره کد آیتم انتخاب شده را مشاهده کنیم.

- دکمه Visual object: که با آن می‌توانیم ساختار نمایش پنجره پروژه را تغییر دهید.

- دکمه Visual folders: که با آن می‌توانیم ساختار نمایش پنجره پروژه را تغییر دهید.

در پنجره پروژه اشیا مختلفی می‌توانند ظاهر شوند:

- پروژه . یک برنامه می‌تواند دارای چندین پروژه باشد ( مانند کنترلهای Activex ) پسوند نام فایل پروژه همیشه VBP است.

- فرم. هر پروژه می‌تواند فرم‌های متعددی داشته باشد. پسوند نام فایل فرم‌ها همیشه FRM است.

- مدول. کدها و روتین‌های عمومی برنامه، که به هیچ کنترل خاصی مربوط نیستند. باید در مدول ( module ) ها قرار داده شوند. از یک مدول به دلیل خصلت عمومی آنها می‌توان در برنامه‌های متعددی استفاده کرد. پسوند نام فایل مدول‌ها BAS است.

- مدول کلاس. محل تعریف کدهایی که اشیا پروژه را تعریف می‌کنند پسوند نام فایل مدولهای کلاس ( Class module ) همیشه CLS است.

- کنترل کاربر. کنترل‌های اکتیو‌ایکس اضافه شده به پروژه فایل‌های اکتیوایکس دارای پسوند OCX هستند.

- سند کاربر. سند کاربر سندی است که مشخصات پروژه را توضیح دهید. پسوند نام فایل سند کاربر ( User document ) همیشه DOB است.

- صفحه خواص. صفحات خواص برای تعریف کنترل‌های پروژه بکار می‌روند ( مانند صفحاتی که در گفتگوهای برگه‌دار دیده می‌شود.) پسوند نام فایل صفحه خواص ( Property page ) همیشه ح ش ل است.

- پنجره پروژه می تواند دارای اشیا دیگری از قبیل فایل‌های منبع(‌Resource file ) و سندهای دیگر باشد.

« فهرست مطالب »

عنوان

صفحه

مقدمه........................................................................................................... 1

فصل اول :..................................................................................................

- معرفی نرم افزار ویژوال بیسیک............................................................ 2

- ویژوال بیسیک و فرآیند برنامه نویسی ................................................ 3

- آشنایی با application wizard ........................................................ 4

- واسط چند سندی................................................................................... 6

- واسط تک سندی.................................................................................... 6

- سبک کاوشگر......................................................................................... 6

- صفحه معرفی برنامه( Splash screen ).............................................. 8

- گفتگوی ورود ( Login dialog )....................................................... 8

- گفتگوی گزینه‌ها ( Option dialog )................................................. 8

- پنجره about.......................................................................................... 9

- برنامه‌نویسی رویدادگرا.......................................................................... 10

- پنجرة پروژه جدید................................................................................. 12

- میله ابزار ................................................................................................ 12

- جعبه ابزار................................................................................................ 13

- پنجره فرم................................................................................................ 14

- پنجره طراحی فرم................................................................................... 14

- پنجره پروژه............................................................................................. 14

- پنجره خواص.......................................................................................... 17

- کمک....................................................................................................... 17

- پیشوندهای استاندارد برای اشیاء Visual basic................................ 18

- کمک محلی............................................................................................ 19

- پشتیبانی................................................................................................... 20

- با محیط ویژوال بیسیک مأنوس شوید.................................................. 21

- ساختن فرم.............................................................................................. 23

- با نوشتن کد برنامه را کامل کنید......................................................... 26

- مروری بر کنترل‌ها ................................................................................ 28

- خواص مشترک کنترلهای ویژوال بیسیک............................................ 30

فصل دوم :..................................................................................................

- بانک اطلاعاتی........................................................................................ 31

- استفاده از بانکهای اطلاعاتی................................................................. 31

- اجزاء تشکیل دهنده بانک اطلاعاتی..................................................... 31

- بانک اطلاعاتی ویژوال بیسیک.............................................................. 32

- ساختار بانک اطلاعاتی........................................................................... 32

- جدول در بانک اطلاعاتی...................................................................... 33

- ایجاد یک بانک اطلاعاتی...................................................................... 33

- چاپ ساختار بانک اطلاعاتی................................................................. 36

- ورود اطلاعات به بانک اطلاعاتی.......................................................... 36

- تعیین رکورد جاری................................................................................ 36

- مرتب‌سازی رکوردها.............................................................................. 37

- ویرایش محتویات رکورد....................................................................... 38

- حذف رکورد.......................................................................................... 38

- جستجوی رکورد.................................................................................... 38

طراحی فرم.................................................................................................. 38

- مفهوم ایندکس در بانک اطلاعاتی........................................................ 41

- برنامه‌نویسی و بانک اطلاعاتی.............................................................. 42

- اشیای بانک اطلاعات............................................................................. 42

- شیData................................................................................................ 43

- شی Database ..................................................................................... 43

- باز کردن بانک اطلاعاتی........................................................................ 46

- حذف ایندکس........................................................................................ 47

- نمایش محتویلات بانک اطلاعاتی......................................................... 47

- افزودن ایندکس به جدول...................................................................... 49

- فعال کردن یک فایل ایندکس در جدول.............................................. 50

منابع............................................................................................................. 55


فهرست جداول

عنوان

صفحه

جدول 1-2:بعضی از خواص مهم شیء Data در بانک اطلاعاتی........ 44

جدول 2-2: خواص شیء Database ................................................... 45

جدول 3-2: متدهای شیء Database.................................................... 46



دانلود فایل حافظه مجازی

در این تمرین شما با صورتها و شکلهای مختلفی از مکانیزم حافظه مجازی در ویندوز NT آشنایی پیدا خواهید کرد علی‌رغم اغلب دیگر سیستمهای عامل، ویندوز NT یک API ساده و روشنی را برای اداره کردن بعضی شکلها و صورتهای حافظه مجازی تهیه می‌کند
دسته بندی کامپیوتر و IT
بازدید ها 3
فرمت فایل doc
حجم فایل 3531 کیلو بایت
تعداد صفحات فایل 16
حافظه مجازی

فروشنده فایل

کد کاربری 1024
کاربر

حافظة مجازی

حافظه مجازی‌
در این تمرین شما با صورتها و شکلهای مختلفی از مکانیزم حافظه مجازی در ویندوز NT آشنایی پیدا خواهید کرد علی‌رغم اغلب دیگر سیستمهای عامل، ویندوز NT یک API ساده و روشنی را برای اداره کردن بعضی شکلها و صورتهای حافظه مجازی تهیه می‌کند(معمولاً حافظه مجازی بطور کامل توسط برنامه نویس کاربردی‌اش روشن و واضح می‌گردد) در این تمرین شما در موارد زیر اطلاعاتی یاد خواهید گرفت:
سازماندهی سیستم حافظه مجازی ویندوز NT
چگونه فضای حافظه مجازی خود را کنترل کنید؟
چگونه یک وسیله آگاه کننده و گزارش دهنده بنویسید؟
جزئیات GlobalMemory Status , GetsystemInfo – VirtualQuery – VirtualUnlock – VirtualLock – VirtueaFree – VirtualAlloc
معرفی
حافظه مجازی صفحه‌بندی یا Paging Virtual Memory در بسیاری از سیستمهای عامل امروزی بکار گرفته می‌شود. در یک سیستم صفحه‌بندی شده، هر فرآیندی یک فضای آدرس دهی مجازی خاص خود دارد که برای ارجاع دیگر اشیاء بکار گرفته می‌شود که معمولاً محتوای یک محل یا موقعیتی از حافظه است بخشی از فضای آدرس دهی مجازی توسط ویراستار خطی ( Link editor ) تعریف می‌شوند وقتی که آن یک تصویر قابل اجرایی بوجود می‌آورد که در واقع فایل اجرایی یا EXE است. تعداد باقیمانده از فضای آدرس‌دهی می‌تواند بطور پویا در زمان اجرا توسط روشهایی که در این تمرین توضیح داده خواهد شد تعر یف شود. بعد از اینکه قسمت پایدار و ثابت از فضای آدرس‌دهی مجازی ایجاد شد در حافظه ثانویه ذخیره خواهد شد ( معمولاً در بخش یا Partition از وسیله ذخیره‌سازی کهPaging disk نام دارد ). به منظور عملی‌تر شدن شما می‌توانید Paging disk را مشابه فایل در نظر بگیرید.
در یک کامپیوتر معمول و مرسوم پردازنده تنها می‌تواند دستورات را واکشی کند یا داده‌هایی را که در حافظه اولیه یا قابل اجرا ( که معمولاً RAM خوانده می‌شوند. ) واقع شده‌اند را بارگذاری کند. حافظه اولیه در مقایسه با حافظه ثانویه کوچکتر و سریعتر است. حافظه اولیه خیلی گرانتر از حافظه ثانویه است بنابراین بطور معمول در زمره اجزای با ارزش‌تر از نظر حجم اما کوچکتر از حافظه‌های ثانویه قرار دارند.
اغلب کامپیوترها حافظه اولیه کافی حتی برای ذخیره فضای آدرس‌دهی مجازی کامل یک فرآیند را هم ندارند بنابراین در یک زمان تعداد زیادی فضا روی حافظه ثانویه برای ذخیره فضای آدرس‌دهی مجازی تعداد زیادی فرآیند وجود خواهد داشت. حافظه اولیه همچنین خیلی سریعتر از حافظه ثانویه می‌باشد. پردازنده می‌تواند یک بایت را در 2 سیکل پردازنده در حافظه اولیه بخواند یا بنویسید. اما همین عمل هزاران سیکل از پروسسور را برای نوشتن یا خواندن اطلاعات در حافظه ثانویه نیازمند است.
برای نگهداری فضای حافظه اولیه یک سیستم حافظه مجازی صفحه‌بندی شده در هر زمان داده شده تنها بخشی از فضای آدرس‌دهی مجازی تعداد مختلفی از فرآیند‌ها را بارگذاری یا ( Load ) می‌کند. همانطور که Thread ها در فضای آدرس‌دهی فرآیندهایشان اجرا می‌شوندبخشی از فضای آدرس‌دهی مجازی که در حال حاضر در حال استفاده است در حافظه اولیه بارگذاری می‌شود و در همان حال دیگر بخشهای فضای آدرس‌دهی در حافظه ثانویه قرار گرفته‌اند. زمانی که فرآیندی به بخشی از فضای آدرس‌دهی مجازی دیگر نیاز ندارد ( حداقل برای مدتی ) از آن بخش در حافظه ثانویه کپی گرفته می‌شود. این به موقعیتی از حافظه اولیه که مورد استفاده برای ذخیره بخشی از فضای آدرس‌دهی مجازی قرار گرفته بود این اجازه را می‌دهد که برای ذخیره بخش دیگری از فضای آدرس‌دهی مجازی در زمان دیگری بکار گرفته شود.
در یک سیستم حافظه مجازی سنجش در کارایی بوسیله کپی کردن یک بلوک از حافظه در حافظه اولیه یا بازگرداندن به حافظه ثانویه در زمانی که یک جابه‌جایی بین دوسطح از سلسله مرتبه حافظ مورد نیاز و ضروری باشد بدست می‌آید کارایی از این واقعیت بدست می‌آید که عملیات ورودی و خروجی حافظه ثانویه وابسته به بلوکها می‌باشد. این یعنی اگر تنها یک کلمه ( Word ) اطلاعات از حافظه ثانویه مورد نیاز باشد همه بلوک باید خوانده شود تابه آن کلمه برسیم. همچنین نسبت به مکانی که همه آن بلوک در حافظه اولیه قرار داد هم احساس است تا زمانی که باید خوانده شود تابه لغت گم شده برسیم.
فواید دیگری در بارگذاری همه بلوک‌ها نسبت به فقط یک کلمه وجود دارد. هنگامی که یک نخ یا Thread به مکانی چون I رجوع می‌کند احتمال زیادی وجود دارد که بخواهد به مکان I+1 در آینده نزدیک رجوع کند به این مفهوم محلیت یا Locality گفته می‌شود. یک حافظه مجازی صفحه‌بندی شده بلوکهای با اندازة ثابت را بارگذاری می‌کند و یا برمی‌دارد که به آنها صفحه یا Page گفته می‌شود که در زمانی که داده‌ها و اطلاعات را بین حافظه اولیه و ثانویه در جهت رفت و برگشت حرکت می‌دهد انجام می‌گیرد. حد و مرز صفحه‌ها یا Page ها کاملاً توسط برنامه‌نویس مشخص و واضح می‌شود. شکل 1 عملیات یک سیستم حافظه مجازی صفحه‌بندی شده بطور عام را خلاصه می‌کند.
زمانی که یک نخ یا Thread به آدرس مجازی K رجوع می‌کند ( مرحله 1 در شکل ) حافظه مجازی ابتدا تعدا صفحات یا Page هایی که آدرس مجازی K را در بردارد تعیین می‌کند (مرحله2 در شکل ) اگر صفحه در حال حاضر در حافظه اولیه بارگذاری شده بود و موجود بود ( مرحله 3 در شکل ) سیستم حافظه مجازی آدرس مجازی را به آدرس فیزیکی متناظر با آن موقعیت در حافظه اولیه که همان Page Frame است تبدیل می‌کند ( جایی که صفحه هدف در آن واقع شده است. ) اگر صفحه در همان زمان که به آن رجوع شده بارگذاری نشده بود اجرای ‏Thread عادی دچار وقفه می‌شود تا زمانی که مدیریت حافظه صفحه مقصد را در Page Frame بارگذاری کند به محضی که آن صفحه بارگذاری شد اجرا ادامه پیدا خواهد کرد در مرحله 4 رجوع به آدرس مجازی K دوباره با آدرس فیزیکی در حافظه اولیه تعیین می‌گردد ( مکانی که موقعیت مجازی K در حال حاضر آنجا بارگذاری شده است. )

حافظه مجازی‌
در این تمرین شما با صورتها و شکلهای مختلفی از مکانیزم حافظه مجازی در ویندوز NT آشنایی پیدا خواهید کرد علی‌رغم اغلب دیگر سیستمهای عامل، ویندوز NT یک API ساده و روشنی را برای اداره کردن بعضی شکلها و صورتهای حافظه مجازی تهیه می‌کند(معمولاً حافظه مجازی بطور کامل توسط برنامه نویس کاربردی‌اش روشن و واضح می‌گردد) در این تمرین شما در موارد زیر اطلاعاتی یاد خواهید گرفت:  سازماندهی سیستم حافظه مجازی ویندوز NT چگونه فضای حافظه مجازی خود را کنترل کنید؟ چگونه یک وسیله آگاه کننده و گزارش دهنده بنویسید؟ جزئیات GlobalMemory Status , GetsystemInfo – VirtualQuery – VirtualUnlock – VirtualLock – VirtueaFree – VirtualAlloc معرفی
حافظه مجازی صفحه‌بندی یا Paging Virtual Memory در بسیاری از سیستمهای عامل امروزی بکار گرفته می‌شود. در یک سیستم صفحه‌بندی شده، هر فرآیندی یک فضای آدرس دهی مجازی خاص خود دارد که برای ارجاع دیگر اشیاء بکار گرفته می‌شود که معمولاً محتوای یک محل یا موقعیتی از حافظه است بخشی از فضای آدرس دهی مجازی توسط ویراستار خطی ( Link editor ) تعریف می‌شوند وقتی که آن یک تصویر قابل اجرایی بوجود می‌آورد که در واقع فایل اجرایی یا EXE است. تعداد باقیمانده از فضای آدرس‌دهی می‌تواند بطور پویا در زمان اجرا توسط روشهایی که در این تمرین توضیح داده خواهد شد تعر یف شود. بعد از اینکه قسمت پایدار و ثابت از فضای آدرس‌دهی مجازی ایجاد شد در حافظه ثانویه ذخیره خواهد شد ( معمولاً در بخش یا Partition از وسیله ذخیره‌سازی کهPaging disk نام دارد ). به منظور عملی‌تر شدن شما می‌توانید Paging disk را مشابه فایل در نظر بگیرید. در یک کامپیوتر معمول و مرسوم پردازنده تنها می‌تواند دستورات را واکشی کند یا داده‌هایی را که در حافظه اولیه یا قابل اجرا ( که معمولاً RAM خوانده می‌شوند. ) واقع شده‌اند را بارگذاری کند. حافظه اولیه در مقایسه با حافظه ثانویه کوچکتر و سریعتر است. حافظه اولیه خیلی گرانتر از حافظه ثانویه است بنابراین بطور معمول در زمره اجزای با ارزش‌تر از نظر حجم اما کوچکتر از حافظه‌های ثانویه قرار دارند. اغلب کامپیوترها حافظه اولیه کافی حتی برای ذخیره فضای آدرس‌دهی مجازی کامل یک فرآیند را هم ندارند بنابراین در یک زمان تعداد زیادی فضا روی حافظه ثانویه برای ذخیره فضای آدرس‌دهی مجازی تعداد زیادی فرآیند وجود خواهد داشت. حافظه اولیه همچنین خیلی سریعتر از حافظه ثانویه می‌باشد. پردازنده می‌تواند یک بایت را در 2 سیکل پردازنده در حافظه اولیه بخواند یا بنویسید. اما همین عمل هزاران سیکل از پروسسور را برای نوشتن یا خواندن اطلاعات در حافظه ثانویه نیازمند است.برای نگهداری فضای حافظه اولیه یک سیستم حافظه مجازی صفحه‌بندی شده در هر زمان داده شده تنها بخشی از فضای آدرس‌دهی مجازی تعداد مختلفی از فرآیند‌ها را بارگذاری یا ( Load ) می‌کند. همانطور که Thread ها در فضای آدرس‌دهی فرآیندهایشان اجرا می‌شوندبخشی از فضای آدرس‌دهی مجازی که در حال حاضر در حال استفاده است در حافظه اولیه بارگذاری می‌شود و در همان حال دیگر بخشهای فضای آدرس‌دهی در حافظه ثانویه قرار گرفته‌اند. زمانی که فرآیندی به بخشی از فضای آدرس‌دهی مجازی دیگر نیاز ندارد ( حداقل برای مدتی ) از آن بخش در حافظه ثانویه کپی گرفته می‌شود. این به موقعیتی از حافظه اولیه که مورد استفاده برای ذخیره بخشی از فضای آدرس‌دهی مجازی قرار گرفته بود این اجازه را می‌دهد که برای ذخیره بخش دیگری از فضای آدرس‌دهی مجازی در زمان دیگری بکار گرفته شود. در یک سیستم حافظه مجازی سنجش در کارایی بوسیله کپی کردن یک بلوک از حافظه در حافظه اولیه یا بازگرداندن به حافظه ثانویه در زمانی که یک جابه‌جایی بین دوسطح از سلسله مرتبه حافظ مورد نیاز و ضروری باشد بدست می‌آید کارایی از این واقعیت بدست می‌آید که عملیات ورودی و خروجی حافظه ثانویه وابسته به بلوکها می‌باشد. این یعنی اگر تنها یک کلمه ( Word ) اطلاعات از حافظه ثانویه مورد نیاز باشد همه بلوک باید خوانده شود تابه آن کلمه برسیم. همچنین نسبت به مکانی که همه آن بلوک در حافظه اولیه قرار داد هم احساس است تا زمانی که باید خوانده شود تابه لغت گم شده برسیم. فواید دیگری در بارگذاری همه بلوک‌ها نسبت به فقط یک کلمه وجود دارد. هنگامی که یک نخ یا Thread به مکانی چون I رجوع می‌کند احتمال زیادی وجود دارد که بخواهد به مکان I+1 در آینده نزدیک رجوع کند به این مفهوم محلیت یا Locality گفته می‌شود. یک حافظه مجازی صفحه‌بندی شده بلوکهای با اندازة ثابت را بارگذاری می‌کند و یا برمی‌دارد که به آنها صفحه یا Page گفته می‌شود که در زمانی که داده‌ها و اطلاعات را بین حافظه اولیه و ثانویه در جهت رفت و برگشت حرکت می‌دهد انجام می‌گیرد. حد و مرز صفحه‌ها یا Page ها کاملاً توسط برنامه‌نویس مشخص و واضح می‌شود. شکل 1 عملیات یک سیستم حافظه مجازی صفحه‌بندی شده بطور عام را خلاصه می‌کند.زمانی که یک نخ یا Thread به آدرس مجازی K رجوع می‌کند ( مرحله 1 در شکل ) حافظه مجازی ابتدا تعدا صفحات یا Page هایی که آدرس مجازی K را در بردارد تعیین می‌کند (مرحله2 در شکل ) اگر صفحه در حال حاضر در حافظه اولیه بارگذاری شده بود و موجود بود ( مرحله 3 در شکل ) سیستم حافظه مجازی آدرس مجازی را به آدرس فیزیکی متناظر با آن موقعیت در حافظه اولیه که همان Page Frame است تبدیل می‌کند ( جایی که صفحه هدف در آن واقع شده است. ) اگر صفحه در همان زمان که به آن رجوع شده بارگذاری نشده بود اجرای ‏Thread عادی دچار وقفه می‌شود تا زمانی که مدیریت حافظه صفحه مقصد را در Page Frame بارگذاری کند به محضی که آن صفحه بارگذاری شد اجرا ادامه پیدا خواهد کرد در مرحله 4 رجوع به آدرس مجازی K دوباره با آدرس فیزیکی در حافظه اولیه تعیین می‌گردد ( مکانی که موقعیت مجازی K در حال حاضر آنجا بارگذاری شده است. )

حافظه مجازی‌در این تمرین شما با صورتها و شکلهای مختلفی از مکانیزم حافظه مجازی در ویندوز NT آشنایی پیدا خواهید کرد علی‌رغم اغلب دیگر سیستمهای عامل، ویندوز NT یک API ساده و روشنی را برای اداره کردن بعضی شکلها و صورتهای حافظه مجازی تهیه می‌کند(معمولاً حافظه مجازی بطور کامل توسط برنامه نویس کاربردی‌اش روشن و واضح می‌گردد) در این تمرین شما در موارد زیر اطلاعاتی یاد خواهید گرفت:  سازماندهی سیستم حافظه مجازی ویندوز NT چگونه فضای حافظه مجازی خود را کنترل کنید؟ چگونه یک وسیله آگاه کننده و گزارش دهنده بنویسید؟ جزئیات GlobalMemory Status , GetsystemInfo – VirtualQuery – VirtualUnlock – VirtualLock – VirtueaFree – VirtualAlloc معرفی حافظه مجازی صفحه‌بندی یا Paging Virtual Memory در بسیاری از سیستمهای عامل امروزی بکار گرفته می‌شود. در یک سیستم صفحه‌بندی شده، هر فرآیندی یک فضای آدرس دهی مجازی خاص خود دارد که برای ارجاع دیگر اشیاء بکار گرفته می‌شود که معمولاً محتوای یک محل یا موقعیتی از حافظه است بخشی از فضای آدرس دهی مجازی توسط ویراستار خطی ( Link editor ) تعریف می‌شوند وقتی که آن یک تصویر قابل اجرایی بوجود می‌آورد که در واقع فایل اجرایی یا EXE است. تعداد باقیمانده از فضای آدرس‌دهی می‌تواند بطور پویا در زمان اجرا توسط روشهایی که در این تمرین توضیح داده خواهد شد تعر یف شود. بعد از اینکه قسمت پایدار و ثابت از فضای آدرس‌دهی مجازی ایجاد شد در حافظه ثانویه ذخیره خواهد شد ( معمولاً در بخش یا Partition از وسیله ذخیره‌سازی کهPaging disk نام دارد ). به منظور عملی‌تر شدن شما می‌توانید Paging disk را مشابه فایل در نظر بگیرید. در یک کامپیوتر معمول و مرسوم پردازنده تنها می‌تواند دستورات را واکشی کند یا داده‌هایی را که در حافظه اولیه یا قابل اجرا ( که معمولاً RAM خوانده می‌شوند. ) واقع شده‌اند را بارگذاری کند. حافظه اولیه در مقایسه با حافظه ثانویه کوچکتر و سریعتر است. حافظه اولیه خیلی گرانتر از حافظه ثانویه است بنابراین بطور معمول در زمره اجزای با ارزش‌تر از نظر حجم اما کوچکتر از حافظه‌های ثانویه قرار دارند. اغلب کامپیوترها حافظه اولیه کافی حتی برای ذخیره فضای آدرس‌دهی مجازی کامل یک فرآیند را هم ندارند بنابراین در یک زمان تعداد زیادی فضا روی حافظه ثانویه برای ذخیره فضای آدرس‌دهی مجازی تعداد زیادی فرآیند وجود خواهد داشت. حافظه اولیه همچنین خیلی سریعتر از حافظه ثانویه می‌باشد. پردازنده می‌تواند یک بایت را در 2 سیکل پردازنده در حافظه اولیه بخواند یا بنویسید. اما همین عمل هزاران سیکل از پروسسور را برای نوشتن یا خواندن اطلاعات در حافظه ثانویه نیازمند است.برای نگهداری فضای حافظه اولیه یک سیستم حافظه مجازی صفحه‌بندی شده در هر زمان داده شده تنها بخشی از فضای آدرس‌دهی مجازی تعداد مختلفی از فرآیند‌ها را بارگذاری یا ( Load ) می‌کند. همانطور که Thread ها در فضای آدرس‌دهی فرآیندهایشان اجرا می‌شوندبخشی از فضای آدرس‌دهی مجازی که در حال حاضر در حال استفاده است در حافظه اولیه بارگذاری می‌شود و در همان حال دیگر بخشهای فضای آدرس‌دهی در حافظه ثانویه قرار گرفته‌اند. زمانی که فرآیندی به بخشی از فضای آدرس‌دهی مجازی دیگر نیاز ندارد ( حداقل برای مدتی ) از آن بخش در حافظه ثانویه کپی گرفته می‌شود. این به موقعیتی از حافظه اولیه که مورد استفاده برای ذخیره بخشی از فضای آدرس‌دهی مجازی قرار گرفته بود این اجازه را می‌دهد که برای ذخیره بخش دیگری از فضای آدرس‌دهی مجازی در زمان دیگری بکار گرفته شود. در یک سیستم حافظه مجازی سنجش در کارایی بوسیله کپی کردن یک بلوک از حافظه در حافظه اولیه یا بازگرداندن به حافظه ثانویه در زمانی که یک جابه‌جایی بین دوسطح از سلسله مرتبه حافظ مورد نیاز و ضروری باشد بدست می‌آید کارایی از این واقعیت بدست می‌آید که عملیات ورودی و خروجی حافظه ثانویه وابسته به بلوکها می‌باشد. این یعنی اگر تنها یک کلمه ( Word ) اطلاعات از حافظه ثانویه مورد نیاز باشد همه بلوک باید خوانده شود تابه آن کلمه برسیم. همچنین نسبت به مکانی که همه آن بلوک در حافظه اولیه قرار داد هم احساس است تا زمانی که باید خوانده شود تابه لغت گم شده برسیم. فواید دیگری در بارگذاری همه بلوک‌ها نسبت به فقط یک کلمه وجود دارد. هنگامی که یک نخ یا Thread به مکانی چون I رجوع می‌کند احتمال زیادی وجود دارد که بخواهد به مکان I+1 در آینده نزدیک رجوع کند به این مفهوم محلیت یا Locality گفته می‌شود. یک حافظه مجازی صفحه‌بندی شده بلوکهای با اندازة ثابت را بارگذاری می‌کند و یا برمی‌دارد که به آنها صفحه یا Page گفته می‌شود که در زمانی که داده‌ها و اطلاعات را بین حافظه اولیه و ثانویه در جهت رفت و برگشت حرکت می‌دهد انجام می‌گیرد. حد و مرز صفحه‌ها یا Page ها کاملاً توسط برنامه‌نویس مشخص و واضح می‌شود. شکل 1 عملیات یک سیستم حافظه مجازی صفحه‌بندی شده بطور عام را خلاصه می‌کند.زمانی که یک نخ یا Thread به آدرس مجازی K رجوع می‌کند ( مرحله 1 در شکل ) حافظه مجازی ابتدا تعدا صفحات یا Page هایی که آدرس مجازی K را در بردارد تعیین می‌کند (مرحله2 در شکل ) اگر صفحه در حال حاضر در حافظه اولیه بارگذاری شده بود و موجود بود ( مرحله 3 در شکل ) سیستم حافظه مجازی آدرس مجازی را به آدرس فیزیکی متناظر با آن موقعیت در حافظه اولیه که همان Page Frame است تبدیل می‌کند ( جایی که صفحه هدف در آن واقع شده است. ) اگر صفحه در همان زمان که به آن رجوع شده بارگذاری نشده بود اجرای ‏Thread عادی دچار وقفه می‌شود تا زمانی که مدیریت حافظه صفحه مقصد را در Page Frame بارگذاری کند به محضی که آن صفحه بارگذاری شد اجرا ادامه پیدا خواهد کرد در مرحله 4 رجوع به آدرس مجازی K دوباره با آدرس فیزیکی در حافظه اولیه تعیین می‌گردد ( مکانی که موقعیت مجازی K در حال حاضر آنجا بارگذاری شده است. )