تبليغاتX
درغروب خلوت عاشقا نه سایه ای گسترده ام
مقدمه ای بر زبان C
پس از نوشتن یک الگوریتم باید آن را با استفاده از یک زبان برنامه نویسی تبدیل به یک برنامه قابل اجرا برای کامپیوتر نماییم. این زبانها به سه دسته کلی تقسیم میگردند :

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

2- زبان اسمبلی : این زبان شکل ساده تر زبان ماشین است، بدین صورت که برای هر دستورالعمل زبان ماشین، یک اسم نمادین انتخاب شده است (مانند دستور ADD بجای کد دودویی دستورالعمل جمع) که بخاطر سپردن و برنامه نویسی با آنها برای انسانها ساده تر است. اما این برنامه ها برای ماشین قابل فهم نیست و باید قبل از اجرا شدن توسط برنامه مترجمی بنام اسمبلر به زبان ماشین تبدیل شود. توجه کنید که از آنجا که هر دستور زبان اسمبلی معادل یک دستور زبان ماشین است، این زبان نیز وابسته به ماشین می باشد و برنامه های نوشته شده به این زبان فقط برروی همان کامپیوتری که برای آن نوشته شده اند قابل اجرا است. علاوه براین کار با این زبانها هنوز هم نسبتا مشکل بود و فقط متخصصین کامپیوتر قادر به استفاده از آنها بودند.

3- زبانهای سطح بالا : دستورالعملهای این زبانها بسیار نزدیک به زبان انسانها (بطور مشخص زبان انگلیسی) می باشد و بهمین دلیل برنامه نویسی به آنها بسیار ساده تر بوده و می توان الگوریتمها را به راحتی به این زبانها تبدیل کرد. از آنجا که این زبانها به هیچ ماشین خاصی وابسته نیستند، برنامه های نوشته شده با این زبانها (تا حد زیادی) قابل حمل می باشند. مثالهایی از این زبانها عبارتند از :

- بیسیک (Basic): برای کاربردهای آموزشی
- فرترن (Fortran) : برای کاربردهای علمی و مهندسی
- پاسکال (Pascal) : برای کاربردهای آموزشی و علمی

و بالاخره زبان برنامه نویسی C که درمورد آن بیشتر صحبت خواهیم کرد. البته برنامه های نوشته شده به این زبانها ابتدا باید به زبان ماشین ترجمه شوند تا برروی کامپیوتر قابل اجرا باشند. برای ترجمه این زبانها از کامپایلرها و یا مفسرها (به فصل 1 مراجعه کنید) استفاده می شود.

تاریخچه C
 
برای بررسی تاریخچه زبان C باید به سال 1967 بازگردیم که مارتین ریچاردز زبان BCPL را برای نوشتن نرم افزارهای سیستم عامل و کامپایلر در دانشگاه کمبریج ابداع کرد. سپس در سال 1970 کن تامپسون زبان B را بر مبنای ویژگیهای زبان BCPL نوشت و از آن برای ایجاد اولین نسخه های سیستم عامل Unix در آزمایشگاههای بل استفاده کرد. زبان C در سال 1972 توسط دنیس ریچی از روی زبان B و BCPL در آزمایشگاه بل ساخته شد و ویژگیهای جدیدی همچون نظارت بر نوع داده ها نیز به آن اضافه شد. ریچی از این زبان برای ایجاد سیستم عامل Unix استفاده کرد اما بعدها اکثر سیستم عاملهای دیگر نیز با همین زبان نوشته شدند. این زبان با سرعت بسیاری گسترش یافت و چاپ کتاب "The C Programming Language" در سال 1978 توسط کرنیگان و ریچی باعث رشد روزافزون این زبان در جهان شد.

متاسفانه استفاده گسترده این زبان در انواع کامپیوترها و سخت افزارهای مختلف باعث شد که نسخه های مختلفی از این زبان بوجود آید که با یکدیگر ناسازگار بودند. در سال 1983 انستیتوی ملی استاندارد آمریکا (ANSI) کمیته ای موسوم به X3J11 را را مامور کرد تا یک تعریف فاقد ابهام و مستقل از ماشین را از این زبان تدوین نماید.در سال 1989 این استاندارد تحت عنوان ANSI C به تصویب رسید و سپس در سال 1990، سازمان استانداردهای بین المللی (ISO) نیز این استاندارد را پذیرفت و مستندات مشترک آنها تحت عنوان ANSI/ISO C منتشر گردید.

در سالهای بعد و با ظهور روشهای برنامه نویسی شی گرا نسخه جدیدی از زبان C بنام C++ توسط بیارنه استراوستروپ در اوایل 1980 در آزمایشگاه بل توسعه یافت. در C++ علاوه بر امکانات جدیدی که به زبان C اضافه شده است، خاصیت شی گرایی را نیز به آن اضافه کرده است.

با گسترش شبکه و اینترنت، نیاز به زبانی احساس شد که برنامه های آن بتوانند برروی هر ماشین و هر سیستم عامل دلخواهی اجرا گردد. شرکت سان مایکروسیستمز در سال 1995 میلادی زبان Java را برمبنای C و C++ ایجاد کرد که هم اکنون از آن در سطح وسیعی استفاده می شود و برنامه های نوشته شده به آن برروی هر کامپیوتری که از Java پشتیبانی کند(تقریبا تمام سیستمهای شناخته شده) قابل اجرا می باشد. شرکت مایکروسافت در رقابت با شرکت سان، در سال 2002 زبان جدیدی بنام C# (سی شارپ) را ارائه داد که رقیبی برای Java بشمار می رود.

برنامه نویسی ساخت یافته

در دهه 1960 میلادی توسعه نرم افزار دچار مشکلات عدیده ای شد. در آن زمان سبک خاصی برای برنامه نویسی وجود نداشت و برنامه ها بدون هیچگونه ساختار خاصی نوشته می شدند. وجود دستور پرش (goto) نیز مشکلات بسیاری را برای فهم و درک برنامه توسط افراد دیگر ایجاد می کرد، چرا که جریان اجرای برنامه مرتبا دچار تغییر جهت شده و دنبال کردن آن دشوار می گردید. لذا نوشتن برنامه ها عملی بسیار زمان بر و پرهزینه شده بود و معمولا اشکال زدایی, اعمال تغییرات و گسترش برنامه ها بسیار مشکل بود. فعالیتهای پژوهشی در این دهه باعث بوجود آمدن سبک جدیدی از برنامه نویسی بنام روش ساختیافته گردید؛ روش منظمی که باعث ایجاد برنامه هایی کاملا واضح و خوانا گردید که اشکال زدایی و خطایابی آنها نیز بسیار ساده تر بود.

اصلی ترین نکته در این روش عدم استفاده از دستور پرش (goto) است. تحقیقات بوهم و ژاکوپینی نشان داد که می توان هر برنامه ای را بدون دستور پرش و فقط با استفاده از 3 ساختار کنترلی ترتیب، انتخاب و تکرار نوشت.

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

ساختار انتخاب به برنامه نویس اجازه می دهد که براساس درستی یا نادرستی یک شرط، تصمیم بگیرد کدام مجموعه از دستورات اجرا شود.

ساختار تکرار نیز به برنامه نویسان اجازه می دهد مجموعه خاصی از دستورات را تا زمانیکه شرط خاصی برقرار باشد، تکرار نماید.
(برای شرح بیشتر موارد فوق به فصل 3 مراجعه نمایید).

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

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

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

کمی بعد زبان C ارائه گردید که علاوه بر دارا بودن ویژگیهای برنامه نویسی ساختیافته بدلیل سرعت و کارایی بالا مقبولیتی همه گیر یافت و هم اکنون سالهاست که بعنوان بزرگترین زبان برنامه نویسی دنیا شناخته شده است.

 مراحل اجرای یک برنامه C

برای اجرای یک برنامه C ابتدا باید آن را نوشت. برای اینکار می توان از هر ویرایشگر متنی موجود استفاده کرد و سپس فایل حاصل را با پسوند .C ذخیره نمود (فایلهای C++ با پسوند .CPP ذخیره می گردند). به این فایل، کد مبدا (source code) گفته می شود. مرحله بعدی تبدیل کد مبدا به زبان ماشین است که به آن کد مقصد (object code) گفته می شود. همانطورکه قبلا نیز گفته شد برای اینکار از یک برنامه مترجم بنام کامپایلر استفاده می شود. کامپایلرهای متعددی برای زبان C توسط شرکتهای مختلف و برای سیستم عاملهای مختلف نوشته شده است که می توانید برحسب نیاز از هریک از آنها استفاده نمایید. اما هنوز برنامه برای اجرا آماده نیست. معمولا برنامه نویسان از در برنامه های خود از یک سری از کدهای از پیش آماده شده برای انجام عملیات متداول (مانند محاسبه جذر و یا سینوس) استفاده می کنند که برنامه آنها قبلا نوشته و ترجمه شده است. این برنامه ها یا در قالب کتابخانه های استاندارد توسط شرکتهای ارائه کننده نرم افزار عرضه شده است و یا توسط دیگر همکاران برنامه نویس اصلی نوشته و در اختیار وی قرار داده شده است. در این مرحله باید کد مقصد برنامه اصلی با کدهای مربوط به این برنامه های کمکی پیوند زده شود. برای اینکار نیاز به یک پیوند زننده (Linker) داریم و نتیجه این عمل یک فایل قابل اجرا خواهد بود (در ویندوز این فایل پسوند .EXE خواهد داشت). مرحله بعدی اجرای برنامه و دادن ورودیهای لازم به آن و اخذ خروجیها می باشد. در شکل زیر این مراحل نشان داده شده اند.

مسلما طی مراحل بالا برای اجرای هر برنامه زمانبر می باشد، بهمین دلیل اکثر تولید کنندگان کامپایلرها، محیطهایی را برای برنامه نویسی ارائه کرده اند که کلیه مراحل بالا را بطور اتوماتیک انجام می دهند.

به این محیطها IDE (Integrated Development Environment) یا محیط مجتمع توسعه نرم افزار گفته می شود. این محیطها دارای یک ویرایشگر متن می باشند که معمولا دارای خواص جالبی همچون استفاده از رنگهای مختلف برای نشان دادن اجزای مختلف برنامه مانند کلمات کلیدی، و یا قابلیت تکمیل اتوماتیک قسمتهای مختلف برنامه می باشد. پس از نوشتن برنامه و با انتخاب گزینه ای مانند Run کلیه عملیات فوق بطور اتوماتیک انجام شده و برنامه اجرا می گردد. علاوه براين، اين محيطها معمولا داراي امكانات اشكالزدايي برنامه (Debug) نيز مي باشند كه شامل مواردي همچون اجراي خط به خط برنامه و يا ديدن محتويات متغيرها در زمان اجرا است. چند محيط معروف برنامه نويسي عبارتند از :

Borland C++ 3.1 براي محيط DOS
Borland C++ از نسخه 4 به بالا براي Windows
Microsoft Visual C++ براي محيط Windows
Borland C++ Builder برای محیط Windows

براي شروع ما از محيط Borland C++ 3.1 تحت Dos كه نحوه كار ساده تري نسبت به سايرين دارد استفاده مي كنيم.
پس از نصب اين نرم افزار، برنامه BC.exe را اجرا كنيد تا وارد محيط borland c شويد

همانطور كه مي بينيد، اين محيط از 3 قسمت اصلي تشكيل شده است :
- بخش ويرايش برنامه : بخش آبي رنگ وسط مي باشد كه در حقيقت يك ويرايشگر است كه برنامه در آن تايپ مي شود. همانطور كه مي بينيد در اين ويرايشگر از رنگهاي مختلف براي نشان دادن قسمتهاي مختلف برنامه استفاده مي شود. مثلا براي كلمات كليدي از رنگ سفيد استفاده شده است.

- بخش منوهاي كاري : اين بخش كه در قسمت بالا واقع شده است،- حاوي تعدادي منو (گزينه) براي انجام وظايف مختلف است. خلاصه اين عمليات عبارتند از :
o منوي File : عملياتي مانند باز كردن و يا ذخيره يك برنامه
o منوي Edit : عمليات ويرايش مانند حذف،o كپي و يا چسباندن يك قسمت از برنامه
o منوي Search : جستجوي و يا تعويض يك متن در برنامه
o منوي Run : اجراي برنامه بصورت كامل يا دستور به دستور
o منوي Compile : عمليات مربوط به كامپايل و پيوند برنامه
o منوي Debug : عمليات مربوط به اشكالزدايي مانند ديدن مقادير متغيرها در زمان اجرا
o منوي Project : عمليات مربوط به مديريت برنامه هايي كه شامل چندين فايل مستقل هستند (پروژه)
o منوي Options : عمليات مربوط به تنظيمات سيستم مانند نحوه كامپايل و يا رنگ پيش فرض محيط
o منوي Windows : عمليات مربوط به پنجره هاي باز فعلي (مربوط به چندين برنامه يا نمايش متغيرها و ... ) 
 خطاهای برنامه نویسی

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

خطاهای نحوی (خطاهای زمان کامپایل): این خطاها در اثر رعایت نکردن قواعد دستورات زبان C و یا تایپ اشتباه یک دستور بوجود می آیند و در همان ابتدا توسط کامپایلر به برنامه نویس اعلام می گردد. برنامه نویس باید این خطا را رفع کرده و سپس برنامه را مجددا کامپایل نماید. لذا معمولا این قبیل خطاها خطر کمتری را در بردارند.

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

a. خطاهای مهلک: در این دسته خطاها کامپیوتر بلافاصله اجرای برنامه را متوقف کرده و خطا را به کاربر گزارش می کند. مثال معروف این خطاها،b. خطای تقسیم بر صفر می باشد.

c. خطاهای غیرمهلک: در این دسته خطا،d. اجرای برنامه ادامه می یابد ولی برنامه نتایج اشتباه تولید می نماید. بعنوان مثال ممکن است دراثر وجود یک خطای منطقی در یک برنامه حقوق و دستمزد،e. حقوق کارمندان اشتباه محاسبه شود و تا مدتها نیز کسی متوجه این خطا نشود!

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

آخرین نکته اینکه در اصطلاح برنامه نویسی به هر گونه خطا، bug و به رفع خطا debug گفته می شود.

يك برنامه نمونه

در اين قسمت براي آشنايي اوليه با زبان C يك برنامه نمونه آورده شده است كه بدون هيچ تغييري در محيط BorlandCPP  قابل اجرا است.
 

// This Program Computes the Area of a Circle
#include
void main() {
int radius ;
float area;
printf("please enter radius : ");
scanf("%d",&radius);
area = 2 * 3.14 * radius;
printf("Area is %f",area);
{
please enter radius : 10
Area is 62.8

درمورد برنامه فوق به نکات زیر توجه کنید :

- خط اول یک توضیح درمورد برنامه است. در زبان C برای توضیحات یک خطی از علامت // استفاده می گردد. اما چنانچه توضیحات بیش از یک خط بود،- آن را با علامت /* شروع کرده و با */ پایان دهید. کامپایلر از این توضیحات صرفنظر خواهد کرد. این توضیحات باعث می شوند که برنامه شما خواناتر شده و دیگران بهتر آن را درک کنند.

- هر دستوری که با علامت # شروع شود،- یک دستور C نیست،- بلکه جزو دستورات پیش پردازنده محسوب می گردد. دستورات پیش پردازنده،- دستوراتی هستند که توسط کامپایلر قبل از شروع به کامپایل انجام می شوند. بعنوان مثال دستور #include باعث می شود که تعاریف اولیه مربوط به توابعی (زیربرنامه هایی) که قصد استفاده از آنها را داریم به برنامه اضافه شود. در مثال بالا برای استفاده از توابع printf و scanf که در کتابخانه استاندارد C تعریف شده اند،- فایل سرآمد stdio.h را که این توابع در آن تعریف شده اند را استفاده کرده ایم.

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

- در زبان C هر بلوک برنامه با علامت { آغاز شده و با } پایان می یابد. این دو معادل دستورات begin و end در زبانهای دیگر ازجمله پاسکال می باشند که برای سادگی زبان انتخاب شده اند.

- دو خط بعدی به تعریف متغیرهای radius و area می پردازد. در زبان C قبل از استفاده از هر متغیری باید آن را اعلان نمایید. اعلان متغیر شامل نام و نوع متغیر است. در مثال فوق،- متغیر radius از نوع عدد صحیح(integer) و متغیر area از نوع عدد اعشاری (float) تعریف شده اند.

- توابع printf و scanf جزو کتابخانه استاندارد C محسوب می گردند و به ترتیب برای چاپ اطلاعات در خروجی استاندارد (نمایشگر) و دریافت اطلاعات از ورودی استاندارد (صفحه کلید) استفاده می شوند. برای چاپ رشته مورد نظر باید آنها را در داخل علامت " قرار داد. درمورد این توابع بعداد توضیح خواهیم داد.

- دقت کنید که در پایان هر دستورالعمل از علامت ; استفاده شده است. در مجموع C یک زبان قالب آزاد است و شما می توانید دستورات را به هر نحوی که دوست دارید قرار دهید (مثلا چند دستور در یک خط از برنامه). تنها چیزی که نشاندهنده پایان یک دستور است،- علامت ; است(و نه انتهای خط).

- از آنجا که C یک زبان قالب آزاد است،- می توان با استفاده از مکان نوشتن دستورات شکل بهتری به برنامه داد. بعنوان مثال دقت کنید که پس از شروع تابع main،- دستورات حدود 3 کاراکتر جلوتر نوشته شده اند. به این نحوه نوشتن دستورات دندانه گذاری می گویند. بطور کلی هربار که بلوک جدیدی آغاز می شود،- باید آن را کمی جلوتر برد. این مسئله باعث جدا شدن بلوکها از یکدیگر و خوانایی بهتر برنامه می شود.

- در پایان برنامه و در داخل مستطیل خاکستری،- یک نمونه از اجرای برنامه که شامل یک ورودی و خروجی نمونه است،- آورده شده است.

+ نوشته شده در  چهارشنبه بیست و پنجم مهر 1386ساعت 12:38  توسط جابر صادقی  | 

Image hosted by allyoucanupload.com

Image hosted by allyoucanupload.com

Image hosted by allyoucanupload.com

Image hosted by allyoucanupload.com

Image hosted by allyoucanupload.com

Image hosted by allyoucanupload.com

+ نوشته شده در  شنبه بیست و دوم اردیبهشت 1386ساعت 18:34  توسط جابر صادقی  | 

 حافظه مجازی چیست؟

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

اکثر کامپیوترها در حال حاضر از حافظه های محدود با ظرفیت 64 ، 128 و یا 256 مگابایت استفاده می نمایند. حافظه موجود در اکثر کامپیوترها بمنظور اجرای چندین برنامه بصورت همزمان توسط کاربر ، پاسخگو نبوده و با کمبود حافظه مواجه خواهیم شد. مثلا" در صورتیکه کاربری بطور همزمان ، سیستم عامل ، یک واژه پرداز ، مرورگر وب و یک برنامه برای ارسال نامه الکترونیکی را فعال نماید ، 32 و یا 64 مگابایت حافظه، ظرفیت قابل قبولی نبوده و کاربران قادر به استفاده از خدمات ارائه شده توسط هر یک از نرم افزارهای فوق نخواهند بود. یکی از راهکارهای غلبه بر مشکل فوق افزایش و ارتقای حافظه موجود است . با ارتقای حافظه و افزایش آن ممکن است مشکل فوق در محدوده ای دیگر مجددا" بروز نماید. یکی دیگر از راهکارهای موجود در این زمینه ، استفاده از حافظه مجازی است

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

[ویرایش] مسئله سرعت

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

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

[ویرایش] پیکربندی حافظه مجازی

ویندوز 98 دارای یک برنامه هوشمند برای مدیریت حافظه مجازی است . در زمان نصب ویندوز ، پیکربندی و تنظیمات پیش فرض برای مدیریت حافظه مجازی انجام خواهد شد. تنظیمات انجام شده در اغلب موارد پاسخگو بوده و نیازی به تغییر آنها وجود نخواهد داشت . در برخی موارد لازم است که پیکربندی مدیریت حافظه مجازی بصورت دستی انجام گیرد. برای انجام این کار در ویندوز 98 ، گزینه System را از طریق Control panel انتخاب و در ادامه گزینه Performance را فعال نمائید. در بخش Advanced setting ، گزینه Virtual memory را انتخاب نمائید.

با نمایش پنجره مربوط به Virtual Memory ، گزینه "Let me specify my own virtual memory setting" را انتخاب تا زمینه مشخص نمودن مکان و طرفیت حداقل و حداکثر فایل مربوط به حافظه مجازی فراهم گردد..در فیلد Hard disk محل ذخیره نمودن فایل و درفیلد های دیگر حداقل و حداکثر ظرفیت فایل را بر حسب مگابایت مشخص نمائید. برای مشخص نمودن حداکثر فضای مورد نیاز حافظه مجازی می توان هر اندازه ای را مشخص نمود . تعریف اندازه ائی به میزان دو برابر حافظه اصلی کامپیوتر برای حداکثر میزان حافظه مجازی توصیه می گردد.

میزان حافظه موجود هارد دیسک که برای حافظه مجازی در نظر گرفته خواهد شد بسیار حائر اهمیت است . در صورتیکه فضای فوق بسیار ناچیز انتخاب گردد ، همواره با پیام خطائی مطابق "Out of Memory" ، مواجه خواهیم شد. پیشنهاد می گردد نسبت حافظه مجازی به حافظه اصلی دو به یک باشد. یعنی در صورتیکه حافظه اصلی موجود 16 مگابایت باشد ، حداکثر حافظه مجازی را 32 مگابایت در نظر گرفت .

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

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


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

گرفته شده از )
+ نوشته شده در  دوشنبه هفدهم اردیبهشت 1386ساعت 9:44  توسط جابر صادقی  | 

 

 

 حافظه مجازي يكي ازبخش هاي متداول در اكثر سيستم هاي عامل كامپيوترهاي شخصي است . سيستم فوق با توجه به مزاياي عمده، به سرعت متداول شده و با استقبال كاربران كامپيوتر مواجه شده است .

اكثر كامپيوترها در حال حاضر از حافظه هاي محدود با ظرفيت 64 ، 128 و يا 256 مگابايت استفاده مي نمايند. حافظه موجود در اكثر كامپيوترها به منظور اجراي چندين برنامه بصورت همزمان توسط كاربر ، پاسخگو نبوده و با كمبود حافظه مواجه خواهيم شد. مثلا" در صورتيكه كاربري بطور همزمان ، سيستم عامل ، يك واژه پرداز ، مرورگر وب و يك برنامه براي ارسال نامه الكترونيكي را فعال نمايد ، 32  يا 64 مگابايت حافظه، ظرفيت قابل قبولي نبوده و كاربران قادر به استفاده از خدمات ارائه شده توسط هر يك از نرم افزارهاي فوق نخواهند بود. يكي از راهكارهاي غلبه بر مشكل فوق افزايش و ارتقاي حافظه موجود است . با ارتقاي حافظه و افزايش آن ممكن است مشكل فوق در محدوده اي ديگر مجددا" بروز نمايد. يكي ديگر از راهكارهاي موجود در اين زمينه ، استفاده از حافظه مجازي است .

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

 

 

مسئله سرعت

سرعت خواندن و نوشتن اطلاعات بر روي  هارد ديسك به مراتب كندتر از حافظه اصلي كامپيوتر است . در صورتيكه سيستم مورد نظر داراي عملياتي حجيم در رابطه با حافظه مجازي باشد ، كارآئي سيستم به شدت تحت تاثير قرار خواهد گرفت . در چنين مواردي لازم است كه نسبت به افزايش حافظه موجود در سيستم  ، اقدام گردد. در مواردي كه سيستم عامل مجبور به جابجائي اطلاعات موجود بين حافظه اصلي و حافظه مجازي باشد ( هارد ديسك ) ، باتوجه به تفاوت محسوس سرعت بين آنها ، مدت زمان زيادي صرف عمليات جايگزيني مي گردد. در چنين حالتي سرعت سيستم به شدت افت كرده و عملا" در برخي حالات غيرقابل استفاده مي گردد.

محل نگهداري اطلاعات بر روي هارد ديسك را يك Page file مي گويند. در فايل فوق ، صفحات مربوط به حافظه اصلي ذخيره و سيستم عامل در زمان مورد نظر اطلاعات فوق را مجددا" به حافظه اصلي منتقل خواهد كرد. در ماشين هائي كه از سيستم عامل ويندوز استفاده مي نمايند ، فايل فوق داراي انشعاب swp است .

 

 

پيكربندي حافظه مجازي

ويندوز  98 و XP  داراي برنامه هوشمند مديريت حافظه مجازي هستند . در زمان نصب ويندوز ، پيكربندي و تنظيمات پيش فرض براي مديريت حافظه مجازي انجام خواهد شد. تنظيمات انجام شده در اغلب موارد پاسخگو بوده و نيازي به تغيير آنها وجود نخواهد داشت . در برخي موارد لازم است كه  پيكربندي مديريت حافظه مجازي بصورت دستي انجام گيرد.  براي انجام اين كار در ويندوز 98 ، گزينه System را از طريق Control panel انتخاب و در ادامه گزينه Performance را فعال نمائيد. در بخش Advanced setting ، گزينه memory Virtual را انتخاب نمائيد.

با نمايش پنجره مربوط به Memory Virtual  ، گزينه "Let me specify my own virtual memory setting" را انتخاب تا زمينه مشخص نمودن مكان و ظرفيت حداقل و حداكثر فايل مربوط به حافظه مجازي فراهم گردد. در فيلد disk Hard   محل ذخيره نمودن فايل و درفيلد هاي ديگر حداقل و حداكثر ظرفيت فايل را بر حسب مگابايت مشخص نمائيد.  براي مشخص نمودن  حداكثر فضاي مورد نياز حافظه مجازي مي توان هر اندازه اي را مشخص نمود . تعريف اندازه اي به ميزان دو برابر حافظه اصلي كامپيوتر(RAM)  براي حداكثر ميزان حافظه مجازي توصيه مي گردد.

در ويندوز XP شما مي توانيد در ابتدا بر روي My Computer  راست كليك كنيد و سپس گزينه Properties  را انتخاب كنيد.

شكل xp_right_click_my_computer.jpg

سپس در پنجره Advanced و در قسمت Performance  گزينه  Setting را انتخاب كنيد.

شكل xp_system_properties.jpg

 

در پنجره اي كه نمايان مي شود مجدداً گزينه Advanced  را انتخاب كرده و در اين صفحه نيز بر روي دكمه change كليك كنيد تا صفحه تنظيمات Virtual memory نمايان شود .

شكل xp_performance_options.jpg

 

 

 

در صورتي كه مي خواهيد درايوي غير از درايو پيش فرض كه معمولاً درايو C  كامپيوتر است به عنوان درايو حافظه مجازي انتخاب شود بر روي نام آن كليك كرده و در قسمت پائين پنجره گزينه Custom size را انتخاب كنيد. و مقادير مورد نظر تان را در قسمت هاي Initial size  و Maximum size وارد كنيد.  سپس گزينه Set را براي ثبت اطلاعات انتخاب كنيد. در صورتي كه مي خواهيد درايو جاري شما كه از آن به عنوان حافظه مجازي استفاده مي كنيد غير فعال شود مي توانيد گزينه no paging file را انتخاب كرده و سپس دكمه Set را انتخاب كنيد.

xp_set_virtual_memory_system_managed.jpg

 

البته توجه داشته باشيد كه بايد يكي از درايو هاي ديگر را براي استفاده در اين قسمت تعيين كنيد .  بهتر است براي دستيابي به سرعت بالاتر از درايوي استفاده كنيد كه فضاي خالي بيشتري در اختيار دارد.

xp_set_virtual_memory_manual.jpg

 

 

ميزان حافظه موجود هارد ديسك كه براي حافظه مجازي  در نظر گرفته خواهد شد بسيار حائز اهميت است . در صورتيكه فضاي فوق بسيار ناچيز انتخاب گردد ، همواره با پيام خطائي مطابق "Out of Memory" ، مواجه خواهيم شد. پيشنهاد  مي گردد نسبت حافظه مجازي به حافظه اصلي دو به يك باشد. يعني در صورتيكه حافظه اصلي موجود 16 مگابايت باشد ، حداكثر حافظه مجازي را 32 مگابايت در نظر گرفت .

يكي از روش هائي كه به منظور بهبود كارآيي حافظه مجازي پيشنهاد شده است ، ( مخصوصا" در موارديكه حجم بالائي از حافظه مجازي مورد نياز باشد ) در نظر گرفتن ظرفيت يكسان براي حداقل و حداكثر اندازه  حافظه مجازي است . در چنين حالتي در زمان راه اندازي كامپيوتر، سيستم عامل تمام فضاي مورد نياز را اختصاص و در ادامه نيازي با افزايش آن همزمان با اجراي ساير برنامه ها نخواهد بود. در چنين حالتي كارآئي سيستم بهبود پيدا خواهد كرد .

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

 


ادامه مطلب
+ نوشته شده در  دوشنبه هفدهم اردیبهشت 1386ساعت 9:27  توسط جابر صادقی  | 

زندگی زیباست
زندگی زیباست . زندگی آتشگهی دیرنده پا برجا است . گر بیفروزیش رقص شعله اش در هر کران پیداست. ور نه خاموش است و خاموشیش گناه است . پس همدیگر را دوست بداریم . زیرا که عمر اینچنین به شتاب میگزرد.از لحظات زندگی بهره گیریم.زیرا نه دریای زمان را کرانه ای است و نه انسان را پناهگاهی.
+ نوشته شده در  جمعه هفتم اردیبهشت 1386ساعت 12:43  توسط جابر صادقی  | 

         
 دین فروشی این قدر ارزان نبود 
  صحبت از موسیقی عرفان نبود
   هیچ صوتی بهتر از قران نبود

     دختران را بیحجابی ننگ بود

       رنگ چادر بهتر از هر رنگ بود

         یک سخن بود و هزاران مشتری

          آنهم از لوث قرائت ها بری

            هدیه بر رقاصه ها واجب نبود

              قدر عالم کمتر از مطب نبود

                واه که در یال سیاه دوهزار

                  کار فرهنگی شده پخش نوار

                   ذهن اک نوجوانان محل

                     پر شده از فیلمهای مبتذل

                       آدمیت کو؟دگر آدم کیست

                         آدم قرن تمدن برفیست

                            حرف حق گفتن عقب افتادگیست

                              پشت پا بر دین زدن آزادگیست

                                آخر ای پرده نشین فاطمه

                                  تو برس به داد دین فاطمه

                                    در به روی فتنه جویان باز شد

                                      دشمنی با نایبت آغاز شد         

+ نوشته شده در  جمعه هفتم اردیبهشت 1386ساعت 12:38  توسط جابر صادقی  | 

باز گوید رسم عاشق این بود                       بلکه این معشوق را آیین بود

 چون دل عشاق را در قید کرد                     خود نمایی کرد و دلها صید کرد

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

در بیابان جنونشان سردهد                          ره به کوی عقلشان کمتر دهد

 دوست میدارد دل پر دردشان                       اشکهای سرخ و روی زردشان

چهره و موی غبارآلودشان                             مغز پر آتش ، دل پر دودشان

دل پریشانشان کند چون زلف خویش               زآنکه عاشق را دلی باید پریش

خم کندشان قامت مانند تیر روی   چون گلشان کند همچون زریریعنی این قامت

+ نوشته شده در  جمعه هفتم اردیبهشت 1386ساعت 12:30  توسط جابر صادقی  | 

از نظر من عشق یک ا مر یا حسی خدادادی مباشد که خداوند در وجود ما انسا نها قرار داده است

 

+ نوشته شده در  جمعه هفتم اردیبهشت 1386ساعت 12:14  توسط جابر صادقی  |