Thursday, March 14, 2013

سیستم عامل ها



Setup سيستم و اعمال تغييرات در آن
برنامه Setup و تغيير پيکربندي سيستم جزء DOS  يا  Windows و يا سيستمهاي عامل ديگر نيست، ولي به دليل تأثير فراواني که اين برنامه بر روي کارکرد کل سيستم و بخصوص سيستم عامل نصب شده در کامپيوتر دارد، از اينرو خوب است قبل از شروع آزمايشها با Setup سيستم آشنا شويم.
در کامپيوترهاي قديمي XT، براي تعيين پيکربندي سيستم (نوع گردونه­هاي ديسک نرم، ديسک سخت و کارت گرافيکي و ...) از يکسري اتصال دهنده (Jumper) استفاده مي­شد، ولي به دليل مشکلات کار، در کامپيوترهاي جديدتر AT، از يک حافظه 64 بايتي به نام CMOS استفاده مي­شود. يک باتري محتويات اين حافظه را در موقع خاموش بودن کامپيوتر حفظ مي­کند. براي ديدن و دستکاري اين حافظه برنامه­هاي مختلفي نوشته شده­اند که معروفترين آنها متعلق به شرکتهاي AMI وAWARD هستند. اين برنامه­ها به نام Setup مشهورند و در داخل حافظه ROM کامپيوترها قرار دارند. موقع راه اندازي سيستم، پيغام راهنمايي در مورد چگونگي ورود به برنامه Setup نمايش داده مي­شود. اين پيغام و همچنين نحوه مشاهده و تغيير اطلاعات Setup و امکاناتي که Setup در اختيار کاربر مي­گذارد، به نوع Setup بستگي دارد.
در اينجا قسمتهاي مهمي که معمولاً در هر Setup وجود دارند، مورد بحث قرار مي­گيرند. اين قسمتها شايد در سيستم شما موجود نبوده يا عنوان ديگري داشته باشند و يا اينکه عملکردي متفاوت با آنچه در اينجا شرح داده مي­شود، از خود نشان دهند.
STANDARD CMOS SETUP : شامل اطلاعاتي در مورد قسمتهاي مهم سخت افزاري است.
 اين اطلاعات شامل :
تاريخ و ساعت سيستم
مشخصات ديسکهاي سخت، گردونه هاي ديسک نرم، کارت گرافيکي و حافظه.
شرايط قفل کردن سيستم (HALT ON) در هنگام راه اندازي: در صورت فعال بودن اين گزينه (با مقدار ALL ERRORS ) و بروز خطاهاي سخت افزاري، سيستم قفل مي­کند. براي مثال اگر اين گزينه فعال بوده، ديسک سخت يا صفحه کليد وصل نباشد سيستم در هنگام راه اندازي قفل مي­کند.
BIOS FEATURES SETUP : نام ديگر اين قسمت ممکن است ADVANCED CMOS SETUP باشد که مشتمل بر قسمتهاي زير است:
Virus warning: موقعي که اين گزينه فعال باشد، BIOS ، قطاع راه­انداز ( Boot sector و جدول بخشهاي (Partion Table) ديسک سخت را زير نظر مي­گيرد و اگر برنامه اي قصد تغيير آنها را داشته باشد، سد راه آن برنامه مي­شود و با نشان دادن يک پيغام، تصميم کاربر را براي ادامه کار و تغيير قسمتهاي ذکر شده يا توقف عمليات مي­پرسد.
CPU Internal Cache : تعيين مي­کند که آيا حافظه نهان داخل پردازنده کامپيوتر فعال باشد يا نه.
CPU External Cache : تعيين مي­کند که آيا حافظه نهان روي برد اصلي فعال باشد يا نه.
توجه: در دو مورد فوق، حافظه نهاني که تعريف مي­شود بايد وجود داشته باشد.
Quick Power on Self Test: اگر اين گزينه فعال باشد، BIOS از برخي تستهاي سخت افزاري در موقع راه اندازي سيستم صرف­نظر مي­کند.
Memory Parity Check : با فعال بودن اين گزينه بيتهاي موازنه (Parity bit) حافظه تست مي­شوند که باعث کندي سيستم ولي اطمينان کار مي­شود.
Swap Floppy Drive :با فعال بودن اين قسمت، امکان تغيير نقش A: وB: به عنوان ديسک راه انداز وجود دارد.
Boot Up Floppy Seek : با فعال بودن اين گزينه، موقع راه اندازي، نوع گردونه­هاي ديسک نرم چک مي­شود.
Boot Sequence: اين گزينه مشخص مي­کند درموقع راه اندازي، در کجا و به چه ترتيبي (اول ديسک سخت، ديسک نرم يا ديسک ليزري) به دنبال سيستم عامل گشته شود.
Boot Up NumLock Status : وضعيت کليد NumLock را در موقع راه­اندازي مشخص مي­کند.
Boot Up System Speed : باعث تنظيم سرعت سيستم در هنگام راه اندازي مي­شود.
Typemathic Rate Setting : اگر اين گزينه را غيرفعال کنيد از مقادير پيش­فرض
 (TypemathicRate=12char/sec,TypemathicDelay=250msec)استفاده مي­کند. اگر اين گزينه فعال باشد با استفاده از گزينه هاي Typemathic Delay  (تأخير بين اولين رويداد کليد و رويدادهاي مکرر بعد از آن برحسب ميلي ثانيه) و Typemathic Rate (تعداد تکرار کاراکتر درثانيه)  مي­توان سرعت صفحه کليد را کنترل کرد.
Security Option: با استفاده از اين قسمت مي­توان تعيين کرد که رمزعبور، فقط متعلق به قسمت Setup باشد يا راه اندازي سيستم را نيز شامل شود. ممکن است در سيستم شما نامPassword Checking option براي اين قسمت منظور شده باشد.
XXXXX Shadow : فعال کردن اين گزينه ها باعث مي­شود محتويات ROM مربوط به Video يا ديگر نقاط حافظه ROM، به حافظه RAM کپي شود که موجب افزايش سرعت سيستم خواهد شد(XXXXX در Setupهاي مختلف فرق مي­کند).
Power MANAGEMENT SETUP: با استفاده از اين قسمت مي­توان توان مصرفي کامپيوتر را کنترل کرد. بدين ترتيب که بعد از مدت معيني که با سيستم کار نکرديم، کامپيوتر به طور خودکار مصرف برق را تا حد مورد نظر ما کاهش داده، تا وقتي که کليدي را فشار نداده يا موس را حرکت ندهيم، در حالت خاموشي موقت باقي بماند (اين مدت توسط کاربر و بوسيله حالات پيشنهادي Setup تعيين مي­شود) و لازم به تذکر است که براي استفاده از اين امکانات بايد قسمت power management فعال باشد. مقاديري که مي توان تنظيم کرد به قرار زير است:
Doze Mode : بعد از سپري شدن زمان تعيين شده، ساعت سيستم در کندترين حالت خود قرار خواهد گرفت، در حالي که ساير قسمتها سرعت عادي خود را حفظ مي­کنند.
Standby Mode :بعد از سپري شدن زمان تعيين شده، صفحه نمايش خاموش خواهد شد.
Suspend Mode : بعد از سپري شدن زمان تعيين شده، تمام قسمتها بجز پردازنده خاموش خواهند شد.
HDD Power Down : بعد از سپري شدن زمان تعيين شده، ديسک سخت خاموش مي­شود.
IDE HDD AUTO DETECTION : با استفاده از اين قسمت مي توان اطلاعات ديسک سخت (مثل ظرفيت، تعداد سيلندرها و ...)را بطور خودکار استخراج کرد.
Password SETTING: با استفاده از بخشهاي مختلف اين گزينه، مي­توان براي برنامه Setup يا کل سيستم رمز عبور تعيين کرد. اگر قسمتي تحت عنوان SUPERVISOR PASSWORD وUSER PASSWORD وجود داشته باشد و هردو قسمت فعال باشند، فقط با رمز عبور SUPERVISOR مي­توان از تمام قسمتهاي Setup استفاده کرد.
LOAD BIOS DEFAULTS : موقعي که برد اصلي کامپيوتر مشکلي داشته باشد و قصد عيب­يابي داشته باشيد، با استفاده از اين گزينه مي­توان مقادير پيش فرض BIOS را به CMOS بار کرد. اين کار بر روي STANDARD CMOS SETUP تأثيري ندارد.
LOAD SETUP DEFAULTS : از اين گزينه براي بار کردن بهترين حالتي که در ROM BIOS  ذخيره شده است، استفاده مي­شود. اجراي اين گزينه نيز بررويSTANADRD CMOS SETUP  تأثيري ندارد.
EXIT WITHOUT SAVING ,SAVE AND EXIT: با استفاده از چنين قسمتهايي مي­توان از برنامه Setup خارج شد و باتوجه به گزينه­اي که انتخاب مي­شود ضبط تغييرات حافظه CMOS را کنترل کرد.
نکته مهم : براي دسترسي به اطلاعات حافظه CMOS، درگاه (Port) شماره 70H براي آدرس دهي و درگاه 71H براي دريافت و ارسال اطلاعات استفاده مي­شود. برنامه زير را در نظر بگيريد:
MOV AL,10H
OUT 70H,AL
IN AL,71H
INT 20H
ابتدا آدرس 10H (آدرس مربوط بهاطلاعات گردونه هاي ديسک نرم) را به درگاه 70H ارسال و سپس از درگاه داده (71H) اطلاعات گردونه­ها را به ثبات AL منتقل مي­کند. بعد از انتقال اطلاعات، 4 بيت کم ارزش AL، کد مربوط به مشخصات گردونه دوم (B: ) و 4 بيت پرارزش،گردونه اول (A: ) را دارا هستند. لازم به ذکر است که محتويات CMOS را مي توان از طريق درگاه داده آن تغيير داد، ولي اين کار باعث بهم خوردن کدهاي صحت (Checksum) مي­شود و ممکن است مجبور به بارکردن پيش­فرضهاي BIOS به حافظه CMOS شويد. به ياد داشته باشيد که اين کار جلوي خرابکاريهاي احتمالي موجود در STANDARD CMOS SETUP را نمي­گيرد و آن قسمت را بايد به صورت دستي تصحيح کرد (هيچوقت نوشتن CMOS را قبل از کسب مهارت کامل انجام ندهيد).
1-2 راه اندازي سيستم و نقش DOS در آن
موقعي که سيستم را روشن مي­کنيد يا آن را دوباره راه مي­اندازيد، برنامه موجود در آدرس FFFF:0000 اجرا مي­شود. اين عمل جزء ويژگيهاي ريزپردازنده خانواده 8086 اينتل بوده، ربطي به DOS ندارد. اين آدرس در ناحيه ROM قرار دارد و حاوي يک دستور پرش به برنامه تست کننده سيستم و سرويس راه انداز واقع در ROM است. توسط اين تست کننده و راه انداز، کارهاي زير انجام مي­شود:
تست سيستم (اگر راه اندازي  گرم(Warm Boot) انجام گيرد). (بعضي از تستهاي سيستم انجام نمي­گيرد).
انتقال برنامه راه انداز واقع بر روي اولين قطاع(Sector) ديسک به آدرس C00H:7 از حافظه.
انتقال کنترل کار به برنامه راه انداز موجود در ديسک.
برنامه راه انداز موجود روي ديسک کارهاي زير را انجام مي دهد:
تست اين موضوع که آيا اين ديسک يک ديسک راه­انداز DOS هست يا نه؟ اين کار بوسيله خواندن اولين قطاع شاخه ريشه انجام مي پذيرد. به اين ترتيب که دو پرونده IO.SYS  وMSDOS.SYS  را جستجو مي­کند و اگر اين پرونده­ها وجود نداشته باشند پيغام خطايي صادر مي­شود.
انتقال دو پرونده ذکر شده به حافظه (در بعضي نگارشها، IO.SYS پرونده MSDOS.SYS را در حافظه بار مي کند).
انتقال کنترل به IO.SYS .
برنامه IO.SYS عملاً از دو قسمت مجزا تشکيل شده است:
BIOS : يک مجموعه از گرداننده­هاي (Device driver) وسايل جانبي(مانند چاپگر) و برنامه­هاي مقدارگذاري اوليه است (اين مقدارگذاريها فقط در موقع راه اندازي مي تواند انجام شود). BIOS توسط شرکت سازنده کامپيوتر در سيستم تعبيه مي­شود.
SYSINIT : که بوسيله ماکروسافت تهيه شده است و توسط برنامه مقدارگذاري اوليه BIOS فراخوانده مي­شود. SYSINIT مقدار حافظه در دسترس را تعيين مي­کند و سپس خود را به انتهاي حافظه منتقل مي­کند و هسته DOS يعني MSDOSSYS را از محل اوليه بارشدنش به محل نهايي (که بالاخره در آنجا قرار خواهد گرفت) انتقال مي­دهد، بطوريکه  MSDOS.SYS  تقريباً روي محل اوليه IO.SYS قرار مي­گيرد. در اين حالت کنترل به هسته DOS سپرده مي­شود. هسته DOS کارهاي زير را انجام مي­دهد:
مقدارگذاري اوليه جدولهاي داخلي و نواحي کاري DOS.
مقدارگذاري بردار وقفه­هاي 20H تا 2FH .
تشکيل ليست پيوندي مربوط به گرداننده­هاي مقيم (Resident Driver) و مقدارگذاري اوليه هر گرداننده (بخصوص بردارهاي وقفه متناظر با آن گرداننده).
بررسي Disk Parameter Block که حاوي اطلاعاتي درمورد ديسکهاي موجود در سيستم مي­باشند.
تعيين بزرگترين اندازه قطاع (Sector) که در سيستم مورد استفاده قرار خواهد گرفت.
ايجاد چندين Drive Parameter Block براي نگهداري اطلاعات گردونه­هاي ديسک(Disk Drive)
اختصاص حافظه ميانگير (Buffer) براي ديسکها.
نمايش پيغام مربوط به حق کپي(Copyright) ، MSDOS .
برگرداندن کنترل به SYSINIT .
حال SYSINIT با استفاده از سرويسهاي عادي پرونده در MSDOS، پرونده Config.sys را بار و اجرا مي­کند. وجود اين پرونده اختياري است و براي سفارشي کردن (Customize) سيستم به کار مي­رود. مثلاً مي­توان با Config.sys گرداننده­هاي سخت افزاري جديد يا حافظه­هاي ميانگير ديسک يا مفسر دستورات جديد را به سيستم معرفي کرد.
اگر SYSINIT پرونده Config.sys را پيدا کرد، آنرا در حافظه بار کرده، تمام حروف آنرا به حروف بزرگ تبديل و خط به خط اجرا مي­کند. در اين موقع، ساختارهاي اطلاعاتي لازم براي حافظه­هاي ميانگير تعريف شده و سپس حافظه لازم به آنها اختصاص داده مي­شود.
گرداننده دستگاههاي ذکر شده در Config.sys نيز به حافظه بار شده، تابع مقداردهي اوليه آنها اجرا مي شود. برنامه مقداردهي اوليه، مقدار حافظه موردنياز گرداننده را به SYSINIT گزارش کرده، گرداننده را به ليست پيوندي گرداننده هاي موجود اضافه مي­کند.
بعد از اينکه تمام گرداننده هاي دستگاهها نصب شدند، SYSINIT تمام پرونده ها را مي­بندد و پرونده­هاي مربوط به پايانه (CON)[1]، چاپگر(PRN)[2]، تهي(NUL)[3]و دستگاههاي جنبي (AUX) [4]را به ترتيب به عنوان ورودي-خروجي، محل نمايش خطا، محل چاپ و دستگاههاي جنبي استاندارد باز مي­کند.
در انتها SYSININT ، مفسر دستورات را به حافظه بار کرده، خود را از بين مي­برد و سپس کنترل را به دست مفسر (که در اکثر موارد Command.com است) مي­دهد.
1-3 محيط (Environment) در DOS
محيط يک ميانگير(Buffer) است که DOS براي ذخيره­سازي متغيرهاي مهم مانند مسير (Path) و اعلان، در اختيار دارد. کاربران و برنامه­هاي ديگر نيز مي توانند در اين محيط متغيري را ايجاد و يا متغيرهاي موجود را دستکاري کنند. از اين متغيرها مي­توان براي ارسال اطلاعات بين پرونده­هاي دسته­اي (Batch File) نيز استفاده کرد.
اين متغيرها نقش مهمي در تنظيم (Tune Up) سيستم دارند. بطوريکه مي­توان با آنها موارد زير را تنظيم کرد:
مسير جستجوي برنامه هاي اجرايي با متغير PATH .
آخرين دستور وارد شده توسط کاربر با متغير Prompt .
محل بخش غيرمقيم مفسر دستورات DOS (معمولاً Command.com ) با متغير COMSPEC .
نحوه عملکرد دستور COPY با متغير COPYCMD .
نحوه عملکرد دستور DIR با متغير DIRCMD .
DOS به طور پيش فرض، 256 بايت براي محيط کنار مي گذارد (البته اين مقدار قابل تغيير است). همچنين کلمات را با حروف بزرگ در محيط خود مي­چيند. براي ديدن محيط، دستور SET را از پاي اعلان DOS اجرا کنيد. با دستورات زير مي توان يک متغير محيطي را دستکاري کرد:
براي ايجاد متغير OS_LAB با مقدار IUT
C:\>WORKS>SET OS_LAB=IUT
براي تغيير مقدار متغير به COMPUTER
C:\>WORKS>SET OS_LAB=COMPUTER
براي حذف متغير OS_LAB
C:\>WORKS>SET OS_LAB
با استفاده از نماد %  که در ابتدا و انتهاي نام متغير محيطي قرار داده مي­شود، مي­توان از متغيرهاي محيطي در پرونده­هاي دسته­اي استفاده کرد. مثلاً براي استفاده از متغير محيطي PATH در پرونده هاي دسته­اي مي توان از %PATH% استفاده نمود.
1-4 دستورکار
1-2-1 کار با برنامه Setup
تذکر: تمام موارد مربوط به Setup بايد با حضور مربي آزمايشگاه انجام شود. در ضمن، اگر گزينه­اي در Setup سيستم شما وجود ندارد از آزمايش آن مورد صرف­نظر کنيد.
براي ورود به برنامه Setup در سيستم شما چه کار بايد کرد؟
برنامه Setup سيستم شما توسط چه شرکتي نوشته شده است؟
مشخصات ديسک سخت را يادداشت کنيد. آيا مي­توانيد اين مشخصات را تغيير دهيد؟ اگر مي­توانيد، چه گزينه­هايي را خود برنامه Setup پيشنهاد مي­کند؟
مشخصات حافظه اصلي (RAM) سيستم­تان را يادداشت کنيد (نوع و حجم)؟
به چه روشي مي­توان ديسک سخت را به سيستم معرفي کرد؟
با تغييراتي که در Setup مي­دهيد کاري کنيد که موقع راه اندازي سيستم، اول ديسک سخت براي وجود يا عدم وجود سيستم عامل بررسي شود. تغييري را که در Setup بوجود آورده ايد، بنويسيد.
براي سيستم خود و برنامه Setup رمز عبور بگذاريد تا افراد ديگر نتوانند وارد برنامه Setup شوند، ولي با رمزعبور بتوانند وارد سيستم شوند. اگر چنين امکاني در Setup سيستم شما وجود ندارد، اين گام را انجام ندهيد. توجه: پس از انجام اين گام، حتماً رمز عبور را از روي سيستم برداريد.
آيا بدون استفاده از برنامه Setup، امکان تغيير محتواي حافظه CMOS وجود دارد؟
تذکر: پس از انجام آزمايش، Setup را به حالت اوليه آن برگردانيد.
1-2-2 راه اندازي سيستم
برنامه زير را با استفاده از Debug بنويسيد و آنرا با نام Boot1.com ذخيره کنيد.(حروف بعد از "; " نبايد وارد شوند):
POP DS;DS=
MOV ]0472],DS;DS:[472[
JMP FFFF:0000Reset
برنامه ليست 1-2 را تا ابتداي دستور پرش رد­گيري (Trace) و مقدار DS را يادداشت کنيد.
با استفاده از برنامه Map، قسمت Bios Parameter مشخص کنيد اسم بايت 472 چيست. سپس برنامه Boot1.com را از پاي اعلان DOS اجرا کنيد.
چگونگي عملکرد برنامه و نوع راه اندازي را با ذکر دليل بيان کنيد.
سطر دوم ليست 1-2 را به صورت زير تغيير دهيد:
MOV  WORD PTR[0472],1234
بعد از ضبط برنامه تغيير يافته با نام Boot2.com و خروج از Debug، آنرا اجرا کنيد. نوع راه اندازي چيست؟چرا؟
با Debug يک برنامه 2 بايتي بنويسيد که وقفه 19H را صدا بزند. آنرا Boot3.com ناميده و اجرا کنيد. نتيجه چيست؟
با استفاده از منوي Assembly، قسمت ROM Bios و Low Memory Usage، از نرم افزار NG اطلاعات مختصري در مورد وقفه شماره 19H و بايت 0:472 حافظه بدست آوريد.
2: تنظيم کردن کامپيوترهاي شخصي
هدف
آشنائي با عوامل تاثير­گذار بر کارايي کامپيوترهاي شخصي
توانائي تنظيم کردن (Tune up) نرم افزاري و تا حدودي سخت افزاري سيستم­هاي کامپيوتري براي دستيابي به کارايي بيشتر
2-1 پيش­آگاهي
نقش کامپيوتر در زندگي کنوني و کارهاي روزمره افراد برهمه کس واضح و آشکار است. از طرفي سرعت و سهولت کار با کامپيوترهاي شخصي امري است که مطلوب همه کاربران است. مشکلات ناشي از افول کارايي کامپيوترهاي شخصي امري است که به خوبي بايد وارسي شود و مدنظر باشد.
يک نارضايتي عمومي کاربران چنين سيستم­هايي اين است که پس از مدتي، سرعت کامپيوترشان کاهش يافته است يا اينکه سرعت کامپيوترشان در مقايسه با کامپيوترهاي مشابه کم است. البته کاهش کارايي کامپيوترها هميشه به سادگي قابل حل نيست و به عوامل متنوع و متعددي وابسته است و درنتيجه نمي­توان راه­حلي عمومي براي آن ارايه داد، اما به نظر مي­رسد بسياري از اين مشکلات وابسته به عدم آشنايي کاربر از اصول تنظيم صحيح و نگه­داري مناسب کامپيوتر شخصي خود است. در اين مجال کوتاه سعي شده است راهکارهاي صحيحي را براي بهبود سرعت و کارايي کامپيوترهاي شخصي، همراه با توضيح مطالب پيش­نياز در سيستم­عامل ويندوز عرضه شود.
کارايي کامپيوتر شخصي شما به عوامل زيادي وابسته است از جمله:
نوع و سرعت cpu
نوع، سرعت و اندازه حافظه­هاي اصلي و نهان
نوع معماري گذرگاه I/O
نوع کارت VGA و کارت شبکه و سرعت Hard Disk
سيستم­ عامل
کارايي serverي که شبکه را بارگذاري مي­کند، تأثيرات شبکه و غيره

کاهش کارايي کامپيوترهاي شخصي، گرچه اغلب اوقات دلايل فيزيکي دارد و بيدرنگ شخص را به فکر به­روز­رساني کامپيوتر فعلي­اش يا خريد سيستم جديد مي­اندازد، اما راه­حل واقعي کاهش سرعت کامپيوترهاي شخصي به­جاي به­روز­رساني يا خريد کامپيوتر جديد نگهداري صحيح و تنظيم آن، جهت بازيابي کارايي بهينه­اش است. گرچه معيار يا ملاک معيني براي کارايي بهينه به علت وابستگي آن به تغييرات منابع آزاد کامپيوتري در دسترس- وجود ندارد، اما قواعد موثقي که کامپيوتر شخصي شما را نسبت به وضعيت مشخصي بهينه نگه­مي­دارد موجود است. مطالب مربوط به اين موضوع را مي­توان به سه دسته تقسيم نمود:
تنظيمات نرم­افزاري
تنظيمات سخت­افزاري
تنظيمات شبکه
در اينجا به موارد اول و دوم پرداخته مي شود.
2-2 تنظيمات نرم­افزاري
بيش از هرچيز ابتدا بهتر است بدانيد چه ميزان از منابع سيستمي کامپييوتر شما آزاد است و چه ميزان در حال استفاده مي­باشد. در يک بالا آمدن معمولي سيستم،  نبايد ميانگين درصد منابع آزاد کمتر از 80% باشد. در حالت ايده­آل 90% مناسب مي­باشد. اگر منابع آزاد سيستم کمتر از 80% باشد آنگاه سيستم مشکل دارد.
2-2-1 خالي کردن  Recycle Bin
هر زمان يک پرونده يا سند حذف مي­شود، ويندوز آن را به Recycle Bin مي­فرستد. اما آنرا از روي ديسک پاک نمي­کند. ويندوز اين کار را به عنوان يک اقدام امنيتي از اين نظر که ممکن است شما يک پرونده مهم را به اشتباه از سيستم­تان حذف کنيد انجام مي­دهد. همانطور که مي­دانيد براي حذف يک پرونده يا فايل به طور مستقيم از Shift+Del استفاده مي­شود. حداکثر ظرفيت Recycle Bin، که مقدار پيش­فرض ان 1/0 اندازه Hard Disk شما است، به طرز جالبي زياد است. ويندوز تنها زماني پيشنهاد خالي کردن Recycle Bin را مي­دهد که تنها به اندازه 10% پر شده باشد. بدين ترتيب اگر شما يک Hard با ظرفيت 40GB داشته باشيد، ممکن است به ميزان 4GB چيز غير لازم که فضاي Hard Diskتان را گرفته باشد و سرعت آنرا پايين مي­آورد داشته باشيد.
خيلي از اوقات خالي کردن Recycle Bin به سادگي فراموش مي­شود. بنابراين، اين ايده خوبي است که درصدي که در آن ويندوز به شما مي­گويد که Recycle Bin  را خالي کنيد کاهش دهيد.
2-2-2 پاک کردن فهرست Windows/Temp
ويندوز زماني که نرم افزار جديدي نصب مي­شود يا برنامه کاربردي عمل Auto_Save را انجام مي­دهد، فهرستي (معمولاC:\Windows\temp ) را براي ذخيره فايلهاي موقتي که توسط سيستم ايجاد مي­شوند، به کار مي­برد. انتظار مي­رود اين فايلها که داراي پسوند .tmp هستند زماني که شما کامپيوترتان را خاموش مي­کنيد، بطور خودکار از آن حذف شوند اما، اگر برنامه­هاي کاربردي بطور غير عادي خاتمه يابند، ممکن است اين پرونده ها آنچنان که انتظار مي­رود حذف نشوند. بعد از مدتي اين برنامه ها مي­توانند Hard Drive شما را بهم بريزند و ممکن است به علت ناسازگاري سبب ايجاد مشکلاتي شوند. حذف پرونده هاي موقتي زماني که ويندوز درحال اجرا است، ممکن است بخاطر اينکه سيستم عامل در حال استفاده از آنها باشد، خطرناک يا حتي غير ممکن باشد (اگرچه مي توانيد در ويندوز هم آنها را حذف کنيد)، اما براي اطمينان بيشتر بهتر است آنها را در Dos Mode حذف کنيد. توصيه مي شود آنهائي که بيش از يک هفته از زمان ايجادشان مي­گذرد را حذف نمائيد.
2-2-3 کاهش اقلام Start Up
چيزي که بطور محسوسي مي­تواند کارايي کامپيوتر شخصي شما را تحت تاثير قرار دهد، تعداد برنامه­هائي است که هنگام روشن شدن کامپيوتر بارگذاري مي­شوند (بيشتر نرم افزارهاي جديد در هنگام نصب، بطور خودکار خودشان را در قسمت StartUp ثبت مي­کنند). هرچه برنامه هاي بيشتري در گروه StartUp وجود داشته باشد، شروع به کار بيشتر طول خواهد کشيد. هر برنامه فعال مقداري از حافظه با دستيابي تصادفي (RAM) را استفاده مي­کند. هرچه برنامه هاي بيشتري از RAM استفاده کنند، کامپيوتر کندتر کار خواهد کرد. اگرچه بستن همه اين برنامه ها همه RAM را آزاد نخواهد کرد، اما شما بايد تا جائيکه امکان دارد برنامه هاي کاربردي کمتري را باز نگه داريد.
توجه:
برخي برنامه ها هميشه بايد فعال باشند (مثلا Systray و Explorer) و يا بهتر است  که هميشه فعال باشند (مثل ويروس کش ها). بنابراين هنگامي که يک برنامه را لازم مي بينيد يا در هنگام ترديد است بهتر است آنرا حذف نکنيد.
نکته:
اگر واقعا نيازمند يک ميانبر به هرکدام از اين برنامه ها هستيد، مي توانيد يک Shortcut از آن بر روي Desktop بسازيد. سودمندي اين کار در اين است که هيچ حافظه مقيم باارزشي را اشغال نمي­کند.
2-2-4 Defrag کردن ديسک
Defrag کردن Hard Disk نيز روش ديگري براي سرعت بخشيدن به کارايي است. زمانيکه شما برنامه هايي را بر روي Hard Drive خود نصب مي­کنيد ويندوز بدنبال قطاع هاي مجاوري بر روي ديسک مي­گردد تا برنامه را در آنجا قرار دهد. اگر همه قسمت­هاي يک فايل مجاور هم قرار گيرند، Hard Disk مي­تواند با کارآيي بيشتري به فايل دسترسي پيدا کند اما، اغلب اوقات ساختار فايل در خلال نصب قطعه قطعه مي­شود و قسمتهائي از برنامه (که ممکن است در مکان هاي پيوسته موجود جا نشوند) در نقاط تصادفي در سراسر ديسک جاي مي­گيرند. اين امر هد خواندن HardDisk را وادار به گذر از هرجاي ديسک براي دستيابي به داده مورد نياز مي­کند. بطور طبيعي اين امر براي بعضي کارها سبب صرف زمان بيشتري مي­شود. Microsoft Defrag داده هاي پراکنده Hard Disk را مجددا بصورت پيوسته در­مي­آورد. علاوه بر اين، برنامه­هائي را که شما اغلب استفاده مي­کنيد، بخاطر دسترسي سريع­تر، در آغاز ديسک قرار مي­دهد.
نکته:
اگرچه ويندوز به شما اجازه مي­دهد در خلال Defrag کردن Hard Drive برنامه­هاي ديگري هم اجرا کنيد اما اين کار سرعت تمام برنامه­ها را کاهش خواهد داد و نيز بدان سبب که تشخيص يک ديسک قطعه قطعه شده بزرگ (از نظر داده) ساعت­ها طول خواهد کشيد، بهتر است که Defrag کردن را زماني آغاز کنيد که با کامپيوتر کار نداريد. پيشنهاد مي شود Defrag  را هر هفته حداقل يکبار انجام داد.
2-2-5 Scan Disk
Scan Disk يکي از اصلي­ترين و قوي­ترين ابزارهايي است که تاکنون براي تنظيم بهينگي کامپيوترهاي شخصي به کار رفته است. Scan Disk ، Hard Drive شما را از خطاهاي متفرقه ناشي از تصادم و ناهماهنگي نرم افزارها پاک مي­کند. قبل از اجراي Scan Disk اطمينان حاصل کنيد که همه برنامه هاي کاربردي در حال اجرا را بسته ايد. همچنين، Screen Saver خود را غير فعال کنيد.
نکته:
بهتر است Disk Defrag را بعد از Scan Disk انجام دهيد.
2-2-6 Uninstall کردن برنامه هاي قديمي
اگر شما روي Hard تان نرم افزارهايي داريد که ديگر استفاده نمي­کنيد، مي­توانيد آنها را با برنامه هاي Uninstall که معمولا همراه با آنها عرضه مي­شوند يا روشهاي ديگر که در دستور کار ذکر خواهد شد Uninstall  کنيد.
2-2-7 حذف برنامه هاي غيرضروري (Disk Cleanup)
نگاه دقيق به بسياري از پيغام­هاي خطا، شما را به اين نتيجه خواهد رساند که گرچه عوامل بسياري ممکن است در اين رابطه وجود داشته باشند، بيشتر آنها به نحوي داراي يکي از مشکلات رايج حافظه هستند. وارسي حافظه کامپيوترتان ممکن است شما را از بسياري از اين مشکلات رهائي دهد. بنابراين، پس از ضرورت مديريت صحيح حافظه اصلي ضرورت مديريت صحيح Hard Disk است که با آن برابري مي­کند. براي مديريت صحيح حافظه سيستم­تان بايد همه برنامه هاي غيرضروري مقيم در حافظه، بازيها، فونت ها و درايورها، که حافظه فراواني اشغال مي­کنند را برداريد.
2-2-8 بهينه کردن Swapfile
درک عمومي از Swapfile
بسياري از افراد همواره اين سوال در ذهنشان بوده که Swapfile بطور دقيق چيست و يا Virtual Memory يا حتي Pagefile چيست. بطور ساده براي تازه کارها همه آنها يکي هستند. اگرچه معمولا از اصطلاحات  ،  و يا  استفاده مي­شود، اما شما همه آنها را مانند يک چيز واحد تصور کنيد. در ادامه در اين نوشتار جزئيات و شرح بيشتري براي کمک به شما گفته خواهد شد. خواننده خواهد فهميد که حافظه مجازي چيست و چطور خواهد توانست آنرا بهينه کند تا کارآئي کامپيوترش بيشتر شود.
حافظه مجازي سيستمي است که بوسيله آن ماشين يا سيستم عامل اينگونه فريب مي­خورد که  تصور مي­کند پردازشهائي که بر روي ماشين درحال اجرا هستند، با وجود اينکه حافظه اصلي سيستم محدود است، حافظه بسيار زيادي براي اجرا در اختيار دارند. سيستم عامل اين کار را با ذخيره آن فقره هايي که اخيرا بيشترين استفاده را داشته­اند در RAM، و ذخيره فقره­هاي کم استفاده­تر، در ديسک حافظه (Virtual Memory)، که سرعت کمتري دارد و مبادله داده­ها بين اين دو هنگامي که يک دسترسي به ديسک صورت مي­گيرد، انجام مي­دهد. همانطور که مي­دانيد، RAM در حدود 100 برابر سريع­تر از Hard Disk است. براي بهينه کردن حافظه مجازي بخاطر کارايي بيشتر، a static Virtual Memory Size را بجاي Dynamic Virtual Memory انتخاب کنيد. اگر از شما سوال کنند چرا؟ پاسخ اينست که داده­هاي روي ديسک پس از گذشت مدت زماني قطعه قطعه خواهند شد و بدين ترتيب افزايش و کاهش Dynamic Virtual Memory (از لحاظ اندازه)، ويندوز را مجبور به يافتن قطاع هاي استفاده نشده بر روي ديسک براي ايجاد حافظه مجازي مي­کند. از طرف ديگر اگر شما از static Virtual Memory Size استفاده مي کنيد، حافظه مجازي طوري طراحي شده است که از قبل، فضائي را براي نوشته شدن داده هاي مربوط به خود رزرو کرده است.
در ادامه، نکاتي براي استفاده مفيد از حافظه مجازي آورده شده است:
اطمينان حاصل کنيد که تنظيم حافظه مجازي بر روي گزينه Static است (هم مقدار حداکثر و هم مقدار حداقل آن).
در صورت امکان، حافظه مجازي را در ديسکي بسازيد که کمترين ميزان مراجعه را دارد. داشتن يک پارتيشن جدا، آنهم فقط براي حافظه مجازي مي­تواند منجر به اين نتيجه شود که آن هرگز قطعه قطعه نشود ...
شما احتمالا بايد اندازه Page File سيستم­تان را افزايش دهيد به نحوي که حداقل 2.5 برابر RAM تان باشد. اما اگر شما فضاي Hard Disk بيشتري در دسترس داريد انگاه اندازه Page File بزرگتر، بهتر خواهد بود. به خاطر داشته باشيد اندازه Page File معمولا براي کارايي بيشتر کامپيوترهاي شخصي مناسب­تر است. اين تصور غلط  در اکثر کاربران کامپيوتر وجود دارد که اندازه Page File پيش­گزيده در Optimal Setting را به کار مي­برند.
آن گزينه براي زماني بهينه است که اندازه Hard Disk و حافظه کوچک بودند. اما اکنون با اندازه­هاي بسيار بزرگ Hard Disk و حافظه­هاي بزرگ، خود مديريتي و فراهم آوردن حافظه بيشتر براي اندازه Page File بسيار مطلوب است.
هرگز براي حافظه مجازي ويندوز گزينه Disable را انتخاب نکنيد. زيرا بعضي برنامه هاي کاربردي براي اجرا به حافظه مجازي نياز دارند. بدون حافظه مجازي شما يک پيغام خطا يا نقص اساسي را دريافت خواهيد کرد.
نکته:
هرگز وسوسه نشويد که Hard تان را تنها بخاطر افزايش Page File افزايش دهيد. توصيه هاي گفته شده تنها براي زماني است که شما امکان افزايش RAM را نداريد و سرعت کامپيوتر شما کم است. ولي امروزه که RAM ارزان است، بهتر است آن هزينه را براي افزايش RAM صرف کنيد.
تنظيم دقيق Swapfile
آنچه تاکنون بيان شد اطلاعاتي بود که براي عموم مفيد بود. اما شما بعنوان يک مهندس يا يک متخصص کامپيوتر نياز داريد که با نحوه تنظيم دقيق Swapfile نيز آشنا شويد. در اين راه ممکن است نکات تکنيکي جديدي را نيز بياموزيد. در جواب اين سوال که " من چقدر ... نياز دارم؟" هيچ کس نمي تواند به شما بگويد که واقعا چقدر از فضاي Hard Disk را براي Swapfile نياز داريد؛ هرکسي سيستم خود را بطور متفاوتي استفاده مي­کند. يک روش مناسب براي تخمين دقيقي از اينکه چقدر ... نياز داريد در ذيل آمده است:
اگر مايل به کسب اطلاعات بيشتر  در اين زمينه هستيد به آدرس اينترنتي ذيل مراجعه کنيد:
http://www.rojakport.com/speed_Demonz/Swapfile_Optimization Swapfile_Optimization_01.htm
آخرين نکته اينکه در ويندوز XP نيازي به احضار System Monitor نيست و براي ديدن مقدار حافظه­اي که به Pagefile اختصاص يافته کافي است کليدهاي Ctrl، Alt و Delete را بطور همزمان فشار دهيد و سپس کليد Task manager را کليک کنيد تا پنجره Windows Task Manager ظاهر شود.
سپس سربرگ Performance را انتخاب کنيد تا CPU Usage و PF Usage (Page File Usage) را همزمان ببينيد.
2-2-9 کاهش اندازه سربار ناشي از گرافيک
کاغذ ديواري
آيا مي­دانيد استفاده از کاغذ ديواري بدان علت که گرافيک سنگيني به کار مي­گيرد منجر به از دست رفتن حافظه و کند شدن سيستم مي­شود؟ در صورتي که حافظه سيستم­تان محدود است يکي از مواردي که مي­توانيد از دست آن رهائي يابيد همين مورد است. فکر نکنيد که استفاده از کاغد ديواري کوچکتر يا الگو نمي تواند تأثيري داشته باشد. هر دو مورد فوق حافظه زيادي مصرف مي­کنند.
Screen Saver
همانند کاغذ ديواري سعي کنيد از به کار بردن Screen Saver ها نيز اجتناب کنيد زيرا که Screen Saver، حافظه زيادي را مصرف مي­کنند. اگر ناچار به استفاده از آن هستيد دست کم زماني که مي­خواهيد کامپيوتر را براي مدتي رها کنيد، اين کار را انجام دهيد و نيز توجه کنيد که Screen Saver  هاي پيش­فرض ويندوز معمولا بهتر هستند.
رنگ ها
براي دستيابي به بهترين کارايي کارت گرافيکي، مي­توانيد وضوح نمايش و عمق رنگ را تا آنجا که امکان دارد پائين انتخاب کنيد. معمولا کاربران کامپيوتر 24-bit true color را انتخاب مي­کنند در حاليکه براي بسياري از کاربردها و تقريبا تمام موارد عملي گزينه 16-bit true color مناسب­تر است. شما به سختي مي­توانيد متوجه تفاوت بين آنها شويد. بخصوص مواردي که بعنوان مثال از يک پردازشگر لغت مانند Microsoft Word استفاده مي­کنيد.
کاهش Refresh Rate
براي افزايش کارايي سيستم­تان کم­کم وارد نکات ريزتر شده و اين بار به Refresh Rate پرداخته مي­شود. به زبان ساده Refresh Rate تعداد دفعات تازه شدن تصوير در ثانيه است. سعي کنيد از گزينه higher Refresh Rate استفاده نکنيد. شما مي­توانيد هر کدام از optimal Refresh Rate يا default Refresh Rate را انتخاب کنيد. درغير اين صورت Refresh Rate هاي56  يا 60 با ا غلب کامپيوتر ها و صفحه نمايش ها به خوبي کار مي­کنند. با higher Refresh Rate شما نخواهيد توانست به بيشترين کارآئي صفحه نمايش دست يابيد.
حذف جزئيات اضافي صفحه تصوير
توصيه­هاي ذکر شده را جدي بگيريد و فکر نکنيد که کارهاي ذکر شده تأثير کمي دارند. ولي به هر حال اگر RAM زيادي داريد و از سرعت کنوني سيستم­تان راضي هستيد لزومي ندارد که همه اين توصيه­ها را به کار بگيريد. مثلا از جمله کارهاي ديگري که براي بهبود سرعت سيستم­تان مي­توانيد انجام دهيد آنست که گزينه­هاي زير را انتخاب نکنيد:
در ويندوز XP:
show shadows under menus
use the following transition effect for menus and tool tips
 use the following method to smooth edge of screen fonts
توجه:
با اين کار ممکن است از زيبائي نمايش شمايل ها کاسته شود. به اين ترتيب شما مختاريد که براي دستيابي به سرعت بيشتر، يک سري محدوديت هائي را قبول کنيد يا اينکه نپذيريد.
2-2-10 به کار گيري REGCLEAN
REGCLEAN که محصول Microsoft است را براي تميز کردن (حذف زوايد) Windows Registry تان، به طور منظم استفاده کنيد. اين سبب مي شود که ويندوز سريع تر کار کند.
2-2-11 پايداري
اساسا ثبات کامپيوترهاي شخصي به عوامل بسياري بستگي دارد. به بيان عمومي، پايداري کامپيوتر مي تواند توسط يک سيستم عامل بدون خطا حاصل شود. اگر شما خطاهاي Explorer، Fatal exception error ، Page fault error، Protection error General ، Memory error دريافت مي­کنيد، آنگاه بدان معني است که بعضي مشکلات در سيستم وجود دارد و کامپيوتر داراي ثبات نيست. اين مشکلات مشخص کننده و بيانگر خطاهايي در قسمت خاصي از حافظه، يا آدرس ويژه­اي هستند که سبب خطا شده و سيستم شما را ناامن کرده­اند. اين مسائل با پيغام هاي خطايي مانند Fatal exception error ، Protection error General ، Illegal operation error و Page fault error همراه مي­شوند. معمولا زمانيکه برنامه­هائي چون Microsoft office يا Internet explorer يا هر برنامه ديگري گير­مي­کند، آنگاه سيستم­عامل تشخيص مي دهد که مشکل جدي است. برنامه به وجود آورنده خطا را همراه با تعيين خطا معلق مي­کند. اين خطا در شکل کد شده با قالب يک پيغام خطاي نوعي منعکس مي­شود. ا ين خطا در واقع بوسيله تعليق برنامه خاطي، برضد آسيب ديدگي سيستم، محافظت مي­شود. ويندوز با اين کار کامپيوتر را از آسيب ديدگي­هاي بيشتر سيستم مصون مي­کند. در صورتيکه اين نوع پيغام هاي خطا ادامه داشته باشد و شما نتوانيد از دست آنها خلاص شويد، پيشنهاد مي­شود نرم افزار مسبب خطا را آنگونه که در قسمت 1-1-6 آمده است Uninstall  کنيد.
2-2-12 خالي کردن cache مرورگر
همه مرورگرها زمانيکه شما از يک Web Site به Web Site ديگري مي رويد پرونده هائي را بر روي Hard Drive شما مي­گذارند. مشکل اينجاست که آنها اين پرونده ها را در پوشه يا پوشه هائي به نام Cache جاي خواهند گذاشت. اين بدان معنا است که به تدريج هزاران پرونده در ديسک­تان ايجاد خواهد شد که اهميتي هم ندارند يا اهميت آنها کم است.
2-3 تظيمات سخت­افزاري
در اين قسمت نکاتي مطرح مي­شوند که نيازمند تجربه قبلي نيز مي­باشند. بنابراين مبتديان بايستي در تغيير دادن­ها، کاملاً احتياط کنند.
2-3-1 تنظيم BIOS
اولين اقدامي که شما مي­توانيد براي افزايش سرعت سيستم خود بکنيد بهبود تنظيمات BIOS است. توجه داشته باشيد که تنظيمات BIOS بر بيشتر عناصر اساسي سيستم شما تاثير مي­گذارد. هيچ تغييراتي را اعمال نکنيد مگر اينکه کاملا از نتايج آنها آگاه باشيد.
اگر چيزي اشتباه از آب در­آمد، کامپيوترتان را مجددا راه اندازي کرده و به BIOS برگرديد تا تغييراتتان را به حالت قبلي برگردانيد.
طريقه ورود به صفحه BIOS SETUP و طرز کار با آن معمولا در دفترچه راهنماي آن آمده است (اغلب با فشار دادن دکمه Delete در آغاز بالا آمدن سيستم مي توان به BIOS وارد شد). معمولا Setup داراي حداقل سه گزينه اصلي است که در زير آمده اند:
صفحه Standars Setting
براي تنظيمات داده ها، زمان، انواع گرداننده­ها، حافظه فيزيکي نصب شده و ... است. اطمينان حاصل کنيد که همه اين تنظيمات منعکس کننده وضعيت واقعي اجزاي کامپيوتر شما هستند.
صفحه System Setup
براي تنظيم چيزهائي مانند سرعت CPU ، وضعيت  حافظه نهان داخلي و خارجي، تنظيمات واحد  Floating Point (FP)، memory shadowing و ... مي­باشد. اطمينان حاصل کنيد که سرعت CPU با گزينه FAST نمايش داده شده است. همه حافظه هاي نهاني و FPU ، در صورت وجود enable هستند. همچنين توجه کنيد که اگرچه enable کردن گزينه ... ممکن است باعث بهبود کارآئي گردد ولي ممکن است با مديريت حافظه يا ساير تنظيمات ناسازگاري و تناقض داشته باشد.
صفحه Chipset setting
براي وفق دادن تنظيمات حالت انتظار chipset واقع بر motherboard شما مي­باشد. هرچه شماره  حالت انتظار کمتر باشد کارائي سيستم بالاتر مي رود.
اگر سيستم شما بعد از کاهش شماره ها اجرا نمي­شود يا در ويندوز دچار مشکل مي­شويد شماره­ها را به تنظيمات قبلي باز گردانيد.
2-3-2 نصب درايورهاي جديد براي کارت گرافيکي
هر کامپيوتر شخصي داراي يک کارت شتاب­دهنده ويندوز نصب شده مي­باشد. شما مي­توانيد با نصب آخرين درايورها، توان کارت گرافيکي را افزايش و کارائي ويندوز را بهبود بخشيد. سعي کنيد اين درايورها را از کارخانه سازنده توسط اينترنت دريافت کنيد و نصب کنيد. اگر شما از کارخانه سازنده يا مدل کارت نمايشي که هم اکنون استفاده مي­کنيد آگاه نيستيد يا شک داريد، مي توانيد راهنماي کاربر کارت نمايش را بخوانيد.
2-3-3 افزايش RAM
اگر HARD سيستم شما به صورت مداوم کار مي­کند مشخص کننده آنست که سيستم شما در حال استفاده از حافظه مجازي است بنابراين بايستي مقدار RAM را افزايش دهيد. بديهي است هرچه بيشتر، بهتر خواهد بود.
2-3-4 محدود کردن حداکثر اندازه حافظه فيزيکي براي Disk Cache
Disk Cache (و نيز       Virtual Cache يا به اختصار vcache) براي بهبود کارائي disk drive مفيد مي­باشد. به همين سبب ويندوز مي­تواند مقداري از حافظه اصلي سيستم را براي cache کردن داده­هايي که از ديسک خوانده يا در آن نوشته مي شوند، اختصاص  دهد. ويندوز معمولا حافظه بسيار زيادي را براي cache کردن استفاده کرده و مقدار بسيار کمي را براي کاربردها باقي مي­گذارد. براي بهبود کارايي سيستم مي توان حداکثر مقدار حافظه فيزيکي مصرفي را با اضافه کردن سطور زير به پرونده System.ini محدود کرد:

[vcache]
MiniFileCache=xxxx
MaxFileCache=yyyy
Chunksize=zzzz

که xxxx حداقل مقدار vcache  برحسب کيلوبايت، yyyy حداکثر مقدار vcache  برحسب کيلوبايت و zzzz اندازه قطعات اختصاص يافته به vcache  برحسب بايت است. براي مثال:
[vcache]
MiniFileCache=4096
MaxFileCache=16384
Chunksize=512
مي تواند براي سيستمي که 64MB  ، RAM دارد به کار رود.
بيشترين اندازه­اي که براي cashe توصيه مي­شود 4/1 حافظه سيستم است. براي مثال اگر شما 64 MB RAM داريد، مي­توانيد بيشترين اندازه cache را به 16MB محدود کنيد. شما مي توانيد هر اندازه اي را براي MinFileCache انتخاب کنيد.
معمولا اندازه 8/1 را براي آن در نظر مي­گيرند. با وجود اين پيشنهاد مي­شود آنرا خالي بگذاريد (يعني ... را ننويسيد). اگر از شما بپرسند چرا، جواب اينست:
شرايطي را در نظر بگيريد که شما يک برنامه کاربردي يا يک بازي که حافظه بسياري را مي­گيرد باز کرده ايد. اگر چيزي براي MinFileCache قرار ننهاده باشيد، ويندوز مي­تواند مقداري از RAM را با صفر کردن CACHE DISK آزاد نمايد. اما اگر شما MinFileCache را برابر با يک مقدار قرار داده باشيد ويندوز به سادگي از آن قسمت از RAM صرفنظر مي کند و به جاي آن از Swapfile  استفاده خواهد کرد.
2-4 زمان مشاوره
اگر با انجام آنچه تاکنون گفته شد نتوانستيد حداقل درصد منابع آزادتان را به 90% برسانيد، احتمالا به يک مشاور آگاه امور کامپيوتر براي آزمايش کردن سيستم­تان نياز داريد. او ممکن است همانطور که گفته شد به شما اطلاع دهد که RAM تان را افزايش دهيد، يا درايورهاي جانبي­تان را به روز کنيد، پرونده­هاي پيکر بندي Startup تان را کاهش دهيد يا حتي CPUتان را ارتقا دهيد. لازم است هزينه پيشنهادات ايشان را با منفعتي که از افزايش سرعت کامپيوترتان حاصل مي­شود سبک و سنگين کنيد. متأسفانه به خاطر اينکه نيازهاي کاربرها به تعداد کامپيوترهايي که استفاده مي­کنند متنوع است، نمي­توان راهکارهاي ساده­تر و عمومي­تري از آنچه مطرح شد بيان نمود.
دستور کار:
تحقيق کنيد HCL چيست؟
براي آنکه Virtual Memory Pagefile در زمان Shutdown پاک شود چه کاري بايد انجام داد؟
يک batchfile ايجاد کنيد که کامپيوتر را خاموش کند. سپس با استفاده از Scheduling Task آنرا اجرا نمائيد. نتيجه کار را توضيح دهيد. اگر با يک کاربر ديگر login کنيد آيا taskهاي تعريف شده قبلي قابل مشاهده است؟ آيا taskها کار مي­کنند يا فقط براي همان کاربر کار انجام مي­دهند.
همانطور که مي­دانيد يکي از کارهايي که مي­توان در ويندوز انجام داد، گرفتن backup است. انواع مختلف bachup را نام برده و اجرا نماييد. از چه خصوصيات فايل يا فولدر براي تمايز انواع backup استفاده مي­شود؟
يک Password Reset Disk بسازيد.
3- چندوظيفه­اي و چندنخي در ويندوز
هدف
_  تشريح چند نخي
_توسعه يک برنامه چندنخي تحت ويندوز
_ افزايش و کاهش تقدم نخ­ها
_همزمان کردن نخ ها(هماهنگ سازي نخ­ها)

3_1 پيش آگاهي
توانايي يک سيستم عامل در اجراي چند برنامه به طور موازي چند وظيفه اي نام دارد درواقع سيستم عامل از کلاک سخت افزاري براي اختصاص برهه هاي زماني    به فرايندهايي که به طور همزمان اجرا مي شوند استفاده مي کند اگراين برهه­هاي زماني به حد کافي کوچک باشند، و تعداد کارهايي که مي­خواهيم همزمان انجام شوند، زياد نباشد به نظر مي­رسد که کارها به طور همزمان اجرا مي­شوند.
چندوظيفه­اي چيز تازه­اي نيست. در Mainframeها چندوظيفه­اي وجود دارد. Mainframeها اين توانايي را دارند که صدها ترمينال به آنها متصل شوند و کاربر هر ترمينال احساس مي­کند که ماشين منحصراً در اختيار او است. به علاوه، سيستم­عامل Mainframeها اغلب به کاربران اين امکان را مي­دهد که کارهايي را به زمينه بفرستند. اين کارها زماني انجام مي­شوند که کاربر مي­تواند روي چيزهاي ديگر کار کند.
مدت زيادي طول کشيده است تا چندوظيفه­ايPCها به مرحله عمل درآيد. ولي به نظر مي­رسد اکنون وارد عصري شده­ايم که چندوظيفه­اي کامپيوترهاي شخصي محقق شده است. بعداً خواهيم گفت که windows 16 بيتي تا اندازه­اي از چندوظيفه­اي پشتيباني مي­کرد. و نسخ 32بيتي windows اکنون از چندوظيفه­اي حقيقي و نيز از چندنخي پشتيباني مي­کند.
چندنخي قابليتي است که به يک برنامه اجازه مي­دهد درون خودش، چندوظيفه­اي شود. برنامه مي­تواند به چند نخ اجراي جداگانه که به طور همزمان اجرا مي­شوند، شکسته شود. در ابتدا اين امر چندان مهم جلوه نمي­کند ولي اين برنامه­ها مي­توانند از چندنخي براي اجراي کارهاي طولاني در زمينه استفاده کنند. بدون آنکه کاربر مجبور باشد مدت زيادي کار با ماشين را رها کند.

3-2 چندوظيفه­اي
در اولين روز تولد PCها، برخي مردم از چندوظيفه­اي در آينده حمايت مي­کردند. ولي بسياري با خود فکرکردند چندوظيفه­اي روي يک کامپيوتر شخصي تک کاربره به جند درد مي­خورد؟ به هرحال چندوظيفه­اي چيزي بود مطلوب کابران بدون شناخت حقيقي آن.

3-2-1 چندوظيفه­اي تحت DOS
پردازنده 8088 شرکت Intel به خودي خد براي چندوظيفه­اي ساخته نشده بود. بخشي از مشکلات چندوظيفه­اي در DOS به مديريت حافظه مربوط مي­شد. زماني که برنامه­ها شروع يا ختم مي­شوند، يک سيستم­عامل چندوظيفه­اي اغلب سعي در جابجايي بلوکهاي حافظه براي پيوسته نگهداشتن فضاهاي خالي ان مي­مند. اين کار روي 8088 امکان­پذير نبود.
DOS نيز به تنهايي کمک زيادي نکرد. اين سيستم­عامل طوري طراحي شده بود که کوچک باشد. در فضايي جدا از برنامه-ها بماند و امکانات کمي براي بارکردن برنامه­ها و دستيابي به سيستم فايل داشت.
با اين وجود، برنامه­نويسان خلاق در اولين روزهاي پيدايش DOS، راهي براي غلبه بر آن مشکلات يافتند. برنامه­هاي مقيم پس از اجرا برخي از اين برنامه­ها نظير Spoolerهاي چاپگر، براي انجام کارهاي زمينه­اي(backgroundwork) به وقفه زمان مي­چسبند. بعضي ديگر نظير برنامه­هاي کمکي شناور(pop-up) نظير SideKick مي­توانستند با معلق (Suspend) کردن برنامه­ها موقع اجراي خودشان، نوعي Task Switching انجام دهند.
تعدادي از فروشندگان نرم­افزار تلاش کرند پوسته (shell)ي تهيه کنند که امکان Task Switching يا چندوظيفه­اي را فراهم کند. ولي تنها يکي از آنها به بازار نفوذ کرد: Windows.
3-2-2 چندوظيفه­اي نوبه­اي و چندوظيفه­اي غيرنوبه­اي
هنگامي که ماکروسافت در سال 1985 نگارش windows 1 را عرضه کرد، اين برنامه پيشرفته­ترين چيزي بود که براي غلبه بر محدوديتهاي DOS  ساخته شده بود. در آن زمان  ويندوز در حالت حقيقي (real mode) پردازنده اجرا مي­شد ولي اين امکان را داشت که بلوکهاي حافظه را درون حافظه فيزيکي جابجا کند که البته اين با همه برنامه­ها سازگار نبود ولي تقريباژض قابل تحمل بود.
در يک محيط گرافيکي چندپنجره­اي، چندوظيفه­اي خيلي محسوس­تر از خط فرمان يک سيستم­عامل تک­کاربره است. براي مثال، در خط فرمان UNIX اين امکان وجود دارد که برنامه­ها در زمينه اجرا شوند. اما خروجي نمايشي هرکدام از آنها، بايستي درون يک فايل ريخته شود، در غير اينصورت با آنچه کاربر روي صفحه در حال انجام آن است، مخلوط خواهد شد.
يک محيط پنجره­اي اين امکان را بوجود مي­آورد که چند برنامه با يکديگر روي يک صفحه اجرا شوند. رفت و آمد بين آنها آسان است و همچنين اين امکان وجود دارد که بسرعت داده­ها را از يکي به ديگري منتقل کرد. مثلاً يک تصوير که در يک برنامه نقاشي تهيه شده است را درون يک پرونده متني که بوسيله يک واژه­پرداز ايجاد شده قرار داد. در ويندوز انتقال داده­ها از چند راه ممکن است:
تخته برش (Clip Board)
تبادل پوياي داده­ها(Dynamic Data Exchange or DDE)
پيوند وادغام اشيا(Object Linking and Embedding or OLE)
با اين وجود، چند وظيفه­اي که در نسخه­هاي اوليه ويندوز پياده­سازي شد، يک چندوظيفه­اي نوبه­اي مبتني بر برهه­هاي زماني که در سيستم­عاملهاي چند کاربره وجود داشت، نبود. اين سيستم­عاملها از ساعت سيستم براي وقفه دادن تناوبي به يک کار و شروع يک کار ديگر استفاده مي­کنند. نسخه 16بيتي ويندوز، از نوعي چندوظيفه­اي که چندوظيفه­اي غيرنوبه­اي نام دارد پشتيباني مي­کند. اين ونع چندوظيفه­اي بخاطر معماري مبتني بر پيام ويندوز ممکن شده است. در حالت کلي، يک برنامه تحت ويندوز در حافظه به طور غيرفعال قرار مي­گيرد تا اينکه يک پيام دريافت کند. اين پيامها به طور غير مستقيم يا مستقيم از وروديکاربر از صفحه کليد و موس ناشي مي­شود. بعد از پردازش آن پيام، خود برنامه کنترل را به ويندوز برمي­گرداند. نسخه 16بيتي ويندوز، کنترل را بر اساس برهه­هاي زماني از يک برنامه به برنامه ديگر منتقل نمي­کند. در عوض تعويض وظيفه­ها هنگامي روي مي­دهد که يک برنامه پردازش يک پيام را تمام کند و کنترل را به ويندوز برگرداند. اين نوع چندوظيفه­اي اغلب چندوظيفه­اي مشارکتي نيز ناميده مي­شود زيرا به نوعي همکاري ميان برنامه­هاي کاربردي نياز دارد. يک برنامه ويندوز اگر زمان زيادي را صرف پردازش يک پيام کند، کل سيستم را مختل مي­کند.
گرچه چندوظيفه­اي غيرنوبه­اي قانون اساسي ويندوز 16بيتي است ولي شکلهايي از چندوظيفه­اي نوبه­اي نيز در آن وجود دارد. ويندوز براي اجراي برنامه­هاي تحت DOS از چندوظيفه­اي نوبه­اي استفاده مي­کند. همچنين به DLLها اجازه مي­دهد از تايمر سخت­افزاري  براي مقاصد چندرسانه­اي استفاده کنند.
نگارش 16بيتي ويندوز شامل چند ويژگي است که به برنامه­نويسان اين امکان را مي­دهد که بر محدوديت غيرنوبه­اي بودن چندوظيفه­اي فائق آيند. بدنامترين آنها، نشانگر ماوس ساعت شني است. البته اين يک راه حل نيست بلکه فقط راهي است که به کاربر اجازه مي­دهد بفهمد يک برنامه مشغول انجام يک کار طولاني است و سيستم براي مدتي غيرقابل استفاده خواهد بود.
راه­حل ديگر تايمر ويندوز است که به برنامه اجازه مي­دهد در فرجه (Interval)هاي متناوب، پيامي دريافت کند و آن را پردازش کند. اين تايمر معمولاً براي برنامه­هاي ساعت و برنامه­هاي متحرک­سازي (انيميشن) مورد استفاده قرار مي­گيرد.
راه­حل ديگر استفاده از تابع PeekMessage() است. معمولاً يک برنامه از تابع GetMessage() براي گرفتن پيام بعدي از صف پيامها استفاده مي­کند. اما در صورتيکه هيچ پيامي در صف نباشد، کنترل را به برنامه برمي­گرداند. بنابراين يک برنامه مي­تواند يک کار طولاني انجام دهد و فراخوانيهاي PeekMessage() را در کدش بگنجاند. تا وقتي که هيچ پيامي براي اين برنامه يا برنامه-هاي ديگر وجود نداشته باشد، انجام کار طولاني مي­تواند ادامه پيدا يابد.
3-3 چندنخي
در محيط­هاي چندنخي، برنامه­ها مي­توانند به تکه­هايي (که نخ اجرا نام دارند) شکسته شوند که همزمان اجرا شوند.
در پياده­سازي يک نخ با يک تابع نشان داده مي­شود که ممکن است توابع ديگري را فراخواني کند. اجراي يک برنامه با نخ اصلي (اوليه­اش) شروع مي­شود که در برنامه­هاي سنتي C،main و در ويندوز،WinMain نام دارد. در حين اجرا، برنامه مي­تواند با مشخص کردن نام يک تابع در يک فراخواني سيستم (System call) ، نخ جديدي ايجاد کند. سيستم­عامل به همان طريقي که بين فرايندها رفت­و­آمد مي­کند، به طور نوبه­اي بين نخها رفت­و­آمد مي­کند.
3-3-1 معماري چند نخي
نخ اصلي همه پنجره­هايي را که سيستم نياز دارد ايجاد مي­کند. بقيه نخها هيچ تراکنشي با کاربر انجام نمي­دهند مگر از طريق ارتباط با نخ هاي اصلي. به عبارت ديگر، نخ اصلي وروديها ي کاربرد و ديگر پيامها را کنترل مي­کند و احتمالاً نخهاي ديگري ايجاد مي­کند اين نخهاي اضافي، کارهاي غيروابسته به کاربر(مانند کارهاي زمينه اي) انجام مي­دهند در واقع نخ اصلي به مثابه يک  مدير است که کارهاي بزرگ را که در ارتباط بادنياي بيرون پيش مي آيند را بين کارمندانش تقسيم مي­کند، کارمندان مستقيماً  کاري به دست نمي­گيرند آنها از مديرشان کاري تحويل مي­گيرند و به مدير حاصل را تحويل مي دهند ومنتظر کاري ديگر مي مانند. نخهاي درون يک برنامه خاص، همگي بخشي از همان فرايند هستند بنابراين آنها منابع سيستم نظير حافظه و فايلهاي باز را به اشتراک مي­گذارند. چون نخهاي درون يک فرايند، حافظه را به اشتراک مي­گذارند، متغيرهاي ايستا را نيز به اشتراک مي­گذارند. اما هر نخ پشته و در نتيجه متغيرهاي پوياي خود را داراست. هر نخ علاوه بر همه اينها، وضعيت پردازنده و کمک پردازنده مربوط به خود را داراست که در حين رفت­و­آمد بين نخها، آنها را ذخيره و بازيابي مي­کند.
3-3-2 دردسرهاي کار با نخ    
طراحي، کد کردن و بخصوص رفع اشکال يک برنامه کاربردي چندنخي پيچيده، يکي از مشکلترين کارهايي است که يک برنامه ويندوز ممکن است به آن برخورد کند. از آنجا که يک سيستم­عامل چندوظيفه­اي نوبه­اي مي­تواند براي انتقال کنترل به نخهاي ديگر، در هر نقطه يک نخ به آن وقفه دهد، هر تراکنش نامطلوبي بين دو نخ، فقط در مواقع خاصي اتفاق مي­افتد.
يک اشکال کوچک(bug) معمول در يک برنامه چندنخي race condition نام دارد. اين مشکل وقتي اتفاق مي­افتد که برنامه­نويس فرض مي­کند نخي کاري را به پايان مي­رساند (مثلاً داده­اي را آماده مي­کند) قبل از اينکه کنترل به نخي که به اين داده­ها احتياج دارد منتقل شود. براي کمک به هدايت نخها به صورت کارا، سيستم­عامل به چند فرم سنکرون کردن نياز دارد. يکي از آنها سمافور است که به برنامه­ساز اجازه مي­دهد اجراي يک نخ را در يک نقطه از کد آن بلوکه کند تا اينکه نخ ديگر اجازه دهد که اجراي آن نخ مي­تواند ادامه يابد. بخشهاي بحراني مشابه سمافورها هستند. بخشهاي بحراني قسمتهاي از کد هستند که نمي­توانند وقفه داده شوند.
ولي سمافورها خود مقدمه ايجاد bug است که بن­بست (deadlock) نام دارد. اين مشکل زماني بروز مي­کند که دو نخ اجراي يکديگر را بلوکه کنند و تنها زماني از حالت بلوکه درآيند که ادامه يابند.
خوشبختانه برنامه­هاي 32 بيتي به بعضي از مشکلات مربوط به نخهاي برنامه­هاي 16بيتي ايمن­اند. مثلاً فرض کنيد نخي حکم (statement) روبرو را اجرا کند:
lCount++;
که lCount يک متغير سراسري 32 بيتي است توسط نخ ديگري نيز مورد استفاده قرار مي­گيرد. در يک برنامه 16بيتي، اين تک حکم، به دو دستور زبان ماشين ترجمه مي­شوداولي 16بيت کم­ارزش اين متغير را يکي افزايش مي­دهد و دومي رقم نقلي حاصل از جمع قبل را با 16 بيت پرارزش آن جمع مي­کند. فرض کنيد سيستم­عامل بين اين دو دستور زبان ماشين به اين نخ وقفه دهد. اگر مقدار lCount قبل از اجراي اولين دستور زبان ماشين 0X0000FFFF باشد. در زماني که نخ دچار وقفه مي­شود، lCount مقدار 0 را داراست و اين مقداري است که  نخ ديگر مي­بيند. تنها زماني که اجراي نخ اول ادامه پيدا کند، lCount به مقدار حقيقي جمعش با 1 يعني 0X00010000 خواهد رسيد.
اين يکي از bugهايي است که خيلي به ندرت اتفاق مي­افتد و ممکن است هرگز کشف نشود. در برنامه­هاي 16بيتي، يک راه درست براي حل اين مشکل، قرار دادن اين حکم درون يک بخش بحراني است. ولي در برنامه­هاي 32بيتي اين حکم درست است زيرا آن به يک دستورالعمل زبان ماشين ترجمه خواهد شد.
3-3-3 امکانات ويندوز براي کاربا نخها
در ويندوز 32بيتي اگر يک برنامه زمان زيادي را صرف پردازش يک پيام کند، نشانگر موس روي ان برنامه، به شکل ساعت شني درمي­آيد ولي هنگامي که روي برنامه­هاي ديگر مي­رويم به شکل عادي بازمي­گردد. تنها با يک کليک مي­توان برنامه­هاي ديگر را به پيش­نما (foreground) آورد.
اما هنوز هم به کاربر اجازه کار با برنامه­اي که مشغول انجام يک کار وقت­گير است، داده نمي­شود. زيرا اين کار وقت­گير مانع از آن مي­شود که برنامه بتواند پيام دريافت کند. اين موضوع نامطلوب است. گوش يک برنامه بايد هميشه براي پيام باز باشد و براي اين کار نياز به نخ ديگري داريم. در ويندوز 32بيتي هر نخ يک صف پيام دارد. همچنين تابعي وجود دارد که به يک نخ اجازه مي­دهد نخ ديگري در آن فرايند را بکشد و آخرين خبر اينکه ويندوز 32بيتي چيزي به نام حافظه محلي نخ (Thread Local Storage or TLS) تدارک ديده است. براي فهميدن آن، يادآوري مي­کنيم که متغيرهاي ايستا(سراسري يا محلي) ميان نخهاي آن فرايند به اشتراک گذاشته مي­شوند زيرا آنها در فضاي حافظه داده فرايند قرار دارند.(و نخها حافظه را به اشتراک مي­گذارند). هر نخ، متغيرهاي محلي مربوط به خود را داراست. زيرا آنها روي پشته قرار دارندو هر نخ براي خود يک پشته دارد. مواقعي پيش مي­آيد که دو يا چند نخ از يک تابع يکسان استفاده کنند و مناسب است که متغيرهاي ايستا براي اين نخهايکتا (Unique) باشند. اينجاست که TLS به درد مي­خورد. متغيرهايي که در TLS گرفته مي­شوند مانند متغيرهاي ايستا از ميان نمي­روند ولي به عکس آنها در دسترس همه قرار ندارند بلکه به نخي که آنها را ايجاد کرده است تعلق دارد. بايد توجه داشت سخت­افزار مستقيماً از اين نوع حافظه پشتيباني نمي­کند بلکه سيستم­عامل است که اين ساختمان­داده را تهيه کرده است و توابعي را براي کار با اين ساختار در اختيار کاربر قرار داده است.
3-4 موارد استفاده از چندوظيفه­اي ( و چندنخي)
چندوظيفه­اي به کاربر اين امکان را مي­دهد که چند برنامه باز را با هم اجرا کند. مثلا کاربري مي­تواند با استفاده از يک برنامه، فايلي را ويرايش کند درحالي برنامه ديگر مشغول محاسبه يک صفحه گسترده است.
چندوظيفه­اي به توليدکننده (developer) اين امکان را مي­دهد که برنامه­هايي که از چند فرايند و فرايندهايي که از چندين نخ اجرا استفاده کنند، ايجاد کند. مثلا يک فرايند مي­تواند يم نخ واسط کاربر (user interface thread) داشته باشد که تراکنش با کاربر (وروديهاي صفحه کليد و موس) را مديريت کند و نخهاي کارگر (worker thread) که زماني که نخ واسط کاربر منتظر ورودي کاربر است، کارهاي ديگري انجام دهند. اگر اولويت نخ واسط کاربر را از همه بالاتر بدهيم، برنامه­مان هميشه به وروديهاي کاربر پاسخ مي­دهد و درعين حال، نخهاي کارگر در زماني که هيچ ورودي وجود ندارد به طور مؤثر از پردازنده استفاده مي­کنند.
استفاده از چندنخي همچنين مي­تواند براي ساخت برنامه­هايي مناسب باشد که چند کار مشابه يا يکسان را به طور همزمان انجام مي­دهند. مثلا يک سرويس­دهنده مي­تواند براي ارتباط با هريک از مشتريانش، يک نخ ايجاد کند.
يک فرايند براي کارهاي زير مي­تواند از جند نخ استفاده کند:
مديريت ورودي براي چندين پنجره
مديريت ورودي براي چند وسيله ارتباطي
اولويت­بندي کارها
مثلا نخ با اولويت بالا براي کارهايي که در آنها زمان نقش اساسي دارد (time-critical task) و نخهاي با اولويت پايين براي انجام کارهاي ديگر.
دادن امکان پاسخگويي در هر زمان به واسط کاربر
براي حل مسائلي که ماهيت چندنخي دارتد، پياده­سازي چندنخي طراحي را آسان مي­کند گرچه مشکلات عيب­يابي و رفع آن به قوه خود باقيست(از اين نظر شبيه برنامه­سازي بازگشتي است).
استفاده از چندنخي در مقايسه با چندوظيفه­اي مزيتهاي زير را داراست:
سوئيچ متن (context switch) براي نخها بسيار سريعتر از فرايندها انجام مي­شود.
همه نخهاي يک فرايند، فضاي آدرس­دهي فرايند را به اشتراک مي­گذارند و مي­توانند به متغيرهاي سراسري دسترسي داشته باشند که اين ارتباط نخها را آسان مي­کند.
همه نخهاي يک فرايند، دستگيره باز به منابع، مانند دستگيره فايلها را به اشتراک مي­گذارند.
3-5 برنامه­نويسي چندنخي
3-5-1 ايجاد و به اتمام رساندن يک نخ
براي ايجاد يک نخ از API زير استفاده مي­شود که دستگيره­هاي به نخ مربوطه را برمي­گرداند.
HANDLE CreateThread(LPSECURITY_ATTRIBUTES) lpAttr,
DWORD dwStack    ,//طول استک جديد که اگر صفر باشد طول استک هم اندازه طول استک نخ اصلي خواهد بود
LPTHREAD_START_ROUTINE lpfunc, //اشاره­گر روتين نخ
DWORD dwflag, //اگر صفر باشد اجراي نخ فورا شروع مي­شود
LPDWORD lpdwID); //شماره شناسايي نخ
اگر dwflag برابر CREATE_SUSPEND باشد، نخ تا اجراي ResumeThread() متوقف مي­ماند. پيش تعريف روتين نخ بايد به شکل زير باشد:
DWORD threadfunc(LPVOID param)
نخ باصدا زدن تابع نخ شروع مي­شود و با برگشتن از آن به اتمام مي­رسد. براي به اتمام رساندن نخ در موقع غيرمعمول از APIهاي زير استفاده مي­شود:
BOOL TerminateThread(HANDLE hThread,DWORD dwStatus)
VOID ExitThread(DWORD dwStatus)
ExitThread)) فقط نخي که در آن قرار دارد را به پاين مي­رساند و ضمنا پشته را reset مي­نمايد اما terminateThread)) بدون هيچ کار بخصوصي نخ را متوقف مي­کند.
3-5-2 معلق کردن و از سرگيري نخ
بدين منظور از APIهاي زير استفاده مي­شود:
DWORD) SuspendThread(HANDLE hThread
DWORD) ResumeThread(HANDLE hThread
هر نخ يک شمارشگر تعليق دارد (suspend counter) که در حالت تعليق نخ غيرصفر است. هر بار صدا زدن suspendThread() شمارشگر تعليق را يکي افزايش مي­دهد و باهر صدا زدن ResumeThread() يکي از آن کم مي­کند و نخ وقتي از سرگيري مي­شود که شمارشگر تعليق آن به صفر برسد. هر دو تابع شمارشگر تعليق را برمي­گرداند.
3-5-3 تقدم نخها
اولويت نخها از ترکيب دو مقدار کلاس تقدم که به فرايند نسبت داده مي­شود و تقدم شخصي نخ که به نخ نسبت داده مي­شود تعيين مي­شود. براي تعيين و مقداردهي کلاس تقدم از دو API زير استفاده مي­شود.

DWORD) GetPriorityClass(Handle hAPP
BOOL) SetPriorityClass(Handle hAPP,DWORD dwPriority

کلاس تقدم در جدول 4-1 آمده است.

REALTIME_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
جدول4-1 کلاسهاي تقدم براي فرايند
براي تعيين و مقداردهي تقدم شخصي نخها دو API زير وجود دارند:
In) GetThreadPriority(HANDLE hThread
BOOL SetThreadPriority(HANDLE) Thread,int Priority

تقدمهاي شخصي در جدول 4-2 آمده است:

15
Thrad_Priority_Time_Critical
2
Thrad_Priority_Highest
1
Thrad_Priority_Above_Normal
0
Thrad_Priority_Normal
1-
Thrad_Priority_Below_Normal
2-
Thrad_Priority_Lowest
15-
Thrad_Priority_Idle
جدول 4-2: تقدم شخصي نخها از بالاتر به پايين تر

3-6 هماهنگ­سازي نخها به کمک سمافورها
ويندوز چهارنوع هماهنگ­سازي را استفاده مي­کند که همگي برمبناي سمافور هستند. اين چهار نوع از اين قرارند:
3-6-1 سمافورهاي کلاسيک
سمافور مي­تواند براي اين استفاده شود که تعداد محدودي پروسس يا نخ به يک منبع دسترسي داشته باشند. اين کار با يک متغير که هنگام گرفتن منبع افزايش مي­يابد و هنگام آزاد کردن آن کاهش مي­يابد، کنترل مي­شود.
3-6-2 سمافور mutex
نوع خاصي از سمافور کلاسيک است که تعداد پروسسها يا نخهايي که همزمان مي­توانند به منبع دسترسي داشته باشند، تنها يکي است.
3-6-3 event object
براي جلوگيري از دستيابي به يک منبع تا رسيدن يک سيگنال از يک نخ يا پروسس به کار مي­رود.
3-6-4 ناحيه بحراني (critical section)
شما مي­توانيد قسمتي از کد را به عنوان ناحيه بحراني معرفي کنيد تا از دستيابي بيش از يک نخ در يک زمان به آن جلوگيري شود.
براي ايجاد يک سمافور در ويندوز از APIهاي زير استفاده مي­کنيم.

HANDLE CreateSemaphore(LPSECURITY_ATTRIBUTES lpAttr,
LONG InitialCount,//مقدار اوليه شمارشگر سمافور
LONG MaxCount,//تعداد نخهايي که مي توانند به منبع دسترسي داشته باشند
LPSTR lpstrName);//نام سمافور
از آنجا که سمافور يک شيء سراسري (global) در برنامه مي­باشد، اگر دو پروسس سمافورهايي با يک نام ايجاد کنند، همه آنها يک سمافور خواهندبود و اين امکان هماهنگ­سازي چند پروسس را بوجود مي­آورد. اگر اين مقدار NULL باشد، سمافور محلي همان پروسس مي­شود. ضمنا توجه کنيد اگر Maxcount مساوي يک باشد، سمافور mutex واگرInitialCount مساوي صفر باشد، event object خواهيم داشت.
بعد از ايجاد سمافور با صدا زدن توابع زير از آنها استفاده مي­کنيم:
DWORD WaitForSingleObject(HANDLE hObject,//دستگيره سمافور
DWORD dwHowlong);//زمان انتظار به ميلي ثانيه
BOOL ReleaseSemaphore(HANDLE hSema,//دستگيره سمافور
LONG Count,//مقدار افزايشگر سمافور
LPLONG lpPrevCount);

اگر dwHowlong مساوي ثابت INFINITE باشد، سمافور مستقل از زمان پياده­سازي مي­شود. WaitForSingleObject() هربار پس از موفقيت خود يکي از شمارشگر سمافور کم مي­کند و ReleaseSemaphore() به اندازه Count به شمارشگر سمافور مي­افزايد.
3-7 يک برنامه نمونه
برنامه نمونه صفحه بعد ممکن است در فهم مطلب مفيد باشد. همه کارها در هنگام پردازش پيام WM_CREATE يعني در همان شروع برنامه انجام مي­شود. برنامه دو نخ را با فراخواني تابع CreateThread() ايجاد مي­کند و هر کدام از توابع نخ در يک حلقه اعدادي را تا ماکزيمم تعريف شده مي­شمارند.
**************ليست برنامه*******************
دستورکار
آزمايش4- کار با Registry ويندوز
4 _1 بانک داده­اي ثبت
4_1_1 تاريخچه  
در win 3.0 اطلاعات پيکربندي نرم­افزاري در فايلي به نام Win.ini نگهداري مي­شد تمام نرم­افزارها اطلاعاتشان را در اين فا يل ذخيره مي­کردند که باعث آشفتگي اين فايل مي­شد (بخصوص از آن نظر که اطلاعاتي که با هم سنخيتي نداشتند کنار هم نگهداري مي­شدند) اين آشفتگي، کار با اين فايل  را مشکل مي­کرد.
1 .3 windows اين مشکل را از دو  راه حل کرد:
_ تهيه دو تابع API به نامهاي GetProFileString اين دو تابع به نرم­افزارها اجازه مي­دادند فايل  مخصوص به خود داشته باشد.
- تهيه يک بانک داده­اي ثبت (Registration Database)
Windows 95 از اين هم جلوتر رفته است برنامه­ها هنوز هم مي­توانند .iniهاي مخصوص به خود داشته باشند ولي بهتر است که از بانک داده­اي ثبت براي اين کار استفاده کنند. اين بانک در موضوعاتي نظير DDE و OLE که لازم است يک برنامه با برنامه ديگر ارتباط پيدا کند (و قاعدتاً بايد آدرس و ديگر مشخصات آن برنامه و اجزا را بداند) اهميت فوق­العاده­اي پيدا مي­کند. همچنين بسياري از برنامه­ها که از نوع پرونده خاصي پشتيباني مي­کنند (مانند برنامه­هاي گرافيکي که از فايلهاي گرافيکي نظير .bmp، .gif،.pcx،.jpg و ... پشتيباني مي­کنند) مي­توانند آن را در بانک، ثبت کنند که در اين صورت برنامه­هايي نظير Explorer و ديگر Program Launcherها مي­توانند براي بازکردن اين نوع فايلها از برنامه اصلي استفاده کنند.

4_1_2 تعريف بانک داده­اي ثبت
بانک داده اي ثبت يک يک پايگاه داده (database) سلسله مراتبي است که اطلاعات پيکربندي(Configuration Information) محيط ويندوز32 بيتي در خود نگهداري مي­کند.
Registry از شبکه هم حمايت  مي­کند و اجازه مي­دهد که هر کاربر تنظيمات (Preference) خود را ذخيره کند.
بر نامه­هاي کاربردي مي­توانند براي هر کاربر، واسط کاربر سفارشي (Customized ID) داشته باشند.  داده­هاي مربوط به کاربران مي­توانند در يک محل متمرکز شوند و به بانک داده­اي ثبت ايستگاه کاري(Workstation Registry) که کاربرLog On شده است تزريق(Import) شوند همينطور مدير سيستم  مي­تواند از راه دور به  Rgistryهاي ايستگاههاي کاري دست پيدا کند و تضادها را حل کند.
اطلاعات مربوط اعمال پوسته­اي(Shell Action) نيزدر Registry ذخيره مي­شود (در هنگام کار با Explorer هنگامي که  کاربر دکمه راست ماو س را کليک مي­کند يک منوي شناور(Pop_up Menu)  ظاهر مي­شود که در آن ليست اعمال(Action)  برنامه­ريزي شده قرار دارد اين اعمال معمولاً شامل Edit، Compile و Open هستند به اين اعمال اعمال پيو سته اي مي گويند.کاربر با استفاده از Registry مي­تواند اعمال  جديدي تعريف کند  ويا اعمال قبلي را تغييردهد.
 قسمتها ي مهم ديگر عبارتند از:
Registration, Internationalization (Local Support), Plug & Play SupportOLE
4-1-3 معماري بانک داده اي ثبت
يک راه براي غواصي در Registry استفاده از برنامه Regedit  است. اين برنامه به کاربران اجازه رويت و تغيير Registry و همچنين ارتباط با Registryهاي ديگر کامپيوترها را مي­دهد.
قالب نمايشي  Registry در برنامه Regedit  بسيار شبيه  به آنچه است  که Explorer  براي نمايش شاخه (Folder)ها و فايل (File)هابه کاربرده است زيرا (Registry) ساختار درختي دارد. Registry به آنچه که در Explorer شاخه ناميده مي شود، کليد (Key) و به آنچه که در Explorer فايل ناميده مي­شود، مقدار (Value) مي­گويد. هر کليد مي­تواند شامل چند زير کليد و چند مقدار باشد.
مقدار (Value) شامل سه جزء است:
نوع داده که به صورت شمايل (Icon) ظاهر مي­شود، نام مقدار و خود مقدار (ارزش مقدار).
مقدار، نبايد بزرگتر از 64k باشد. اندازه تمام Registry به اندازه ديسک سخت محدود مي­شود ( از لحاظ منطقي محدوديتي ندارد).
براي مقدار، دو نوع داده وجود دارد:
نوع دودويي:
بيشتر اطلاعات عناصر سخت­افزاري به شکل دودويي ذخيره مي­شوند و در Regedit مي­توانند به فرم دوددويي يا شانزده­شانزدهي (Hexadecimal) به نمايش درآيند. معمولاً فقط کاربران حرفه­اي با اين مقادير کار مي­کنند.
نوع متني:
برخي اطلاعات به فرم رشته­اي از کاراکترها به نمايش در­مي­آيند. معمولاً کاربر اين نوع داده را تغيير مي­دهد. مسير برنامه­هايي کاربردي يا اجزاء آنها، نام فايلها و ... از اين دسته­اند.
4-1-4 ساختار بانک داده­اي ثبت در Windows
ساختار Registry در Windows NT و Windows 95 يکسان است. اين بدان معناست که برنامه­هايي که براي Windows NT و Windows 95 نوشته شده­اند، مي­توانند انتظار داشته باشند، داده­ها را در محل مشترکي بيابند (مستقل از نوع داده).
شکل زير بالاترين سطح Registry را نشان مي­دهد.
کاربرد کليدهاي ريشه­اي در بانک داده­اي ثبات
HKey-Local_Machine :
اين کليد شامل اطلاعاتي در مورد سخت­افزار نصب شده، تنظيمات نرم­افزاري، پروتکلهاي شبکه و ... مي­باشند.
HKey_Current_Config:
اين کليد اشاره­گري است به شاخه HKey_Local_Machine\Config، اطلاعاتي در مورد پيکربندي سخت­افزار جاري متصل به کامپيوتر دربردارد.
HKey_Classes_Root:
اين کليد اشاره­گري است به شاخه­اي از HKey_Local_Machine که اطلاعات تنظيمات نرم­افزاري را دربردارد. بسياري از داده­ها اين کليد در Windows 3.1 نيز وجود داشته­اند. اين داده­ها شامل تعاريف و نوع سندها، File associationها، واسط پوسته (Shell Interface)، ميانبر (Shortcut) هاي Windows95 (که در واقع OLE Link هستند)  و چهارچوب واسط کاربر Windows 95 و ... هستند.
HKey_Dyn_Data:
اين کليداشاره گري است به شاخه اي از HKey_Local_Machine که شامل اطلاعات  وضعيتهاي پويا (Dynamic Status Information) براي وسيله (Device) هاي مختلف است  که به عنوان قسمتي ازاطلاعات  Plug and Play ذخيره مي­شود.
HKey_Users:
اين کليد به اطلاعات تمام کاربراني (اعم ازاطلاعات عام و خاص) که به سيستم وارد (Log On) شده­اند، نشانه مي­رود. تمام کاربراني که به سيستم وارد شده­اند، مي­توانند به اطلاعات عام، دسترسي پيدا کنند. اين اطلاعات شامل تنظيمات پيش­فرض براي برنامه­هاي کاربردي، پيکربندي ميزکار(Desktop) و مانند اينهاست. اين کليد به ازاي هر کاربر ورودي يک زيرکليد مخصوص ايجاد مي­کند.
HKey_Current_User:
اين کليد به شاخه مربوط به کاربر فعلي از کليد HKey_Users اشاره مي­کند.

4-2 سيستم OLE
4-2-1 مفاهيم اوليه در انتقال داده­ها در Windows
شيء (object): داده (Data) (يعني يک تکه از متن يا گرافيک يا صدا يا ... ) و يک يا چند عمل براي ايجاد، دسترسي و بکارگيري آن داده.
نرم­افزار دهنده(Server): هر برنامه­اي که قرار است شيء توليد شده در آن به يک برنامه ديگر منتقل شود، نرم­افزار دهنده يا سرويس­دهنده ناميده مي­شود. پردازش و ويرايش اين شيء نيز برعهده سرويس­دهنده است.
نرم­افزار گيرنده(Client) : نرم­افزاري است که شما از آن براي ذخيره­کردن يک جسم لينک يا ادغام شده ( که توسط نرم­افزار دهنده ايجاد شده است) استفاده مي­کنيد. به اين نرم­افزار مشتري يا نرم­افزار مقصد نيز گفته مي­شود.
ادغام (Embedding): اگر شيء به طور کامل در اختيار نرم­افزار مقصد قرار گيرد، گوييم عمل ادغام صورت گرفته است. توجه داشته باشيد در اين صورت يک کپي از شيء د اختيار نرم­افزار گيرنده قرار مي­گيرد و هرگونه تغييري در اين شيء تاثيري در شيء اصلي نخواهد داشت.
پيوندخوردن(Linking): اگر اشاره­گري به شيء اصلي در اختيار نرم­افزار گيرنده قرار گيرد، گوييم عمل پيوند صورت گرفته است. يعني شيء اصلي از سرويس­دهنده به مشتري پيوند زده شده است و هرگونه تغيير در آن مستقيماً تغيير در شيء اصلي مي­باشد.
سند مرکب: فايل داده­اي است که علاوه بر اطلاعات ذاتي خود، شامل يک يا چند جسم ساخته شده توسط نرم­افزارهاي ديگر هم باشد.
4-2-2 معرفي سيستم OLE:
امکانات چندوظيفه­اي (multitasking) در ويندوز و امکانات Clipboard و OLE نرم­افزارها ر ااز حالت منفرد خارج کرده و به راحتي مي­توانند با هم کار کنند. مثلاً شما مي­توانيد در برنامه Excel جدولي از صورتحساب خود را طراحي کنيد و سپس اين جدول را به گزارشي که به وسيله نرم­افزار Word مي­نويسيد ادغام کرده و يا لينک کنيد. انتقال اطلاعات از برنامه­اي به برنامه ديگر در وينودز توسط clipboard داراي سه عيب است:
اطلاعات منتقل شده به برنامه مقصد پويا نيست. يعني در صورت تغيير اطلاعات در برنامه مبدأ، اطلاعات در برنامه مقصد بخ روز نمي­شود.
براي تغيير اطلاعات در برنامه دوم غالباً مجبوريد در برنامه اول اطلاعات را تغيير دهيد و فرايند انتقال را از نو انجام دهيد.
کپي­کردن اطلاعات از يک برنامه به يک برنامه ديگر کار بي­فايده­اي است که در نهايت چندين کپي از اطلاعات ثابت بوجود آمده و حافظه بيشتري مصرف مي­کند.
سيستم OLE هرسه اشکال فوق را برطرف کرده است. OLE  با ساده­تر کردن استفاده مشترک از اطلاعات بين چندين نرم­افزار، حفظ اتوماتيک اطلاعات مشترک و نيز ترکيب­کردن اطلاعات در يک سند (بدون آکه فضاي ديسک سخت بيهوده اشغال شود) توانست بر DDE پيشي بگيرد. به عنوان مثال هنگامي که براي يک فايل داده­اي يا اجرايي يک ميانبر (shortcut) ايجاد مي­کنيد در واقع در حال استفاده از OLE هستيد. همانطور که از اصطلاح OLE برمي­آيد، براي ايجاد يک سند مرکب يا بايد اجسام را به يک سند لينک کنيد و يا اينکه اجسام را در آن سند ادغام کنيد.
4-2-3 روش لينک کردن در سيستم OLE
جسم لينک شده داراي اطلاعات زير است:
کليد رجيستري لازم براي احظار نرم­افزار دهنده جسم
يک "متافايل" که محتوي دستورالعملهاي GDI لازم براي تعيين نحوه نمايش جسم در نرم­افازر گيرنده باشد.
يک اشاره­گر (pointer) به فايل دهنده جسم که اطلاعات منتقل شده در آن وجود دارد.
لينک کردن داراي مزاياي زيادي است که مهترين آنها عبارتند از:
لينک کردن، نرم­افزار گيرنده را قادر مي­سازد فايل داده­اي اوليه (که اطلاعات از آن منتقل شده­اند) را بررسي کرده و تغييرات بوجودآمده در آن را شناسايي کند. اگر مشخص شود که داده­هاي منتقل شده در سند مبأ تغيير کرده­اند، OLE به­طور اتوماتيک از لينک (زنجير) بوجود آمده براي نوسازي جسم منتقل شده در سند مقصد استفاده مي­کند.
به دليل آگاهي جسم از نرم­افزار دهنده و نرم­افزار گيرنده آن، شما مي­توانيد جسم لينک شده را در داخل نرم­افزار گيرنده آن نيز ويرايش کنيد(کافي است روي جسم لينک شده دوبار کليک کنيد).
به دليل آنکه اطلاعات مبدأ (يعني اطلاعات موجود در نرم­افزار دهنده) در يک فايل جداگانه (غيراز فايل گيرنده) قرار دارند، شما به سادگي مي­توانيد از اين اطلاعات در سندهاي مرکب ديگر نيز استفاده کنيد. همچنين مي­توانيد اين اطلاعات را مستقيماً در داخل نرم­افزار دهنده تغيير دهيد.
مواردي که از روش لينک کردن استفاده مي­شود:
هنگامي که مي­خواهيد سند مرکب کوچک باشد.
در مواردي که مطمئن هستيد سند اوليه جابجا يا حذف نخواهد شد.
در مواردي که مي­خواهيد فايل داده­اي مبدأ به عنوان يک فايل جداگانه وجود داشته باشد تا بعداً بتوانيد به راحتي آن را تغيير داده يا از آن در سندهاي مرکب ديگر استفاده کنيد.
در مواردي که نخواهيد سند مرکب را از طريق پست­الکترونيکي يا ديسک فلاپي براي ديگران بفرستيد.
4-2-4 اجسام متداخل
اگر نرم­افزار دهنده امکان ادغام يا لينک کردن اجسام را داشته باشد شمام ي­توانيد در نرم­افزار گيرنده (محتوي جسم) روي جسم دوبار کليک کرده و نرم­افزار دهنده ر ا باز نموده و سپس يک جسم لينک يا ادغام شده ديگر را در داخل جسم مذکور (که خودش هم لينک يا ادغام شده) وارد کنيد. به اجسام توليد شده در اين حالت " اجسام متداخل" گفته مي­شود. OLE از نظر تعداد سطوح اجسامي که مي­توانند داخل يکديگر وجود داشته باشند هيچ محدوديتي ندارد.
4-2-5 ميانبرها (shortcuts)
ميانبرها همگي اجسامي از نوع OLE هستند. در اين حالت خاص نرم­افزار گيرنده جسم صفحه تصوير ويندوز است و ميانبر يک جسم لينک شده است که به فايل اصلي اشاره مي­کند. اگر شما کليد HKEY_CLASSES_ROOT\LnkFile را بررسي کنيد متوجه مي­شويد که يک کليد فرعي CLSID در آن وجود دارد که در آن يک فايل DLL به نام SHELL32.DLL قرار دارد که جزئيات بکارگيري اين جسم OLE در آن مشخص شده است.

4-2-6 روش ادغام کردن در سيستم OLE
در اين شيوه به يک جسم نه تنها اطلاعات رجيستري برنامه دهنده آن و نيز متافايل نمايش­دهنده آن (در برنامه گيرنده) وارد مي­شود بلکه اطلاعات مربوط به جسم نيز وارد مي­شود. در اين روش هرچيزي که شما براي نمايش و کار بر روي يک جسک نياز داشته باشيد در داخل خود آن جسم وجود دارد. بنابراين ديگر به فايل داده­اي مبدأ نيازي نيست و شما به راحتي مي­توانيد سند مرکبي که با اين شيوه ايجاد شده است را در هر ديسک يا کامپيوتر ديگري بکار گيريد. زيرا دريافت­کننده آن در واقع اطلاعات اصلي را دريافت مي­کند.
روش ادغام در موارد زير بکار مي­رود:
در مواردي که حجم سند مرکب نهايي مسأله­اي نباشد.
در مواردي که نياز نباشد فايل داده­اي مبدأ به صورت يک فايل جداگانه وجود داشته باشد.
در مواردي که مي­خواهيد سند مرکب را براي يک نفر ديگر بفرستيد.
5- آشنايي با سيستم­عامل Linux و برنامه­نويسي در آن
هدف ازنگارش اين آزمايش بيان همه مفاهيم ودستورهاي linux نيست. در اين زمينه کتابهاي متعددي موجود است که فهرست برخي از آنها در بخش مراجع آمده است. هدف ازگردآوري اين مجموعه آشنا ساختن شما با چگونگي کاربا اين سيستم­عامل است. البته درحدي که شما را قادر سازد آزمايشهاي مربوط به سيستم عاملlinux را انجام دهيد.
پس از مطالعه اين جزوه خواهيد توانست:
با سيستم ارتباط برقرار کنيد.
با پرونده­ها کار کنيد و برنامه­هاي قابل اجرا را اجرا کنيد.
از راهنماي سيستم استفاده کرده، اطلاعات مورد نياز خود را از آن بيايد.
پرونده­هاي خود را با ويرايشگرها ويرايش کنيد.
برنامه هاي خود را با ابزارهاي برنامه نويسي ترجمه (compile)، اشکال زدايي(Debug) واجرا کنيد.


5-1 معرفي سيستم LINUX و نگاهي به ويژگيهاي آن

براي معرفي بهتر سيستم عامل  linuxابتدا با تاريخچه سيستم عاملunix  و انواع مختلف آن آشنا مي­شويم:
5-1-1 تاريخچه سيستم عامل unix
سيستم عامل unix در سال 1969 م. توسط کن­تامپسون و دنيس­ريچي برروي کامپيوترDEC PDP-7  در آزمايشگاههاي بل با زبان اسمبلي طراحي شد. در سالهاي بعد تامپسون و ريچي unix  را با c بازنويسي کردند. زبان c قابل حمل بود وکمک کرد که unix  به سيستم­عاملي تبديل شود که مي­توانست بر روي انواع متفاوتي از کامپيوترها اجرا گردد. توسعه سيستم­عامل به آزمايشگاههاي بل محدود نشد و در اواسط دهه 1970 unix يک محصول تحقيقاتي بود که دانشگاههاي بسياري بر روي آن کار مي­کردند. از آن زمان تاکنون کارهاي بسياري بر روي unix انجام گرفته است. با پيشرفت صنعت پردازنده­ها وظهور کامپيوترهاي قويتر گونه­هاي متعددي از آن بر روي کامپيوترهاي گوناگون توسط شرکتها و مراکز تحقيقاتي مختلف دنيا ارائه گشته است; مانند:solaris براي پردازنده­هاي Sparc. OSF/I  براي پردازنده هاي 80X86 (که در اين آزمايشگاه مورد توجه ما است)
به طور کلي ويژگيهاي زير را براي انواع مختلف سيستم عامل unix مي توان بر شمرد:
طراحي مستقل از سخت افزار: از آنجا که قسمت اعظم کد اين سيستم­عامل به جاي اينکه با اسمبلي نوشته شود به زبان c نوشته شده است در مقايسه با سيستم­عامل­هاي ديگر داراي سرعت کمتر ولي انعطاف و اطمينان بيشتري است. نگهداري چنين سيستم­عاملي براي توليد­کنندگان آن آسانتر از سيستم­عاملي است که با زبان اسمبلي توليد شده است. به همين دليل روايتهاي زيادي از اين سيستم­عامل بر روي سخت افزارهاي مختلف ايجاد شده است.
چند کاربره بودن: در يک زمان يک يا چند کاربر مي­توانند از سيستم مبتني بر unix استفاده کنند. منابع سخت افزاري باارزش مانند چاپگرها وسرويس دهنده­هاي بزرگ(مانند سرويس دهنده­هاي شبکه)توسط افراد بسياري قابل استفاده است.
چند وظيفه اي بودن: هر کاربر مي­تواند همزمان چند وظيفه مختلف انجام دهد(مثلاً چند برنامه مختلف را به طور همزمان اجرا کند)
امکان شبکه شدن به صورت ذاتي: قابليت اتصال کامپيوترهاي کوچک و بزرگ و ايجاد شبکه­هاي کامپيوتري در نهاد اين سيستم­عامل تعبيه گشته است و براي ايجاد شبکه احتياجي به شبکه ديگري نيست.
دارا بودن پايانه­هاي متني و گرافيکي: امروزه اکثر سيستمهاي unix داراي پايانه­هاي متني يا گرافيکي هستند. همان طور که گفته شد در آغاز unix براي کامپيوتر­هاي بزرگ طراحي شد. اين کامپيوترها متشکل از يک يا چند پردازنده قوي مرکزي وتعدادي پايانه((Terminal بودند. دسترسي همزمان به کامپيوتر از طريق اين پايانه­ها انجام مي­گرفت. در واقع براي استفاده از قدرت چندکاربره بودن وجود اين پايانه­ها لازم بود. اولين گونه­هاي اين سيستم­عامل داراي پايانه­هاي متني بودند. يک پايانه متني داراي يک قالب متني است که کوچکترين جزء قابل تفکيک آن يک کاراکتر است (مانند محيط متني Dos ). با پيشرفت کامپيوترها وگرايش کاربران به واسطهاي کاربر گرافيکي تحول بزرگي در زمينه پايانه­هاي unix به وقوع پيوست. ظهور x window system (يا به طورمخفف x) واسط گرافيکيx window را مي­توان به محيطMicrosoft window  تشبيه کرد. X  يک سيستم پنجره­بندي گرافيکي است که يک واسط گرافيکي منوي و کاربرپسند (user friendly) ارائه مي­کند. از ويژگيهاي بارز اين واسط کاربر، سهولت و سادگي ارتباط کاربر با کامپيوتر است. در واسطهاي گرافيکي کوچکترين عضو قابل تفکيک صفحه نمايش يک نقطه (pixel) است محيط x داراي قابليتهاي فراواني است که بيان آنها حوصله اين جزوه خارج است.
5-1-2 تاريخچه سيستم­عامل linux
پيشرفت صنعت ريزپردازنده ه­ا و ظهور ريزکامپيوترهاي سريع و قوي زمينه را براي به­وجود آمدن گونه­اي unix بر روي ريزکامپيوترها آماده ساخت. در مارس 1991 Linus torvalds يک سيستمminix براي کامپيوتر 386 خود خريد تا از آن براي طراحي سيستم­عامل چند­وظيفه­اي خود استفاده کند. در ماه سپتامبر او اولين نگارش آماده سيستم­عامل خود را بر روي شبکه اينتر نت قرار داد و از تمام علاقه­مندان براي تکميل آن دعوت به همکاري کرد. اين سيستم­عامل که ايده خود را ازunix  گرفته بود linux نام گرفت. از آن تاريخ بسياري از برنامه­نويسان سراسر دنيا به کار بر روي linux پرداختند. به اين ترتيب پروژهlinux  آغاز شد و بتدريج قسمتهاي مختلف آن شکل گرفت وکامل گشت. اکنون اين سيستم­عامل بر روي ريزکامپيوترها مبتني بر پردازنده 80x86 موجود است. در اين بين مؤسساتي مانند free software foundation نيز مسووليت پشتيباني و ارتقايlinux  را بر عهده گرفته­اند.
به طور کلي ويژگيهاي linux را مي­توان به صورت زير بر شمرد:
اين سيستم­عامل را مي­توان بر روي يک کامپيوتر منفرد و جدا از شبکه نيز به کار گرفت و براي کار با آن وجود يک شبکه متشکل از چندين ريزکامپيوتر الزامي نيست. البته در اين حالت ديگر نميتوان از امکانات شبکه­اي linux استفاده کرد.
چند وظيفه­اي وچند­کاربره بودن همچنين امکان شبکه شدن (که پيشتر براي انواع unix  بر شمرديم) از جمله ويژگيهاي linux است با اين سيستم­عامل مي­توان شبکه­هاي بسيار قوي طراحي کرد که امکان اتصال به شبکه­هاي ديگر را نيز داشته باشند.
Linux امکان استفاده از پايانه­هاي متن و همچنين پايانه­هاي گرافيکي مبتني بر استاندارد x را دارد.
5-2 شروع کار با سيستم عامل linux
5-2-1 ورود به سيستم­عامل
هنگامي که کامپيوتري را که linux بر روي آن نصب شده است راه اندازي مي­شود. پيام زير بر روي صفحه نمايش آن ديده خواهد شد:
Grub:
چون شما بر روي کامپيوتر خود علاوه بر سيستم عاملlinux مي­توانيد سيستمهاي­عامل ديگر مثلDOS را نيز نصب و استفاده کنيد اين پيام از شما نام سيستم عامل مورد نظر را سوال مي­کند .براي استفاده از سيستم­عامل linux کلمه linux را وارد کنيد .پس از اين linux کار خود را آغاز و کامپيوتر را راه­اندازي خواهد کرد. بعد از انجام روند راه­اندازي برقراري ارتباط با سيستم­عامل ميسر خواهند بود.
از آنجا که سيستم­عامل linux چند کاربره به يک حساب(Account) نياز خواهد داشت اين حساب توسط مدير سيستم تعريف مي­گردد. در هنگام برقراري ارتباط با سيستم در واقع به حساب خود وارد مي­شويد و سيستم­عامل به ناحيه کاري مربوط به خودتان قرار مي­دهد هر حسابي حتماً داراي يک کلمه کاربردي (User ID) است که با آن نام توسط سيستم به رسميت شناخته مي­شود. همچنين مي­توان براي يک حساب کلمه عبور(password) نيز در نظر گرفت.
برقراري ارتباط روند ساده­اي است که شما را به سيستم­عامل معرفي مي کند. اين روند با ظاهر شدن يک پيام login بر روي صفحه نمايش که نام کامپيوتر را نيز به همراه دارد، آغاز مي­شود. براي مثال:
Os-lab login:
مقابل پيام فوق نام کاربردي خود را وارد کنيد و کليد enter را فشار دهيد. بعد از وارد شدن نام پيام زير نمايش خواهد يافت:
Password:
اين پيام رمز عبور (password) را از شما مي­خواهد (توجه داشته باشيد اگر حساب کاربر کلمه عبور نداشته باشد اين پيام نمايش نخواهد يافت). کلمه عبور خود را تايپ کنيد و کليد enter را فشار دهيد. اگر نام کاربري يا کلمه عبور خود را درست وارد نکرده باشيد پيامي مبني بر اشتباه بودن آنها دريافت خواهيد کرد و دوباره پيام login ظاهر خواهد شد. در صورت درست بودن نام کاربري و کلمه عبور سيستم با نشان دادن خط فرمان به شما آمادگي خود را دريافت فرمانها اعلام کرد.
نکته:در linux مي­توان در آن واحد به 6 پايانه دسترسي داشته باشد که به ترتيب tty 1 تا tty6 ناميده مي­شوند. تعداد اين پايانه­ها بستگي به تنظيمهاي سيستم­عامل هنگام راه­اندازي آن دارد. وقتي که اعلان login را بر روي صفحه پايانه مشاهده کرديد سعي کنيد با کليد­هاي (جهت چپ با راست از مکان نما) Alt+ به پايانه­هاي ديگر برويد. در آزمايشهاي آينده با استفاده از اين قابليت مي­توان در محيط متن همزمان بيش از يک پايانه را استفاده کنيد.
براي قطع کردن ارتباط خود و بستن حسابتان مي­توانيد از دستور logoff استفاده کنيد و يا کليد هاي ctrl+d  را فشار دهيد. اين کار باعث خواهد شد پيام login مجدداً بر روي صفحه ظاهر شود.
تذکر مهم: قبل از خاموش کردن کامپيوتر ابتدا حساب خودتان را ببنديد سپس سه کليد ctrl+alt+delete را فشار دهيد. با اين کار linux پاک مي­شود و کامپيوتر را براي (shut down) آماده مي­کنيد. پس آنکه linux کارهاي خود را به اتمام رساند صفحه پاک مي­شود و کامپيوتر وارد مرحله راه اندازي مجدد شده سپس پيام LILO ظاهر مي­شود. در اين هنگام مي­توانيد کامپيوتر را خاموش کنيد.
5-2-2 راهنماي سيستم
به همراه گونه­هاي جديد unix و از جملهlinux  بسته جامع راهنماي سيستم تحت عنوان صفحه راهنما (Manual page) ارائه شده است. هرجا که در کار کردن با امکانات سيستم عامل به اشکال برخورديد سعي کنيد از اين صفحات راهنما با استفاده از فرمان man کمک بگيريد. اين فرمان حداقل به يک پارامتر نياز دارد وآن کلمه کليدي (keyword) درخواستي است. مثلاً براي گرفتن اطلاعات در مورد دستور is بايد فرمان زير را صادر کنيد:
$ man is
اين مجموعه در9 فصل سازندهي شده است که سه فصل اول آن در اين آزمايشگاه به کار ميآيد:
فصل اول مربوط به فرمانهايي است که در اختيار کاربر قرار دارند.
فصل دوم مربوط به کتابخانه استاندارد فراخوانيهاي سيستم(system calls) در linux است.
فصل سوم توابع کتابخانه زبان c را شرح مي­دهد.
مي­توانيد با گزينه-s  به man  بگوييد که در کدام فصل موضوع را جستجو کند. فرمان زير در فصل سوم راهنماها به دنبال دستور exit (در زبان c استفاده مي شود) مي­گردد:
$ man –s exit
5-2-3 سيستم فايل (file system )
Linux  نيز همانند همه سيستمهاي عامل به طرز چشمگيري بر اطلاعات ذخيره شده در پرونده­ها تکه مي­کند، اطلاعات کاربران مختلف پرونده­هاي اجرايي مورد نياز کاربران پرونده­هاي داده­اي مربوط به آنها کتابخانه­هاي مورد نياز براي برنامه­نويسي اطلاعات مربوط به تنظيمهاي سخت افزاري و امکانات موجود در سيستم کد اجرايي خود سيستم عامل و بسياري اطلاعات ديگر همگي به صورت پرونده ذخيره مي­شوند. بنابراين با توجه به حساسيت اطلاعات فوق­الذکر لازم است که اين پرونده­ها تحت يک نظام قوي و قابل اطمينان مديريت و نگهداري شوند. در سيستمهاي عامل انجام اين وظايف بر عهده سيستم پرونده است. مثلاً در dos سيستم FAT و در سيستم عامل windows NT سيستم پروندهNTFS  براي اين کار طراحي شده­اند. گونه هايي ازUnix  که قبل از BSD نگارش 2/4 ايجاد شده اند هر يک سيستم پرونده مربوط به خود را داشتند يکي از ويژگيهاي جالب توجه سيستم­عامل Linux در نگارشهاي system V Rrlrase 4 به بعد اين است که سيستم پرونده آن، انواع سيستمهاي پرونده موجود را مي­شناسد و قادر است اطلاعات موجود در آنها (يعني پرونده­هايشان را) بخواند. سيستمهاي پرونده پراستفاده در Unix عبارتند از:Extended file system 2 و system v file system صرف­نظر از نوع سيستم پرونده بايد اطلاعاتي را که سيستم­عامل براي شناسايي کامل يک پرونده نياز دارد مهيا کنند.
سيستم فايل در linux بر خلاف سيستم فايل در ويندوز که مي­تواند شامل چند درايو منطقي باشد (نظير:a. b   c .) تنها شامل يک درايو است که آن هم چون فقط يکي است نام خاصي ندارد. شاخه ريشه اين درايو با علامت / شناخته مي شود و تمام فايلها و دايرکتورهاي linux  درشاخه/ قرار مي گيردند. شاخه­هاي اصلي سيستم که مستقيماً در شاخه / قرار دارند عبارتند از: etc. lib.home.mnt. root. bin و چند شاخه ديگر در اينجا ما تنها اشاره­اي به شاخه هاي rootوhome مي­کنيم.
همانند ويندوز 2000 که دو نوع کاربردارد:
1-کاربران عادي
2- مدير سيستم با نام خاص administrator
Linux نيز مانند ويندوز 2000 همين دو نوع کاربر را دارد و در linux نام خاص کاربري براي مدير سيستم به جاي administrator ، root  است بنابراين شاخه root (/)شاخه مخصوص مدير سيستم است و linux اجازه ورود و تغيير محتويات اين شاخه را به هيچ کاربري به غيراز مدير سيستم نمي­دهد و مدير سيستم فايلها ي غير مجاز براي مشاهده ديگران را مي­توان در اين شاخه قرار دهد.
همچنين هر کاربر (نام کاربري جديد مثل user) که توسط مدير سيستم در linux ثبت مي­شود يک دايرکتوري جديد با نام کاربري او در شاخه /home ايجاد مي­شود (مثلا/home/user 1) که وقتي کاربر به سيستم login مي­کند اين شاخه به عنوان شاخه جاري او مي­باشد (که البته قابل تغيير است ). قابل توجه است که اگر مثلا کاربر user 1 فايلها و دايرکتوري را در شاخه /home/user1 ذخيره کند هيچ کاربر ديگري اجازه ورود به اين شاخه و ديدن محتويات آن را اندازه مگر root که اجازه ورود وتغيير همه داير کتوريهاي سيستم را دارد. در ادامه به شرح اين اطلاعات مي­پردازيم:
نوع پرونده: در linux انواع مختلفي از پرونده وجود دارد. به هر نوع يک حرف کوچک انگليسي متناظر اختصاص داده شده است .کاربرد اين حروف را بعدا در توضيحات دستور is خواهند ديد. انواع مختلف پرونده به همراه متناظرشان در شکل1-3 فهرست شده است :
  حرف متناظر
نوع پرونده
-
Ordinary file
D
directory
P
fifo
C
Character device
B
Block device
L
Link to another file
شکل 1-3:انواع پرونده هاي موجود در linux
نوع اول اغلب شامل پرونده­هاي متن و پرونده­هاي داده­اي مي­شود. مثلاً پرونده­هاي برنامه­هاي زبان c از اين نوعند.
نوع دوم نيز که براي کاربران dos و windows  نوع پرونده شناخته شده­اي است. براي دسته­بندي مجموعه­هاي پرونده استفاده مي­شود.
FIFO نوعي پرونده است که براي برقراري ارتباط بين فرايندها استفاده مي­شود. يکي از راههاي تبادل اطلاعات بين فرايندها در linux  استفاده از FIFO است. ويژگي اين کانال ارتباطي اين است که پس از قطع ارتباط بين فرايندها از بين نمي­رود و پايدار باقي مي­ماند.
قبل از توضيح دادن نوع هاي cوb لازم است مطالبي رايج به نحوه استفاده linux از سخت افزار بدانيد:
سيستم عامل linux با هر سخت­افزاري به يک پرونده برخورد مي­کند. مثلاً ارسال يک بلوک داده به چاپگر معادل نوشتن آن بلوک داده در پرونده متناظر با چاپگر است. به اين پرونده، پرونده دستگاه (device file) گفته مي­شود. عمليات ورودي و خروجي در سخت افزارهاي مختلف به دو صورت انجام مي­شود:
ارسال و دريافت بايت به بايت داده­ ها.
ارسال و دريافت بلوکي داده­ها (در يک انتقال بايت منتقل مي شود.)
متناظر با اين تقسيم­بندي پرونده­هاي دستگاه نيز به دو دسته تقسيم مي­شوند:
Character device: مانند درگاه سري (serial port).
Block device: مانند ديسک سخت .
پرونده­هاي نوع اول را با حرف c و نوع دوم را با b نمايش مي­دهند. بعداً درباره اين پرونده ها مطالب بيشتري خواهيم دانست.
مالک پرونده: مالک پرونده کسي است که پرونده را ايجاد مي­کند. مالک پرونده مي­تواند آن را به مالکيت کاربران ديگر درآورد. مدير سيستم و کاربران ايجاد­کننده نمونه­هايي از مالکان پرونده­اند.
گروه پرونده: در سيستم­عامل linux کاربران به گروههايي تقسيم مي­شوند. براي يک پرونده علاوه بر آن شماره گروهي از کاربران که مي­توانند به آن پرونده دسترسي داشته باشند نگهداري مي­شوند.
اجازه­هاي دسترسي ( Access permissions): نحوه دسترسي افراد به پرونده­ها را مشخص مي­کند. سه دسته از افرادي که مي­توانند به پرونده دسترسي داشته باشند عبارتند از:
·        مالک پرونده
·        افراد درون گروه مربوط به آن پرونده
·        بقيه کاربران
براي هر کدام از افراد فوق سه نوع اجازه دسترسي مطرح مي شود:
·        خواندن(read)
·        نوشتن(write)
·        اجرا کردن(execute)
بنابر اين همراه اطلاعات هر پرونده 9 اجازه دسترسي نگهداري مي­شود . صاحب پرونده و همچنين مدير سيستم مي­توانند اين اجازه­ها را تغيير دهند. اگر کاربري اجازه نوشتن در يک شاخه را نداشته باشد آن کاربر نمي­تواند به پرونده هاي درون آن دسترسي داشته باشد. براي ديدن اجازه­هاي منتسب به يک پرونده دستور Is-I را بکار ببريد.
تاريخ: تاريخ ايجاد آخرين تغيير و آخرين دسيرسي به پرونده نيز در مشخصات آن نگهداري مي­شود .
اندازه: تمام انواع پرونده­ها بجز پرونده­هاي دستگاهي داراي اندازه بر حسب بايت هستند. پرونده­هاي دستگاهي نيز چون واقعاً اطلاعاتي درون خود ندارند اندازه­شان صفر است. براي اين نوع پرونده­ها به جاي اندازه دو عدد صحيح بزرگتر از صفر ذخيره مي­شود که در قسمت هسته (KERNEL) به آنها خواهيم پرداخت.
نام پرونده: در نگارش استاندارد unix حداکثر طول نام پرونده 14 کاراکتر است. اما بسته به نوع سيستم پرونده اين قابليت وجود دارد که تا 256 کاراکتر براي نام پرونده ذخيره شود. در linux نام پرونده مي­تواند 256 کاراکتر داشته باشد و تنها نويسه غير مجاز در نام پرونده / است .اين کاراکتر جدا کننده نام شاخه در مسير دهي به نام يک است: usr/XII/oin/xinit/

5-2-4 نحوه تغيير اجازه هاي دسترسي
با استفاده از دستور  chmod(change-mod) مي­توان اجازه دسترسي مربوط به فايل يا دايرکتوري را تغيير داد. اين دستور به صورت زير به کار مي­رود:
نام فايل يا داير کتوريchmod ugo+r+w+x    
در دستور بالاu (user) يعني شخص ايجادکننده اين فايل يا دايرکتوري است. G (group) نشانه گروه وابسته به ايجاد کننده فايل و o (other) به معناي کاربران ديگر به غير از ايجادکننده و گروه مربوط به اوست. همچنين r+(read) به معني ايجاد اجازه خواندن براي فايل يا دايرکتوري مذکور w(write) به معني ايجاد اجازه نوشتن وx(execute) به معني ايجاد اجازه اجرا براي فايل مذکور است، بنابراين به طور مثال اجراي دستور
Chmod ugo+r+w+x test1.exe
موجب مي­شود که فايل test1.exe توسط هرکسي که login کرده باشد(چه ايجاد کننده اين فايل چه افراد مربوط به گروه او و چه ساير کاربران) قابل خواندن، نوشته شدن و اجرا باشد.
همچنين قابل توجه است که در دستور بالا لازم نيست که ugo و+r+w+x همگي را با هم به کار ببريم. همچنين در صورت به کاربردن r-w-x به معناي سلب اجازه خواندن نوشتن و اجراي فايل يا داير کتوري مذکور است. مثلاً اجراي دستور زير موجب مي­شود که ساير افراد به غير از ايجاد کننده او اجازه خواندن و اجراي فايل test1.exe را که در شاخه جاري است داشته باشند ولي اجازه نوشتن و تغيير درآن را نداشته باشند.
Chmod o-w+r+x test1.exe
5-2-5 فرايند (process)
5-2-5-1 تعاريف
دانستيم که linux يک سيستم­عامل چند وظيفه­اي است يعني همزمان چند برنامه را مي­توان روي يک پردازنده اجرا کند که متناظر با هر برنامه­اي که در سيستم اجرا مي­شود سيستم عامل يک فرايند ايجاد مي­کند. در سيستم عامل linux براي هر فرايند اطلاعات زيادي نگهداري شده که در ادامه برخي از آنها شرح داده مي­شوند :
PID: هر فرايندي در سيستم يک شماره (Process ID) دارد که از اين پس با نام pid به آن اشاره خواهيم کرد. سه فرايند ويژه در سيستم عامل linux تعريف شده­اند و هنگام شروع به کار سيستم ايجاد مي­شوند و هنگام پايان کار سيستم از بين مي­روند. اين فرايند شماره­هاي ثابت دارند و عبارتند از coordinator با شماره صفر init با شماره يک وswapper با شماره دو .
PPID:هر فرايند مي­تواند فرايند­هاي ديگري را ايجاد کند. اين فرايند پدر فرايندهاي جديد خواهد بود. هر يک از فرايندهاي فرزند شماره فرايند پدر خود (parent process ID) را به همراه دارند. تمام فرايندها در سيستم يک پدر دارند و پدر نهايي فرايندها init است.
5-2-5-2 اجراي فرايندها در پس زمينه (background)
با افزودن علامت & به آخر هر فرمان يا برنامه مي­توان آن را در پس­زمينه اجرا کرد. در اين حالت linux علاوه بر اجراي برنامه ذکر شده با دادن اعلان خط فرمان آمادگي خود را جهت گرفتن فرمان يا برنامه­اي ديگر اعلام مي­کند (بدون اينکه اجراي برنامه قبلي پايان يافته باشد). بدين ترتيب دو يا چند فرمان را مي­توان با هم اجرا کرد.

5-2-5-3 هسته linux
هسته linux وظايف مديريت فرايند­ها مديريت حافظه مديريت پرونده و ارتباط با سخت افزار را بر عهده دارد هسته سيستم عامل کاملاً وابسته به سخت افزار است و باعث استقلال برنامه­هاي کاربردي از سخت افزار مي­شود. بنابر اين برنامه­نويسي براي اين قسمت با برنامه نويسي linux کاملاً تفاوت دارد و نياز به داشتن آگاهي از سخت­افزار و نيز نحوه پياده­سازي هسته دارد. در linux يک فرايند مي­تواند با استفاده از فراخوانهاي سيستم (system call) از امکانات هسته استفاده کند. مثلاً يک فرايند براي باز کردن يک پرونده از فراخوان سيستم open استفاده مي­کند.

5-2-5-4 پوسته linux
در linux معمولاً برنامه­اي از نوع پوسته واسط ارتباطي کاربر با سيستم­عامل مي­شود . اين برنامه فرمان کاربر را دريافت مي­کند و با استفاده از سرويس­هاي قسمتهاي ديگر آن را اجرا مي­کند. مثلاً وقتي کاربر دستور ls را براي ديدن ليست پرونده­ها صادر مي­کند پوسته ابتدا با استفاده از سرويسهاي سيستم پرونده، پرونده اجرايي ls را در شاخه usr/bin/  مي­يابد. سپس با استفاده از يک فراخوان سيستم فرايند جديد ايجاد کرده در آن usr/bin/ls را اجرا مي­کند. تفسير و اجراي فرمانهايي که در پاي اعلان سيستم وارد مي­گردد به عهده پوسته است. با تعويض پوسته قالب فرمانهايتان نيز ممکن است تغيير کند که براي فهميدن مطلب بايد به راهنماي پوسته آن سيستم مراجعه کنيد. پوسته­اي که در آزمايشگاه از آن استفاده مي­شود bash نام دارد.
همچنين پوسته يک زبان برنامه­نويسي تفسيري(مشابه پرونده هاي دسته اي (Batch files) در DOS) در اختيار کاربر قرار مي­دهد.
5-2-6 برنامه نويسي
در سيستم­عامل linux مفاهيم متداول در سيستم­عامل به سادگي و زيبايي پياده­سازي شده است. اما در ابتدا ممکن است استفاده از آنها براي برنامه­نويسان عادي اندکي نامانوس باشد. برنامه­نويسي در linux را مي­توان به دو دسته کلي زير تقسيم کرد:
برنامه نوسي کاربردي (application programming)
برنامه نويسي هسته (kernrl programming)
نوع اول برنامه­نويسي براي ايجاد برنامه­هاي عادي بکار مي­رود. مشخصه اصلي چنين برنامه­هايي اين است که مطابق معماري linux کاملاً مستقل از سخت­افزار هستند. هسته به عنوان يک پل ارتباطي بين سخت­افزار و برنامه­ها اين استقلال را تأمين مي­کند. نوع دوم برنامه­نويسي براي افزايش قابليتها سيستم­عامل استفاده مي­شود. مثلاً اينکه سيستم عامل بتواند از سخت­افزار جديدي حمايت کند بايد برنامه­هايي از اين دست را به آن افزود.
در برنامه­نويسي براي linux زبان c بيشترين کاربرد دارد و تقريباً تمام توابعي که در برنامه­نويسي استفاده مي­شود به زبان c نوشته شده­اند براي نمونه تمام فراخوانهاي سيستم به صورت توابع زبان c ايجاد شده­اند.
به همراه linux کتابخانه­هاي جانبي زبان c نيز وجود دارد که در مقايسه با کتابخانه­هاي معمولي امکانات بيشتري در اختيار برنامه­نويس قرار مي دهند و برنامه نويس مي­تواند در مواقعي که استفاده از فراخوانهاي سيستم مشکل مي­شود از اين کتابخانه­ها استفاده کند.
5-2-6-1 gcc (مترجم زبان c)
پس از آنکه برنامه خود را توسط يک ويرايشگر ايجاد کرديد بايد آن را توسط برنامه gcc ترجمه کنيد. قالب کلي اين فرمان به صورت زير است:
$gcc source_filename_o executable_filename
به عنوان مثال اگر بخواهيم برنامه myfork.c را ترجمه کنيم و نام پرونده قابل اجراي آن myfokl باشد سطر زير را وارد خواهيم کرد:
$gcc myfork.c _o myfork1
5-2-6-2 اشکالزدايي با gdb
براي اشکالزدايي برنامه­هايتان در linux مي­توانيد از اشکالزداي gdb استفاده کنيد. براي اين کار ابتدا برنامه خود را با گزينه g(مربوطgcc) ترجمه کنيد. سپس در اعلان linux فرمان gdb را به همراه نام پرونده قابل اجراي برنامه وارد کنيد. با اين کار وارد محيط gdb شده به کمک فرمانهاي اين محيط مي­توانيد به اشکالزدايي برنامه خود بپردازيد.
خلاصه از اين فرمان­ها با توضيحات مربوط در شکل 2-4 آمده است.

 توضيحات
شکل کلي فرمان
قرار دادن نقطه شکست(شرطي يا غير شرطي)در خط مورد نظر
Break<line#>
اجراي برنامه
run
اجراي يک سطر از برنامه
step
اجراي يک تابع بدون اجراي سطر به سطر دستورات آن
next
نشان دادن قطعاتي از برنامه
list
اجراي برنامه تا رسيدن به خط مورد نظر
<#line>until
چاپ مقدار يک متغيير
Print<var-nane>
فراخواني تابع مورد نظر و نشان دادن خروجي آن
Print<function>
اجراي برنامه تا رسيدن به يک دستور بازگشت به سيستم عامل
finish
اجراي برنامه تا رسيدن به نقطه شکست بعدي
continue
حذف نقطه شکست از خط مورد نظر
Clear<line#>
حذف تمام نقاط شکست
delete
شکل 2-4: خلاصه اي ازفرمان هاي gdb

5-3 دستور کار:
1.      سعي کنيد که به شاخه­هاي /root و /home/user2 وارد شويد و محتويات آنها را مشاهده کنيد. هر دفعه با چه پيامي مواجه مي­شويد؟ همين کار را در مورد شاخه­هاي /bin و /lib انجام دهيد.
2.      در محيط وارد شده و با امتحان کردن دستورات و برنامه­هاي زير با کار هريک آشنا شويد:
--help   ,  help   ,   info,   man   , pwd   , mv,   rm   , mkdir   , cd   , cp   , ls,    who,    chmod   , grep tar   , mc   , mcedit   , wget   , make   , gcc
3.      تفاوت دستورهاي help و help و info و man را توضيح دهيد.
4.      فرمان ls داراي گزينه­هايي است که برخي از آنها عبارتند از : -a و l . از راهنماي سيستم عملکرد هرکدام از گزينه­هاي زير را بيابيد و آنها را آزمايش کنيد. سپس نتيجه هريک را در کاربرگ خود بياوريد.
5.      با فرمان mkdir يک شاخه جديد ايجاد کنيد. توسط پارامتر p اين فرمان سعي کنيد شاخه و زيرشاخه جديدي را همزمان ايجاد کنيد. دستور را در کاربرگ يادداشت نماييد.
6.        دستور who|grep john? چه عملي را انجام مي­دهد؟
7.      تفاوت دستور who|sort  و who>sort در چيست؟
8.      تفاوت make و make depend را توضيح دهيد.
9.      عملکرد تابع getpid را از صفحات راهنما به وسيله دستور man بيابيد. با استفاده از اين دستور در پرونده pid.c برنامه­اي بنويسيد که شماره PID خود را چاپ کند. اين برنامه را با استفاده از gcc ترجمه و به دفعات اجرا کنيد. چه نتيجه­اي مي­گيريد؟


No comments:

Post a Comment