امروز: دوشنبه 28 آبان 1403
دسته بندی محصولات
بخش همکاران
بلوک کد اختصاصی

نرم افزارهای سیستم عامل

نرم افزارهای سیستم عاملدسته: کامپیوتر و IT
بازدید: 128 بار
فرمت فایل: docx
حجم فایل: 132 کیلوبایت
تعداد صفحات فایل: 114

سیستم عامل بدون شک مهمترین نرم افزار در کامپیوتر است پس از روشن کردن کامپیوتر اولین نرم افزاری که مشاهده می گردد سیستم عامل بوده و آخرین نرم افزاری که قبل از خاموش کردن کامپیوتر مشاهده خواهد شد، نیز سیستم عامل است سیستم عامل نرم افزاری است که امکان اجرای تمامی برنامه های کامپیوتری را فراهم می آورد سیستم عامل با سازماندهی ، مدیریت و کنترل منابع

قیمت فایل فقط 3,900 تومان

خرید

سیستم عامل

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

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

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

سیستم عامل با ساده ترین تحلیل و بررسی دو عملیات اساسی را در کامپیوتر انجام می دهد :

-  مدیریت منابع نرم افزاری و سخت افزاری یک سِستم کامپیوتری را برعهده دارد. پردازنده ، حافظه، فضای ذخیره سازی  نمونه هائی از منابع اشاره شده می باشند .

- روشی پایدار و یکسان برای دستیابی و استفاده  از سخت افزار را بدو ن نیاز از جزئیات عملکرد هر یک از سخت افزارهای موجود را برای برنامه های کامپیوتری فراهم می نماید 

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

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

سیستم های عامل را از بعد نوع کامپیوترهائی که قادر به کنترل آنها بوده و نوع برنامه های کاربردی که قادر به حمایت از آنها می باشند به چهار گروه عمده تقسیم می نمایند.

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

- تک کاربره - تک کاره . همانگونه که از عنوان این نوع سیستم های عامل مشخص است، آنها بگونه ای طراحی شده اند که قادر به مدیریت کامپیوتر بصورتی باشند که یک کاربر در هر لحظه قادر به انجام یک کار باشد. سیستم عامل Palm OS برای کامپیوترهای PDA نمونه ای مناسب از یک سیستم عامل مدرن تک کاربره و تک کاره است . 

- تک کاربره - چندکاره . اکثر سیستم های عامل استفاده شده در کامپیوترهای شخصی از این نوع می باشند. ویندوز 98 و MacOS  نمونه هائی در این زمینه بوده که امکان اجرای چندین برنامه بطور همزمان را برای یک کاربر فراهم می نمایند. مثلا" یک کاربر ویندوز 98 قادر به تایپ یک نامه با استفاده از یک واژه پرداز بوده و در همان زمان اقدام به دریافت یک فایل از اینترنت نموده و در همان وضعیت محتویات نامه الکترونیکی خود را برای چاپ بر روی چاپگر ارسال کرده باشد.

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

در اینجا لازم است که به تفاوت های موجود  سیستم های عامل " چند کاربر " و " تک کاربر"  در رابطه با امکانات شبکه ای اشاره گردد.  ویندوز 2000 و ناول قادر به حمایت از صدها و هزاران کاربر شبکه می باشند این نوع سیستم های عامل بعنوان سیستم عامل چند کاربره واقعی در نظر گرفته  نمی شوند.

در ادامه با توجه به شناخت مناسب بوجود آمده در دررابطه با انواع سیستم های عامل به عملیات و وظایف سیستم عامل اشاره می گردد.

وظایف سیستم عامل

پس از روشن نمودن کامپیوتر، لولین برنامه ای که اجراء می گردد ، مجموعه دستوراتی می باشند که در حافظه ROM ذخیره و مسئول بررسی صحت عملکرد امکانات سخت افزاری موجود می باشند. برنامه فوق (POST) ، پردازنده ، حافظه و سایر عناصر سخت افزاری را بررسی خواهد کرد . پس از بررسی موفقیت آمیز برنامه POST ، در ادامه درایوهای ( هارد ، فلاپی ) سیستم فعال خواهند شد. در اکثر کامپیوترها  ، پس از فعال شدن هارد دیسک ، اولین بخش سیستم عامل با نام Bootstrap Loader فعال خواهد شد. برنامه فوق صرفا" دارای یک وظیفه اساسی است : انتقال ( استقرار ) سیستم عامل در حافظه اصلی و امکان اجرای آن . برنامه فوق عملیات متفاوتی را بمنظور استفرار سیستم عامل در حافظه انجام خواهد داد.

سیستم عامل دارای وظایف زیر است :

  • مدیریت پردازنده
  • مدیریت حافظه
  • مدیریت دستگاهها ( ورودی و خروجی )
  • مدیریت حافظه جانبی
  • اینترفیس برنامه های کاربردی
  • رابط کاربر

وظایف شش گانه فوق ، هسته عملیات در اکثر سیستم های عامل است . در ادامه به تشریح  وظایف فوق اشاره می گردد :

مدیریت پردازنده

مدیریت پردازنده دو وظیفه مهم اولیه زیر را دارد :

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

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

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

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

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

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

تمام اطلاعات مورد نیاز بمنظور مدیریت یک پردازه در  ساختمان داده ای خاص با نام PCB)Process Control Block) ، نگهداری می گردد. پردازنده در زمان سوئیچ بین پردازه ها ، از آخرین وضعیت هر پردازه  با استفاده از اطلاعات ذخیره شده در PCB آگاهی پیدا کرده و در ادامه زمینه اجرای پردازه مورد نظر بر اساس تعداد سیکل های در نظر گرفته شده فراهم خواهد شد. برای هر پردازه یک PCB ایجاد و اطلاعات زیر در آن ذخیره خواهد گردید :

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

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

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

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

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

مدیریت حافظه و فضای ذخیره سازی

سیستم عامل در رابطه با مدیریت حافظه دو عملیات اساسی را انجام خواهد داد :

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

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

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

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

مدیریت دستگاهها

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

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

یکی از دلایلی که درایورها از سیستم عامل تفکیک شده اند ، ضرورت افزودن عملیات و خواسته ای حدید برای درایورها است . در چنین حالتی ضرورتی بر اصلاح و یا تغییر سیستم عامل نبوده و با اعمال تغییرات لازم در درایورها می توان همچنان از قابلیت های آنها در کنار سیستم عامل موجود استفاده کرد.

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

مدیریت تمام منابع موجود در یک سیستم کامپیوتری ، یکی از مهمترین و گسترده ترین وظایف یک سیستم عامل است .

ارتباط سیستم با دنیای خارج

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

سیستم عامل در رابطه با اجرای برنامه های کامپیوتری خدمات فراوانی را ارائه می نماید. برنامه نویسان و پیاده کنندگان نرم افزار می توانند از امکانات فراهم شده توسط سیستم های عامل استفاده و بدون اینکه نگران و یا درگیر جزئیات عملیات در سیستم باشند ، از خدمات مربوطه استفاده نمایند. برنامه نویسان با استفاده از  API)Application program interface) ، قادر به استفاده از خدمات ارائه شده توسط سیستم های عامل در رابطه با طراحی و پیاده سازی نرم افزار می باشند. در ادامه بمنظور بررسی جایگاه API به بررسی مثالی پرداخته خواهد شد که هدف ایجاد یک فایل بر روی هارد دیسک برای ذخیره سازی اطلاعات است .

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

 MakeFile [1,%Name,2]

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

● سیستم عامل درخواستی برای هارد ارسال تا اولین مکان آزاد قابل استفاده مشخص گردد.

● با توجه به اطلاعات ارسالی ، سیستم عامل یک entry در سیستم فایل مربوطه ایجاد و ابتدا و انتهای فایل ، نام فایل ، نوع فایل ، تاریخ و زمان ایجاد فایل و سایر اطلاعات ضروری  را ذخیره خواهد کرد.

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

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

امکانات ارائه شده توسط سیستم های عامل در قالب مجموعه ای از توابع و امکانات API یکی از موارد بسیار مهم استفاده از سیستم عامل از دیدگاه طراحان و پیاده کنندگان نرم افزار است .

اینترفیس کاربر

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

حافظه مجازی

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

اکثر کامپیوترها در حال حاضر از حافظه های محدود با ظرفیت 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 مگابایت در نظر گرفت .

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

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

فشرده سازی فایل ها

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

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

یافتن افزونگی در فایل

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

جمله زیر از 17 کلمه ، 61 حرف ، 16 فضای خالی ، یک نقطه و یک dash ، تشکیل شده است :

"Ask not what your country can do for you -- ask what you can do for your country."

اگر هر یک از حروف ، فضای خالی و حروف خاص ، یک واحد از حافظه را اشغال نمایند ، مجموعا" 79 واحد از حافظه توسط عبارت فوق استفاده خواهد گردید (79 = 1 + 1+ 16 + 61 ) . بمنظور کاهش ظرفیت فایل می بایست  افزونگی اطلاعات در فایل را بررسی کرد. با مشاهده و بررسی عبارت فوق ، نتایج زیر بدست می آید :

  • کلمه "ask" ، دو مرتبه تکرار شده است .
  • کلمه "what" ،  دو مرتبه تکرار شده است .
  • کلمه "your" ، دو مرتبه تکرار شده است .
  • کلمه "country" ، دو مرتبه تکرار شده است .
  • کلمه "can" ، دو مرتبه تکرار شده است .
  • کلمه "do" ، دو مرتبه تکرار شده است .
  • کلمه "for" ، دو مرتبه تکرار شده است .
  • کلمه "you" ، دو مرتبه تکرار شده است .

با عدم لحاظ نمودن حروف بزرگ و کوچک درعبارت فوق ، مشاهده می گردد که نیمی از اطلاعات موجود در عبارت فوق ، زائد و تکراری می باشند. با دقت در عبارت فوق و نحوه افزونگی اطلاعات مشاهده می گردد که با دارا بودن نه کلمه ask,not,what,your,country,can ،do ،for  و you می توان پالایشی مناسبی از عبارت فوق را انجام و در صورت لزوم و با استفاده از نه کلمه فوق ، مجددا" عبارت اولیه را ایجاد نمود. در این راستا و بمنظور ایجاد عبارت فوق کافی است به کلمات موجود در بخش اول ( نصف عبارت ) اشاره  و جایگاه و تعداد تکرار هر یک از آنها را در بخش دوم مشخص نمود. در ادامه نحوه فشرده سازی اطلاعات و بازسازی مجدد آنها بررسی می گردد.

فشرده سازی اطلاعات

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

دیکشنری ایجاد شده برای عبارت اشاره شده در بخش قبل بصورت زیر است :

1.  ask

2.  what

3.  your

4.  country

5.  can

6.  do

7.  for

8.  you

با توجه به دیکشنری ایجاد شده ، عبارت مورد نظر بصورت زیر خوانده خواهد شد :

"1 not 2 3 4 5 6 7 8 -- 1 2 8 5 6 7 3 4"

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

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

جستجو برای الگوها

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

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

در ادامه برنامه فشرده سازی  متوجه الگوی "ou" می گردد ، الگوی فوق در کلمات "your" و "country" ، تکرار شده است . در صورتیکه عبارت مورد نظر یک فایل طولانی بود ، ثبت و نوشتن الگوی فوق در دیکشنری می توانست به میزان قابل توجه ای از ظرفیت فایل را کاهش دهد. "ou" ، یکی از ترکیبات متداول استفاده شده  در زبان انگلیسی است . معیار برنامه فشرده  سازی عبارتی است که در حال پیمایش آن است . در ادامه پیمایش عبارت فوق ، یک الگوی مناسبتر تشخیص داده خواهد شد. الگوهای فوق "your"  و "country" بوده که هر یک بدفعات  تکرار شده اند. تکرار هر یک از کلمات فوق در عبارت معادل ترکیب کلمات "your country" است . در چنین حالتی برنامه قشرده سازی  entry موجود در دیکشنری برای الگوی "ou" را با الگوی "your country" ، جایگزین می نماید. عبارت ترکیبی "can do for" ، نیز در عبارت اصلی تکرار شده است . ( یک مرتبه پس از "your" و یک مرتبه پس از "you" ) . بدین ترتیب الگوی "can do for you" نیز تکراری خواهد بود. بنابراین می توان در عوض نوشتن 15 حرف ( بهمراه قضای خالی ) ، از یک عدد استفاده کرد. در صورت استفاده از الگوی "your country" ، برای 13 حرف از یک عدد معادل استفاده می گردد ، بدیهی است که الگوی فوق نادیده گرفته شده  در عوض  الگوی "r country"  و الگوی جدید  "can do fo you" ، در دیکشنری ثبت می گردند. برنامه فشرده سازی فرآیند فوق را دنبال و پس از یافتن یک الگو ، محاسبات مربوطه  را انجام و الگوی واجدالشرایط را در دیکشنری ثبت خواهد کرد. مهمترین ویژگی "الگوریتم مبتنی بر دیکشنری " ، قابلیت تغییر الگوها در زمان فرآیند فشرده سازی است .

با توجه به الگوهائی تشخیص داده شده ، دیکشنری مربوطه بشکل زیر خواهد بود . در دیکشنری زیر الگوهای تشخیص داده شده ثبت و برای فضای خالی از کاراکتر "__" استفاده شده است .

1.  ask__

2.  what__

3.  you

4.  r__country

5.  __can__do__for__you

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

"1not__2345__--__12354"

 عبارت فوق 18 و  دیکشنری 41 ،  واحد حافظه را اشغال خواهند کرد. بدین ترتیب فایل حاوی عبارت اولیه فوق از 79 واحد حافظه به 59 واحد حافظه کاهش پیدا کرده است . روش استفاده شده بمنظور فشرده سازی عبارت فوق یکی از امکانات موجود بوده و می توان در این راستا از روش های دیگر نیز استفاده کرد.

تا چه میزان می توان  اطلاعات را فشرده کرد ؟

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

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

میزان فشرده سازی اطلاعات،   به الگوریتم استفاده شده  توسط برنامه فشرده سازی نیز بستگی دارد. بدیهی است استفاده از یک الگوریتم با کارآئی بالا ،  نتایج مثبتی را در رابطه با فشرده سازی به ارمغان خواهد آورد.

رمزنگاری اطلاعات

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

  • اطلاعات کارت اعتباری
  • شماره های عضویت در انحمن ها
  • اطلاعات خصوصی
  • جزئیات اطلاعات شخصی
  • اطلاعات حساس در یک سازمان
  • اطلاعات مربوط به حساب های بانکی

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

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

اکثر سیستم های رمزنگاری اطلاعات در کامپیوتر به دو گروه عمده زیر تقسیم می گردند :

  • رمزنگاری  کلید - متقارن
  • رمزنگاری  کلید - عمومی 

رمز نگاری کلید - متقارن

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

رمزنگاری کلید - عمومی

در روش فوق از ترکیب یک کلید خصوصی و یک کلید عمومی استفاده می شود. کلید خصوصی صرفا" متعلق به کامپیوتر فرستنده بوده و کلید عمومی توسط کامپیوتر فرستنده در اختیار هر یک از کامپیوترهائی که قصد برقراری ارتباط با یکدیگر را دارند ، گذاشته می شود. برای رمزگشائی یک پیام رمز شده ، کامپیوتر می بایست از کلید عمومی که توسط فرستنده ارائه شده، بهمراه کلید خصوص ی خود  استفاده  نماید. یکی از متداولترین برنامه های رمزنگاری در این رابطه PGP)Pretty Good Privacy) است . با استفاده از PGP می توان هر چیز دلخواه را رمز نمود.

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

یکی از متداولترین نمونه های پیاده سازی شده از رمزنگاری کلید- عمومی ، روش SSL)Secure Sokets Layer)  است . روش فوق در ابتدا توسط "نت اسکیپ " پیاده سازی گردید. SSL یک پروتکل امنیتی اینترنت بوده که توسط مرورگرها و سرویس دهندگان وب بمنظور ارسال اطلاعات حساس ، استفاده می گردد.  SSL اخیرا" بعنوان بخشی از پروتکل TLS)Transport Layer Security)  در نظر گرفته شده است .

در مرورگر می توان زمان استفاده از یک پروتکل ایمن نظیز TLS را با استفاده از روش های متعدد اعلام کرد. استفاده از پروتکل "https" درعوض پروتکل "http" یکی از روش های موجود است . در چنین مواردی در بخش وضعیت پنجره مرورگر یک "Padlock" نشان داده خواهد شد.

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

مقدار Hash

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

عدد ورودی

الگوریتم

Hash مقدار

10,667

Input # x 143

1,525,381

تسخیص اینکه عدد 1.525.381 ( مقدار hash)  از ضرب دو عدد 10.667 و 143 بدست آمده است ،  کار بسیار مشکلی است . در صورتیکه بدانیم که یکی از اعداد 143 است ،  تشخیص عدد دوم کار بسیار ساده ای خواهد بود. ( عدد 10.667) .رمز نگاری مبتنی بر کلید عمومی بمراتب پیچیده تر از مثال فوق می باشند. مثال فوق صرفا"  ایده اولیه در این خصوص را نشان می دهد.

کلیدهای عمومی عموما" از الگوریتم های پیچیده و مقادیر Hash بسیار بزرگ برای رمزنگاری استفاده می نمایند. در چنین مواردی اغلب از اعداد  40 و یا حتی 128 بیتی استفاده می شود. یک عدد 128 بیتی دارای  128 2 حالت متفاوت است .

آیا شما معتبر هستید ؟

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

بمنظور بررسی اعتبار یک شخص و یا اطلاعات موجود بر روی یک کامپیوتر از روش های متعددی استفاده می شود :

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

کارت های عبور . این نوع کارت ها دارای مدل های متفاوتی می باشند. کارت های  دارای لایه مغناطیسی ( مشابه کارت های اعتباری ) و  کارت های هوشمند ( دارای یک تراشه کامپیوتر است )  نمونه هائی از کارت های عبور می باشند.

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

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

  • پیمایش اثر انگشت ( انگشت نگاری )
  • پیمایش شبکیه چشم
  • پیمایش صورت
  • مشخصه صدا

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

Checksum . یکی از قدیمی ترین روش های استفاده شده برای اطمینان از صحت ارسال اطلاعات است . Checksum ،  به دو صورت متفاوت محاسبه می گردد . فرض کنید Checksum یک بسته اطلاعاتی دارای طولی به اندازه یک بایت باشد ،  یک بایت شامل هشت بیت و هر بیت یکی از دو حالت ممکن ( صفر و یا یک ) را می تواند داشته باشد. در چنین حالتی 256 وضعیت متفاوت می تواند وجود داشته باشد. با توجه به اینکه در اولین وضعیت ،  تمام هشت بیت مقدار صفر را دارا خواهند بود ،  می تواند حداکثر 255 حالت متفاوت را ارائه نمود.

▪ در صورتیکه مجموع سایر بایت های موجود در بسته اطلاعاتی ،  255 و یا کمتر باشد ،  مقدار Checksum شامل اطلاعات واقعی و مورد نظر خواهد بود.

▪ در صورتیکه مجموع سایر بایت های موجود در بسته اطلاعاتی ، بیش از 255 باشد ،  Checksum معادل باقیمانده مجموع اعداد بوده مشروط بر اینکه آن را بر 256 تقسیم نمائیم .

مثال زیر ،  عملکرد CheckSum را نشان می دهد.

Byte 1

Byte 2

Byte 3

Byte 4

Byte 5

Byte 6

Byte 7

Byte 8

Total

Checksum

212

232

54

135

244

15

179

80

1,151

127

  • 1,151 / 256 = 4.496 (round to 4)
  • 4 x 256 = 1,024
  • 1,151 - 1,024 = 127

● Cyclic Redundancy Check)CRC) .  روش CRC در مفهوم مشابه روش Checksum است . روش فوق از تقسیم چمد جمله ای برای مشخص کردن مقدار CRC استفاده می کند.  طول CRC معمولا" 16 و یا 32 بیت است .  صحت عملکرد روش فوق بسیار بالا است . در صورتیکه صرفا" یک بیت نادرست باشد ،  CRC با مقدار مورد نظر مطابقت نخواهد کرد.

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

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

زبان برنامه نویسی جاوا

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

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

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

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

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

دریافت کمپایلر جاوا

بمنظور نوشتن برنامه با استفاده از زبان برنامه نویسی جاوا ، می بایست محیط پیاده سازی جاوا آماده و پیکربندی گردد. برای آماده نمودن محیط فوق ، می بایست مراحل زیر را دنبال کرد :

- یک فایل بزرگ شامل محیط پیاده سازی جاوا را از طریق اینترنت دریافت و یا از طریق CD مربوطه آماده نمود.

- یک فایل بزرگ شامل مستندات جاوا را از طریق اینترنت دریافت و یا از طریق CD مربوطه آماده نمود.

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

- محیط پیاده سازی جاوا را نصب نمائید

- مستندات جاوا را نصب نمائید.

- تنظیمات و پیکربندی لازم در خصوص چندین متغیر محیطی را انجام دهید.

قبل از انجام هر یک از مراحل فوق ، پیشنهاد می گردد که در ابتدا یک فولدر موقت ایجاد و فایل هائی را که از اینترنت دریافت می دارید ، در آن ذخیره نمائید ( نام فولدر فوق download directory انتخاب شده است )

مرحله اول : دریافت محیط پیاده سازی جاوا

بمنظور دریافت محیط پیاده سازی جاوا از طریق اینترنت از آدرس زیر استفاده نمائید :

http://java.sun.com/j2se/1.4.1/download.html

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

مرحله دوم : دریافت مستندات جاوا از طریق اینترنت

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

مرحله سوم : در صورتیکه بر روی سیستم خود برنامه WinZip موجود نباشد ، می توان آن را از طریق آدرس زیر دریافت کرد :

http://www.winzip.com

مرحله چهارم : نصب محیط پیاده سازی

با اجرای فایل j2sdk-1_4_1-*.exe ( فایل فوق در مرحله یک دریافت شده است ) ، در ابتدا فایل از حالت فشرده خارج و در ادامه عملیات نصب محیط پیاده سازی بصورت خودکار انجام خواهد شد.

مرحله پنجم : نصب مستندات

فایل دریافت شده در مرحله دوم را در فولدری که محیط پیاده سازی را نصب کرده اید ، منتقل و از همان محل ، فایل فوق را اجراء تا زمینه نصب مستندات فراهم گردد.

مرحله ششم : تنظیمات محیط

فایل Autoexec.bat را با استفاده از ویرایشگر notepad فعال و بااستفاده از دستور PATH ، مسیر نصب محیط پیاده سازی جاوا را مشخص نمائید.

مرحله هفتم : تست

پنجره MS-DOS ویندوز را فعال و دستور Javac را تایپ نمائید. در صورتیکه مراحل قبل بدرستی انجام شده باشند ، می بایست پیامی مبنی بر نحوه استفاده از Javac بر روی مانیتور نمایش داده شود. این بدان معنی است که همه چیز برای شروع آماده است . در صورتیکه پیام "Bad coomand or file name" ، نمایش داده شود ، نشاندهنده برزو اشکال در یکی از مراحل نصب بوده است .

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

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

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

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

متن برنامه اشاره شده بصورت زیر است :

متن برنامه

import java.awt.Graphics;
 
public class FirstApplet extends java.applet.Applet
{
 
    public void paint(Graphics g)
    {
        g.drawLine(0, 0, 200, 200);
    }
}

مرحله یک : تایپ برنامه

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

مرحله دوم : ذخیره کردن فایل

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

مرحله سوم : کمپایل برنامه

پنجره MS-DOS را فعال و با استفاده از دستور CD ، در فولدری که فایل FirstApplet.java قرار دارد ، مستقر شده و دستور زیر را بمنظور ترجمه برنامه نوشته شده ، تایپ نمائید :

 javac FirstApplet.java

نام فایل حاوی برنامه را بدرستی تایپ نمائید ( دقت لازم در رابطه با حروف بزرگ و کوچک )

مرحله چهارم : تصحیح و برطرف کردن خطاء

در صورت وجود خطاء ، می بایست نسبت به رفع اشکالات موجود اقدام کرد

مرحله پنجم : ایجاد یک صفحه Html

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

فایل Html

 

فایل فوق را با نام applet.htm و در فولدری با نام مشابه ذخیره نمائید.

مرحله ششم : اجرای اپلت

پنجره MS-DOS را فعال و دستور زیر را بمنظور اجرای اپلت تایپ نمائید :

 appletviewer applet.htm

پس از اجرای اپلت ، یک خط قطری از گوشه بالای سمت چپ بسمت گوشه پائین سمت راست را مشاهده خواهید کرد .  بدین ترتیب اولین برنامه جاوا نوشته و اجراء گردید.

توضیجات و تشریح برنامه

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

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

g.drawLine(0, 0, 200, 200);

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

در صفحه وب ، اندازه پنجره مربوط به اجراء و نمایش اپلت ( در مرحله پنج ) به ابعاد 200 و 200 مشخص شده است. در برنامه فوق از متدی ( تابع )  با نام drawLine استفاده شده است . متد فوق ، چهار پارامتر را بعنوان ورودی اخذ می نماید (0,0,200,200) . انتهای خط با استفاده از کاراکتر ";"  مشخص شده است .  نقش کاراکتر فوق نظیر استفاده از نقطه در انتهای جملات است . ابتدای خط با حرف g. شروع شده است . بدین ترتیب مشخص شده است که قصد  فراخوانی متدی با نام drawLine با نام شی g وجود دارد.

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

از چه توابع دیگری بجز drawLine می توان استفاده کرد ؟ بدین منظور لازم است که به مستندات مربوط به کلاس Graphice مراجعه گردد. در زمان نصب محیط پیاده سازی جاوا و مستندات مربوطه ، یکی از فایل هائی که بر روی سیستم شما نصب خواهد شد ، فایل java.awt.Graphice.html است . فایل فوق کلاس Graphic را تشریح می نماید. drawLine  صرفا" یکی از متدهای کلاس Graphic بوده و در این زمینه متدهای متعدد دیگر بمنظور رسم خطوط ، کمان ، چند ضلعی، تغییر  و  ... وجود دارد.

جاوا دارای کلاس های متعدد بوده و هر کلاس نیز دارای متدهای فراوانی است . مثلا" کلاس Color دارای مجموعه ای از متدها بمنظور تعریف و نتظیمات مربوط به رنگ است .SetColor نمونه ای در این زمینه است . در زمان استفاده هاز هر یک از متدهای مربوط به کلاس های جاوا می بایست در ابتدای برنامه با استفاده از دستور import زمینه استفاده از آنان را فراهم کرد.

اشکال زدائی

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

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

متغیرها

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

متغیرها را می بایست قبل از استفاده ، تعریف کرد. در زمان تعریف یک متغیر می بایست نوع داده هائی که قرار است در آن نگهداری گردد را نیز مشخص کرد.مثلا" می توان متغیری تعریف کرد که در آن ، اعداد نگهداری شده و یا متغیر دیگری را تعریف کرد که بتوان در آن نام و نام خانوادگی را ذخیره کرد. در زبان برنامه نویسی جاوا تمام متغیرها قبل استفاده می بایست تعریف و همزمان نوع داده هائی که می توان در آنها نگهداری گردد را نیز مشخص کرد .

مثال : در برنامه زیر ، دو متغیر width و height تعریف شده اند. نوع متغیرهای فوق ، int تعریف شده است . یک متغیر از نوع int ، قادر به نگهداری یک عدد صحیح ( مثلا" 1، 2 ، 3 ) است . مقدار اولیه هر یک از متغیرهای فوق ، مقدار 200 در نظر گرفته شده است .

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

در زبان جاوا دو نوع متغیر وجود دارد : متغیرهای ساده (Primitive) و کلاس ها .  نوع int ساده بوده و قادر به نگهداری یک عدد است . تمام عملیاتی که می توان با متغیرهای ساده انجام داد ، صرفا" نگهداری یک مقدار با توجه به نوع متغیر است . کلاس ها ، قادر به دارا بودن چندین بخش بوده و با استفاده از متدهای مربوط به هریک ، امکان استفاده آسان آنها فراهم می گردد. Rectangle یک نمونه از کلاس های فوق است .

متن برنامه

import java.awt.Graphics;
import java.awt.Color;
 
public class FirstApplet extends java.applet.Applet
{
 
    public void paint(Graphics g)
    {
        int width = 200;
        int height = 200;
        g.drawRect(0, 0, width, height);
        g.drawLine(0, 0, width, height);
        g.drawLine(width, 0, 0, height);
    }
}

در برنامه ارائه  شده  ، همواره یک خط قطری در پنجره ای با ابعاد 200 * 200 پیکسل ، رسم می گردد . عدم امکان پویائی ابعاد پنجره ، یکی از محدودیت های برنامه فوق است . فرض کنید در این رابطه ، امکانی در برنامه پیش بینی گردد که از کاربر درخواست شود ابعاد پنجره را مشخص نماید . پس از مشخص نمودن ابعاد پنجره توسط کاربر ، خط قطری بر اساس ابعاد ارائه شده ، رسم گردد . با مراجعه به صفحه مستندات مربوط به کلاس Graphic ، ( موجود در فایل java.awt.Graphic.html ، فایل فوق شامل لیست تمام توابع مربوط به عملیات گرافیکی است ) ، با تابع getClipBounds برخورد خواهیم کرد . تابع فوق پارامتری را بعنوان ورودی اخد نکرده و یک مقدار از نوع Rectangle را برمی گرداند. Rectangle برگردانده شده ، شامل طول و عرض محدوده مورد نظر برای رسم است . کلاس Rectangle دارای چهار متغیر به اسامی x,y,width,height است .  بنابراین بمنظور امکان پویا نمودن ابعاد پنجره ، با استفاده از getClipBounds  ، محدوده Rectangle را اخذ و پس از استخراج مقادیر مربوط به width و height  از Rectangle ، آنها را در متغیرهای width و height ذخیره می نمائیم .

متن برنامه

import java.awt.Graphics;
import java.awt.Color;
import java.awt.Rectangle;
 
public class FirstApplet extends java.applet.Applet
{
 
    public void paint(Graphics g)
    {
        int width;
        int height;
        Rectangle r;
 
        r = g.getClipBounds();
        width = r.width - 1;
        height = r.height - 1;
 
        g.drawRect(0, 0, width, height);
        g.drawLine(0, 0, width, height);
        g.drawLine(width, 0, 0, height);
    }
}

پس از اجرای برنامه فوق ، مشاهده خواهد شد که Rectangle و قطرها بصورت کامل در محدوده مربوطه قرار خواهند گرفت . پس از تغییر اندازه پنجره ،  قطرها و Rectangle براساس مقادیر جدید بصورت خودکار مجددا" رسم خواهند شد. در رابطه با برنامه فوق ، ذکر نکات زیر ضروری است :

● با توجه به استفاده از کلاس Rectangle ، لازم است از java.awt.Rectangle استفاده گردد. 

● در برنامه فوق سه متغیر تعریف شده است . دو متغیر ( width و height) از نوع int و یک متغیر (r) ، از نوع Rectangle است .

● تابع getClipBounds ، پارامتری را بعنوان ورودی اخذ نکرده و صرفا" یک Rectangle را برمی گرداند. دستور : r=g.getClipBounds ، یک Rectangle را برگردانده و آن را در متغیر r ذخیره می نماید.

● متغیر r ، از نوع کلاس Rectangle بوده و دارای چهار متغیر است . (x,y,width,height) . بمنظور دستیابی به هر یک ازمتغیرها ، از عملگر نقظه استفاده می گردد. مثلا" r.width ، عنوان می نماید که در متغیر r ، مقداری با نام width بازیابی می گردد. مقدار مورد نظر در متغیر محلی با نام width ذخیره می گردد.

● در نهایت از width و height  در توابع مربوط به رسم ، استفاده می گردد.

لازم به توضیح است که در برنامه فوق می توانستیم از متغیرهای width و height استفاده نکرده و مقدار r.width - 1  را مستقیما" در اختیار توابع مربوطه قرار داد.

جاوا دارای چندین نوع متغیر ساده است . سه نمونه رایج در این زمینه عبارتند از :

  • نوع صحیح (int)
  • نوع اعشاری (float)
  • نوع کاراکتری (char)

بر روی داده های نوع ساده می توان عملیات محاسباتی متفاوتی را انجام داد. در این راستا از عملگر + برای جمع ، - برای تفریق ، * برای ضرب و / برای تقسیم استفاده می گردد. برنامه زیر نحوه استفاده از عملگرهای فوق را نشان می دهد .

متن برنامه

float diameter = 10;
float radius;
float volume;
 
radius = diameter / 2.0;
volume = 4.0 / 3.0 * 3.14159 * radius * radius * radius;

حلقه های تکرار

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

مثال : فرض کنید می خواهیم شکل زیر توسط کامپیوتر رسم گردد :

در ابتدا و بمنظور رسم شکل فوق  ، مناسب است خطوط افقی بصورت زیر رسم گردند.

یکی از روش های رسم خطوط فوق  ، ایجاد مجموعه ای از کدهای ترتیبی است که یکی پس از دیگری اجراء خواهند شد. ( فقط یک مرتبه ).

متن برنامه

import java.awt.Graphics;
 
public class FirstApplet extends java.applet.Applet
{
 
    public void paint(Graphics g)
    {
        int y;
        y = 10;
        g.drawLine(10, y, 210, y);
        y = y + 25;
        g.drawLine(10, y, 210, y);
        y = y + 25;
        g.drawLine(10, y, 210, y);
        y = y + 25;
        g.drawLine(10, y, 210, y);
        y = y + 25;
        g.drawLine(10, y, 210, y);
        y = y + 25;
        g.drawLine(10, y, 210, y);
        y = y + 25;
        g.drawLine(10, y, 210, y);
        y = y + 25;
        g.drawLine(10, y, 210, y);
        y = y + 25;
        g.drawLine(10, y, 210, y);
    }
}

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

متن برنامه

import java.awt.Graphics;
 
public class FirstApplet extends java.applet.Applet
{
 
    public void paint(Graphics g)
    {
        int y;
        y = 10;
        while (y <= 210)
        {
            g.drawLine(10, y, 210, y);
            y = y + 25;
        }
    }
}

پس از اجرای برنامه فوق ، نه خط افقی که هر یک دارای طولی به اندازه 200 پیکسل می باشند ،  رسم خواهد گردید. 

عبارت while باعث ایجاد یک حلقه تکرار در زبان جاوا می گردد. حلقه تکرار مادامیکه مقدار y کوچکتر و یا مساوی 200 باشد ، ادامه خواهد یافت . شرط موجود در ابتدای حلقه while  در هر مرتبه بررسی می گردد ،در صورتیکه شرط درست باشد ، دستورات موجود در حلقه مجددا" تکرار ( دستورات محصور بین { و } ) می گردننده. در صورتیک شرط موجود در ابتدای حلقه while ، نادرست باشد ، دستورات مربوطه به حلقه تکرار اجراء نشده و بلافاصله اولین دستور پس از انتهای حلقه اجراء خواهد شد.

در زمان اجرای برنامه فوق در ابتدا مقدار y معادل 10 است . چون مقدار ده کمتر از 210 می باشد ،  دستورات موجود در حلقه تکرار اجراء و خطی از نقطه (10,10) تا (210,10) رسم خواهد شد. در ادامه مقدار y ، سی و پنج  شد ه و مجددا" به ابتدای حلقه ( بررسی شرط) مراجعه می گردد. مقدار 35 از 210 کوچکتر بوده و شرط همچنان درست بوده و مجددا" دستورات موجود در حلقه تکرار ، اجراء خواهند شد. فرآیند فوق مادامیکه مقدار y کوچمتر از 210 می باشد ، تکرار خواهد شد. پس از اینکه مقدار y از 210 بیشتر گردید ، حلقه تکرار اجراء  نشده  و با توجه به عدم وجود دستوری دیگر ، برنامه نیز خاتمه خواهد یافت .

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

متن برنامه

import java.awt.Graphics;
 
public class FirstApplet extends java.applet.Applet
{
 
    public void paint(Graphics g)
    {
        int x, y;
        y = 10;
 while (y <= 210)
        {
            g.drawLine(10, y, 210, y);
            y = y + 25;
        }
        x = 10;
 while (x <= 210)
        {
            g.drawLine(x, 10, x, 210);
            x = x + 25;
        }
    }
}

در زبان جاوا ، می توان از عبارت for برای ایجاد حلقه های تکرار نیز استفاده کرد . نمونه برنامه زیر نحوه استفاده از حلقه for در مقابل حلقه while را نشان می دهد .

حلقه تکرار با استفاده از For

for (y = 10; y <= 210; y = y + 25)
    {
      g.drawLine(10, y, 210, y);
    }

حلقه تکرار با استفاده از While

   y = 10;
        while (y <= 210)
        {
            g.drawLine(10, y, 210, y);
            y = y + 25;
        }

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

CGI

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

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

- یک دفترچه تلفن امکان ارسال اطلاعات کاربران را از طریق یک فرم Html فراهم و پس از ارسال اطلاعات موجود در فرم ، اطلاعات در بانک های اطلاعاتی ذخیره خواهد شد.

- یک فروشگاه online کتاب ، امکان ارسال اطلاعات مربوط به یک گروه از کتاب را قراهم و در ادامه اطلاعات تکمیلی در رابطه به هر یک از کتاب های موجود در گروه در اختیار کاربران قرار خواهد گرفت .

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

مکانیزم CGI

مکانیزم نحوه عملکرد CGI در اکثر سرویس دهندگان وب ، یکسان و استاندارد است . در این راستا فولدری با نام cgi-bin در فهرست ریشه وب سایت مورد نظر ایجاد می گردد. نحوه برخورد سرویس دهنده با فایل هائی که در فولدر فوق قرار می گیرند ، متفاوت خواهد بود. سرویس دهنده در رابطه با فایل های فوق صرفا" عملیات ساده خواندن و ارسال را انجام نخواهد داد. این نوع فایل ها می بایست اجراء و خروجی بدست آمده در اثر اجرای برنامه، برای مرورگر متقاضی ارسال خواهد گردید. از زبانهای متعددی برای نوشتن برنامه ها در این زمینه استفاده می گردد. زبان اسکریپتی PERL یکی از متداولترین گزینه ها برای نوشتن اسکریپت های CGI ، می باشد.

بمنظور نوشتن فایل های CGI ، می توان از زبانهای برنامه نویسی و زبانهای اسکریپت استفاده کرد. زبانهای C و PERL دو گزینه مناسب در این راستا می باشند. مسئولیت برخورد با اسکریپت های CGI برعهده  سرویس دهنده  وب است .

اسکریپت های ساده CGI

بمنظور نوشتن اسکریپت های CGI ، لازم است که امکان دستیابی به فولدر cgi-bin و آشنائی با یکی از زبانهای C و یا PERL وجود داشته باشد. در این بخش به بررسی نحوه ایجاد اسکریپت های CGI توضیح داده می شود .

مثال : صفحه وب زیر ، یک پیام ساده را در خروجی ( مرورگر ) نمایش می دهد .

یک صفحه وب ساده

 
 
 

یک صفحه ساده وب

 
 

 برنامه زیر با زبان C نوشته شده و همان خروجی صفحه وب فوق را نمایش خواهد داد. این برنامه ساده ترین نوع استفاده از CGI برای ایجاد خروجی مورد نظر است .

متن برنامه به زبان C

#include 
 
int main()
{
  printf("Content-type: text/html\n\n");
  printf("\n");
  printf("\n");
  printf("

یک صفحه ساده وب

\n");
  printf("\n");
  printf("\n");
  return 0;
}

 برنامه فوق را در فایلی با نام simplest.c ذخیره و با استفاده از کمپایلر C ، آن را با استفاده از دستور زیر ترجمه می نمائیم .

gcc simplest.c -o simplest.cgi

پس از ترجمه برنامه و تولید فایل simplest.cgi ، آن را در فولدر cgi-bin ذخیره تا امکان اجرای آن فراهم گردد. بمنظور اجرای برنامه فوق ، مرورگر خود را فعال و در بخش آدرس آن ، آدرس زیر را وارد نمائید.

http://www.yourcompany.com/cgi-bin/simplest.cgi

پس از تایپ آدرس فوق ، برنامه موجود در فایل simplest.cgi اجراء و خروجی مناسب را نمایش خواهد داد.  در برنامه فوق استفاده از دستور زیر لازم است . دستور زیر اولین خطی است که توسط هر اسکریپت CGI برای مرورگر ارسال می گردد :

printf("Content-type: text/html\n\n");

برنامه فوق را می توان با استفاده از زبان PERL نیز نوشت . در این راستا لازم است کدهای نوشته شده PERL زیر را در تایپ و در فایلی با نام simplest.pl ذخیره نمود.

متن برنامه به زبان Perl

#! /usr/bin/perl
print "Content-type: text/html\n\n";
print "

Hello World!";

print "\n";

فایل فوق را در فولدر cgi-bin قرار داده و بمنظور اجرای آن ، مرورگر را فعال و در بخش آدرس آن ، آدرس زیر را وارد نمائید :

http://www.yourcompany.com/cgi-bin/simplest.pl

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

مهمترین مزیت و جایگاه اسکریپت های CGI ، استفاده از تکنولوژی فوق بمنظور ایجاد محتویات پویا می باشد. هر مرتبه که اسکریپت اجراء می گردد ، خروحی متفاوت خواهد بود . در صورتیکه خروجی در هر مرتبه اجراء یکسان باشد ، می توان از صفحات ایستا در این خصوص استفاده کرد. برنامه نوشته شده به زبان C  زیر ، یک محتویات پویای ساده را ایجاد می نماید .

یک برنامه ساده بمنظور ایجاد محتویات پویا

#include 
 
int incrementcount()
{
  FILE *f;
  int i;
 
  f=fopen("count.txt", "r+");
  if (!f)
  {
     sleep(1);
     f=fopen("count.txt", "r+");
     if (!f)
       return -1;
  }
 
  fscanf(f, "%d", &i);
  i++;
  fseek(f,0,SEEK_SET);
  fprintf(f, "%d", i);
  fclose(f);
  return i;
}
 
int main()
{
  printf("Content-type: text/html\n\n");
  printf("\n");
  printf("\n");
  printf("

The current count is: ")

  printf("%d\n", incrementcount());
  printf("\n");
  printf("\n");
  return 0;
}

با استفاده از یک ادیتور برنامه فوق را تایپ و آن را در فایلی با نام count.c ذخیره و با استفاده از دستور زیر آن را کمپایل نمائید :

gcc count.c -o count.cgi

فایل متنی ساده ای با نام count.txt ایجاد و مقدار صفر را در آن قرار دهید. فایل های count.cgi  و count.txt  را در فولدر cgi-bin ذخیره تا امکان اجرای آنها فراهم گردد. بمنظور اجرای برنامه فوق ، مرورگر را فعال و در بخش آدرس آن ، آدرس زیر را تایپ نمائید :

http://www.yourcompany.com/cgi-bin/count.cgi

پس از اجرای برنامه فوق ، یک صفحه ایجاد که در هر مرتبه اجراء ، خروجی "The current count is :X" ، مقدار X در هر بار اجرای اسکریپ تغییر و افزایش خواهد یافت . فایل count.txt شماره جاری را در خود نگهداری و تابع incrementcounr ، تابعی است که مقدار count را پس از هر مرتبه اجراء افزایش و آن را در فایل count.txt ثبت خواهد کرد.

فرم ها : ارسال اطلاعات  ورودی

همانگونه که مشاهد گردید ، سرویس دهنده وب فایل های اجرائی موجود در فولدر cgi-bin را اجراء و پس از تولید خروجی ، برای مرورگر ارسال می گردند. برای ارسال اطلاعات به برنامه های CGI می توان از فرم های Html استفاده کرد.

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

مثال : دستورات زیر یک صفحه Html بهمراه  یک فرم را نشان می دهد. دستورات فوق با استفاده از یک ادیتور متنی تایپ و در فایلی با نام simpleform.htm ذخیره می گردند.

یک صفحه وب بهمراه یک فرم

 
 
 

A super-simple form

 
  Enter Your Name:
 
 

 
 
 
 
 

همانگونه که مشاهده می گردد ، کدهای Html فوق یک فرم ساده شامل یک فیلد برای ورود نام را تعریف و برای ارسال اطلاعات به اسکریپت CGI از متد GET استفاده شده است . فرم فوق دارای دو دکمه submit و Reset برای ارسال اطلاعات و یا reset نمودن فرم است .

فایل simpleform.cgi ، که توسط فرم استفاده خواهد شد ، یک برنامه نوشته شده به زبان C است . برنامه فوق در ابتدا با محتویات زیر در فایلی با نام simpleform.c ایجاد شده است .

متن برنامه نوشته شده به زبان C برای پردازش اطلاعات فرم ارسالی

#include 
#include 
 
int main()
{
  printf("Content-type: text/html\n\n");
  printf("\n");
  printf("\n");
  printf("

The value entered was: ")

  printf("%s\n", getenv("QUERY_STRING"));
  printf("\n");
  printf("\n");
  return 0;
}

برنامه فوق پس از تایپ در یک ادیتور متنی در فایلی با نام simpleform.c ذخیره و بصورت زیر کمپایل خواهد شد.

gcc simpleform.c -o simpleform.cgi

پس از ترجمه برنامه فوق ، آن را در فولدر cgi-bin ذخیره می گردد. برنامه فوق اطلاعات ارسالی توسط فرم را دریافت ( انتخاب ) ، و آنها را نمایش خواهد داد. مثلا" پس از اجرای برنامه فوق خروجی مطابق زیر نمایش داده خواهد شد:

The value entered was: Name=Ali+Rahmani

Name ، نا فیلد ورودی در فرم است . هر فیلد ورودی در یک فرم می بایست دارای یک مشحصه منحصر بفرد باشد. Ali+Rahmani ، نام وارد شده در فرم است. علامت + نشاندهنده فضای خالی است .

استفاده از فرم ها بمنظور اخذ اطلاعات کاربران و ارسال آنها برای یک اسکریپت CGI عملیات ساده ای است . در این زمینه ، پیشنهادات زیر توصیه می گردد :

● هر یک از فیلدهای ورودی موجود در  فرم، می بایست دارای یک مشخصه منحصربفرد باشند.

● برای ارسال فرم می بایست متد ارسال را مشخص نمود. در این راستا دو گزینه GET و POST  وجود دارد. متد GET دارای این مزیت عمده است که می توان مقادیر وارد شده را بهمراه URL برای اسکریپت مشاهده و اشکال زدائی آن راحت تر است . ( ویژگی فوق صرفا" از بعد اشکال زدائی مورد نظر است )

● تعداد کاراکترهای ارسالی توسط متد GET محدوده بوده و معمولا" از آن برای ارسال اطلاعات با حجم کم استفاده می شود. متد POST برای فرم هائی که دارای اطلاعات زیاد برای ارسال می باشند ، ترجیح داده می شود.

● اطلاعات ارسال شده با استفاده از متد GET با استفاده از متغیر محیطی QUERY_STRING قابل دستیابی و استفاده می باشند. ( مقدار متغیر فوق در زبان C با استفاده از تابع getenv و در PERL با استفاده از ENV$ قابل دستیابی خواهند بود). اطلاعات ارسال شده توسط متد POST را در زبان C با استفاده از تابع gets و در PERL از read استفاده می گردد.

● اطلاعات ارسالی شامل مقادیر مربوط به تمام فیلدهای موجود بر روی فرم بوده که بصورت یک رشته در کنار یکدیگر قرار گرفته اند. در این زمینه ممکن است کاراکترهای فراوانی همراه فرم ارسال و نیازمند ترجمه باشند. مثلا" تمام فضا های خالی با علامت + جایگزین می گردند.

متغیر محیطی QUERY_STRING یکی از نمونه های متنوع متغیر های محیطی است . در این زمینه متغیرهای محیطی بیشتری وجود داشته که می توان از آنها بهمراه اسکریپت های CGI استفاده کرد.

برخی از متغیرهای محیطی که می توان در اسکریپت های CGI استفاده کرد

  • AUTH_TYPE
  • CONTENT_LENGTH
  • CONTENT_TYPE
  • GATEWAY_INTERFACE
  • HTTP_ACCEPT
  • HTTP_USER_AGENT
  • PATH_INFO
  • PATH_TRANSLATED
  • QUERY_STRING
  • REMOTE_ADDR
  • REMOTE_HOST
  • REMOTE_IDENT
  • REMOTE_USER
  • REQUEST_METHOD
  • SCRIPT_NAME
  • SERVER_NAME
  • SERVER_PORT
  • SERVER_PROTOCOL
  • SERVER_SOFTWARE

هر یک از متغیرهای محیطی فوق ، در بردارنده اطلاعات مفید و جالبی می باشند. مثلا" با استفاده از متغیر محیطی REMOTE_USER می توان از آدرس های  IP  کاربران آگاهی یافت .

ایجاد یک فرم واقعی

در یک فرم واقعی ممکن است از چندین نوع فیلد ورود اطلاعات استفاده گردد . کنترل های استاندارد بر روی یک فرم عبارتند از :

  • Single-line text input
  • Multi-line text input
  • Selection lists
  • Check boxes
  • Radio buttons
  • Specialized buttons

با ترکیب و استفاده از کنترل های فوق  ، می توان فرم های جالبی را ایجاد کرد. در ادامه به بررسی هر یک از کنترل های فوق اشاره خواهد شد.

 ● Single-line edit

واژه " Input" ، یک محدوده قابل ویرایش یک خطی  برای ورود اطلاعات را تعریف می نماید. برای انتساب یک نام منحصر بفرد به فیلد فوق از واژه "Name" استفاده می گردد. هر یک از کنترل های موجود بر روی  فرم می بایست دارای یک نام منحصر بفرد باشند. بمنظور تعیین اندازه ( طول ) فیلد بر حسب کاراکتر از واژه "Size" استفاده می گردد.  از واژه "Maxlength"  برای مشخص نمودن حداکثر کاراکتر ورودی در فیلد مربوطه استفاده می گردد. در صورتیکه فیلد فوق می بایست دارای یک مقدار اولیه در زمان نمایش بر روی فرم باشد از واژه "Value" استفاده و مقدار اولیه فیلد مورد نظر را مشخص می نمائیم .

یک فیلد کنترلی Single-line

Enter Name: 

در فیلد فوق بصورت پیش فرض text وارد می گردد. در صورتیکه لازم است که صرفا" در فیلد فوق مقادیر عددی صحیح وارد شود ، می بایست نوع اطلاعات وارد شده در فیلد را با صراحت مشخص کرد . در این زمینه از واژه type=int استفاده می گردد.

●  Multi-Line edit

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

Check box

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

یک فیلد کنترلی Check box

Radio buttons

کنترل های فوق مشابه Check box بوده ولی در گروه هائی سازماندهی می گردند. تمام Radio button های موجود در یک گروه می بایست دارای یک نام مشابه بوده و در صورتیکه لازم است برای آنها مقدار اولیه ای را تغریف کرد از واژه "CHECKED"  استفاده می گردد.

یک فیلد کنترلی Radio buttons

Choose your item:

Selection lists

لیست های انتخابی ، امکان انتخاب یک گزینه از میان مجموعه ای گزینه های را برای کاربر فراهم می نماید. با استفاده از وازه " Size"  طول فیلد مشخص و با استفاده از واژه "Name" ، برای کنترل یک نام منحصر بفرد تعریف می گردد.

یک فیلد کنترلی Selection list

Select an Option

دکمه های خاص

تگ های زیر دو دکمه خاص را تعریف می کند. دکمه Submit اطلاعات موجود در فرم را برای سرویس دهنده ارسال و دکمه Reset برای Reset نمودن فرم استفاده می گردد.

فیلدهای کنترلی خاص

 یک فرم واقعی

فرم زیر اطلاعات متعددی شامل : نام ، جنسیت ، سن و توضیحات را از کاربران اخذ و آنها را برای پردازش در اختیار یک اسکریپت CGI قرار خواهد داد. فرم فوق در یک صفحه html با نام Testform.htm ذخیره خواهد گردید.

یک فرم کامل

 
 
 

Test Form

 
    Enter Your Name:
 
 

Enter your sex:

 Male
 Female
 

Select your age

 
 

Enter Your Comment:

 
 

 
 
 
 
 

اسکریپت CGI ، چهار فیلد اطلاعاتی موجود در فرم را اخذ و پردازش های لازم را انجام خواهد داد.

خلاصه

  • یک اسکریپت CGI برنامه ای است که عموما" با استفاده از زبانهای C و یا PERL نوشته می گردند.
  • در اکثر سرویس دهندگان  ، اسکریپت های CGI در فولدر cgi-bin قرار می گیرند.
  • اسکریپت های CGI موجود در فولدر cgi-bin در زمان درخواست کاربر ، اجراء خواهند شد.
  • تمام اطلاعات ارسالی  توسط اسکریپت ها به STDOUT برای مرورگر ارسال خواهند شد.
  • رشته "Content-type:text/html\n\n" می بایست اولین خط ارسالی برای مرورگر باشد.
  • بمنظور ارسال اطلاعات ورودی از فرم های html استفاده و با استفاده از ACTION آدرس اسکریپت پاسخگو مشخص می گردد.
  • پس از دریافت اطلاعات فرم ها  توسط یک اسکریپت ، می بایست عملیات پالایش اطلاعات ( حذف کاراکترهای غیر ضروری ) انجام گیرد.

در صورت طراحی و پیاده سازی یک سایت واقعی و پویا ، استفاده از اینترفیس CGI یکی از گزینه های مناسب در این زمینه خواهد بود .  

PERL

Perl یکی از متداولترین زبانهای اسکریپت است . زبان فوق در موارد متعددی بخدمت گرفته می شود. مثلا" می توان از زبان فوق برای نوشتن فایل های مشابه Batch در سیستم عامل DOS و یا اسکریپت های C shell استفاده می گردد. از زبان Perl  بمنظور پیاده سازی اسکریپت های CGI  نیز استفاده می گردد.

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

اولین برنامه

با استفاده از یک ادیتور متنی ، فایلی را با نام test1.pl ایجاد و دستور زیر را در آن قرار دهید :

print "Hello World!\n";

بمنظور اجرای برنامه فوق دستور per1 test1.pl ، را تایپ و در ادامه عبارت "Hello world" در خروجی نمایش داده خواهد شد. دستور Print امکان نوشتن اطلاعات مورد نظر در stdout را فرام می نماید. n\ برای ایجاد یک خط استفاده می گردد.

متغیرها

برای استفاده از متغیرها ، ضرورتی به تعریف آنها نبوده و با استفاده از علامت "$" می توان آنها را مشخص کرد.

نمونه هائی از متغیرها در Perl

$s  = "Hello\nWorld\n";
$t   = 'Hello\nWorld\n';
 print $s, "\n", $t;

نمونه هائی از متغیرها در Perl

$i = 5;
$j = $i + 5;
print $i, "\t", $i + 1, "\t",  $j;     # \t = tab

نمونه هائی از متغیرها در Perl

$a = "Hello ";
$b = "World\n";
$c = $a . $b;    # note use of . to concat strings
print $c;

نمونه هائی از متغیرها در Perl

$a = "Hello ";
$b = "World\n";
$a .= $b;
print $a;

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

استفاده از بردار

@a = ('cat', 'dog', 'eel');
print @a, "\n";
print $#a, "\n";  # The value of the highest index, zero based
print $a[0], "\n";
print $a[0], $a[1], $a[2], "\n";

کاراکتر #$ ، برای برگرداندن بالاترین ایندکس بردار استفاده می شود.

حلقه های تکرار و شرطی

برای ایجاد حلقه های تکرار از for  و while   استفاده می گردد.

حلقه for

for ($i = 0; $i < 10; $i++)
   {
      print $i, "\n";
   }

حلقه While

 $i = 0;
   while ( $i < 10 )
   {
      print $i, "\n";
      $i++;
   }

برنامه زیر نحوه استفاده از ساختار if را نشان می دهد.

ساختار if

for ($i = 0; $i < 10; $i++)
   {
      if ($i != 5)
      {
         print $i, "\n";
      }
   }

عملگرهای منطقی در Perl مشابه زبان C می باشند.

عملگرهای منطقی

  • && and
  • || or
  • ! not

  • For numbers:
    • == equal
    • != not equal
    • <, <=, >, >= (as expected)

  • Others:
    • eq
    • ne
    • lt
    • le
    • gt
    • ge

توابع

با استفاده از sub می توان یک برنامه فرعی را ایجاد کرد. تمام پارامترهائی که به برنامه فرعی ارسال می گردند ، در برداری با نام "_"  ذخیره می گردند.

توابع

show ('cat', 'dog', 'eel');

   sub show
   {
      for ($i = 0; $i <= $#_; $i++)
      {
         print $_[$i], "\n";
      }
   }

برای تعریف متغیرهای محلی در یک تابع از کلمه local استفاده می گردد.

تعریف متغیرهای محلی در توابع

sub aaa
   {
      local ($a, $b, $c)
      ...
   }

برای فراخوانی یک تابع از & بصورت زیر استفاده می گردد.

فراخوانی  تابع

 &show ('a', 'b', 'c');

برای برگرداندن مقدار از تابع از Return استفاده می گردد.

خواندن اطلاعات از STDIN

بمنظور خواندن اطلاعات از فایل استاندارد ورودی (stdin) از STDIN بصورت زیر استفاده می گردد.

خواندن اطلاعات از STDIN

print "Enter high number: ";
   $i = ;
   for ($j = 0; $j <= $i; $j++)
   {
      print $j, "\n";
   }

STDIN در هر لحظه یک خط را می خواند . با استفاده از getc می توان یک کاراکتر را از ورودی خواند.

خواندن یک کاراکتر از ورودی

$i = getc(STDIN);

خواندن متغیرهای محیطی

در زبان PERL یک hash سراسری با نام ENV تعریف و از آن برای بازیابی مقادیر مربوط به متغیرهای  محیطی استفاده می شود.

خواندن متغیرهای محیطی

print $ENV{'PATH'};

خواندن آرگومانهای خط دستور

در زبان PERL از یک بردار سراسری با نام ARGV بمنظور بازیابی آرگومانهای پاس داده شده به اسکریپت استفاده می گردد. ARGV#$ تعداد آرگومانها ( می بایست یک واحد از آن کم گردد ) ، [0]ARGV$  اولین آرگومان و [1]ARGV$  دومین آرگومان ( سایر آرگومانها نیز با تغییر ایندکس بردار بدست خواهند آمد )  را نشان می دهد.


ویروس های کامپیوتری

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

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

انواع آلودگی

آلودگی الکترونیکی دارای اشکال منتفاوتی است . متداولترین موارد آلودگی الکترونیکی عبارتند از :

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

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

- کرم ها . یک کرم ، برنامه  نرم افزاری کوچکی بوده که با استفاده از شبکه های کامپیوتری و حفره های امنیتی موجود ، اقدام به تکثیر خود می نمایند. نسخه ای از "کرم " ، شبکه را پیمایش تا ماشین های دیگر موجود در شبکه را که دارای حفره های امنیتی می باشند ، تشخیص و نسخه ای از خود را تکثیر نمایند. کرم ها با استناد به حفره های امنیتی موجود ، نسخه ای از خود را بر روی ماشین های جدید تکثیر می نمایند.

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

ویروس چیست ؟

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

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

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

کرم چیست ؟

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

نحوه تکثیر به چه صورت است ؟

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

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

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

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

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

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

ویروس های پست الکترونیکی

آخرین اطلاعات موجود در رابطه با ویروس های کامپیوتری به " ویروس پست الکترونیکی " اشاره دارد. عملکرد ویروس "ملیزا " در سال 1999 بسیار دیدنی بود. ویروس فوق از طریق  مستندات ( سندها ) از نوع  Word شرکت مایکروسافت ، گسترش و توسط پست الکترونیکی ارسال و توزیع می گردید. عملکرد ویروس فوق بشکل زیر بود :

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

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

ویروس ملیزا از قابلیت های برنامه نویسی توسط VBA)Visual Basic for Application)  که در Ms Word وجود دارد ، استفاده می کرد. VBA یک زبان برنامه نویسی کامل بوده که امکانات متعددی نظیر : تغییر محتویات فایل ها و یا ارسال پیام های پست الکترونیکی را فراهم می آورد. VBA دارای یک امکان مفید و در عین حال خطرناک با نام " اجرای خودکار " است . یک برنامه نویس قادر به درج یک برنامه درون یک سند بوده و بلافاصله پس از باز نمودن سند ، شرایط اجرای کدهای فوق فراهم خواهد شد. ویروس ملیزا بدین طریق برنامه نویسی شده بود. هر شخص که سند آلوده به ویروس ملیزا را فعال می نمود ، بلافاصله زمینه فعال شدن ویروس نیز فراهم می گردید. ویروس فوق قادر به ارسال 50 پیام پست الکترونیکی بوده و در ادامه یک فایل مرکزی با نام NORMAL.DOT را آلوده تا هر فایل دیگری که در آینده ذخیره می گردد ، نیز شامل ویروس گردد.

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

پیشگیری از ویروس

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

● از سیستم های عامل ایمن و مطمئن نظیر : یونیکس و ویندوز NT استفاده تا پوشش حفاظتی مناسبی در مقابل ویروس های سنتی ( نقطه مقابل ویروس های پست الکترونیکی ) ایجاد گردد.

● در صورتیکه از سیستم های عامل غیر مطمئن و ایمن استفاده می گردد ، سیستم خود را مسلح به یک نرم افزار حفاظتی در رابطه با ویروس ها ، نمائید.

● از نرم افزارهائی که توسط منابع غیر مطمئن توزیع و ارائه می گردند ، اجتناب و نرم افزارهای مربوطه را از منابع مطمئن تهیه و نصب نمائید. در ضمن امکان بوت شدن از طریق فلاپی دیسک را با استفاده از برنامه BIOS ، غیر فعال کرده تا بدین طریق امکان آلوده شدن ویروس از طریق یک دیسکت که بصورت تصادفی در درایو مربوطه قرار گرفته شده است ، اجتناب شود.

● امکان "حفاظت ماکرو در مقابل ویروس " را در تمام برنامه های مایکروسافت فعال نموده و هرگز امکان اجرای ماکروهای موجود در یک سند را تا حصول اطمینان از عملکرد واقعی آنها ندهید

● هرگز بر روی ضمائمی که بهمراه یک پیام پست الکترونیکی ارسال شده و شامل کدهای اجرائی می باشند ، کلیک ننمائید.  ضمائمی که دارای انشعاب DOC ( فایل های word) ، انشعاب XLS( صفحه گسترده ) ، تصاویر( فایل های با انشعاب GIF و یا JPG و ...) بوده ، صرفا" شامل اطلاعات بوده و خطرناک نخواهند بود ( در رابطه با فایل های word و Execl به مسئله ماکرو و ویروس های مربوطه دقت گردد ) . فایل های با انشعاب EXE,COM و یا VBS اجرائی بوده و در صورت آلوده بودن به ویروس ، با اجرای آنان بر روی سیستم خود زمینه فعال شدن آنها فرام خواهد شد.  بنابراین لازم است از اجرای هرگونه فایل اجرائی که بهمراه پست الکترونیکی برای شما ارسال می گردد ( خصوصا" مواردیکه آدرس فرستنده برای شما گمنام و ناشناخنه اس )  ، صرفنظر نمائید

با تحقق اصول فوق ، یک پوشش ایمنی مناسب در رابطه با ویروس های کامپیوتری بوجود می آید.

علت ایجاد ویروس های کامپیوتری

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

در رابطه با سوال فوق ، حداقل سه دلیل وجود دارد :

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

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

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

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

تاریخچه

ویروس های سنتی کامپیوتر در اواخر 1980 بشدت گسترش یافتند. موضوع فوق دارای چندین دلیل است .

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

دومین دلیل ، به استفاده از سیستم های BBS برمی گردد. افراد از طریق موrدم  به یک BBS متصل و انواع برنامه های مورد نیاز خود را اخذ (Download) می کردند.  بازیهای کامپیوتری نمونه ای از برنامه های کامپیوتری بودند که بشدت با استقبال مواجه و همواره از طریق مراکز BBS توزیع و منتشر می شدند. طبیعی است آلوده بودن یکی از بازیهای کامپیوتری که علاقه مندانن زیادی داشت ، می توانست در مدت زمان کوتاهی باعث انتشار و تکثیر یک ویروس کامپیوتری گردد.

سومین دلیل ، استفاده فراوان از فلاپی دیسک ها بمنظور استفاده از برنامه های کامپیوتری بود. در سال 1980 ، برنامه ها دارای ظرفیت کم بوده و امکان استقرار یک سیستم عامل ، یک واژه پرداز و مستندات فراوانی در یک و یا دو فلاپی دیسک وجود داشت . اغلب کامپیوترها در آن زمان دارای هارد دیسک نبوده و می بایست برای راه اندازی کامپیوتر از فلاپی دیسک استفاده می شد ، استفاده از فلاپی دیسک ها ، زمینه ای مساعد برای توزیع و انتشار برنامه های آلوده را فراهم می کرد.

قیمت فایل فقط 3,900 تومان

خرید

برچسب ها : سیستم عامل

نظرات کاربران در مورد این کالا
تا کنون هیچ نظری درباره این کالا ثبت نگردیده است.
ارسال نظر