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
را قبل از کسب مهارت کامل انجام ندهيد).
موقعي که سيستم را
روشن ميکنيد يا آن را دوباره راه مياندازيد، برنامه موجود در آدرس 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
است) ميدهد.
محيط يک ميانگير(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% استفاده نمود.
تذکر: تمام موارد
مربوط به Setup
بايد با حضور مربي آزمايشگاه انجام شود. در ضمن، اگر گزينهاي در Setup
سيستم شما وجود ندارد از آزمايش آن مورد صرفنظر کنيد.
براي ورود به برنامه Setup
در سيستم شما چه کار بايد کرد؟
برنامه Setup
سيستم شما توسط چه شرکتي نوشته شده است؟
مشخصات ديسک سخت را
يادداشت کنيد. آيا ميتوانيد اين مشخصات را تغيير دهيد؟ اگر ميتوانيد، چه گزينههايي
را خود برنامه Setup
پيشنهاد ميکند؟
مشخصات حافظه اصلي (RAM) سيستمتان را يادداشت
کنيد (نوع و حجم)؟
به چه روشي ميتوان ديسک سخت را به سيستم
معرفي کرد؟
با تغييراتي که در Setup
ميدهيد کاري کنيد که موقع راه اندازي سيستم، اول ديسک سخت براي وجود يا عدم وجود
سيستم عامل بررسي شود. تغييري را که در Setup بوجود آورده ايد، بنويسيد.
براي سيستم خود و
برنامه Setup
رمز عبور بگذاريد تا افراد ديگر نتوانند وارد برنامه Setup شوند، ولي با رمزعبور بتوانند وارد سيستم شوند. اگر چنين امکاني
در Setup
سيستم شما وجود ندارد، اين گام را انجام ندهيد. توجه: پس از انجام اين گام، حتماً
رمز عبور را از روي سيستم برداريد.
آيا بدون استفاده از
برنامه Setup،
امکان تغيير محتواي حافظه CMOS
وجود دارد؟
تذکر: پس از انجام
آزمايش، Setup
را به حالت اوليه آن برگردانيد.
برنامه زير را با
استفاده از 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 حافظه بدست آوريد.
هدف
آشنائي با عوامل تاثيرگذار
بر کارايي کامپيوترهاي شخصي
توانائي تنظيم کردن (Tune up) نرم افزاري و تا
حدودي سخت افزاري سيستمهاي کامپيوتري براي دستيابي به کارايي بيشتر
نقش کامپيوتر در زندگي
کنوني و کارهاي روزمره افراد برهمه کس واضح و آشکار است. از طرفي سرعت و سهولت کار
با کامپيوترهاي شخصي امري است که مطلوب همه کاربران است. مشکلات ناشي از افول
کارايي کامپيوترهاي شخصي امري است که به خوبي بايد وارسي شود و مدنظر باشد.
يک نارضايتي عمومي
کاربران چنين سيستمهايي اين است که پس از مدتي، سرعت کامپيوترشان کاهش يافته است
يا اينکه سرعت کامپيوترشان در مقايسه با کامپيوترهاي مشابه کم است. البته کاهش
کارايي کامپيوترها هميشه به سادگي قابل حل نيست و به عوامل متنوع و متعددي وابسته
است و درنتيجه نميتوان راهحلي عمومي براي آن ارايه داد، اما به نظر ميرسد
بسياري از اين مشکلات وابسته به عدم آشنايي کاربر از اصول تنظيم صحيح و نگهداري
مناسب کامپيوتر شخصي خود است. در اين مجال کوتاه سعي شده است راهکارهاي صحيحي را
براي بهبود سرعت و کارايي کامپيوترهاي شخصي، همراه با توضيح مطالب پيشنياز در
سيستمعامل ويندوز عرضه شود.
کارايي کامپيوتر شخصي شما به عوامل زيادي
وابسته است از جمله:
نوع و سرعت cpu
نوع، سرعت و اندازه
حافظههاي اصلي و نهان
نوع معماري گذرگاه I/O
نوع کارت VGA و کارت شبکه و سرعت Hard Disk
سيستم عامل
کارايي serverي که شبکه را بارگذاري ميکند، تأثيرات شبکه و
غيره
کاهش کارايي
کامپيوترهاي شخصي، گرچه اغلب اوقات دلايل فيزيکي دارد و بيدرنگ شخص را به فکر بهروزرساني
کامپيوتر فعلياش يا خريد سيستم جديد مياندازد، اما راهحل واقعي کاهش سرعت
کامپيوترهاي شخصي بهجاي بهروزرساني يا خريد کامپيوتر جديد نگهداري صحيح و تنظيم
آن، جهت بازيابي کارايي بهينهاش است. گرچه معيار يا ملاک معيني براي کارايي بهينه
– به علت وابستگي آن به
تغييرات منابع آزاد کامپيوتري در دسترس- وجود ندارد، اما قواعد موثقي که کامپيوتر
شخصي شما را نسبت به وضعيت مشخصي بهينه نگهميدارد موجود است. مطالب مربوط به اين
موضوع را ميتوان به سه دسته تقسيم نمود:
تنظيمات نرمافزاري
تنظيمات سختافزاري
تنظيمات شبکه
در اينجا به موارد اول
و دوم پرداخته مي شود.
بيش از هرچيز ابتدا
بهتر است بدانيد چه ميزان از منابع سيستمي کامپييوتر شما آزاد است و چه ميزان در
حال استفاده ميباشد. در يک بالا آمدن معمولي سيستم، نبايد ميانگين درصد
منابع آزاد کمتر از 80% باشد. در حالت ايدهآل 90% مناسب ميباشد. اگر منابع آزاد
سيستم کمتر از 80% باشد آنگاه سيستم مشکل دارد.
هر زمان يک پرونده يا
سند حذف ميشود، ويندوز آن را به Recycle Bin ميفرستد. اما آنرا از روي ديسک پاک نميکند. ويندوز اين کار را
به عنوان يک اقدام امنيتي از اين نظر که ممکن است شما يک پرونده مهم را به اشتباه
از سيستمتان حذف کنيد انجام ميدهد. همانطور که ميدانيد براي حذف يک پرونده يا
فايل به طور مستقيم از Shift+Del استفاده ميشود. حداکثر ظرفيت Recycle Bin،
که مقدار پيشفرض ان 1/0 اندازه Hard Disk
شما است، به طرز جالبي زياد است. ويندوز تنها زماني پيشنهاد خالي کردن Recycle Bin
را ميدهد که تنها به اندازه 10% پر شده باشد. بدين ترتيب اگر شما يک Hard
با ظرفيت 40GB داشته باشيد، ممکن است به ميزان 4GB چيز غير لازم که فضاي Hard Diskتان را گرفته باشد و سرعت آنرا پايين ميآورد داشته
باشيد.
خيلي از اوقات خالي
کردن Recycle Bin به سادگي فراموش ميشود.
بنابراين، اين ايده خوبي است که درصدي که در آن ويندوز به شما ميگويد که Recycle Bin را خالي کنيد کاهش
دهيد.
ويندوز زماني که نرم
افزار جديدي نصب ميشود يا برنامه کاربردي عمل 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 کنيد.
همه مرورگرها زمانيکه
شما از يک 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
بسازيد.
هدف
_ تشريح چند نخي
_توسعه يک برنامه
چندنخي تحت ويندوز
_ افزايش و کاهش تقدم
نخها
_همزمان کردن نخ
ها(هماهنگ سازي نخها)
توانايي يک سيستم عامل
در اجراي چند برنامه به طور موازي چند وظيفه اي نام دارد درواقع سيستم عامل از
کلاک سخت افزاري براي اختصاص برهه هاي زماني به فرايندهايي که به
طور همزمان اجرا مي شوند استفاده مي کند اگراين برهههاي زماني به حد کافي کوچک
باشند، و تعداد کارهايي که ميخواهيم همزمان انجام شوند، زياد نباشد به نظر ميرسد
که کارها به طور همزمان اجرا ميشوند.
چندوظيفهاي چيز تازهاي
نيست. در Mainframeها چندوظيفهاي وجود
دارد. Mainframeها اين توانايي را
دارند که صدها ترمينال به آنها متصل شوند و کاربر هر ترمينال احساس ميکند که
ماشين منحصراً در اختيار او است. به علاوه، سيستمعامل Mainframeها اغلب به کاربران اين امکان را ميدهد که کارهايي را
به زمينه بفرستند. اين کارها زماني انجام ميشوند که کاربر ميتواند روي چيزهاي
ديگر کار کند.
مدت زيادي طول کشيده
است تا چندوظيفهايPCها به مرحله عمل
درآيد. ولي به نظر ميرسد اکنون وارد عصري شدهايم که چندوظيفهاي کامپيوترهاي
شخصي محقق شده است. بعداً خواهيم گفت که windows 16 بيتي تا اندازهاي از چندوظيفهاي پشتيباني ميکرد. و نسخ
32بيتي windows
اکنون از چندوظيفهاي حقيقي و نيز از چندنخي پشتيباني ميکند.
چندنخي قابليتي است که
به يک برنامه اجازه ميدهد درون خودش، چندوظيفهاي شود. برنامه ميتواند به چند نخ
اجراي جداگانه که به طور همزمان اجرا ميشوند، شکسته شود. در ابتدا اين امر چندان
مهم جلوه نميکند ولي اين برنامهها ميتوانند از چندنخي براي اجراي کارهاي طولاني
در زمينه استفاده کنند. بدون آنکه کاربر مجبور باشد مدت زيادي کار با ماشين را رها
کند.
در اولين روز تولد PCها، برخي مردم از چندوظيفهاي در آينده حمايت ميکردند.
ولي بسياري با خود فکرکردند چندوظيفهاي روي يک کامپيوتر شخصي تک کاربره به جند
درد ميخورد؟ به هرحال چندوظيفهاي چيزي بود مطلوب کابران بدون شناخت حقيقي آن.
پردازنده 8088 شرکت Intel
به خودي خد براي چندوظيفهاي ساخته نشده بود. بخشي از مشکلات چندوظيفهاي در DOS به مديريت حافظه مربوط ميشد.
زماني که برنامهها شروع يا ختم ميشوند، يک سيستمعامل چندوظيفهاي اغلب سعي در
جابجايي بلوکهاي حافظه براي پيوسته نگهداشتن فضاهاي خالي ان ميمند. اين کار روي
8088 امکانپذير نبود.
DOS
نيز به تنهايي کمک زيادي نکرد. اين سيستمعامل طوري طراحي شده بود که کوچک باشد.
در فضايي جدا از برنامه-ها بماند و امکانات کمي براي بارکردن برنامهها و دستيابي
به سيستم فايل داشت.
با اين وجود، برنامهنويسان
خلاق در اولين روزهاي پيدايش DOS،
راهي براي غلبه بر آن مشکلات يافتند. برنامههاي مقيم پس از اجرا برخي از اين
برنامهها نظير Spoolerهاي چاپگر، براي انجام
کارهاي زمينهاي(backgroundwork) به وقفه زمان ميچسبند.
بعضي ديگر نظير برنامههاي کمکي شناور(pop-up) نظير SideKick
ميتوانستند با معلق (Suspend) کردن برنامهها موقع
اجراي خودشان، نوعي Task Switching
انجام دهند.
تعدادي از فروشندگان
نرمافزار تلاش کرند پوسته (shell)ي تهيه کنند که امکان Task Switching
يا چندوظيفهاي را فراهم کند. ولي تنها يکي از آنها به بازار نفوذ کرد: Windows.
هنگامي که ماکروسافت
در سال 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() را در کدش بگنجاند.
تا وقتي که هيچ پيامي براي اين برنامه يا برنامه-هاي ديگر وجود نداشته باشد، انجام
کار طولاني ميتواند ادامه پيدا يابد.
در محيطهاي چندنخي،
برنامهها ميتوانند به تکههايي (که نخ اجرا نام دارند) شکسته شوند که همزمان
اجرا شوند.
در پيادهسازي يک نخ
با يک تابع نشان داده ميشود که ممکن است توابع ديگري را فراخواني کند. اجراي يک
برنامه با نخ اصلي (اوليهاش) شروع ميشود که در برنامههاي سنتي C،main و در ويندوز،WinMain
نام دارد. در حين اجرا، برنامه ميتواند با مشخص کردن نام يک تابع در يک فراخواني
سيستم (System call) ، نخ جديدي ايجاد
کند. سيستمعامل به همان طريقي که بين فرايندها رفتوآمد ميکند، به طور نوبهاي
بين نخها رفتوآمد ميکند.
نخ اصلي همه پنجرههايي
را که سيستم نياز دارد ايجاد ميکند. بقيه نخها هيچ تراکنشي با کاربر انجام نميدهند
مگر از طريق ارتباط با نخ هاي اصلي. به عبارت ديگر، نخ اصلي وروديها ي کاربرد و
ديگر پيامها را کنترل ميکند و احتمالاً نخهاي ديگري ايجاد ميکند اين نخهاي
اضافي، کارهاي غيروابسته به کاربر(مانند کارهاي زمينه اي) انجام ميدهند در واقع
نخ اصلي به مثابه يک مدير است که کارهاي بزرگ را که در ارتباط بادنياي بيرون
پيش مي آيند را بين کارمندانش تقسيم ميکند، کارمندان مستقيماً کاري به دست نميگيرند
آنها از مديرشان کاري تحويل ميگيرند و به مدير حاصل را تحويل مي دهند ومنتظر کاري
ديگر مي مانند. نخهاي درون يک برنامه خاص، همگي بخشي از همان فرايند هستند
بنابراين آنها منابع سيستم نظير حافظه و فايلهاي باز را به اشتراک ميگذارند. چون
نخهاي درون يک فرايند، حافظه را به اشتراک ميگذارند، متغيرهاي ايستا را نيز به
اشتراک ميگذارند. اما هر نخ پشته و در نتيجه متغيرهاي پوياي خود را داراست. هر نخ
علاوه بر همه اينها، وضعيت پردازنده و کمک پردازنده مربوط به خود را داراست که در
حين رفتوآمد بين نخها، آنها را ذخيره و بازيابي ميکند.
طراحي، کد کردن و بخصوص
رفع اشکال يک برنامه کاربردي چندنخي پيچيده، يکي از مشکلترين کارهايي است که يک
برنامه ويندوز ممکن است به آن برخورد کند. از آنجا که يک سيستمعامل چندوظيفهاي
نوبهاي ميتواند براي انتقال کنترل به نخهاي ديگر، در هر نقطه يک نخ به آن وقفه
دهد، هر تراکنش نامطلوبي بين دو نخ، فقط در مواقع خاصي اتفاق ميافتد.
يک اشکال کوچک(bug) معمول در يک برنامه
چندنخي race condition
نام دارد. اين مشکل وقتي اتفاق ميافتد که برنامهنويس فرض ميکند نخي کاري را به
پايان ميرساند (مثلاً دادهاي را آماده ميکند) قبل از اينکه کنترل به نخي که به
اين دادهها احتياج دارد منتقل شود. براي کمک به هدايت نخها به صورت کارا، سيستمعامل
به چند فرم سنکرون کردن نياز دارد. يکي از آنها سمافور است که به برنامهساز اجازه
ميدهد اجراي يک نخ را در يک نقطه از کد آن بلوکه کند تا اينکه نخ ديگر اجازه دهد
که اجراي آن نخ ميتواند ادامه يابد. بخشهاي بحراني مشابه سمافورها هستند. بخشهاي
بحراني قسمتهاي از کد هستند که نميتوانند وقفه داده شوند.
ولي سمافورها خود
مقدمه ايجاد bug
است که بنبست (deadlock) نام دارد. اين مشکل
زماني بروز ميکند که دو نخ اجراي يکديگر را بلوکه کنند و تنها زماني از حالت
بلوکه درآيند که ادامه يابند.
خوشبختانه برنامههاي
32 بيتي به بعضي از مشکلات مربوط به نخهاي برنامههاي 16بيتي ايمناند. مثلاً فرض
کنيد نخي حکم (statement) روبرو را اجرا کند:
lCount++;
که lCount
يک متغير سراسري 32 بيتي است توسط نخ ديگري نيز مورد استفاده قرار ميگيرد. در يک
برنامه 16بيتي، اين تک حکم، به دو دستور زبان ماشين ترجمه ميشوداولي 16بيت کمارزش
اين متغير را يکي افزايش ميدهد و دومي رقم نقلي حاصل از جمع قبل را با 16 بيت
پرارزش آن جمع ميکند. فرض کنيد سيستمعامل بين اين دو دستور زبان ماشين به اين نخ
وقفه دهد. اگر مقدار lCount
قبل از اجراي اولين دستور زبان ماشين 0X0000FFFF
باشد. در زماني که نخ دچار وقفه ميشود، lCount مقدار 0 را داراست و اين مقداري است که نخ ديگر ميبيند.
تنها زماني که اجراي نخ اول ادامه پيدا کند، lCount به مقدار حقيقي جمعش با 1 يعني 0X00010000 خواهد رسيد.
اين يکي از bugهايي است که خيلي به ندرت اتفاق ميافتد و ممکن است هرگز
کشف نشود. در برنامههاي 16بيتي، يک راه درست براي حل اين مشکل، قرار دادن اين حکم
درون يک بخش بحراني است. ولي در برنامههاي 32بيتي اين حکم درست است زيرا آن به يک
دستورالعمل زبان ماشين ترجمه خواهد شد.
در ويندوز 32بيتي اگر
يک برنامه زمان زيادي را صرف پردازش يک پيام کند، نشانگر موس روي ان برنامه، به
شکل ساعت شني درميآيد ولي هنگامي که روي برنامههاي ديگر ميرويم به شکل عادي
بازميگردد. تنها با يک کليک ميتوان برنامههاي ديگر را به پيشنما (foreground) آورد.
اما هنوز هم به کاربر
اجازه کار با برنامهاي که مشغول انجام يک کار وقتگير است، داده نميشود. زيرا
اين کار وقتگير مانع از آن ميشود که برنامه بتواند پيام دريافت کند. اين موضوع
نامطلوب است. گوش يک برنامه بايد هميشه براي پيام باز باشد و براي اين کار نياز به
نخ ديگري داريم. در ويندوز 32بيتي هر نخ يک صف پيام دارد. همچنين تابعي وجود دارد
که به يک نخ اجازه ميدهد نخ ديگري در آن فرايند را بکشد و آخرين خبر اينکه ويندوز
32بيتي چيزي به نام حافظه محلي نخ (Thread Local Storage or TLS) تدارک ديده است. براي
فهميدن آن، يادآوري ميکنيم که متغيرهاي ايستا(سراسري يا محلي) ميان نخهاي آن
فرايند به اشتراک گذاشته ميشوند زيرا آنها در فضاي حافظه داده فرايند قرار
دارند.(و نخها حافظه را به اشتراک ميگذارند). هر نخ، متغيرهاي محلي مربوط به خود
را داراست. زيرا آنها روي پشته قرار دارندو هر نخ براي خود يک پشته دارد. مواقعي
پيش ميآيد که دو يا چند نخ از يک تابع يکسان استفاده کنند و مناسب است که
متغيرهاي ايستا براي اين نخهايکتا (Unique) باشند. اينجاست که TLS به درد ميخورد. متغيرهايي که در TLS گرفته ميشوند مانند متغيرهاي ايستا از ميان نميروند ولي به عکس
آنها در دسترس همه قرار ندارند بلکه به نخي که آنها را ايجاد کرده است تعلق دارد.
بايد توجه داشت سختافزار مستقيماً از اين نوع حافظه پشتيباني نميکند بلکه سيستمعامل
است که اين ساختمانداده را تهيه کرده است و توابعي را براي کار با اين ساختار در
اختيار کاربر قرار داده است.
چندوظيفهاي به کاربر
اين امکان را ميدهد که چند برنامه باز را با هم اجرا کند. مثلا کاربري ميتواند
با استفاده از يک برنامه، فايلي را ويرايش کند درحالي برنامه ديگر مشغول محاسبه يک
صفحه گسترده است.
چندوظيفهاي به
توليدکننده (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