تبليغاتX
ComputerStop
فايل DLL چيست؟



در كامپيوتر، DLL که مخفف dynamic link library است مجموعه اي از برنامه هاي کوچک است، که هر کدام مي تواند توسط يک برنامه بزرگتر که در کامپيوتر در حال اجرا است احضار شود. برنامه کوچکي که به برنامه بزرگتر اجازه برقراري ارتباط با يک وسيله ويژه مثل چاپگر (پرينتر) و يا اسکنر را ميدهد همواره به عنوان يک برنامه DLL بسته بندي مي شود( معمولا به " فايل DLL " اشاره مي شود). مزيت فايل هاي DLL اين است که، از آنجا که آنها در حافظه كامپيوتر (RAM) با هم به همراه برنامه اصلي بارگذاري نــمي شوند، فضا در RAM صرفه جويي مي شود. وقتي که يک فايل DLL نياز است، بعد بارگذاري و اجرا مي شود. به طور مثال تا مادامي که يک کاربر microsoft word ( يک برنامه پردازش کلمه که توسط شرکت microsoft به وجود امده است ) دارد يک سند (Document) را ويرايش مي کند، فايل DLL چاپگر نياز نيست تا در RAM بارگذاري شود. اگر کاربر تصميم به پرينت گرفتن آن سند بگيرد، سپس برنامه کاربردي Word باعث مي شود تا فايل DLL چاپگر بارگذاري و اجرا شود.

به يک فايل DLL اغلب پسوند نام فايل ".dll" داده مي شود. فايل هاي DLL به صورت پويايي به برنامه اي که از آنها در طول زمان اجراي برنامه استفاده مي کند متصل هستند تا اينکه با برنامه اصلي گردآوري شوند. مجموعه چنين فايل هاي (يا DLL ) تقريبا قابل مقايسه با کتابخانه روال هايي هستند (library routines) که با زبان هاي برنامه ريزي از قبيل ++C و C فراهم مي شوند.

مساعدت توسط Terrence McIntyre تهيه شده بود.
آخرين بروزرساني اين مطلب : سيزدهم اکتبر سال 1999

 * * * * * * * * * * * * * * * * * *
  • In computers, a dynamic link library (DLL) is a collection of small programs, any of which can be called when needed by a larger program that is running in the computer. The small program that lets the larger program communicate with a specific device such as a printer or scanner is often packaged as a DLL program (usually referred to as a DLL file).
  • The advantage of DLL files is that, because they don't get loaded into random access memory (RAM) together with the main program, space is saved in RAM. When and if a DLL file is needed, then it is loaded and run. For example, as long as a user of Microsoft Word is editing a document, the printer DLL file does not need to be loaded into RAM. If the user decides to print the document, then the Word application causes the printer DLL file to be loaded and run.
  • A DLL file is often given a ".dll" file name suffix. DLL files are dynamically linked with the program that uses them during program execution rather than being compiled with the main program. The set of such files (or the DLL) is somewhat comparable to the library routines provided with programming languages such as C and C++.
+ نوشته شده در  دوشنبه هجدهم اردیبهشت 1391ساعت 12:1  توسط فرزاد  | 

Firefox1 شرکت موزیلا سیاست حریم خصوصی گوگل را خنثی می کند

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


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

سیاست جدید گوگل می تواند دریایی از اطلاعات مرتبط با جستجوهای کاربران را به تجارت ۲۸ میلیون دلاری تبلیغات گوگل بیافزاید بدون توجه به این موضوع که ذخیره سازی چنین حجمی از اطلاعات خصوصی می تواند در بسیاری از کشورها غیرقانونی به حساب بیاید.

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

تجارت گوگل بر مبنای تبلیغات ساخته شده است و این شرکت در سال ۲۰۱۰ توانست از این راه ۲۸ میلیارد دلار درآمد داشته باشد. سیاست جدید حفظ حریم خصوصی گوگل به این شرکت اجازه می دهد اطلاعات گوشی های اندرویدی، وب سایت یوتیوب، سرویس جی میل، و موضوعات جستجو شده در مرورگر کروم را در راستای اهداف تبلیغاتی خود مورد استفاده قرار داده و در مسیر ایجاد تبلیغات شخصی سازی شده برای کاربران قدمی به جلو بردارد.

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

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

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

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

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

+ نوشته شده در  دوشنبه بیست و هشتم فروردین 1391ساعت 10:1  توسط فرزاد  | 

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



امروزه موتورهای جستجوی زیادی بر روی شبکه وب فعال هستند که هر یک الگوریتم جستجوی خاص خود را دارد و به نحوی به جستجوی سایتهای موردنظر شما می پردازند. اما یکی از پرکاربردترین و مفیدترین موتورهای جستجو گوگل نام دارد که این روزها جام پیروزی را از دیگر رقبا ربوده است و روز به روز بر تعداد کاربران خود می افزاید. بدون تردید شما هم حداقل برای یکبار گذرتان به http://www.google.com خورده است و صفحه ساده و در عین حال پرقدرت این جستجوگر را دیده اید. جستجوگری که با پشتیبانی از زبانهای متنوع دنیا کاربران زیادی را به خود جذب کرده است. و شاید همین پشتیبانی از زبان فارسی است که در میان ایرانیان نیز از اقبال خوبی برخوردار شده است. در این مقاله می کوشیم تا ضمن آشنایی با نحوه صحیح کار با این جستجوگر کارایی بهره مندی از آنرا نیز بالا ببریم.

برای جستجو نمودن یک موضوع در گوگل کافی است که چند کلمه توصیفی و اصلی موضوع را در نوار مربوطه تایپ نمائید و سپس کلید Enter را فشار دهید و یا اینکه روی دکمة Search که در جلوی نوار جستجو تعبیه شده است کلیک نمائید، تا به لیستی از وب سایتهای مرتبط با موضوع دست یابید.

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


کلمات اصلی تر را بنویسید

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

همچنین دقت نمائید تا کلماتی را بکار برید که احتمال وجود توضیحات درباره آنها بیشتر باشد. مثلاً به جای نوشتن "گذراندن یک شب خوب در تهران" بهتر است تایپ کنید "هتلهای تهران".

از آوردن حروف اضافه خودداری کنید

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

حروف بزرگ و کوچک فرق نمی کنند

گوگل نسبت به بزرگی و کوچکی حروف حساس نمی باشد. در حقیقت همه حروفی را که به لاتین در نوار جستجو تایپ می نمائید به حروف کوچک تبدیل خواهند شد. برای مثال نتیجة جستجوی "george washington"، "George Washington" و "gEoRgE WaShInGtOn" یکسان خواهد بود.

جستجوهای طبقه بندی شده

با همه این توضیحات اگر مایلید که نتایج جستجوهای شما دقیق تر و علمی تر باشند بهتر است سری هم به directory.google.com بزنید. در این آدرس فهرستی از سایتهای اینترنتی با توجه به موضوعات آنها موجود می باشد. مثلاً اگر دنبال سایتی در مورد سیاره زحل می گردید، می توانید با رفتن به شاخه Science و زیر شاخه Astronomy به زیر شاخه Saturn دست یابید. همچنین اگر در مورد خودروی Saturn جستجو می کنید می توانید سایتهای مرتبط با آنرا در شاخه Automotive بیابید.

جستجوی پیشرفته

در جلوی نوار جستجوی گوگل گزینه ای با عنوان «جستجوی پیشرفته» یا «Advanced Search» وجود دارد. با کلیک کردن روی این گزینه وارد صفحه ای با همین نام خواهید شد. در این صفحه شما می توانید با اعمال تنظیمات و بکار بردن عملگرهای خاصی دقت جستجویتان را افزایش دهید.
همانگونه که از شکل بالا معلوم است، همه گزینه ها به فارسی می باشند و استفاده از آنها بسیار ساده است و نیازی به توضیح بیشتر ندارد، اما علاوه بر این تنظیمات، گوگل از یک سری عملگرها نیز برای محدود کردن جستجوها بهره می برد. شما بدون رجوع قسمت جستجوی پیشرفته و با دانستن این عملگرها می توانید عمل جستجو را هرچه سریعتر انجام دهید، در زیر به توضیح برخی از این عملگرها می پردازیم:

عملگر +

همانگونه که قبلاً گفتیم گوگل از یک سری کلمات معمولی بصورت خودکار چشم پوشی می کند، ولی در صورتی که شما ضروری می دانید که اینگونه کلمات حتماً مورد جستجو قرار گیرند، می توانید با قرار دادن یک علامت "+" در جلوی آنها مطمئن شوید که در نتایج جستجو حتماً وجود خواهند داشت. (دقت کنید که قبل از کاراکتر "+" یک فاصله (space) وجود داشته باشد ولی کلمه بعدی بدون فاصله، فوراً پس از آن بیاید).
راه دیگر مقید نمودن گوگل برای جستجوی کلمه ای خاص این است که کلمه مورد نظر را در کوتیشن (" ") قرار دهید. برای مثال اگر بخواهیم دنبال داستان جنگ ستارگان ۱ (Star Wars Episode I) را مورد جستجو قرار دهیم، گوگل کلمة I را مورد جستجو قرار نمی دهد مگر آنکه آنرا بصورت Star Wars Episode +I و یا "Star Wars Episode I" بنویسیم.

عملگر –

برخی اوقات ممکن است که شما دنبال کلمه ای بگردید که بیش از یک معنا دارد، برای مثال کلمه «bass» در ماهیگیری به معنای «ماهی خالدار» است و در موسیقی به معنای «صدای بم». برای حل اینگونه مشکلات می توانید از عملگر "-" استفاده کنید، تا گوگل به دنبال سایتهایی بگردد که کلمة بعد از این عملگر در آنها نباشند. (دقت کنید که قبل از کاراکتر "-" یک فاصله (space) وجود داشته باشد ولی کلمه بعدی بدون فاصله، فوراً پس از آن بیاید). مثلاً در مثال فوق می توانید بنویسید: bass –music.

عملگر ~

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

عملگر ""

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

عملگر «یا»

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

عملگر SITE

اگر می خواهید که عمل جستجو در سایت بخصوصی انجام گیرد، می توانید پس از وارد نمودن کلمه مورد نظر عملگر Site: را آورده و پس از آن آدرس سایت را بیاورید. برای مثال برای جستجوی «پذیرش» در سایت دانشگاه استانفورد می توانید بنویسید: admission site:www.stanford.edu

عملگر ..

برای اینکه جستجو را محدود به سایتهایی کنید که در آنها اعداد محدودة خاصی وجود داشته باشند، می توانید از این عملگر برای نشان دادن محدودة عددی مورد نظر بهره برید. مثلاً اگر به دنبال DVD Playerهای با قیمت ۲۵۰ تا ۳۵۰ دلار می گردید، بایستی اینگونه خواسته تان را بیان کنید: DVD player $۲۵۰..۳۵۰ (توجه داشته باشید که بین دو نقطة عملگر هیچ فاصله ای نباشد).

+ نوشته شده در  سه شنبه شانزدهم اسفند 1390ساعت 17:13  توسط فرزاد  | 

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

هوش مصنوعی به هوشی که یک ماشین از خود نشان می‌دهد و یا به دانشی در کامپیوتر که سعی در ایجاد آن دارد گفته می‌شود. بیشتر نوشته‌ها و مقاله‌های مربوط به هوش مصنوعی آن را «دانش شناخت و طراحی عامل‌های هوشمند. تعریف کرده‌اند. یک عامل هوشمند سیستمی است که با شناخت محیط اطراف خود، شانس موفقیت خود را بالا می‌برد. جان مکارتی که واژه هوش مصنوعی را در سال ۱۹۵۶ استفاده نمود، آن را «دانش و مهندسی ساخت ماشین‌های هوشمند» تعریف کرده‌است. تحقیقات و جستجوهایی انجام شده برای رسیدن به ساخت چنین ماشین‌هایی مرتبط با بسیاری از رشته‌های علمی دیگر است، مانند علوم رایانه، روان‌شناسی، فلسفه، عصب شناسی، علوم ادراکی، تئوری کنترل، احتمالات، بهینه سازی و منطق.

+ نوشته شده در  چهارشنبه پنجم بهمن 1390ساعت 13:47  توسط فرزاد  | 

 

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

برای مسائلی به اين شکل راه حل های استانداردی وجود داره که اگه بتونيم اجزای مساله رو به خوبی مدل کنيم به راحتی می تونيم از اونا استفاده کنيم.

اجزای اصلی يک مدل مارکوف عبارتند از:

۱- من کجام؟ (مجموعه حالت ها)

وضعيتی که مساله شما در اون قرار داره حالت اون مساله گفته می شه. در واقع اگه ما تمامی حالت هايی که ممکنه مساله به اون بره رو در نظر بگيريم٬ ميشه مجموعه حالات. مثال: در مساله پيدا کردن يک خونه هدف در يک جدول٬ هر خونه جدول يک حالته

۲- چيکار می تونم بکنم؟ (مجموعه عمل ها)

تصميمی که می تونه گرفته بشه يک عمله. تمامی مجموعه تصميمات قابل اتخاذ مجموعه اعمال رو تشکيل می ده. مثال: در مساله قبلی اعمال رفتن به چپ٬ راست٬ بالا و پايين

۳- اين کارا منو به کجا می رسونه؟ (گذر)

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

۳- چی گيرم مياد؟ (ارزش افزوده فوری هر عمل)

 برای اينکه بتونيم بين اعمالمون ارزشی برای يکی و ترجيحی برای اون قايل بشيم بايد بتونيم ارزش افزوده ای براش تعيين کنيم. (پاداشی که از هر عمل می گيريم. مثال: برای مساله فوق اگه پاداش هر حرکت ۰.۱- و پاداش خروج از جدول ۰.۵- و پاداش رسيدن به هدف ۱+ گرفته بشه با روش Q-Learning جواب ميده.

*آدم بايد سياست داشته باشه (حل مساله مدل مارکوفی)

حل يک مساله مارکوف سياست حل اون ناميده می شه که برای هر حالت بهترين حالت بعدی رو تعيين ميکنه. در هر حال سياست بصورت يک تابع ارزش (value-function)  نشون داده می شه که در هر حالتی بهترين حالت بعدی رو ميشه از روش حساب کرد.

* عوضی نيای

بعضی از مسايل هست که يک گذر بسته به چندين حالت قبليه که ديگه اين جزء مارکوف حساب نميشه و بايد برين يه جای ديگه حلش کنين.

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

+ نوشته شده در  چهارشنبه بیست و یکم دی 1390ساعت 8:58  توسط فرزاد  | 

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

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

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

امروزه بسیاری از شبکه های کامپیوتری با استفاده از NAT یا Network Address Translation  آدرس های اینترنتی خود را افزایش داده و بدین روش کمبود خود را در داشتن آدرس های IP اختصاصی حل می کنند. NAT به روتر، فایروال و دیگر دستگاه ها این امکان را می دهد که یک آدرس IP جهانی را با سایر تجهیزات داخلی طوری به اشتراک بگذارد که هر کدام از دستگاه ها آدرس خصوصی مربوط به خود را داشته باشند. مسائل دیگری وجود دارند که نشان می دهد که عمر  IPV4.0(نسخه فعلی IP) رو به پایان است. برای مثال امروزه این توقع که ارتباط شما با اینترنت ضمن حرکت از ساختمانی به ساختمان دیگر، یا شهری به شهر دیگر و حتی کشوری به کشور دیگر پابرجا بماند خواسته ای بی جا به حساب نمی آید. در واقع تکنولوژی نسبتا جدیدی موسوم به IP Mobile برای تحقق بخشیدن به چنین خواسته هایی به وجود آمده است ولی این تکنولوژی با IPv4.0 به خوبی کار نمی کند و شامل نقص هایی است و همچنین قابل توجه است که این تکنولوژی بایستی توسط سیستمی پیاده سازی شود که دارای امنیت بالایی باشد ولی IPV4.0 از این مسئله تا حدودی فاصله دارد.


اما در رابطه با 0.IPv6 چه باید بدانیم


پروتکل جدید اینترنت که به نسل بعدی پروتکل اینترنت و یا IPNG که سرنام عبارت Internet Protocol Next Generation مشهور است، در سال 1994 به ستاد مهندسی اینترنت یا IETF  پیشنهاد شد و پیش نویسی از آن در سال 1998 به تصویب رسید. تکمیل این استاندارد و تعریف تمام بخش های آن نیز تا پاییز 2001 جزو دستور کار IETF بود. طی هفت سال گذشته  IPV6.0 در انواع شبکه ها در بیش از 40 کشور تحت آزمایش بوده است. در حال حاضر ژاپن آدرس های IPV6.0 را به مصرف کنندگان خود پیشنهاد می دهد. انتظار می رود که انتقال از IPV4.0 به IPV6.0 طی ده سال آینده  یا شاید بیشتر به انجام برسد.برترین ویژگی IPV6.0 افزایش فضای آدرسدهی آن از 32 بیت به 128 بیت است که مخزن آدرس هایIP را از 4 میلیارد به 35 تریلیون افزایش می دهد. و نکته جالب این جاست که با وجود چنین افزایشی، پردازش بسته هایIP پیچیده تر نخواهد شد; چرا که در IPV6.0 فرمت هدر آدرس ها ساده تر شده است. به علاوه در IPV6.0 قابلیت اولویت دهی بر اساس محتوا نیز پیش بینی شده که نهایتا موجب بهبود کارایی و افزایش سرعت تحویل محتوا خواهد شد.از آنجا که انتقال به 0.IPv6 نیازمند تغییرات در دستگاهها و درایورها و سیستم عامل ها است. لذا تردید در اجرای این استاندارد قابل قبول است. ولی طراحی 0.IPv6 به صورتی انجام شده است که انتقال به آن طی یک فرایند تدریجی صورت بگیرد. در واقع زمان مشخصی برای انتقال کامل به این استاندارد وجود ندارد و شبکه ها  می توانند سال ها ترکیبی از استانداردهای IPV4.0 و IPV6.0 را مورد استفاده قرار بدهند. حال بهتر است بگوییم که نسل بعدی پروتکل اینترنت چه مزیت هایی نسبت به این پروتکل فعلی اینترنت دارد که قابلیت قرار گرفتن و همچنین دردسر برای راه انداختن آن را دارا است. قابلیت های این پروتکل جدید در زیر آمده است که عبارتند از:
- پیکربندی خودکار(Auto Configuration)
- آی پی سیار(Mobile IP)
- امنیت(Security)
- کیفیت خدمات(Quality of Service)
- و...

+ نوشته شده در  سه شنبه یکم آذر 1390ساعت 8:8  توسط فرزاد  | 

IDE محبوب جاوا IntelliJ IDEA 10.5.1

در دنیای برنامه‌نویسی جاوا، چندین IDE معروف و محبوب وجود داردند. یکی از قویترین و در عین حال محبوب‌ترین IDE های جاوایی، IntelliJ IDEA محصول شرکت JetBrains است. این IDE برخلاف اغلب IDE های جاوایی رایگان و کد باز نیست. خرید هر نسخه آن حدود 500 دلار هزینه دارد، با این حال بسیاری از برنامه‌نویسان در شرکت‌های بزرگ حاضرند با هزینه شخصی خود این IDE را خریداری و با آن برنامه‌نویسی کنند! با این حال این IDE دارای نسخه‌های ارزیابی (evaluation) سی روزه است.

برای این که سرعت و توانایی و دقت برنامه‌نویسان افزایش یابد، از ابزارهایی به نام IDE که مخفف Integrated Development Environmnet و به معنی «محیط توسعه یکپارچه» است، استفاده می‌شود. IDE ها امکاناتی را در اختیار برنامه‌نویسان قرار می‌دهند که تصور این که بتوان بدون آن‌ها کاری را انجام داد خیلی سخت است. برای مثال برخی از قابلیت‌های IDE ها فهرست می‌کنیم:
مرتب کردن کدها: محیط‌های توسعه کدهای نوشته را مرتب کرده و باعث خوانایی بهتر کد برنامه می‌شوند.
تکمیل خودکار (Auto completion): با این ویژگی شما لازم نیست نام کامل متغیرها و توابع را حفظ کنید. کافی است شروع به نوشتن نام آن‌ها کنید، پس از آن برنامه محیط توسعه، نام کامل آنرا حدس زده و به شما برای انتخاب معرفی می‌کند.
خطازدایی (دیباگ یا Debug): شما می‌توانید برنامه تولید شده را به صورت آزمایشی اجرا کرده و مقادیر هر متغیر را در هر زمان از اجرای برنامه ببینید، یا اینکه فرآیند اجرای برنامه را به صورت کامل مدیریت کنید. همچنین چنانچه برنامه شما در حین اجرا به مشکلی برخورد، آنرا بررسی کرده و راهکار رفع آن را بدست آورید
+ نوشته شده در  دوشنبه دوم آبان 1390ساعت 11:48  توسط فرزاد  | 

در گذشته نه چندان دور داشتن ابزارهاي ذخيره سازي با ظرفيت بالا چيزي شبيه به داشتن يک بويينگ در شرايط کنوني بود، اما امروزه با پيشرفت علم، خريد هارد ديسک هاي يک ترابايتي به امري عادي تبديل شده است و کاربر با وجود اين فضا مي تواند حجم وسيعي از اطلاعات را ذخيره کند. اما آنچه امروزه به عنوان يک مشکل و شايد يک کابوس براي توليدکنندگان محتواي ديجيتالي( Digital Conect Creators) مطرح است، نگه داري و ذخيره سازي حجم بالاي اطلاعات و داده ها در صحت و سلامت است. شايد اين سؤال در ذهن شما هم به وجود آيد که واقعاً راه حل اين مشکل چيست. آيا تنها راه غلبه بر اين مشکل افزايش ظرفيت رسانه هاي ذخيره سازي است؟ واقعاً افزايش ظرفيت هارد ديسک ها، کارت هاي حافظه و ساير رسانه ها تا کجا ادامه مي يابد؟ آنچه به عنوان راه حل منطقي براي غلبه بر اين مشکل معرفي مي شود، نه افزايش ظرفيت ذخيره سازي بلکه انتخاب يک روش مناسب براي بايگاني و آرشيو کردن اطلاعات است که ما در اين مقاله سعي داريم آن را بيان کنيم تا شايد راه حلي بهتر و امن تر براي حفظ آرشيوهاي گران قيمت خود داشته باشيد. به عکاس ها پيشنهاد مي کنيم اين مطلب را بخوانند، شايد با خواندن اين مطلب ديگر نيازي نباشد تا بابت از دست دادن عکس هاي با ارزش خود متحمل استرس فراواني شوند!

ابزارهاي ذخيره سازي اطلاعات
 

به طور کلي، ابزارهاي ذخيره سازي و بايگاني اطلاعات را مي توانيم بر حسب تکنيک به کار رفته، به چهار گروه تقسيم کنيم:
1. روش ذخيره سازي شيميايي( فيلم، ميکروفيلم)؛
2. روش ذخيره سازي مغناطيسي( هارد ديسک، نوار مغناطيسي)؛
3. روش ذخيره سازي الکتريکي( فلش ديسک ها، کارت هاي حافظه)؛
4. روش ذخيره سازي نوري( ديسک هاي نوري فشرده).
روش شماره يک به دليل شرايط ويژه نگه داري فيلم ها و ميکروفيلم ها، امروزه کمتر مورد استفاده قرار مي گيرد و تنها در موارد خاصي از آن استفاده مي شود. به همين دليل براي ذخيره اطلاعات ضروري نمي توان چندان به اين روش اطمينان کرد.
از ميان ابزارهاي بايگاني مغناطيسي مي توانيم از هارد ديسک ها به عنوان موفق ترين نمونه نام ببريم که امروزه نيز در بيشتر موارد از آن استفاده مي شود. قيمت ارزان، راحتي استفاده و قابليت حمل و نقل قابل قبول( البته نه چندان خوب) از مزاياي هارد ديسک ها به شمار مي رود. اما نکته مهم ضريب اطمينان و ماندگاري اطلاعات در اين رسانه است. ميدان هاي مغناطيسي و ضربه، همچنين نوسانات الکتريکي مي توانند در لحظه اي بسيار کوتاه باعث از بين رفتن اطلاعات ذخيره شده شوند. امکان حذف اطلاعات و بازنويسي سهوي داده ها از ضريب اطمينان هارد ديسک ها مي کاهد. امروزه نوارهاي مغناطيسي نيز به دليل قيمت بالا و هزينه نگه داري زياد جاي خود را به روش هاي سريع تر و دقيق تر داده اند.

نگاهي به ساختار ذخيره سازي اطلاعات در ديسک هاي نوري

روش ذخيره سازي الکتريکي جديدترين روش ذخيره سازي اطلاعات است که حافظه هاي فلش( USB Flash) و کارت هاي حافظه MS، CF، SD، SDX و M2 در اين گروه قرار مي گيرند. اين روش ذخيره سازي به دليل قيمت مناسب، سهولت جا به جايي و استفاده آسان اين گروه از حافظه ها را به رقيبي جدي براي هارد ديسک ها تبديل کرده است، به طوري که هم اکنون بعضي از شرکت هاي توليد کننده نوت بوک به جاي هارد ديسک از انواع ذخيره سازهاي الکتريکي در محصولات خود استفاده مي کنند. آنچه که در مورد اين رسانه ها بايد در نظر داشت، اين است که اين ابزارها بيشتر به عنوان ذخيره ساز مورد استفاده قرار مي گيرند و براي آرشيو و بايگاني دراز مدت مناسب نيستند. اما در اين ميان ديسک هاي نوري که در انواع مختلفي مانند CD-R، DVD-R و BD-R ارائه مي شوند، مهم ترين و پرمصرف ترين ابزارهاي ذخيره سازي و بايگاني اطلاعات هستند که در ادامه به بررسي آن ها مي پردازيم.

ديسک هاي نوري
 

اولين ظهور ديسک هاي نوري به صورت ديسک هاي موسيقي به سال 1982 ميلادي باز مي گردد. در طي سال ها انواع مختلفي از ديسک هاي نوري مانند DVD و BD عرضه شدند که امکان ذخيره حجم بيشتر اطلاعات را به کاربر مي دهند. براساس آخرين آمار تا سال 2007 ميلادي بيش از دويست ميليارد ديسک نوري در دنيا به فروش رفته است که در اين ميان به ترتيب ديسک هاي نوري CD با ظرفيت 700 مگابايت، DVD با ظرفيت 4/48 ( DVD 5) و 8/15 (DVD 9) و BD با ظرفيت 25 گيگابايت و بالاتر قرار دارند.
نکته مهم در انتخاب ديسک هاي نوري به عنوان ابزار بايگاني و آرشيو، ماندگاري و دوام اطلاعات ذخيره شده است. اين ديسک ها در مقابل عوامل محيطي مانند رطوبت، حرارت و نور ماوراء بنفش آسيب پذير بوده و اطلاعات ذخيره شده روي آن ها در اثر مرور زمان با مشکل رو به رو مي شوند. اگر به ساختار يک ديسک نوري نگاهي بياندازيم، دليل اين آسيب پذيري را بيشتر درک خواهيد کرد( تصوير 1).
A: لايه ضبط اطلاعات؛
B: لايه انعکاس دهنده پرتو ليزر؛
C: لايه پلاستيکي براي محافظت از لايه انعکاسي؛
D: لايه چاپ مشخصات؛
E: پرتو ليزر.
در حقيقت، اشکال عدم دسترسي به اطلاعات به دو لايه حکاکي A و لايه انعکاسي B مربوط است. در ديسک هاي نوري معمولي به عنوان لايه ضبط اطلاعات از ماده شيميايي Cyanine ( از خانواده پلي کربنات ها) استفاده مي شود. اين لايه به مرور زمان و در اثر عوامل محيطي تغيير حالت داده و موجب مي شود حفره ها و برجستگي هاي ايجاد شده در سطح ديسک نوري تغيير شکل داده و پديده خطاي خواندن اطلاعات ( Read Error) به وجود آيد. در صورتي که تواتر خطاي خواندن را افزايش يابد، اطلاعات ديسک قابل استفاده نخواهد بود.

نگاهي به ساختار ذخيره سازي اطلاعات در ديسک هاي نوري

همچنين بر اثر اکسيداسيون لايه انعکاس دهنده، پرتو ليزر در مسير درست منعکس نشده و خطاي فساد ديسک نوري( Disk Rot) رخ داده و اطلاعات غير قابل دسترس خواهند بود. هرچه ميزان فشردگي اطلاعات بيشتر و در نتيجه ظرفيت ديسک بالاتر باشد، احتمال بروز خطاهاي فوق نيز بيشتر مي شود.
آزمايش هاي لابراتواري ميزان ماندگاري اطلاعات روي ديسک هاي نوري متعارف را يک بازه زماني سه الي پنج سال برآورد کرده اند. براي غلبه بر اين مشکل، فناوري جديدي ابداع شده که باعث ماندگاري اطلاعات به مدت بسيار طولاني مي شود. در اين فناوري که از آن به عنوان انقلابي در صنعت بايگاني نام برده مي شود از فلز طلاي خالص 24 عيار به عنوان لايه انعکاسي و پلي کربنات جديد Phthalocyanine در لايه ضبط اطلاعات استفاده شده است. در نهايت براي جلوگيري از ايجاد خراش و آسيب ديدگي، سطح ديسک نوري با يک لايه ابداعي به نام « زره ضد خش»( Scratch Armor) پوشانده مي شود. اين فناوري به طور انحصاري در اختيار شرکت Delkin Devices است که سري محصولات آرشيو طلايي( Archival Gold) خود را در سه دسته CD-R، DVD-R و BD-R عرضه مي کند.
استفاده از فلز طلاي 24 عيار به عنوان باثبات ترين عنصر فلزي، پديده اکسيداسيون را به صفر رسانده است. همچنين پايداري پلي کربنات Phthalocyanine در مقابل عوامل محيطي آن را به ايده آل ترين ماده شيميايي براي حکاکي اطلاعات تبديل کرده است. ترکيب اين دو لايه باعث شده تا ماندگاري اطلاعات در ديسک هاي نوري CD-R به سيصد سال، در ديسک هاي نوري DVD-R به صد سال و در ديسک هاي نوري BD-R اين شرکت به دويست سال برسد! ( کمي باور کردنش سخت است، اما اگر راستش را بخواهيد حقيقت دارد). اين نتايج از آزمايش هاي مؤسسه ملي تحقيقات و استاندارد امريکا( N.I.S.T) و با استفاده از دستگاه شتاب دهنده زمان تأثير عوامل محيطي، به دست آمده اند.
با اين تمهيدات، اکنون مي توانيم با خيالي آسوده، اطلاعات ارزشمند خود مانند عکس، فيلم، موسيقي و هرگونه داده را براي حفظ و نگه داري به مدت طولاني روي اين ديسک هاي نوري ذخيره کنيم. مي توان پيش بيني کرد که در آينده نزديک با افزايش حجم اطلاعات، استفاده از رسانه هاي پر ظرفيت و قابل اطمينان مانند ديسک هاي نوري BD-R تنها راه اطمينان بخش براي آرشيو طولاني مدت خواهد بود.
+ نوشته شده در  پنجشنبه هفتم مهر 1390ساعت 15:19  توسط فرزاد  | 

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

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

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

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

ماوس ها

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

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

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

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

+ نوشته شده در  چهارشنبه شانزدهم شهریور 1390ساعت 16:35  توسط فرزاد  | 

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

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

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

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

شمایی از یک کامپایلر

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

کامپایلرها به انواع تک‌گذره، چند گذره، باردهی و اجرا، بهینه‌ساز، غلط یاب و ... بسته با عمل انجام شده تقسیم می‌شوند. علیرغم این تنوع اعمال اساسی که هر کامپایلر بایستی انجام دهد، مشابه هم می‌باشند.

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

در اواسط دهه ۱۹۵۰ کامپایلرها به عنوان برنامه‌هایی دشوار شناخته شده بودند. اولین کامپایلر فرترن، به عنوان مثال ۱۸ سال زمان برای طراحی صرف نمود. از آن زمان روش‌های سیستماتیک برای استفاده از بسیاری اعمال مهم حین عمل کمپایل ابداع شده‌است. همچنین زبان‌های پیاده‌سازی خوب، محیط‌های برنامه نویسی و ابزارهای نرم‌افزاری مناسب ایجاد شده‌اند. با کمک این پیشرفت‌ها یک کامپایلر را می‌توان حتی به عنوان پروژه درسی در یک ترم تحصیلی دانشجویی طراحی نمود.


  • تاریخچه 

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

در اواخر دهه ۱۹۵۰ میلادی ماشین‌های دارای زبانهای برنامه نویسی رواج یافتند و کامپایلرهای آزمایشی ایجاد شدند. زبان فرترن به سرپرستی جان باکوس در شرکت آی‌بی‌ام به عنوان اولین کامپایلر کامل در سال ۱۹۵۷ تولید شد. کوبول اولین زبان کامپایلی با معماری چندگانه در سال ۱۹۶۰ تولید شد. در طی دهه ۶۰ کامپایلرهای زیادی تولید شد اما بر روی کیفیت کامپایلرها کمتر فکر می‌شد. هم‌زمان با تکامل زبان‌های برنامه سازی و افزایش قدرت کامپیوترها، کامپایلرها هرچه بیشتر پیچیده می‌شدند.

یک کامپایلر خود برنامه‌ای است که توسط زبان پیاده ساز تولید شده‌است. اولین کامپایلر خود محور که می‌توانست کد خود را کامپایل کند برای زبان Lisp و توسط Hart و Levin در سال ۱۹۶۲ و در دانشگاه MIT ایجاد شد. در دهه ۷۰ از زبانهای سطح بالایی مثل پاسکال و سی جهت نوشتن کامپایلرها استفاده شد. ساخت کامپایلرهای خود محور دارای مشکل راه اندازی است، چونکه هر کامپایلری باید توسط کامپایلر نوشته شده‌ای به زبان دیگر کامپایل شود یا برای این مشکل دست به دامن مفسری بشود.

ساختار کامپایلرها و کامپایلر بهینه ساز امروزه بخشی از برنامه درسی دانشجویان کامپیوتر است. برخی کامپایلرها به منظور آموزشی برای زبان‌های برنامه نویسی تولید می‌گردد. مثلاً کامپایلر PL/۰ توسط Niklaus Wirth برای آموزش در دهه ۱۹۷۰ به کار رفت. به علت سادگی و دلایل زیر هنوز برای آموزش مورد استفاده قرار می‌گیرد:

  • توسعه گام به گام برنامه
  • به کار گیری پارسرهای بازگشتی
  • استفاده از EBNF جهت تعریف نحو زبان
  • استفاده از P-Code در جریان تولید کد خروجی قابل حمل
  • نمایش T-diagram جهت تعارف رسمی

در تاریخچه کامپایلر سه دوره می‌توان در نظر گرفت:

از ۱۹۴۵تا۱۹۶۰:تولید کد


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


از ۱۹۶۰تا۱۹۷۵ :تجزیه کردن


در دهه‌های ۱۹۶۰و۱۹۷۰ زبانهای برنامه‌سازی جدید به وجود آمدند و طراحان زبان معتقد بودند که طراحی سریع کامپایلر برای زبان جدید، مهم‌تر از وجود کامپایلری با کد کارآمد است.بدین ترتیب، در ساخت کامپایلر به پردازشگر جلویی تاکید شده‌است. در همین زمان، مطالعه زبانهای رسمی، تکنیکهای قدرتمندی را برای ساخت پردازشگر جلوی، بخصوص تولید تجزیه کننده به وجود آورد


از ۱۹۷۵ تاکنون :تولید کد و بهینه سازی کد


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

انواع کامپایلرها 

راه‌های مختلفی جهت دسته بندی کامپایلرها وجود دارد مثلاً می‌توان آنها را با توجه به ورودی، خروجی، ساختار داخلی و یا رفتار زمان اجرای آن تقسیم بندی کرد. === کامپایلرهای Native و cross ===********** اکثر کامپایلرها به دو دسته Native و Cross تقسیم می‌شوند. کامپایلرهایی که به منظور اجرای برنامه‌ها کدهای باینری را تولید می‌کنند، کامپایلرهایی با کد محلی یا Native گوییم چرا که تنها در کامپیوترهای یک نوع با سیستم‌عامل‌های یکسان قابل به کارگیری است. از طرف دیگر ممکن است کامپایلرها کدهای باینری را تولید کنند که در سیستم‌های مختلف قابل اجرا باشد. به این دسته از کامپایلرها که وابستگی به سخت‌افزار ندارند، کامپایلرهای عبوری یا Cross گوییم. برای این نوع کاپایلرها تنها کافی است برای بار اول سخت‌افزار را به آن معرفی نمود. بنابراین می‌توان نتیجه گرفت که کامپایلرهای عبوری مفیدتر هستند. این تقسیم بندی برای مفسرها به کار نمی‌رود جونکه آنها از نمایش دودویی برای اجرای کد خود استفاده نمی‌کنند. ماشین‌های مجازی در هیچ یک از این دسته بندی‌ها نمی‌گنجد. هر گاه در ماشین‌های مجازی یکسان قابل اجرا باشد می‌توان آنرا Native و هرگاه کامپایلر قادر به تولید خروجی برای پلت فورم‌های مختلف باشد آنرا Cross گوییم.

کامپایلرهای تک فاز و چند فاز

فاز بندی کامپایلرها که در پشت زمینه به محدودیت‌های منابع سخت‌افزاری وابسته‌است. در نتیجه کامپایلرها به مجموعه برنامه‌های کوچکتر تقسیم می‌شوند هر یک بخشی از عمل ترجمه یا آنالیز را برعهده می‌گیرند. کامپایل تک فازی به نظر مفید می‌آید، چراکه سریعتر است. زبان پاسکال از این امکان استفاده می‌کند. اما مشکل اینجا است که اگر اعلان جلوتر از دستور به کارگیری باشد، چه کار باید کرد؟ برای حل این مشکل می‌توان در فاز اول اعلان‌ها را مشخص کرد و در فاز بعد عمل ترجمه را انجام داد. عیب دیگر کامپایلر تک فازی دشواری بهینه سازی کدهای زبان سطح بالا می‌باشد. همگردان یک‌گذره (One-Pass Compiler) کامپایلری است که برای تولید کد ماشین، تنها یک مرتبه متن برنامه را می‌خواند. دستور برخی زبان‌ها به گونه‌ای است که تولید همگردان یک‌گذره برای آنها غیر ممکن است. مجموعه همگردان‌های گنو یا Gnu complier colection یا به صورت مخفف GCC مجموعه‌ای از همگردان‌های آزاد برای زبان‌های برنامه نویسی است. تقسم بندی کامپایلرها به برنامه‌های کوچکتر تکنیکی است که همچنان مورد بحث محققان است. در این نوع دسته بندی کامپایلرها، انواع دیگری نیز وجود دارد:

  • کامپایلر مبدا به مبدا که کدی با زبان سطح بالا را دریافت می‌کند و خروجی آن نیز زبان سطح بالا می‌باشد. مثلاً موازی سازی خودکار کامپایلر در مواردی که به طور تکراری در برنامه ورودی وجود دارد و سپس تغییر شکل دادن کد و نوشتن کد یا ساختار زبانی موازی(برابر)با آن.(همچون دستور DOALL در فورترن).
  • کامپایلر Stage که به زبان اسمبلی برای ماشین نظری ترجمه می‌کند. مثلاً در Prolog
    • ماشین پرولوگ معمولاً ماشین انتزائی (WAM) خوانده می‌شود. بایت کدهای جاوا و Python زیر مجموعه‌ای از این دسته‌اند.
  • کامپایلر زمان اجرا، برای سیستم‌های Smalltalk، Java و زبان‌های میانه(CIL) در محصولات NET. استفاده می‌شود.

زبانهای تفسیری و کامپایلی 

بسیاری از افراد زبانهای سطح بالا را به دو دسته تفسیری و کامپایلی تقسیم می‌کنند. کامپایلرها و مفسرها روی زبان‌ها عمل می‌کنند نه زبانها روی آنها! مثلاً این تصور وجود دارد که الزاما BASIC تفسیر می‌شود و C کامپایل. اما ممکن است نمونه‌هایی از BASIC یا C ارائه شود که به ترتیب کامپایلری و تفسیری باشد. البته استثناهایی نیز وجود دارد، مثلاً برخی زبانها در خصوصیات خود این تقسیم بندی را مشخص کرده اند(C کامپایلری است یا SNOBOL۴ و اکثر زبانهای اسکریپتی که کد منبع زمان اجرا دارند تفسیری می‌باشد).

طراحی کامپایلرها

تقسیم بندی پروسه‌های کامپایل به مجموعه‌ای از فازها مورد حمایت پروژه کامپایلری ((تولید کامپایلرهای باکیفیت))(PQCC) از دانشگاه Carnegie Mellon قرار گرفت. در این پروژه اصطلاحات جلو بندی، میان بندی(امروزه به ندرت به کار می‌رود) و عقب بندی معرفی شد. اکثر کامپایلرهای امروزی بیش از دو فاز دارند. جلوبندی معمولاً با پردازش املایی و معنایی شرح داده می‌شود. عقب بندی شامل تبدیل نوع و بهینه سازی‌های مختلف می‌باشد. سپس کد برای آن کامپیوتر خاص تولید می‌شود. استفاده از جلوبندی و عقب بندی این را ممکن می‌کند که جلوبندی‌های مختلفی برای زبانهای مختلف وجود داشته باشد و عقب بندی‌های مختلفی نیز برای CPU‌های مختلف.

جلو بندی 

جلوبندی به منظور تولید کد میانی یا IR از کد مبدا استفاده می‌شود. جلوبندی معمولاً جدول نمادها را مدیریت نموده و یک نگاشتگر ساختمان داده‌ای، هر نماد را از درون کد مبدا به اطلاعات مربوط به آن مثل نوع و دامنه تعریف آن نگاشت می‌شود. این امر در چند فاز انجام می‌گردد:

  1. خط نوسازی. زبانهایی که اجازه تعیین فضای اختیاری برای شناسه‌ها را می‌دهند قبل از عمل تجزیه نیاز به فاز اضافی دارند که کد ورودی را به صورت متعارفی برای تجزیه گر آماده کند. Algol، Coral۶۶، Atlas Autocode وImp نمونه‌هایی از این زبانه هستند که به خط نوسازی (Line Reconstruction) نیازمند است.
  2. پیش پردازش. برخی زبانها همچون C احتیاج به فاز پیش پردازش برای جایگزینی شروط کامپایل و ماکرو‌ها دارند.در زبان C فاز پیش پردازش شامل مرحله تحلیل لغوی می‌شود.
  3. تحلیل لغوی کد متنی مبدا را به اجزای کوچکی که نشانه(token) نامیده می‌شود می‌شکند. هر نشانه واحد ساده‌ای از زبان است مثل کلمات کلیدی و نام نمادها. نحو نشانه‌ها نوعا یک زبان باقاعده است، بنابراین یک ماشین حالت متناهی که برپایه یک عبارت باقاعده بنا می‌شود می‌تواند جهت شناخت آن استفاده شود.
  4. تحلیل نحوی شامل تجزیه کردن نشانه‌های مرتب جهت شناخت ساختار نحوی زبان می‌باشد.
  5. تحلیل معنایی فازی است که معنای برنامه را جهت رعایت قوانین زبان بررسی می‌کند. یک مثال برای این فاز کنترل نوع است.

عقب بندی 

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

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


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

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

مجموعه همگردان گنو 

GCC از ابتدا مخفف Gnu C Compiler بود ولی از زمانی که توانست زبانهای دیگری غیر از C از قبیل C++,Ada,Java,Objective C و Fortran را کامپایل کند به Gnu Compiler Collection تغییر نام داد. پدید آورنده اصلی GCC ریچارد استالمن است کسی که بنیانگذار پروژه Gnu محسوب می‌شود. نخستین نسخه GCC در سال ۱۹۸۷ انتشار یافت که یک پیشرفت مهم محسوب می‌شد زیرا محصول جدید اولین کامپایلر بهینه سازی شده قابل حمل ANSI C به عنوان یک نرم‌افزار آزاد محسوب می‌شد. در سال ۱۹۹۲ نسخه ۲٫۰ کامپایلر GCC عرضه شد. نسخه جدید قابلیت کامپایل کدهای ++C را نیز داشت. در سال ۱۹۹۷ یک انشعاب آزمایشی در GCC به نام EGCC به منظور بهینه سازی کامپیایلر و پشتیبانی کامل تر از ++C ایجاد شد. در ادامه EGCC به عنوان نسل بعدی کامپایلر GCC پذیرفته شد و تکامل آن باعث انتشار نسخه سوم GCC در سال ۲۰۰۴ گردید. چهارمین نسخه از کامپایلر GCC در سال ۲۰۰۵ عرضه شد.

+ نوشته شده در  پنجشنبه دوم تیر 1390ساعت 21:58  توسط فرزاد  | 

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

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

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

نقطه عطف کلیدی
هنگامی که پل‌ اتلینی مدیرعامل و رئیس هیئت مدیره شرکت اینتل در سال 2004 اعلام کرد، شرکت وی «طراحی تمام محصولات بعدی را بر‌اساس محیط‌های چندهسته‌ای» انجام خواهدداد، چرا این رویکرد را «یک نقطه عطف کلیدی در صنعت IT» معرفی کرد؟ کافی است با شرکت‌هایی که با ورود به دنیای پردازنده‌های چندهسته‌ای همه‌چیز خود را از دست دادند، آشنا باشید تا پاسخ این پرسش را به‌وضوح دریابید. شرکت‌هایی مانند Ardent Convex ،‌Encore ،‌Floating Point Systems ‌Inmos ،‌Kendall Square Research ‌MasPar ،nCUBE Sequent ‌Tandem و Thinking Machines تنها نمونه‌های شناخته‌شده‌ای از یک فهرست طولانی هستند که آینده خود را با دل بستن به امیدهای واهی پردازش موازی از دست دادند.

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

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

محققان به دنبال روش‌هایی برای حل این مشکلات هستند. در این راه روش‌ها و ایده‌های بسیاری مورد آزمون قرار گرفتند و تقریباً تمام آن‌ها با شکست مواجه شدند. یکی از ایده‌های اولیه این بود که با استفاده از زبان برنامه‌نویسی مناسب‌می‌توان مشکلات برنامه‌نویسی موازی را برطرف کرد. برای ارائه چنین زبان‌هایی صدها (و شاید هزاران) تلاش ناموفق صورت گرفت که به‌عنوان مثال می‌توان به زبان‌های منسوخ شده APL، Id، Linda، Occam و SISAL اشاره کرد. بعضی از این زبان‌ها برنامه‌نویسی موازی را آسان کردند، اما هیچ‌یک نتواستند سرعت، کارایی و انعطاف‌پذیری برنامه‌نویسی سنتی زنجیره‌ای را به آن بدهند. همچنین هیچ‌یک از این زبان‌ها‌ به اندازه زبان‌های مورد استفاده برای برنامه‌نویسی زنجیره‌ای محبوبیت نیافتند.

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

یکی دیگر از ایده‌هایی مطرح شد، ایجاد نرم‌افزاری بود که به‌طور خودکار برنامه‌های زنجیره‌ای را به برنامه‌های موازی تبدیل کند. تجربه نشان می‌دهد، در این مورد میزان موفقیت برنامه با تعداد هسته‌های پردازشی نسبت معکوس دارد. با توجه به نوع نرم‌افزار، استفاده از این روش برای اجرای موازی آن روی 2، 4، 6 یا 8 هسته مزایایی را در پی دارد. اما بسیاری از متخصصان به‌رغم نتایج مثبتی که از تحقیقات اخیر به دست آمده است، به کارایی این شیوه برای اجرای موازی برنامه‌ها روی 32، 64 یا 128 هسته شک دارند.


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

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

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

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

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

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

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

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

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

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

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

+ نوشته شده در  یکشنبه پانزدهم خرداد 1390ساعت 0:0  توسط فرزاد  | 

 اگر شما هم از دست شارژرهای مختلف دستگاه هایتان و سیم های دست و پاگیر آنها به تنگ آمده اید یک خبر خوب برای شما داریم.

متخصصان دانشگاه MIT که حدود یک سال است روی انتقال نیروی الکتریسیته به صورت بی سیم کار می کنند به نتایج درخشانی دست پیدا کرده اند.

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

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

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


تیمی متشکل از دپارتمان فیزیک، دپارتمان مهندسی برق و کامپیوتر، انستیتو نانوتکنولوژی و برخی مهندسان و دانشمندان دیگر دانشگاه MIT در این ابداع با هم همکاری داشته اند. این گروه نام ابداع خود را WiTricity مخفف شده وایرلس و الکتریسیته گذاشته اند.

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

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

با این حال این روش هر چند برای انتشار اطلاعات و دیتا مناسب می نماید اما برای انتشار الکترومغناطیس دشواری های فراوانی به همراه داشت.

متخصصان MIT می گویند که با استفاده از قوانین فیزیک به چنین نوآوری دست پیدا کرده اند این موضوع خصوصا از آن جهت جالب است که بسیاری می پنداشتند قوانین فیزیک قدیمی شده و برای نوآوری های جدید به کار نمی آید.
+ نوشته شده در  چهارشنبه چهاردهم اردیبهشت 1390ساعت 17:27  توسط فرزاد  | 

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

به نوشته مجله آمریکایی «دنیای کامپیوتر» تمام این نوآوری‌ها باید بتوانند در مدت 5 تا 20 سال آینده دنیا و زندگی بشری را دستخوش تحول کنند. موسسه گارتنر برای این 7 نوآوری، عنوان «تغییرات بزرگ IT» را برگزیده است. در این خصوص «کن مک گی» معاون رئیس این موسسه تحقیقاتی توضیح داد: این 7 نوآوری را همچنین می‌توان با عنوان فرصت‌های بزرگ برای فناوری اطلاعات نامگذاری کرد. اینها تغییراتی هستند که به شدت دنیای تجارت را تحت تاثیر قرار می‌دهند، اما همچنین می‌توانند تغییرات بنیادی را در زندگی روزمره تمام انسان‌ها ایجاد کنند. این فرصت‌ها دامنه وسیعی از مراکز عمومی، مراکز تحقیقاتی خصوصی و دولتی تمام دنیا را پوشش می‌دهند.

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

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

در جولای گذشته، موسسه تکنولوژی ماساچوست (ام آی تی) اولین سیستم انتقال غیر رادیواکتیو انرژی الکتریکی به طریق بی‌سیم را آزمایش کرد. باوجود این هنوز سال‌های زیادی تا عرضه تجاری «برق بی‌سیم» باقی مانده است.

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

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

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

نگهداری اطلاعات به مدت 100 سال
پنجمین نوآوری که گارتنر به بررسی آن پرداخته است، فناوری ذخیره اطلاعات و داده‌ها در انبارهای الکترونیکی تمام دنیا در حجم بسیار وسیع و به مدت بسیار طولانی است. در حقیقت این فناوری، ذخیره اطلاعات را به مدت 100 سال تضمین خواهد کرد. درحال حاضر ذخیره اطلاعات تنها به مدت 20 سال وجود دارد.

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

اندازه‌گیری بازگشت اقتصادی سرمایه‌گذاری در بخش فناوری
هفتمین و آخرین چالش بزرگ از دیدگاه گارتنر، روشی برای حصول اطمینان از نتایج دقیق مالی سرمایه‌گذاری‌های تکنولوژیکی است. در حال حاضر تنها می‌توان بازگشت اقتصادی برنامه‌های کوتاه و یا میان مدت را اندازه‌گیری کرد. به اعتقاد این آژانس تحقیقات IT، این تغییر بزرگ می‌تواند اندازه‌گیری دقیقی از هزینه‌های مالی و بازگشت اقتصادی سرمایه‌گذاری‌های تکنولوژیکی را ارائه کند.
+ نوشته شده در  پنجشنبه یازدهم فروردین 1390ساعت 13:38  توسط فرزاد  | 

از زمان رایانه‌های اولیه که در سال ۱۹۴۱ ساخته شده بودند تا کنون فناوری‌های دیجیتالی رشد نموده‌است، معماری فون نوِیمن یک رایانه را به چهار بخش اصلی توصیف می‌کند: واحد محاسبه و منطق (Arithmetic and Logic Unit یا ALU)، واحد کنترل یا حافظه، و ابزارهای ورودی و خروجی ( که جمعا I/O نامیده می‌شود). این بخش‌ها توسط اتصالات داخلی سیمی به نام گذرگاه (bus) با یکدیگر در پیوند هستند.

حافظه

تصویری از یک هارددیسک

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

پردازش

تصویری از یک CPU یا واحد پردازشگر مرکزی

واحد محاسبه و منطق یا ALU دستگاهی است که عملیات پایه مانند چهار عمل اصلی حساب (جمع و تفریق و ضرب و تقسیم)، عملیات منطقی (و، یا، نقیض)، عملیات قیاسی (برای مثال مقایسه دو بایت برای شرط برابری) و دستورات انتصابی برای مقدار دادن به یک متغیر را انجام می‌دهد. این واحد جائیست که «کار واقعی» در آن صورت می‌پذیرد.

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

(قابل ذکر است پردازنده‌های اینتل از نوع پردازنده مبتنی بر اعمال پیچیده می‌باشند.)

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

ورودی/خروجی

تصویری از یک رایانه، صفحه نمایشگر(Monitor) نقش خروجی و صفحه کلید(keyboard) نقش ورودی را دارد.

بخش ورودی/خروجی (I/O) این امکان را به رایانه می‌دهد تا اطلاعات را از جهان بیرون تهیه و نتایج آن‌ها را به همان جا برگرداند. محدوده فوق العاده وسیعی از دستگاه‌های ورودی/خروجی وجود دارد، از خانواده آشنای صفحه‌کلیدها، نمایشگرها، نَرم‌دیسک گرفته تا دستگاه‌های کمی غریب مانند رایابین‌ها (webcams). (از سایر ورودی/خروجی‌ها می‌توان موشواره mouse، قلم نوری، چاپگرها (printer)، اسکنرها، انواع لوح‌های فشرده(CD, DVD) را نام برد ).

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

دستورالعمل‌ها

هر رایانه تنها دارای یک مجموعه کم تعداد از دستورالعمل‌های ساده و تعریف شده می‌باشد. از انواع پرکاربردشان می‌توان به دستورالعمل «محتوای خانه ۱۲۳ را در خانه ۴۵۶ کپی کن!»، «محتوای خانه ۶۶۶ را با محتوای خانه ۰۴۲ جمع کن، نتایج را در خانه ۰۱۳ کن!»، «اگر محتوای خانه ۹۹۹ برابر با صفر است، به دستورالعمل واقع در خانه ۳۴۵ رجوع کن!».

دستورالعمل‌ها در داخل رایانه بصورت اعداد مشخص شده‌اند - مثلاً کد دستور العمل (copy instruction) برابر ۰۰۱ می‌تواند باشد. مجموعه معین دستورالعمل‌های تعریف شده که توسط یک رایانه ویژه پشتیبانی می‌شود را زبان ماشین می‌نامند. در واقعیت، اشخاص معمولاً به زبان ماشین دستورالعمل نمی‌نویسند بلکه بیشتر به نوعی از انواع سطح بالای زبان‌های برنامه‌نویسی، برنامه‌نویسی می‌کنند تا سپس توسط برنامه ویژه‌ای (تفسیرگرها (interpreters) یا همگردان‌ها (compilers) به دستورالعمل ویژه ماشین تبدیل گردد. برخی زبان‌های برنامه‌نویسی از نوع بسیار شبیه و نزدیک به زبان ماشین که اسمبلر (یک زبان سطح پایین) نامیده می‌شود، استفاده می‌کنند؛ همچنین زبان‌های سطح بالای دیگری نیز مانند پرولوگ نیز از یک زبان انتزاعی و چکیده که با زبان ماشین تفاوت دارد بجای دستورالعمل‌های ویژه ماشین استفاده می‌کنند.

معماری‌ها

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

برخی رایانه‌های بزرگ‌تر چندین CPU و واحد کنترل دارند که بصورت هم‌زمان با یکدیگر درحال کارند. این‌گونه رایانه‌ها بیشتر برای کاربردهای پژوهشی و محاسبات علمی بکار می‌روند.

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

برنامه‌ها

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

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

+ نوشته شده در  چهارشنبه سوم فروردین 1390ساعت 20:16  توسط فرزاد  | 

در زبان انگلیسی «کامپیوتر» به کسی می‌گفتند که محاسبات ریاضی را (بدون ابزارهای کمکی مکانیکی) انجام می‌داد. بر اساس «واژه‌نامه ریشه‌یابی Barnhart Concise» واژه کامپیوتر در سال ۱۶۴۶ به زبان انگلیسی وارد گردید که به معنی «شخصی که محاسبه می‌کند» بوده‌است و سپس از سال ۱۸۹۷ به ماشین‌های محاسبه مکانیکی گفته می‌شد. در هنگام جنگ جهانی دوم «کامپیوتر» به زنان نظامی انگلیسی و آمریکایی که کارشان محاسبه مسیرهای شلیک توپ‌های بزرگ جنگی توسط ابزار مشابهی بود، اشاره می‌کرد[نیازمند منبع].

در اوایل دهه ۵۰ میلادی هنوز اصطلاح ماشین حساب (computing machines) برای معرفی این ماشین‌ها به‌کار می‌رفت. پس از آن عبارت کوتاه‌تر کامپیوتر (computer) به‌جای آن به‌کار گرفته شد. ورود این ماشین به ایران در اوائل دهه ۱۳۴۰ بود و در فارسی از آن زمان به آن «کامپیوتر» می‌گفتند. واژه رایانه در دو دهه اخیر در فارسی رایج شده و به‌تدریج جای «کامپیوتر» را گرفت[نیازمند منبع].


برابر این واژه در زبان‌های دیگر حتماً همان واژه زبان انگلیسی نیست. در زبان فرانسوی واژه "ordinateur"، که معادل «سازمان‌ده» یا «ماشین مرتب‌ساز» می‌باشد به‌کار می‌رود. در اسپانیایی "ordenador" با معنایی مشابه استفاده می‌شود، همچنین در دیگر کشورهای اسپانیایی زبان computadora بصورت انگلیسی‌مآبانه‌ای ادا می‌شود. در پرتغالی واژه computador به‌کار می‌رود که از واژه computar گرفته شده و به معنای «محاسبه کردن» می‌باشد. در ایتالیایی واژه "calcolatore" که معنای ماشین حساب بکار می‌رود که بیشتر روی ویژگی حسابگری منطقی آن تاکید دارد. در سوئدی رایانه "dator" خوانده می‌شود که از "data" (داده‌ها) برگرفته شده‌است. به فنلاندی "tietokone" خوانده می‌شود که به معنی «ماشین اطلاعات» می‌باشد. اما در زبان ایسلندی توصیف شاعرانه‌تری بکار می‌رود، «tölva» که واژه‌ایست مرکب و به معنای «زن پیشگوی شمارشگر» می‌باشد. در چینی رایانه «dian nao» یا «مغز برقی» خوانده می‌شود. در انگلیسی واژه‌ها و تعابیر گوناگونی استفاده می‌شود، به‌عنوان مثال دستگاه داده‌پرداز («data processing machine»). اما اکنون اکثر انسان ها کامپیوتر را مهمترین نیاز بشر می دانند .

معنای واژهٔ فارسی رایانه [ویرایش]

واژهٔ رایانه از مصدر رایانیدن ساخته شده که در فارسی میانه به شکلِ rāyēnīdan و به معنای «سنجیدن، سبک و سنگین کردن، مقایسه کردن» یا «مرتّب کردن، نظم بخشیدن و سامان دادن» بوده است. این مصدر در زبان فارسی میانه یا همان پهلوی کاربرد فراوانی داشته و مشتق‌های زیادی نیز از آن گرفته شده بوده. در زبان فارسی نو یا همان فارسی (دری) این فعل و مشتق‌هایش به کار نرفته‌اند.[نیازمند منبع] برایِ مصدر رایانیدن/ رایاندن در لغتنامهٔ دهخدا چنین آمده:

رایاندن
[ دَ ] (مص) رهنمائی نمودن به بیرون . هدایت کردن . (ناظم الاطباء). اما در مآخذ دیگر دیده نشد.

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

شکلِ فارسی میانهٔ این واژه rāyēnīdan بوده و اگر می‌خواسته به فارسی نو برسد به شکل رایانیدن/ رایاندن درمی‌آمده. (بسنجید با واژه‌یِ فارسیِ میانه‌یِ āgāhēnīdan که در فارسیِ نو آگاهانیدن/ آگاهاندن شده است).

این واژه از ریشه‌یِ فرضیِ ایرانیِ باستانِ –radz* است که به معنایِ «مرتّب کردن» بوده. این ریشه به‌صورتِ –rad به فارسیِ باستان رسیده و به شکلِ rāy در فارسیِ میانه (پهلوی) به‌کار رفته. از این ریشه ستاک‌هایِ حالِ و واژه‌هایِ زیر در فارسیِ میانه و نو به‌کار رفته‌اند:

  • -ā-rādz-a*یِ ایرانیِ باستان > -ā-rāy ِ فارسی میانه که در واژه‌یِ آرایشِ فارسیِ نو دیده می‌شود.
  • -pati-rādz-a*یِ ایرانیِ باستان > -pē-rāy ِ فارسی میانه که در واژه‌یِ پیرایشِ فارسیِ نو دیده می‌شود؛ و
  • -rādz-ta*یِ ایرانیِ باستان > rāst ِ فارسی میانه که در واژه‌یِ راستِ فارسیِ نو دیده می‌شود.

این ریشه‌یِ ایرانی از ریشه‌یِ هندواروپاییِ -reĝ* به معنایِ «مرتّب کردن و نظم دادن» آمده است. از این ریشه در

  • هندی rāj-a به معنیِ «هدایت‌کننده، شاه» (یعنی کسی که نظم می‌دهد)؛
  • لاتینی rect-us به معنیِ «راست، مستقیم»،
  • فرانسه di-rect به معنیِ «راست، مستقیم»،
  • آلمانی richt به معنیِ «راست، مستقیم کردن» و
  • انگلیسی right به معنیِ «راست، مستقیم، درست»

برجای مانده است.


در فارسیِ نو پسوندِ -ـه (= /e/ در فارسی رسمی ایران و /a/ در فارسی رسمی افغانستان و تاجیکستان) را به ستاکِ حالِ فعل‌ها می‌چسبانند تا نامِ ابزارِ آن فعل‌ها به‌دست آید (البته با این فرمول مشتق‌های دیگری نیز ساخته می‌شود، امّا در اینجا تنها نامِ ابزار مدِّ نظر است)؛ برای نمونه از

  • مالـ- (یعنی ستاکِ حالِ مالیدن) + -ـه، ماله «ابزار مالیدنِ سیمان و گچِ خیس»
  • گیر- (یعنی ستاکِ حالِ گرفتن) + -ـه، گیره «ابزار گرفتن»
  • پوشـ- (یعنی ستاکِ حالِ پوشیدن) + -ـه، پوشه «ابزار پوشیدن» (خود را جایِ کاغذهایی بگذارید که پوشه را می‌پوشند!)
  • رسانـ- (یعنی ستاکِ حالِ رساندن) + -ـه، رسانه «ابزار رساندنِ اطّلاعات و برنامه‌هایِ دیداری و شنیداری»

حاصل می‌گردد.

در فارسیِ نو پسوندِ -ـه (= e- یا همان a-) را به ستاکِ حالِ "رایانیدن" یعنی رایانـ- چسبانده‌اند تا نامِ ابزارِ این فعل ساخته شود؛ یعنی "رایانه" به معنایِ «ابزارِ نظم بخشیدن و سازماندهی ( ِ داده‌ها)» است.

احتمال می‌رود که سازندگان این واژه به واژه‌یِ فرانسویِ این مفهوم، یعنی ordinateurتوجّه داشته‌اند که در فرانسه از مصدرِ ordre «ترتیب و نظم دادن و سازمان بخشیدن» ساخته شده. به هرحال، معنادهیِ واژه‌یِ رایانه برایِ این دستگاه جامع‌تر و رساتر از کامپیوتر است. یادآور می‌شود که computerبه معنایِ «حسابگر» یا «مقایسه گر» است، حال آن‌که کارِ این دستگاه براستی فراتر از "حساب کردن" است.

تاریخچه [ویرایش]

نوشتار اصلی: تاریخچه رایانه

در گذشته دستگاه‌های مختلف مکانیکی ساده‌ای مثل خط‌کش محاسبه و چرتکه نیز رایانه خوانده می‌شدند. در برخی موارد از آن‌ها به‌عنوان رایانه آنالوگ نام برده می‌شود. البته لازم به ذکر است که کاربرد واژه رايانه آنالوگ در علوم مختلف بيش از اين است که به چرتکه و خطکش محاسبه محدود شود. به طور مثال در علوم الکترونيک، مخابرات و کنترل روشی برای محاسبه مشتق و انتگرال توابع رياضی و معادلات ديفرانسيل توسط تقويت کننده های عملياتی، مقاومت، سلف و خازن متداول است که به مجموعه سيستم مداری Analog Computer گفته می شود [۱]. چرا که برخلاف رایانه‌های رقمی، اعداد را نه به‌صورت اعداد در پایه دو بلکه به‌صورت کمیت‌های فیزیکی متناظر با آن اعداد نمایش می‌دهند. چیزی که امروزه از آن به‌عنوان «رایانه» یاد می‌شود در گذشته به عنوان «رایانه رقمی (دیجیتال)» یاد می‌شد تا آن‌ها را از انواع «رایانه آنالوگ» جدا سازند.

به تصریح دانشنامه انگلیسی ویکی‌پدیا، بدیع‌الزمان ابوالعز بن اسماعیل بن رزاز جَزَری (درگذشتهٔ ۶۰۲ ق.) یکی از نخستین ماشین‌های اتوماتا را که جد رایانه‌های امروزین است، ساخته بوده است. این مهندس مکانیک مسلمان از دیاربکر در شرق آناتولی بوده است. رایانه یکی از دو چیز برجسته‌ای است که بشر در سدهٔ بیستم اختراع کرد. دستگاهی که بلز پاسکال در سال ۱۶۴۲ ساخت اولین تلاش در راه ساخت دستگاه‌های محاسب خودکار بود. پاسکال آن دستگاه را که پس از چرتکه دومیت ابزار ساخت بشر بود، برای یاری رساندن به پدرش ساخت. پدر وی حسابدار دولتی بود و با کمک این دستگاه می‌توانست همه اعدادشش رقمی را با هم جمع و تفریق کند.[۲]

لایبنیتز ریاضی‌دان آلمانی نیز از نخستین کسانی بود که در راه ساختن یک دستگاه خودکار محاسبه کوشش کرد. او در سال ۱۶۷۱ دستگاهی برای محاسبه ساخت که کامل شدن آن تا ۱۹۶۴ به درازا کشید. همزمان در انگلستان ساموئل مورلند در سال ۱۶۷۳ دستگاهی ساخت که جمع و تفریق و ضرب می‌کرد.[۲]

در سده هجدهم میلادی هم تلاش‌های فراوانی برای ساخت دستگاه‌های محاسب خودکار انجام شد که بیشترشان نافرجام بود. سرانجام در سال ۱۸۷۵ میلادی استیفن بالدوین نخستین دستگاه محاسب را که هر چهار عمل اصلی را انجام می‌داد، به نام خود ثبت کرد.[۲]

از جمله تلاش‌های نافرجامی که در این سده صورت گرفت، مربوط به چارلز ببیج ریاضی‌دان انگلیسی است. وی در آغاز این سده در سال ۱۸۱۰ در اندیشهٔ ساخت دستگاهی بود که بتواند بر روی اعداد بیست و شش رقمی محاسبه انجام دهد. او بیست سال از عمرش را در راه ساخت آن صرف کرد اما در پایان آن را نیمه‌کاره رها کرد تا ساخت دستگاهی دیگر که خود آن را دستگاه تحلیلی می‌نامید آغاز کند. او می‌خواست دستگاهی برنامه‌پذیر بسازد که همه عملیاتی را که می‌خواستند دستگاه برروی عددها انجام دهد، قبلا برنامه‌شان به دستگاه داده شده باشد. قرار بود عددها و درخواست عملیات برروی آن‌ها به یاری کارت‌های سوراخ‌دار وارد شوند. بابیچ در سال ۱۸۷۱ مرد و ساخت این دستگاه هم به پایان نرسید.[۲]

کارهای بابیچ به فراموشی سپرده شد تا این که در سال ۱۹۴۳ و در بحبوحه جنگ جهانی دوم دولت آمریکا طرحی سری برای ساخت دستگاهی را آغاز کرد که بتواند مکالمات رمزنگاری‌شدهٔ آلمانی‌ها را رمزبرداری کند. این مسئولیت را شرکت IBM و دانشگاه هاروارد به عهده گرفتند که سرانجام به ساخت دستگاهی به نام ASCC در سال ۱۹۴۴ انجامید. این دستگاه پنج تنی که ۱۵ متر درازا و ۲٫۵ متر بلندی داشت، می‌توانست تا ۷۲ عدد ۲۴ رقمی را در خود نگاه دارد و با آن‌ها کار کند. دستگاه با نوارهای سوراخدار برنامه‌ریزی می‌شد و همهٔ بخش‌های آن مکانیکی یا الکترومکانیکی بود.[۲]

تعریف داده و اطلاعات [ویرایش]

داده به آن دسنه از ورودی‌هایی خام گفته می‌شود که برای پردازش به رایانه ارسال می‌شوند.

اطلاعات به داده‌های پردازش شده می‌گویند.

رایانه‌ها چگونه کار می‌کنند؟ [ویرایش]

از زمان رایانه‌های اولیه که در سال ۱۹۴۱ ساخته شده بودند تا کنون فناوری‌های دیجیتالی رشد نموده‌است، معماری فون نوِیمن یک رایانه را به چهار بخش اصلی توصیف می‌کند: واحد محاسبه و منطق (Arithmetic and Logic Unit یا ALU)، واحد کنترل یا حافظه، و ابزارهای ورودی و خروجی ( که جمعا I/O نامیده می‌شود). این بخش‌ها توسط اتصالات داخلی سیمی به نام گذرگاه (bus) با یکدیگر در پیوند هستند.

حافظه [ویرایش]

تصویری از یک هارددیسک

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

پردازش [ویرایش]

تصویری از یک CPU یا واحد پردازشگر مرکزی

واحد محاسبه و منطق یا ALU دستگاهی است که عملیات پایه مانند چهار عمل اصلی حساب (جمع و تفریق و ضرب و تقسیم)، عملیات منطقی (و، یا، نقیض)، عملیات قیاسی (برای مثال مقایسه دو بایت برای شرط برابری) و دستورات انتصابی برای مقدار دادن به یک متغیر را انجام می‌دهد. این واحد جائیست که «کار واقعی» در آن صورت می‌پذیرد.

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

(قابل ذکر است پردازنده‌های اینتل از نوع پردازنده مبتنی بر اعمال پیچیده می‌باشند.)

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

ورودی/خروجی [ویرایش]

تصویری از یک رایانه، صفحه نمایشگر(Monitor) نقش خروجی و صفحه کلید(keyboard) نقش ورودی را دارد.

بخش ورودی/خروجی (I/O) این امکان را به رایانه می‌دهد تا اطلاعات را از جهان بیرون تهیه و نتایج آن‌ها را به همان جا برگرداند. محدوده فوق العاده وسیعی از دستگاه‌های ورودی/خروجی وجود دارد، از خانواده آشنای صفحه‌کلیدها، نمایشگرها، نَرم‌دیسک گرفته تا دستگاه‌های کمی غریب مانند رایابین‌ها (webcams). (از سایر ورودی/خروجی‌ها می‌توان موشواره mouse، قلم نوری، چاپگرها (printer)، اسکنرها، انواع لوح‌های فشرده(CD, DVD) را نام برد ).

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

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

هر رایانه تنها دارای یک مجموعه کم تعداد از دستورالعمل‌های ساده و تعریف شده می‌باشد. از انواع پرکاربردشان می‌توان به دستورالعمل «محتوای خانه ۱۲۳ را در خانه ۴۵۶ کپی کن!»، «محتوای خانه ۶۶۶ را با محتوای خانه ۰۴۲ جمع کن، نتایج را در خانه ۰۱۳ کن!»، «اگر محتوای خانه ۹۹۹ برابر با صفر است، به دستورالعمل واقع در خانه ۳۴۵ رجوع کن!».

دستورالعمل‌ها در داخل رایانه بصورت اعداد مشخص شده‌اند - مثلاً کد دستور العمل (copy instruction) برابر ۰۰۱ می‌تواند باشد. مجموعه معین دستورالعمل‌های تعریف شده که توسط یک رایانه ویژه پشتیبانی می‌شود را زبان ماشین می‌نامند. در واقعیت، اشخاص معمولاً به زبان ماشین دستورالعمل نمی‌نویسند بلکه بیشتر به نوعی از انواع سطح بالای زبان‌های برنامه‌نویسی، برنامه‌نویسی می‌کنند تا سپس توسط برنامه ویژه‌ای (تفسیرگرها (interpreters) یا همگردان‌ها (compilers) به دستورالعمل ویژه ماشین تبدیل گردد. برخی زبان‌های برنامه‌نویسی از نوع بسیار شبیه و نزدیک به زبان ماشین که اسمبلر (یک زبان سطح پایین) نامیده می‌شود، استفاده می‌کنند؛ همچنین زبان‌های سطح بالای دیگری نیز مانند پرولوگ نیز از یک زبان انتزاعی و چکیده که با زبان ماشین تفاوت دارد بجای دستورالعمل‌های ویژه ماشین استفاده می‌کنند.

معماری‌ها [ویرایش]

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

برخی رایانه‌های بزرگ‌تر چندین CPU و واحد کنترل دارند که بصورت هم‌زمان با یکدیگر درحال کارند. این‌گونه رایانه‌ها بیشتر برای کاربردهای پژوهشی و محاسبات علمی بکار می‌روند.

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

برنامه‌ها [ویرایش]

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

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

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

رایانه همیشه نیاز دارد تا برای بکار انداختنش حداقل یک برنامه روی آن در حال اجرا باشد. تحت عملکردهای عادی این برنامه همان سیستم‌عامل یا OS که مخفف واژه‌های Operating System است. سیستم یا سامانه عامل بر اساس پیشفرض‌ها تصمیم می‌گیرد که کدام برنامه برای انجام چه وظیفه ای اجرا شود، چه زمان، از کدام منابع (مثل حافظه، ورودی/خروجی و ...) استفاده شود. همچنین سیستم‌عامل یک لایه انتزاعی بین سخت‌افزار و برنامه‌های دیگر که می‌خواهند از سخت‌افزار استفاده کنند، می‌باشد، که این امکان را به برنامه نویسان می‌دهد تا بدون اینکه جزئیات ریز هر قطعه الکترونیکی از سخت‌افزار را بدانند بتوانند برای آن قطعه برنامه‌نویسی نمایند. در گذشته یک اصطلاح متداول بود که گفته می شد با تمام این وجود کامپیوترها نمی‌توانند برخی از مسائل را حل کنند که به این مسائل حل نشدنی گفته می‌شود مانند مسائلی که در مسیر حلشان در حلقه بی نهایت می افتند. به همین دلیل نیاز است که با کمک روشهای خاص بطور مثال به چند بخش تقسیم نمودن مساله یا روشهای متداول دیگر از رخ دادن این خطا تا حد امکان جلوگیری نمود.

کاربردهای رایانه [ویرایش]

نخستین رایانه‌های رقمی، با قیمت‌های زیاد و حجم بزرگشان، در اصل محاسبات علمی را انجام می‌دادند، انیاک یک رایانه قدیمی ایالات متحده اصولا طراحی شده تا محاسبات پرتابه‌ای توپخانه و محاسبات مربوط به جدول چگالی نوترونی را انجام دهد. (این محاسبات بین دسامبر ۱۹۴۱ تا ژانویه ۱۹۴۶ روی حجمی بالغ بر یک میلیون کارت پانچ انجام پذیرفت! که این خود طراحی و سپس تصمیم نادرست بکارگرفته شده را نشان می‌دهد) بسیاری از ابررایانه‌های امروزی صرفاً برای کارهای ویژه محاسبات جنگ افزار هسته‌ای استفاده می‌گردد[نیازمند منبع].

CSIR Mk I نیز که نخستین رایانه استرالیایی بود برای ارزیابی میزان بارندگی در کوه‌های اسنوئی (Snowy)این کشور بکاررفت، این محاسبات در چارچوب یک پروژه عظیم تولید برقابی انجام گرفت.

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

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

کاهش پیوسته قیمت‌های رایانه باعث شد تا سازمان‌های کوچک‌تر نیز بتوانند آن‌ها را در اختیار بگیرند. بازرگانان، سازمان‌ها، و سیاست‌مداران اغلب تعداد زیادی از کامپیوترهای کوچک را برای تکمیل وظایفی که قبلا برای تکمیلشان نیاز به رایانه بزرگ (mainframe) گران قیمت و بزرگ بود، به کار بگیرند. مجموعه‌هایی از رایانه‌های کوچک‌تر در یک محل اغلب به‌عنوان خادم سرا[نیازمند منبع] (server farm) نام برده می‌شود.

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

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

انواع رایانه [ویرایش]

رایانه‌های توکار [ویرایش]

رایانه هایی هم وجود دارند که تنها برای کاربردهای خاص طراحی می شوند. در ۲۰ سال گذشته، هرچند برخی ابزارهای خانگی که از نمونه‌های قابل ذکر آن می‌توان جعبه‌های بازی‌های ویدئویی را که بعدها در دستگاه‌های دیگری از جمله تلفن همراه، دوربین‌های ضبط ویدئویی، و PDAها و ده‌ها هزار وسیله خانگی، صنعتی، خودروسازی و تمام ابزاری که در درون آنها مدارهایی که نیازهای ماشین تورینگ را مهیا ساخته‌اند، گسترش یافت، را نام برد(اغلب این لوازم برنامه‌هایی را در خود دارند که بصورت ثابت روی ROM تراشه‌هایی که برای تغییر نیاز به تعویض دارند، نگاشته شده‌اند). این رایانه‌ها که در درون ابزارهای با کاربرد ویژه گنجانیده شده‌اند «ریزکنترل‌گرها» یا رایانه‌های توکار" (Embedded Computers) نامیده می‌شوند. بنابراین تعریف این رایانه‌ها به‌عنوان ابزاری که با هدف پردازش اطلاعات طراحی گردیده محدودیت‌هایی دارد. بیشتر می‌توان آنها را به ماشین‌هایی تشبیه کرد که در یک مجموعه بزرگ‌تر به‌عنوان یک بخش حضور دارند مانند دستگاه‌های تلفن، ماکروفرها و یا هواپیما که این رایانه‌ها بدون تغییر فیزیکی توسط کاربر می‌توانند برای مقاصد مختلفی بکارگرفته شوند.

رایانه‌های شخصی [ویرایش]

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

+ نوشته شده در  دوشنبه یکم فروردین 1390ساعت 19:24  توسط فرزاد  | 

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

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

 

 

ربات PaPeRo رباتی دوست داشتنی است که توسط شرکت ژاپنی NEC ساخته شده است. این ربات با هدف بهبود تعامل انسانها با اینترنت ساخته شده و از توانایی شناسایی سه هزار واژه و استفاده از آنها برای سخن گفتن، اعلام کردن دریافت پیام، ارائه اطلاعات جدید، شناسایی چهره‌ها، ارسال پیام‌های ویدئویی، بازی و کنترل کردن دیگر تجهیزات الکترونیک برخوردار است.

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

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

 

 

ربات Yume Neko، نام این ربات به مفهوم گربه رویایی است و از توانایی حرکت کردن، دراز کشیدن و واکنش نشان دادن نسبت به نوازش برخوردار است. این گربه رباتیک که به شکل‌نژاد گربه‌های جنگلی نروژی ساخته شده از حسگرهای متعددی در سرتاسر بدن برخوردار بوده و با کمک میکروفونی کوچک نسبت به صداها واکنش نشان می‌دهد.

ربات E.M.A، این ربات احساساتی ارتفاعی برابر 38 سانتیمتر داشته و با برخورداری از اتصالات قوی در پاهایش از توانایی‌های حرکتی بالایی برخوردار است. این ربات می‌تواند آواز بخواند، با کاربر خوش و بش کند و اجسام را جا به جا کند.

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

ربات Tweenbots، این ربات کوچک و معصوم به منظور انجام مطالعه‌ای درباره تعامل انسان‌ها با ربات‌ها ابداع شده بود و برای نمایش دادن چهره‌ای دوستانه بر روی صورت آن لبخندی کشیده شده و ربات پرچمی کوچک را با پیام کمک کنید حمل می‌کرد.

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

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

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

 

منبع: نشریه ان بی سی

برگرفته از مهر

+ نوشته شده در  چهارشنبه یازدهم اسفند 1389ساعت 20:12  توسط فرزاد  | 

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

چه برنامه ای مورد نیاز است؟
برنامه µTorrent (بخوانید میکرو تورنت) معروف ترین برنامه برای دانلود تورنت است. دانلودش کنید و نصبش کنید تا بریم مرحله بعد . این برنامه امکان آپلود و دانلود از شبکه تورنت رو براتون فراهم میکند. در این شبکه ، آپلود به معنای ارسال فایل به دیگران و دانلود به معنای دریافت فایل از دیگران است.

فایل با پسوند .torrent چیست؟
وقتی شما در سایت هایی مانند  thepiratebay.org دنبال یک فیلم یا برنامه میگردین، نهایتا یک فایل با پسوند .torrent به شما میدهد که حجم خیلی کمی دارد. مثلا 50 کیلوبایت است. این فایل شامل اطلاعاتی است که برنامه ی utorrent برای دانلود کردن فیلم موردنظر شما لازم دارد.
 چگونه دانلود کنیم ؟ روال دانلود با جستجوی فایل موردنظرتان شروع میشه. برای اینکار باید بروید توی یکی از سایت هایی که فایل های تورنت را معرفی میکنند.  در سایت  torrentz.com دنبال فایل های موردنظرتون بگردید. مثلا من میکی موس 2010 را جستجو کردم.

http://uploadpress.files.wordpress.com/2010/12/torrentz-1.png

حالا در جدولی که براتون میاره، نشون میده که این فایل چند بار روی شبکه تورنت به اشتراک گذاشته شده و یکسری اطلاعات دیگه هم در موردش میده. به اولین لینک اصلی - طبق تصویر بالا - دقت کنید. جلوش نوشته 6 روز پیش . یعنی این فایل 6 روز پیش به شبکه تورنت اضافه شده و در سمت راست تر حجم این فایل ذکر شده. اون عدد سبز هم که در ستون سمت راستش میبینید تعداد seed ها هستند، کسانی  که این فایل رو به اشتراک گذاشته اند .توجه کنید که اگر این تعداد کم باشه ، ممکنه نتونید فایل اصلی رو دانلود کنید. اما اگر بالای 20 باشه دیگه خوبه. حالا روی اولین لینک اصلی کلیک کنید. تا وارد صفحه دوم بشین:

http://uploadpress.files.wordpress.com/2010/12/torrentz-11.png
در اینجا یکسری سایت رو به شما معرفی میکند. این سایت ها، لینک تورنتی رو که در صفحه قبل روش کلیک کردین، دارن. فرقی نمی کنه که فایل تورنت رو از کدامیک از سایت های ارائه شده بگیرید. چون همون یک چیز هستند. پس کافیه روی یکی از این لینک ها کلیک کنید. مثلا روی alivetorrents.com کلیک کنید. حالا شما وارد این سایت میشین و باید دنبال لینکی تورنت بگردید که عنوانش هم معمولا هست Download This Torrent . خوب حالا فایل کوچولویی به شما داده میشه . فایل رو باید با برنامه ی میکروتورنت که نصب کردید باز کنید. به محض بازکردن فایل با برنامه ی میکروتورنت، محتویات فایل اصلی به شما نشون داده میشه و میتونید دانلود فایل اصلی رو شروع کنید. 

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

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

- در شبکه تورنت سرعت دانلود خیلی بهتر از شبکه های اشتراک گذاری دیگری مانند e-mule است و شما کمتر در صف انتظار دانلود قرار میگیرد. در شبکه ای-میول معمولا شما برای دانلود هر فایل چند دقیقه و یا چند ساعت در صف انتظار قرار میگیرید و دانلود پس از اینکه نوبت شما رسید شروع میشه. اما در شبکه تورنت این اتفاق به ندرت می افتد.

یک منبع برای دانلود سریال های خارجی و فیلم های مستند از تورنت:
Torrent.persianblog.ir

+ نوشته شده در  یکشنبه سوم بهمن 1389ساعت 8:39  توسط فرزاد  | 

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

1.معرفی

شمار زیادی از مدلهای مهندسی و الگوریتمهایی که برای حل مسائل پیچیده به کار میرود بر اساس کنترل و مرکزگرایی بنا شده اند.برخی از سیستمهای طبیعی (کلونی های حشرات اجتماعی) به ما یاد میدهند که یک سری ارگانیسمهای ساده ی خارجی قابلیت تولید سیستمهایی را دارند که به کمک بر هم کنشهای پویا قابلیت انجام اعمال بسیار پیچیده را دارند.
گروه زنبورها به خاطر استقلال داخلی کلونی و عملکردهای توزیع شده و سیستم درون سازمانی یکی از بهترین کلونی ها برای توضیح این مسئله شناحته شده است.
در سالهای اخیر محققان برای تولید سیستمهای جدید مصنوعی (در حیطه ی هوش مصنوعی) شروع به تحقیق درباره ی طرز رفتار حشرات اجتماعی کرده اند.
BCO ( Bee Colony Optimization) که مسیر جدیدی را در هوش جمعی بررسی میکند در این مقاله بررسی شده است.هدف اصلی این مقاله بررسی این امکان است که به کمک سیستم مصنوعی زنبورها بتوان قدمی را در پیدا کردن راه حلهایی جامع برای حل مسائلی که با عدم قطعیت مواجه هستند برداشت.
ادامه ی مقاله در قسمتهای دوم و سوم آمده است.قسمت دوم به توضیح BCO میپردازد در حالیکه قسمت سوم به مطالعه ی موضوعی مربوط به مسئله Ride-Matching میپردازد.

.The Bee Colony Optimization : The New Computational Paradigm2

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

2.1 : Bees In Nature

سیستم سازمانی زنبورها بر اساس یک سری قوائد ساده ی خارجی حشرات بنا شده است.با اینکه نژادهای بسیاری از حشرات مختلف بر روی کره ی زمین موجود هستند و همین باعث تفاوتهایی در الگوی رفتاری آنها میشود , ولی با اینحال این سری حشرات اجتماعی را میتوان دارای قابلیت حل مسائل پیچیده دانست.بهترین مثال برای این حالت روند تولید نکتار (شهد) محسوب میشود که در نوع خود یک فرایند ساماندهی شده ی پیشرفته محسوب میشود.هر زنبور ترجیح میدهد که راه قبلی زنبور هم کندوی خود را دنبال کند تا اینکه خود به دنبال گل جدید بگردد.
هر کندوی زنبور عسل دارای مکانی معروف به سالن رقص است که در آنجا زنبورها با انجام حرکتی خاص , هم کندوییهای خود را راضی میکنند تا راه آنها را برای رسیدن به گلها برگزینند.اگر یک زنبور تصمیم بگیرد که به دنبال نکتار برود , با انتخاب زنبور هم کندوی رقاص خود , راه قبلی را دنبال میکند تا به گل برسد.با رسیدن زنبور به گلها و جمع آوری شهد قادر به انجام کارهای زیر است :
الف : منبع غذا را رها کند و دوباره به دنبال زنبور رقصانی بگردد تا بتواند منبعی جدید پیدا کند.
ب : خود به دنبال منابع غذایی جدید بگردد.
ج : در کندو اقدام به رقصیدن کرده و زنبورهای جدیدی را به دنبال خود بکشاند.
بر اساس احتمالات اندازه گیری شده , زنبور اقدام به انجام یکی از حالات بالا میکند .در مکان رقص , زنبورها اقدام به پیشنهاد مکانهای مربوط به جمع آوری نکتار به دیگران میکنند.مکانیزم انتخاب یک زنبور توسط زنبوری دیگر هنوز شناخته شده نیست ولی تا به امروز روشن شده است که این امر بیشتر مربوط به کیفیت نکتار پیدا شده توسط زنبور رقاص است.
لوسیچ و تدوروویچ اولین کسانی بودند که از رویه های پایه و ساده ی زنبوری برای حل کردن مسائل ترکیبی بهینه سازی استفاده کردند.آنها سیستم زنبوری (BS) را معرفی کردند و از آن برای حل مساله ی معروف Travelling Salesman استفاده کردند.در ادامه به استفاده های BCO در حل مسائل پیشرفته اشاره خواهیم کرد.
در کلونی مصنوعی طراحی شده توسط ما شباهتها و تفاوتهایی با کلونهای واقعی زنبورها در طبیعت وجود دارد.در ادامه به معرفی FBS (Fuzzy Bee System) میپردازیم که قادر به حل مسائل ترکیبی *طرح شده توسط انسانها* است.به کمک FBS , Agent ها در ارتباطات با همدیگر از قوانین تقریبی دلیلگرایی و منطق Fuzzy استفاده میکنند.

2.2 : The Bee Colony Optimization Metaheuristic
در BCO , مامورهایی که ما به آنها "زنبور مصنوعی" میگوییم با همدیگر اجتماع میکنند تا بتوانند قادر به حل مسائل مشکلتر باشند.تمامی زنبورهای مصنوعی در ابتدای فرایند جستجو , در کندوی اصلی قرار دارند.در فرایند جستجو نیز , زنبورهای مصنوعی به طور کاملا مستقیم با یکدیگر ارتباط برقرار میکنند.هر زنبور مصنعوی یک سری حرکات محلی خاص انجام داده و به کمک آنها قادر خواهد بود تا راه حلی را بری مشکل فعلی خود پیدا کند.
این زنبورها تک تک راه حلهای کمکی و زیرپایه ایی را ارائه میدهند تا در آخر با ادغام این راه حلها , راه حل اصلی برای حل مسئله ی ترکیبی به دست بیاید.
روند جستجو از تکرارهای پشت سر هم تشکیل شده است.اولین تکرار زمانی پایان میابد که اولین زنبور راه حل زیر پایه ی خود را برای حل مسئله ی اصلی ارائه دهد.
بهترین راه حل زیرپایه در خلال اولین تکرار انتخاب شده و پس از آن , تکرار دوم شروع خواهد شد.در تکرار دوم , زنبورهای مصنوعی شروع به پیدا کردن راه حلی جدید برای مسئله ی زیر پایه میکنند و...
در پایان هر تکرار حداقل یک و یا چند راه حل ارائه شده وحود دارد , که آنالیست مقدار همگی آنها را مشخصی میکند.
به هنگام حرکت در فضا , زنبورهای مصنوعی ما یکی از دو حرکت "حرکت به سمت جلو" و یا "حرکت به سمت عقب" را انجام میدهند.
به هنگام "حرکت به سمت جلو" زنبورها راه و روشهای جدیدی را برای حل مسئله پیدا میکنند.آنها اینکار را به کمک یک سری جستجوهای شخصی و اطلاعات بدست آمده ی گذشته انجام میدهند.
بعد از آن , زنبورها عمل "حرکت به سمت عقب" را انجام میدهند که همان برگشتن به کندوی اصلی است.در کندو همگی زنبورها در یک فرایند "تصمیم گیری" شرکت میکنند.ما در نظر میگیریم که هر زنبوری قابلیت درک و دریافت اطلاعات زنبورهای دیگر را بر اساس کیفیت دارد.به کمک این روش , زنبورها این قابلیت را دارند که با استفاده از اطلاعات دیگران , راههای بهتر حل مسئله را پیدا کنند.
براساس اطلاعات جدیدی که در مورد کیفیت راه حل به دست می آید , زنبور میتواند تصمیم بگیرد که :
الف) منبع راه حل خود را رها کرده و در سالن رقص به دنبال کسی بگردد که منبعی با کیفیت بیشتر در اختیار دارد.
ب) بدون اینکه کسی را جذب کند , دوباره به سراغ منبع راه حل خود برود.
ج)در سالن رقص با انجام حرکاتی خاص (رقصیدن) سعی در جمع کردن زنبورهای دیگر به دور خود داشته باشد.
بر اساس میزان کیفیتی که زنبور از منبع خود به دست می آورد , فاکتوری به نام "وفاداری" در وی بوجود می آید که در واقع همان وفاداری به راهی است که خود زنبور انتخاب کرده است.بار دومی که زنبورهای مصنوعی برای پیدا کدن راه حل مسئله به حرکت در می آیند , اینبار سعی در پیدا کردن راههای جدیدی برای حل مسوله دارند و بعد از اینکار دوباره عمل "حرکت به سمت عقب" را انجام داده و به کندو برمیگردند و دوباره در کندو در بحثی که در مورد پیدا کردن بهترین راه شکل گرفته , شرکت میکنند.
این روند زمانی پایان میابد که یک راه حل تقریبا کامل برای مسئله پیدا شود.
مثل برنامه نویسی پویا , BCO نیز میتواند مسائل ترکیبی بهینه سازی را در هر مرحله (تکرار) به میزانی حل کند.هر کدام از مراحل مشخص شده دارای یک مقدار بهینه سازی خاص است.بگذارین اشاره کنیم که :
ST={st1 + st2 + … + stm}
همانطور که میبینید هر Stage (مرحله) شامل یک سری مراحل از قبل انتخاب شده است.در ادامه میبینید که به کمک کمیت B ما تعدا زنبورهایی را که در این فرایند شرکت میکنند را مشخص میکنیم و به کمک I , تعداد کل مراحل (تکرار) هایی را که انجام میپذیرند را نشان میدهیم.مجموعه ی تمامی راه حلهای زیرپایه را نیز به کمک Sj نشان میدهیم که در آن j دارای مقادیر 1 تا m میباشد.

در زیر کد پیش ساخت BCO را مشاهده میکنید :
****************************
الف) شروع : مشخص کردن تعداد زنبورها (B) و تعداد تکرارها (I). مشخص نمودن تعداد مراحل (ST).پیدا کردن هر گونه راه حل قابل حل x از مسئله.
این راه حل در واقع بهترین و اولین راه حل انتخاب توسط ما خواهد بود.

ب) Set i:=1 , Until i=I و تکرار کن مراحل بعدی را

ج) Set j:=m , Until j=m و تکرار کن مراحل بعدی را

حرکت به سمت جلو : رفت : به زنبورها این امکان را میدهد که از کندو بیرون آمده و قابلیت انتخاب B راه حل را از مجموعه ی راه حلهای زیرپایه Sj در STj داشته باشند.

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

Set j:=j+1

د)اگر بهترین راه حلی (Xi) که در I امین تکرار بدست آمد , بهتر از بهترین راه اخیر بدست آمده بود , آنگاه فاکتور بهترین راه حل را به روز میکنیم : X:=xi

ه) 1Set i:=i+
****************************

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

2.3 : The Fuzzy Bee System

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

الف) راه حل زیرپایه ی بعدی که باید به راه حل اصلی اضافه شود چیست ؟
ب) آیا باید راه حل زیرپایه ی فعلی را رها کرد و به دنبال راه حل زیرپایه ی جدیدی رفت ؟
ج)آیا باید به گسترش راه حل زیرپایه ی فعلی ادامه داد ولی فعلا بدنبال دیگر زنبورها نرفت ؟

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

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

2.3.1 : Calculating The Solution Component Attractiveness and Choice Of The Next Solution Component To Be Added To The Partial Solution

الگوریتم منطق تقریبی برای حل کردن مسئله ی جذابیت , از قوانین زیر تشکیل شده است :

اگر مقادیر بدست آمده از راه حل زیر پایه خیلی خوب باشد
آنگاه راه حل بدست آمده خیلی جذاب است.

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

برای اضافه کردن راه حلهای جدید به راه حل اصلی , زنبورها از نوعی انتخاب به نام Roulette Wheel Selection استفاده میکنند.

Bee's Partial Solutions Coparison Mechanism

در توصیف مکانیزم مقایسه ی راه حلهای زیر پایه ی زنبور , ما موضوع "بدی راه حل زیرپایه" را معرفی میکنیم که برابر است با :

کمیتهای بالا به صورت زیر تعریف میشوند :
: بدی راه حل زیرپایه به وسیله ی k امین زنبور
: مقادیر تابع مفعولی از راه حل زیرپایه ایی که به وسیله ی ن امین زنبور کشف شده
: مقادیر تابع مفعولی از بهترین راه حل زیرپایه ی کشف شده از ابتدای روند جستجو تاکنون
: مقادیر تابع مفعولی از بدترین راه حل زیرپایه ی کشف شده از ابتدای روند جستجو تاکنون

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

2.3.3 : Bee's Decision About Recruiting The Nestmates

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

2.3.4 : Calculating The Number Of Bees Changing The Path

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

اگر طول راه اعلان شده کوتاه باشد و تعداد زنبورهای اعلان کننده کم باشد
آنگاه جذابیت راه حل زیرپایه متوسط است.

جذابیت محاسبه شده ی راه در این روش میتواند مقادیری بین 0 و 1 را اختیار کند.هر چقدر مقدار محاسبه زیادتر باشد , راه حل اعلان شده جذابیت بیشتری دارد.زنبورها کم و بیش به راه اولیه و قدیمی خود وفادارند , همزمان راه های اعلان شده ی جدید جذابیت کم و بیشی برای آنها خواهد داشت.
بعنوان مثال بیایید دو راه فرضی را و بنامیم.ما با تعداد زنبورهایی را که راه را ترک کرده اند و به جفتهایی ملحق شده اند که در طول راه پرواز میکنند , را مشخص میکنیم.
الگوریتم منطق تقریبی برای محاسبه ی تعداد زنبورهای جابجا شده شامل قوانینی به فرم زیر است :
اگر وفاداری زنبورها به راه پایین باشد و جذابیت راه بالا باشد
آنگاه تعداد زنبورهای جابجا شده از راه به راه بعدی بالا است.
در این روش تعداد زنبورهایی که در طول یک مسیر خاص پرواز میکنند , قبل از رفت بعدی تغییر داده شده.با استفاده از دانش اجتماعی و به اشتراک گذاری اطلاعات , زنبورها بر مسیرهای تضمین شده ی جستجو تمرکز میکنند , و مسیرهای کمتر تضمین شده را کم کم ترک میکنند.

4 : Case Study : The Ride-Matching Problem

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

الف) ظرفیت وسیله ی نقلیه (دو , سه و یا چهار نفر).
ب) روزهایی از هفته که هر فرد برای شرکت در RS حاضر است.
ج) مبدا سفر برای هر روز هفته.
د) مسافت سفر برای هر روز هفته.
ه)مقصد مورد نظر و/یا زمان رسیدن برای هر روز هفته

مسئله ی RS که در این مقاله به آن اشاره شده میتواند به روش زیر تعریف شود :
مسیریابی و زمان بندی وسایل نقلیه و مسافران برای تمامی هفته در "بهترین روش ممکن".
موارد زیر توابع پتانسیل مفعولی هستند :

الف) کمینه کردن کل مسافتی که توسط تمامی اعضای شرکت کننده پیموده میشود
ب) کمینه کردن وقفه ی کل
ج) برابر کردن نسبی بهره برداری از وسایل نقلیه

ما وقتی از مسئله ی بهینه سازی ترکیبی معین استفاده میکنیم که مقصد در نظر گرفته شده یا زمان رسیدن هر دو ثابت هستند (برای مثال "من میخواهم راس ساعت 8 صبح سوار شوم") , به بیان دیگر در بسیاری از حالتهای زندگی واقعی مقصد در نظر گرفته شده و/یا زمان رسیدن , از منطق فازی طبعیت میکند (برای مثال "من میخواهم حدود ساعت 8 صبح سوار شوم") , در اینحالت با مسئله ی RS باید به عنوان مسئله ی بهینه سازی ترکیبی *دارای عدم قطعیت* رفتار کرد.

3.1 : Solving The Ride-Matching Problem By The Fuzzy Bee System

بیایید هر مسافری که در RS شرکت کرده است را بعنوان یک گره در نظر بگیریم (شکل 2).ما مسئله مان را به مراحلی تجزیه میکنیم.اولین سرنشین ماشین (راننده) مرحله ی اول معرفی میشود , دومین مسافری که به RS ملحق میشود (مرحله ی دوم) و...
در طی رفت زنبور تعداد معینی از گره ها را بازدید خواهد کرد , یک راه حل زیر پایه ایجاد میکند و پس از آن به کندو (یعنی گره ی O) برمیگردد.
در کندو زنبور در روند تصمیم گیری شرکت خواهد کرد.زنبورها تمام راه حلهای زیر پایه ی تولید شده را مقایسه میکنند.بر مبنای کیفیت راه حلهای زیرپایه ی تولید شده , هر زنبور تصمیم میگیرد که آیا مسیر تولید شده را ترک ند و زنبور سرگردان شود , یا به پرواز در طول مسیر کشف شده بدون گرفتن همراه ادامه دهد , یا برقصد و بدینگونه همراهی بگیرد قبل از آنکه به مسیر کشف شده بازگردد.
بسته به کیفیت راه حل زیر پایه ی تولید شده , هر زنبور سطح معینی از وفاداری را به راه قبلی کشف شده دارد.بعنوان مثال زنبورهای B1 و B2 و B3 در فرایند تصمیم گیری شرکت میکنند.پس از مقایسه ی تمام راه حلهای زیرپایه ی تولید شده , زنبور B1 تصمیم میگیرد راه فعلی را ترک کرده و به زنبور B2 ملحق شود.
زنبورهای B1 و B2 با هم در طول مسیری که به وسیله ی زنبور B2 تولید شده , پرواز میکنند.
هنگامی که به انتهای مسیر رسیدند آنها آزاد هستند تا تصمیمی فردی درباره ی گره ی بعدی که باید بازدید شود بگیرند.
زنبور B3 به پرواز در طول مسیر بدون گرفتن همراه ادامه میدهد(شکل 3).در این روش زنبورها دوباره عمل رفت را انجام میدهند.در طی دومین رفت زنبورها تعداد کمی گره ی بیشتر (نسبت به اولین بار) را ملاقات میکنند , راه حلهای زیرپایه ی تولید شده ی قبلی را توسعه میدهند و پس از آن دوباره عمل برگشت را اجرا میکنند و به کندو (گره ی O) بازمیگردند.
در کندو دوباره زنبورها در فرایند تصمیم گیری شرکت میکنند , تصمیم میگیرند , سومین رفت را اجرا میکنند و ...
تکرار هنگامی تمام میشود که زنبورها تمامی گره ها را بازدید کرده باشند.هنگام انتخاب گره ی بعدی که باید در رفت بعدی بازدید شود , زنبور گره ی خاصی را بعنوان "کمتر جذاب" , "جذاب" و "خیلی جذاب" در نظر میگیرد که وابسته به نزدیکی مکانی یا زمانی بین دو درخواست از دو مسافر است.
ما این نزدیکی ها را "فاصله ی مکانی در مبدا" , "فاصله ی مکانی در مسافت" و "فاصله ی زمانی در ورود به مقصد" مینامیم.
ما در نظر میگیریم که زنبور مصنوعی میتواند فاصله ی خاصی بین دو گره را با عنوانهای "کوتاه" , "متوسط" و "طولانی" شناسانی کند.
الگوریتم منطق تقریبی جذابیت گره را با قوانین زیر تعیین میکند :

اگر فاصله ی مکانی در مبدا کوتاه باشد و فاصله ی مکانی در مسافت کوتاه باشد و فاصله ی زمانی ورود کوتاه باشد
آنگاه جذابیت گره بالا است.

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

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

3.2 : Numerical Experiment

ما مدل پیشنهادی را برای RS شهر Trani (شهر کوچک و زیبایی در جنوب ایتالیا) تا شهر Bari (مرکز منطقه ی Puglia) امتحان کردیم.ما اطلاعات مربوط به 97 مسافر که خواستار شرکت در پروژه ی RideSharing بودند را جمع آوری کرده و برای سادگی مسئله ظرفیت هر اتومبیل را چهار نفر در نظر گرفیم.در اینحالت الگوریتم 24*4 = 96 نفر از 97 نفر را برای ساختن بهترین راه کنار میگذارد.ما از کندویی با 15 زنبور , که سریعا (و یکبار) کندو را ترک میکنند استفاده کردیم.زنبورها فقط 6 مسیر غذایابی را پیدا کردند , و دیگر مسیرها رها شدند.

+ نوشته شده در  چهارشنبه هشتم دی 1389ساعت 13:48  توسط فرزاد  | 

هوش دسته جمعی، زیر شاخه ای از هوش مصنوعی است که بر پایه رفتار جمعی سیستم های غیر متمرکز و خود سازمان ده بنا شده است. این اصطلاح را برای اولین بار Gerardo Beni و Joing Wang در سال 1989 در زمینه ی سیستم های رباتی سلولی به کار بردند.

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

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

روش‌های هوش ازدحامی
از موارد روش‌های فرااکتشافی می‌‌توان به موارد زیر اشاره کرد
روش بهینه‌سازی گروه مورچه‌ها یا ACO
الگوریتم کوچ پرستوها یا روش بهینه‌سازی ازدحام ذرات PSO
روش شبیه‌سازی کوره‌ای
روش جستجوی مبتنی بر منع
روش محاسبات تکاملی

الگوریتم مورچه ها

روش ACO، نوعی روش فرااکتشافی است که برای یافتن راه‌حل‌های تقریبی برای مسائل بهینه‌سازی ترکیبیاتی مناسب است. روش ACO، مورچه‌های مصنوعی به‌وسیله‌ٔ حرکت بر روی گرافِ مساله و با باقی گذاشتن نشانه‌هایی بر روی گراف، همچون مورچه‌های واقعی که در مسیر حرکت خود نشانه‌های باقی می‌‌گذارند، باعث می‌شوند که مورچه‌های مصنوعی بعدی بتوانند راه‌حل‌های بهتری را برای مساله فراهم نمایند.

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

جذابیت هوش ازدحامی در فناوری اطلاعات

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

مراحل طراحی یک سامانه

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

کاربردهای فعلی و آتی

مسیریابی در شبکه.
سامانه‌های توزیع‌شده‌ٔ رایانامهای.
اختصاص منابع به شکل بهینه.
زمان‌بندی وظایف.
بهینه‌سازی ترکیبیاتی.
روباتیک:
بررسی سیستم‌های لوله‌کشی.
تعمیرات و نگهداری ماهواره‌ها و کشتی‌ها.
روبوت‌های خود-مونتاژ.

+ نوشته شده در  یکشنبه بیست و یکم آذر 1389ساعت 11:43  توسط فرزاد  | 

سازمان سنجش آموزش کشور دفترچه راهنمای ثبت نام در آزمون کارشناسی ارشد سال 1389 را منتشر کرد. به گزارش خبرنگار مهر، داوطلبان شرکت در آزمون ورودی تحصیلات تکمیلی سال 89 می توانند با مراجعه به سایت سازمان سنجش آموزش کشور به نشانی www.sanjesh.org به دفترچه راهنمای این آزمون دسترسی یابند. شرایط عمومی و اختصاصی ثبت نام و شرکت در آزمون، شرایط و ضوابط ثبت نام اتباع خارجی در آزمون، سهمیه ها و تسهیلات و امتیاز فارغ التحصیلان رتبه اول کارشناسی دانشگاهها از جمله مواردی است که در دفترچه راهنما برای داوطلبان شرکت در کنکور کارشناسی ارشد 89 درج شده است. منبع:خبرگزاري مهر
+ نوشته شده در  یکشنبه نهم آبان 1389ساعت 9:32  توسط فرزاد  | 

) پردازنده
2) حافظه
3) دستگاه های ورودی و خروجی
4) داده : مستقل از فیزیک و جرم است.قائم به ذات نیست.داده روی کابل IDE حتی روی شبکه نگهداری شود مهم نیست.مهم این است که سیستم عامل از مکانی که خودش اطلاع دارد ،داده را بردارد و مورد استفاده قرار دهد.
سیستم چند پردازشی:یعنی اینکه چندین پردازنده در اختیار داریم و هر پردازنده پردازش خاصی را انجام می دهد.معمولا در سیستم های چند پردازشی یک پردازشگر به عنوان Master و بقیه ی پردازشگرها به عنوان Slave عمل می کنند.
چند وظیفه ای:در یک بازه ی زمانی چند پروسه انجام شود.اگر چندین پردازنده داشته باشیم ،می توانیم چندین Task را مدیریت کنیم. در صورتی که یک پردازنده داشته باشیم از Time Sharing استفاده می کنیم.
اشتراک زمانی یا تسهیم زمانی:یعنی ارائه یک منبع در زمان های متفاوت به متقاضیان متقابل. اشتراک زمانی برای استفاده CPU یا پردازشگر بسیار مهم است.(در شرایط مطلوب با الگوریتم مطلوب) اما اینکار برای به اشتراک گذاشتن منبعی مثل Printer بین چندین کاربر یا چندین پروسه غیر معقول می باشد.
نکته:به کارگیری چند کاره بسیار مهم است . چون امکان دارد یک پروسه یا یک برنامه خاص دارای چندین Task باشد و این Task ها نتوانند به صورت همزمان یا با اشتراک زمانی خدمات را بگیرند.
پردازش:به برنامه های در حال اجرا که قسمتی از ان در حافظه ی اصلی قرار گرفته باشد ،پردازش می گویند.
حالت هایی که یک پردازشگر می تواند به خود بگیرد:

حالت Running :

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

حالت Ready :

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

حالت Despatch :

یعنی انتخاب پروسه از حالت Ready به Running . این عمل توسط سخت افزاری به نام Despatcher انجام می شود.این پروسه براساس الگوریتم هایی که کار می کند پروسه را از حالت Ready به Running می برد.

Time Run Out :

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

حالت Blocked :

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

حالت Suspend Ready :

زمانی وجود دارد که پروسه ی در حال اجرا هیچ مشکلی اعم از مشکل زمانی و منبع نداشته باشد و اینکه سیستم عامل نیاز بداند که پروسه را تعلیق کند.این عمل زمانی انجام می شود که پروسه ای در حالت Running باشد که این پروسه براساس الگوریتم خاصی اجرا می شود و تمام منابع سیستم در اختیار این پروسه قرار دارد و پروسه های خیلی کوچکتر از این پروسه در صف Ready باشند و نیاز به منبع های در اختیار پروسه ی در حالت Running داشته باشد. اگر پروسه به Loop افتاده باشد سیستم عامل پروسه را به Suspend می فرستد.

حالت Suspend Blocked :

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

جلسه دوم:

پروسه ها به دو گونه هستند:
1) پروسه هایی که مقید به ورودی و خروجی هستند.
2) پروسه هایی که مقید به CPU هستند.
پروسه هایی که مقید به CPU هستند؛به این پروسه ها، پروسه های Comfort یا مطلوب می گویند. به علت اینکه این پروسه ها با پردازنده در ارتباط هستند و سرعت انها بالا است و جهت گیری که سیستم عامل ها در مورد این پروسه ها دارند، این است که کار این پروسه ها را سریعتر انجام می دهند.به این معنی که منابع کلیدی را سریع تر ازاد می کنند و در اختیار این پروسه ها قرار می دهند و این به این علت است که CPU بتواند سریع تر در اختیار پروسه های دیگر قرار گیرد.

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

1) رابط کاربر:

در سیستم عامل های قدیمی رابط کاربر به صورت Command بود.مثلا در سیستم عامل DOS ، ما برای ارتباط با کامپیوتر از Prompt استفاده می کردیم . در سیستم عامل های جدید این ارتقا پیدا کرد و تبدیل شد به GUI .

2) به اشتراک گذاشتن سخت افزار:

این خصوصیت به صورت اجباری است.چون نمی توان سخت افزاری مانند CPU را به یک کاربر اختصاص داد و به کاربر دیگر اختصاص نداد.

3) اجازه به اشتراک گذاشتن داده ها بین کاربران:

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

4) زمان بندی منابع برای تخصیص به کاربران:

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

5) تسهیل در ورودی و خروجی:

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

6) توانایی شناخت خطاها در سیستم عامل باید وجود داشته باشد:

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

7) سیستم عامل باید حسابدار باشد:

سیستم عامل بتواند منابع در دسترس پروسه ها را حسابرسی کند و مشخص کند که کدام پروسه از کدام منبع چند بار استفاده کرده است.

ساختار PCB : ( Process Control Block) :

سیستم عامل اطلاعات مربوط به پروسه ها را در یک ساختار به نام PCB نگهداری می کند.این اطلاعات مربوط به پروسه ها در سیستم عامل ها متفاوت است و در طول حیات پروسه ها این اطلاعات تغییر می کند.

اطلاعاتی که در مورد پروسه ها باید داشته باشیم:

1) نام پروسه :

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

2) اولویت پروسه( Priority ) :

مفهوم ان به غیر از حق تقدم است.

3) وضعیت پروسه (وضعیت سخت افزاری) :

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

4) امار و اطلاعات و زمانبندی برای استفاده منابع :

این مشخص می کند از کدام منبع چند بار استفاده شده است یا CPU چند بار به پروسه اختصاص داده شده است و پروسه چقدر برای به دست اوردن منابع انتظار کشیده است.

5) مدیریت و وضعیت حافظه :

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

6) وضعیت ورودی و خروجی :

کدام دستگاه مورد استفاده پروسه قرار گرفته است .پروسه از کدام پورت ورودی و خروجی استفاده کرده است.

7) اطلاعات مربوط به مدیریت حافظه و فایل:

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

8) اطلاعات مربوط به حسابداری و حسابرسی :

مشخص می کند پروسه از کدام منبع به چه میزان استفاده کرده است وچه میزان نیاز به منابع برای اجرا دارد.

جلسه سوم:

زمانبندی :

زمانبندی به مجموعه ای از مکانیزم ها و سیاست ها گفته می شود که یک سیستم عامل برای اجرای فرایندها به کار می برد.
زمانبند ماجولی از سیستم عامل است که انتخاب می کند کدام فرایند اجرا شود.
سه نوع زمانبند داریم:
1) Long Term Schduling
2) Medium Term Schduling
3) Short Term Schduling
پروسه های Bach به پروسه هایی گفته می شود که با کنترل و Data همراه هستند . این پروسه ها عموما منابع سیستم را اشغال می کنند.

زمانبند بلند مدت:

برای انتخاب پروسه های Bach از صف پروسه های Bach به حالت Ready توسط سیستم عامل استفاده می شود.

زمانبند میان مدت:

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

زمانبند کوتاه مدت:

زمانبندی است که پروسه هایی که در صف Ready هستند را برای اجرا انتخاب می کند.این پروسه ها شامل پروسه های Bach ،پروسه های تعاملی و پروسه هایی که از سطح Suspend وارد Ready شده اند هستند.
Suspend Queue :پروسه هایی که در صف Suspend Queue هستند پروسه هایی هستند که سیستم عامل برای انجام رویدادی خاص انها را تعلیق کرده است و این پروسه ها منتظر اجازه ی سیستم عامل برای اینکه از حالت تعلیق بیرون بیایند هستند.این پروسه ها از حافظه خارج نمی شوند.
پروسه های Interactive همان پروسه هایی هستند که ما انتظار داریم بعد از دادن Comment به سیستم، بلافاصله پاسخ ان را در Terminal مشاهده کنیم.

معیار های کمی زمانبندی:

1) میزان بکارگیری پردازنده( Processor Utilization )
2) توان عملیاتی( Trough put )
3) زمان انتظار( Waiting Time )
4) زمان پاسخگویی( Response Time )
5) Turn Over Time

میزان بکارگیری پردازنده:

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

Trough put :

تعداد Job های تکمیل شده در واحد زمان را توان عملیاتی می گویند.در این عمل اگر Job کوچکتر باشد ،توان عملیاتی بالا می رود.در Trough put نتیجه این است که به پروسه های کوچکتر زودتر سرویس دهی شود.این معیار باید در یک بازه ی زمانی مناسب اندازه گیری شود.این بازه ی زمانی اگر بیشتر باشد، توان عملیاتی به دست امده دقیقتر است.

Turn Over Time :

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

Waiting Time :

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

Response Time :

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

معیارهای کیفی زمانبندی:

1) Fairness (منصفانه) :

ایا الگوریتم ما منصفانه است یا خیر ؟
پروسه توسط الگوریتم به صورت منصفانه انتخاب می شود ؟

2) قابلیت پیش بینی :

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

3) قابلیت تکرار :

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

الگوریتم های زمانبندی :

1) First Come First Serviced :

یعنی پروسه ای که اول وارد صف می شود تا انتها اجرا شود و وقتی که اجرایش تمام شد پروسه ی بعدی اجرا شود. یک الگوریتم انحصاری است.یعنی پروسه ای که وارد CPU می شود باید اجرا شود.( Non Primitive )
زمان پاسخگویی این الگوریتم مناسب نیست.البته برای اولین پروسه خوب است و برای پروسه های بعدی خوب نیست.زمان انتظار زیاد است.الگوریتم FCFS برای پروسه های Bach بهتر است.

2) الگوریتم Priority :

الگوریتمی که مبتنی بر اولویت است.این الگوریتم انحصاری نیست.یعنی Primitive است.اولویت بالاتر باشد اجرا می شود.

3) Shortest Remaining Time Next :

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

4) Shortest Job First :

هر پروسه ای کوچکتر باشد خدمات بگیرد . در این حالت Trough put بالا می رود . چون همه پروسه های کوچک اجرا می شود.
هم چنین ممکن است پروسه های بزرگتر اصلا اجرا نشوند،زیرا پروسه های کوچکتر همواره اجرا می شوند.
ادامه دارد ......
+ نوشته شده در  شنبه یکم آبان 1389ساعت 10:47  توسط فرزاد  | 

) پردازنده
2) حافظه
3) دستگاه های ورودی و خروجی
4) داده : مستقل از فیزیک و جرم است.قائم به ذات نیست.داده روی کابل IDE حتی روی شبکه نگهداری شود مهم نیست.مهم این است که سیستم عامل از مکانی که خودش اطلاع دارد ،داده را بردارد و مورد استفاده قرار دهد.
سیستم چند پردازشی:یعنی اینکه چندین پردازنده در اختیار داریم و هر پردازنده پردازش خاصی را انجام می دهد.معمولا در سیستم های چند پردازشی یک پردازشگر به عنوان Master و بقیه ی پردازشگرها به عنوان Slave عمل می کنند.
چند وظیفه ای:در یک بازه ی زمانی چند پروسه انجام شود.اگر چندین پردازنده داشته باشیم ،می توانیم چندین Task را مدیریت کنیم. در صورتی که یک پردازنده داشته باشیم از Time Sharing استفاده می کنیم.
اشتراک زمانی یا تسهیم زمانی:یعنی ارائه یک منبع در زمان های متفاوت به متقاضیان متقابل. اشتراک زمانی برای استفاده CPU یا پردازشگر بسیار مهم است.(در شرایط مطلوب با الگوریتم مطلوب) اما اینکار برای به اشتراک گذاشتن منبعی مثل Printer بین چندین کاربر یا چندین پروسه غیر معقول می باشد.
نکته:به کارگیری چند کاره بسیار مهم است . چون امکان دارد یک پروسه یا یک برنامه خاص دارای چندین Task باشد و این Task ها نتوانند به صورت همزمان یا با اشتراک زمانی خدمات را بگیرند.
پردازش:به برنامه های در حال اجرا که قسمتی از ان در حافظه ی اصلی قرار گرفته باشد ،پردازش می گویند.
حالت هایی که یک پردازشگر می تواند به خود بگیرد:

حالت Running :

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

حالت Ready :

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

حالت Despatch :

یعنی انتخاب پروسه از حالت Ready به Running . این عمل توسط سخت افزاری به نام Despatcher انجام می شود.این پروسه براساس الگوریتم هایی که کار می کند پروسه را از حالت Ready به Running می برد.

Time Run Out :

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

حالت Blocked :

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

حالت Suspend Ready :

زمانی وجود دارد که پروسه ی در حال اجرا هیچ مشکلی اعم از مشکل زمانی و منبع نداشته باشد و اینکه سیستم عامل نیاز بداند که پروسه را تعلیق کند.این عمل زمانی انجام می شود که پروسه ای در حالت Running باشد که این پروسه براساس الگوریتم خاصی اجرا می شود و تمام منابع سیستم در اختیار این پروسه قرار دارد و پروسه های خیلی کوچکتر از این پروسه در صف Ready باشند و نیاز به منبع های در اختیار پروسه ی در حالت Running داشته باشد. اگر پروسه به Loop افتاده باشد سیستم عامل پروسه را به Suspend می فرستد.

حالت Suspend Blocked :

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

جلسه دوم:

پروسه ها به دو گونه هستند:
1) پروسه هایی که مقید به ورودی و خروجی هستند.
2) پروسه هایی که مقید به CPU هستند.
پروسه هایی که مقید به CPU هستند؛به این پروسه ها، پروسه های Comfort یا مطلوب می گویند. به علت اینکه این پروسه ها با پردازنده در ارتباط هستند و سرعت انها بالا است و جهت گیری که سیستم عامل ها در مورد این پروسه ها دارند، این است که کار این پروسه ها را سریعتر انجام می دهند.به این معنی که منابع کلیدی را سریع تر ازاد می کنند و در اختیار این پروسه ها قرار می دهند و این به این علت است که CPU بتواند سریع تر در اختیار پروسه های دیگر قرار گیرد.

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

1) رابط کاربر:

در سیستم عامل های قدیمی رابط کاربر به صورت Command بود.مثلا در سیستم عامل DOS ، ما برای ارتباط با کامپیوتر از Prompt استفاده می کردیم . در سیستم عامل های جدید این ارتقا پیدا کرد و تبدیل شد به GUI .

2) به اشتراک گذاشتن سخت افزار:

این خصوصیت به صورت اجباری است.چون نمی توان سخت افزاری مانند CPU را به یک کاربر اختصاص داد و به کاربر دیگر اختصاص نداد.

3) اجازه به اشتراک گذاشتن داده ها بین کاربران:

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

4) زمان بندی منابع برای تخصیص به کاربران:

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

5) تسهیل در ورودی و خروجی:

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

6) توانایی شناخت خطاها در سیستم عامل باید وجود داشته باشد:

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

7) سیستم عامل باید حسابدار باشد:

سیستم عامل بتواند منابع در دسترس پروسه ها را حسابرسی کند و مشخص کند که کدام پروسه از کدام منبع چند بار استفاده کرده است.

ساختار PCB : ( Process Control Block) :

سیستم عامل اطلاعات مربوط به پروسه ها را در یک ساختار به نام PCB نگهداری می کند.این اطلاعات مربوط به پروسه ها در سیستم عامل ها متفاوت است و در طول حیات پروسه ها این اطلاعات تغییر می کند.

اطلاعاتی که در مورد پروسه ها باید داشته باشیم:

1) نام پروسه :

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

2) اولویت پروسه( Priority ) :

مفهوم ان به غیر از حق تقدم است.

3) وضعیت پروسه (وضعیت سخت افزاری) :

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

4) امار و اطلاعات و زمانبندی برای استفاده منابع :

این مشخص می کند از کدام منبع چند بار استفاده شده است یا CPU چند بار به پروسه اختصاص داده شده است و پروسه چقدر برای به دست اوردن منابع انتظار کشیده است.

5) مدیریت و وضعیت حافظه :

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

6) وضعیت ورودی و خروجی :

کدام دستگاه مورد استفاده پروسه قرار گرفته است .پروسه از کدام پورت ورودی و خروجی استفاده کرده است.

7) اطلاعات مربوط به مدیریت حافظه و فایل:

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

8) اطلاعات مربوط به حسابداری و حسابرسی :

مشخص می کند پروسه از کدام منبع به چه میزان استفاده کرده است وچه میزان نیاز به منابع برای اجرا دارد.

جلسه سوم:

زمانبندی :

زمانبندی به مجموعه ای از مکانیزم ها و سیاست ها گفته می شود که یک سیستم عامل برای اجرای فرایندها به کار می برد.
زمانبند ماجولی از سیستم عامل است که انتخاب می کند کدام فرایند اجرا شود.
سه نوع زمانبند داریم:
1) Long Term Schduling
2) Medium Term Schduling
3) Short Term Schduling
پروسه های Bach به پروسه هایی گفته می شود که با کنترل و Data همراه هستند . این پروسه ها عموما منابع سیستم را اشغال می کنند.

زمانبند بلند مدت:

برای انتخاب پروسه های Bach از صف پروسه های Bach به حالت Ready توسط سیستم عامل استفاده می شود.

زمانبند میان مدت:

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

زمانبند کوتاه مدت:

زمانبندی است که پروسه هایی که در صف Ready هستند را برای اجرا انتخاب می کند.این پروسه ها شامل پروسه های Bach ،پروسه های تعاملی و پروسه هایی که از سطح Suspend وارد Ready شده اند هستند.
Suspend Queue :پروسه هایی که در صف Suspend Queue هستند پروسه هایی هستند که سیستم عامل برای انجام رویدادی خاص انها را تعلیق کرده است و این پروسه ها منتظر اجازه ی سیستم عامل برای اینکه از حالت تعلیق بیرون بیایند هستند.این پروسه ها از حافظه خارج نمی شوند.
پروسه های Interactive همان پروسه هایی هستند که ما انتظار داریم بعد از دادن Comment به سیستم، بلافاصله پاسخ ان را در Terminal مشاهده کنیم.

معیار های کمی زمانبندی:

1) میزان بکارگیری پردازنده( Processor Utilization )
2) توان عملیاتی( Trough put )
3) زمان انتظار( Waiting Time )
4) زمان پاسخگویی( Response Time )
5) Turn Over Time

میزان بکارگیری پردازنده:

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

Trough put :

تعداد Job های تکمیل شده در واحد زمان را توان عملیاتی می گویند.در این عمل اگر Job کوچکتر باشد ،توان عملیاتی بالا می رود.در Trough put نتیجه این است که به پروسه های کوچکتر زودتر سرویس دهی شود.این معیار باید در یک بازه ی زمانی مناسب اندازه گیری شود.این بازه ی زمانی اگر بیشتر باشد، توان عملیاتی به دست امده دقیقتر است.

Turn Over Time :

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

Waiting Time :

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

Response Time :

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

معیارهای کیفی زمانبندی:

1) Fairness (منصفانه) :

ایا الگوریتم ما منصفانه است یا خیر ؟
پروسه توسط الگوریتم به صورت منصفانه انتخاب می شود ؟

2) قابلیت پیش بینی :

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

3) قابلیت تکرار :

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

الگوریتم های زمانبندی :

1) First Come First Serviced :

یعنی پروسه ای که اول وارد صف می شود تا انتها اجرا شود و وقتی که اجرایش تمام شد پروسه ی بعدی اجرا شود. یک الگوریتم انحصاری است.یعنی پروسه ای که وارد CPU می شود باید اجرا شود.( Non Primitive )
زمان پاسخگویی این الگوریتم مناسب نیست.البته برای اولین پروسه خوب است و برای پروسه های بعدی خوب نیست.زمان انتظار زیاد است.الگوریتم FCFS برای پروسه های Bach بهتر است.

2) الگوریتم Priority :

الگوریتمی که مبتنی بر اولویت است.این الگوریتم انحصاری نیست.یعنی Primitive است.اولویت بالاتر باشد اجرا می شود.

3) Shortest Remaining Time Next :

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

4) Shortest Job First :

هر پروسه ای کوچکتر باشد خدمات بگیرد . در این حالت Trough put بالا می رود . چون همه پروسه های کوچک اجرا می شود.
هم چنین ممکن است پروسه های بزرگتر اصلا اجرا نشوند،زیرا پروسه های کوچکتر همواره اجرا می شوند.
+ نوشته شده در  شنبه یکم آبان 1389ساعت 10:46  توسط فرزاد  | 

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

روش جستجوی*A تلفیقی از روش جستجوی هزینه یکنواخت ( UCS ) و روش جستجوی


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

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

هیوریستیک در روش *A هرینه قابل پرداخت از نقطه فعلی تا نقطه هدف را تخمین می زند. با این توصیف هیوریستیک قابل قبول را چنین تعریف می کنیم : هیوریستیکی قابل قبول ( admissible ) است که هزینه تخمینی آن از نقطه فعلی تا نقطه هدف ، از هزینه واقعی قابل پرداخت از نقطه فعلی تا نقطه هدف کمتر باشد. هیوریستیکی که این شرط را برآورده نکند ، هیوریستیک غیرقابل قبول ( inadmissible ) می نامند.

با توجه به مطالب فوق چنین بیان می کنیم که هزینه هر گره در روش جستجوی *A با استفاده از فرمول زیر محاسبه می شود : F = G + H که در آن F هزینه کل گره ، G هزینه تا گره فعلی و H هزینه تخمینی تا گره هدف را نشان می دهد. در جستجوی *A گره بعدی جهت گسترش گره ای است که کمترین هزینه F را در میان گره های گسترش نیافته دیگر داشته باشد. شبه کد زیر نحوه اجرای الگوریتم *A را نشان می دهد:
 
1. نقطه شروع را به صف fringe اضافه کن
2. مراحل زیر را تکرار کن
     1. گره موجود در سر صف fringe را انتخاب کن.
     2. آن را از صف fringe حذف کرده و فلگ آن را جهت بررسی نکردن دوباره آن ، ست کن
     3. به ازای هر هشت همسایه مربع برداشته شده از صف ( نام مربع را parent فرض کنید ) انجام بده :
          • در صورتی که فلگ مربع ست شده باشد آن را نادیده بگیر ، در غیر اینصورت به مرحله بعد برو
          • اگر این مربع در صف fringe نباشد ، آن را به صف اضافه کن ، مربع parent را پدر مربع اضافه شده به صف قرار بده و هزینه های F ، G و H مربع را محاسبه کن
          • اگر این مربع از قبل در صف باشد ، هزینه G آن را با استفاده از مربع parent محاسبه کن. در صورتی که این هزینه کمتر از هزینه G این مربع در حال حاضر باشد ، مربع parent را ، پدر مربع قرار بده.
     4. صف fringe را به ترتیب صعودی هزینه ها مرتب کن
     5. توقف کن در صورتی که
          • مربع مقصد به صف fringe اضافه شود که در این صورت مسیر پیدا شده است یا
          • صف fringe خالی باشد ( مسیری از مبدا به مقصد وجود ندارد )
 3 . مسیر را ذخیره کن. با حرکت عقبگرد از نقطه پایانی و با استفاده از مربع های پدر هر مربع ، تا رسیدن به مربع شروع ، مربع ها را پیمایش کن.
+ نوشته شده در  یکشنبه یازدهم مهر 1389ساعت 9:21  توسط فرزاد  | 

فريمورک دات نت يک محيط اجراء با نام CLR)Common Language Runtime) را ارائه که مسئوليت مديريت اجرای کد و تامين سرويس های لازم بمنظور پياده سازی نرم افزار را  برعهده دارد . CLR ، زيرساخت مستحکمی را بمنظورايجاد انواع نرم افزار در اختيار پياده کنندگان قرار می دهد . يک برنامه ASP.NET  ، يک برنامه فرم های ويندوز ، يک سرويس وب ، يک برنامه مختص موبايل ، يک برنامه توزيعی و يا يک برنامه که چندين مدل از برنامه های فوق را با يکديگر ترکيب می نمايد ، نمونه هائی از برنامه هائی می باشند که می توان آنها را بر اساس زيرساخت ارائه شده ، پياده سازی نمود.  CLR ، دارای مزايای متعددی بمنظور پياده سازی سريع و آسان نرم افزار با قابليت مهم ارتباط و يکپارچگی بين کدهای نوشته توسط زبانهای متفاوت برنامه نويسی است .
 درمجموعه مقالاتی که در اين زمينه ارائه خواهد شد به بررسی
CLR
، خواهيم پرداخت .

CLR ، ابزاری ( Engine) است که دستورالعمل های IL)Intermediate Language) را بعنوان ورودی اخذ و در ادامه آنها را به دستورالعمل های زبان ماشين ترجمه و در نهايت آنان را اجراء می نمايد. موضوع فوق ، بدين معنی نيست که CLR ، دستورالعمل ها را  تفسير می نمايد. عبارت فوق ، بدين دليل بيان شده است که بنوعی به اين موضوع اشاره گردد  که CLR ، محيط لازم بمنظور اجرای کد IL را فراهم می نمايد. بمنظور نيل به اهداف مورد نظر خصوصا" : کارآمدی کدها و قابليت حمل آنان ، هسته اجرائی می بايست، شرايط ومحيط  لازم بمنظور ايجاد کد  با  لحاظ نمودن اهداف موردنظر ( کارآمد ،  قابليت حمل)  را ارائه نمايد.  کارآمدی کدها ، يکی از مسائل کليدی در رابطه با محيط اجراء خواهد بود. اگر کد، با سرعت قابل قبول اجراء نگردد ، تمام ويژگی های ديگر موجود در سيستم ، تحت الشعاع  قرار خواهند گرفت .
 قابليت حمل ، امکان استفاده از نرم افزار را مستقل از نوع پردازنده و دستگاه فراهم می نمايد. بنابراين افزايش تعداد پردازنده ها و دستگاههائی که
CLR  می تواند بر روی آنها اجراء گردد، همواره دارای اهميت خاص خود خواهد بود. ماکروسافت و اينتل برای مدت زمان زيادی ، دارای همکاری مناسبی  در عرصه تجارت بودند. ماکروسافت  کم و بيش از خط پردازنده های اينتل بمنظور اجراء نرم افزارهای خود ، استفاده می کرد.بدين ترتيب ، ماکروسافت ، بدون وجود نگرانی ( حمايت از معماری چندين پردازنده ای و دستورالعمل های مربوطه ) ، اقدام به ايجاد و پياد ه سازی  نرم افزار می نمود. شرکت ماکروسافت هرگز نگران ارائه يک نسخه خاص از محصولات خود برای يک نسخه خاص از پردازنده های Motoral 68XXX ، نبود ، چراکه اصولا" آنها را حمايت نمی کرد . بروز محدوديت در حمايت از پردازنده ها در زمان انتقال از برنامه ها یمبتنی بر Win16 به Win32، بعنوان يک مسئله مهم ،مطرح گرديد. ( ما عملا" دارای API با نام Win16 نبوده ايم ، ولی می توان اين واژه را برای API قبل از Win32 استفاده کرد) . ماکروسافت اگر می خواهد همچنان بعنوان يکی از شرکت های فعال در زمينه توليد و طراحی نرم افزار در سطح جهان مطرح باشد ، می بايست تدابير لازم در خصوص قابليت حمل نرم افزارهای پياده سازی شده خود را بر روی محيط های متفاوت فراهم نمايد. باتوجه به تغييرات بنيادين و مهم در طراحی و پياده سازی برنامه های مبتنی بر وب طی ساليان اخير  و ضرورت استفاده از دستگاههای متعدد بمنظور ارتباط به اينترنت و در نهايت استفاده از خدمات برنامه های موجود ، ما با واقعيت بزرگ ديگری نيز مواجه هستيم و آن اينکه هر يک از دستگاههای موجود ( تلفن های موبايل ، کامپيوترهای hand-held ، tablet ، ) دارای معماری و پردازنده اختصاصی خود می باشند. با توجه به وضعيت موجود، می بايست تمهيدات و تدابير خاصی در رابطه با طراحی و پياده سازی انديشيده گردد که ماحصل آن قابليت حمل نرم افزار از يک معماری خاص به معماری ديگر باشد .
 ماکروسافت نيز در صدد حضوری فعال تر و ارائه نرم افزار در رابطه با دستگاه های فوق ، است ، بديهی است می بايست اقدامی صورت می گرفت که پاسخگوی واقعيت های جديد صنعت نرم افزارباشد . ماکروسافت در پاسخ به محدوديت های موجود، خواسته های جديد و حل مشکل قابليت حمل به ساير پردازنده ها ، تصميم به ايجاد يک محيط اجراء و يا
CLR نمود ه  است .
در ادامه اين مقاله ، قصد داريم بدون درگير شدن به جزيئات مربوطه ، به بررسی محيط اجراء پرداخته  امکانات آن را در رابطه با اجرای برنامه های
managed
، بررسی نمائيم .

مروری بر  Runtime 
قبل از دات نت، يک برنامه اجرائی معمولا" بصورت يک فايل با انشعاب
exe. ارائه می گرديد ( برنامه  صرفا" شامل يک فايل بود) . بمنظور اجراء کارآمد تمامی سيستم ، برنامه می بايست از کدهائی استفاده نمايد که بصورت اشتراکی باشند ( معمولا" يک فايل با انشعاب dll. ) اگر در زمان استفاده از کد مشترک ، مسائلی ايجاد می گرديد، می توان  از يک کتابخانه وارداتی استفاده و يا  يک DLL را در زمان اجراء ، load کرد ( با استفاده از LoadLibrary,LoadLibraryEx و GetProcAddress

در دات نت ، واحد اجراء و بکارگيری ، اسمبلی (Assembly ) است . فرآيند اجراء، همواره با يک اسمبلی که  دارای  انشعاب exe . می باشد ، آغاز می گردد . برنامه می تواند  از کد اشتراکی بکمک  Importing  اسمبلی که شامل کد مشترک بهمراه يک مرجع صريح است ، استفاده نمايد ( برای اضافه نمودن مرجع ، می توان  از AddReference در ويژوال استوديو دات نت استفاده کرد )  برنامه ها همچنين می توانند با استفاده از  Assembly.Load و يا Assembly.loadForm  ، اقدام به استقرار يک اسمبلی در حافظه  نمايند .
در ادامه  ، لازم است با برخی از اصطلاحات آشنا و تعريف مناسبی از آنها را ارائه نمائيم  .

  •  اسمبلی(Assembly ) . اسمبلی واحد اوليه بکارگيری نرم افزار در فريمورک دات نت است .يک اسمبلی می تواند شامل مراجعی به ساير اسمبلی ها و ماژول ها باشد .

  • ماژول( Module )  . ماژول، فايلی شامل محتويات اجرائی است . يک اسمبلی می تواند يک و يا بيش از يک ماژول را کپسوله نمايد.  يک ماژول بدون اينکه يک اسمبلی به آن مراجعه ای  داشته باشد ، Stand alone  نمی گردد . کلاسی در کنابخانه کلاس پايه ( System) ، مسئوليت کپسوله نمودن اکثر ويژگی های يک " ماژول " را برعهده دارد ( مشابه اسمبلی ).  اين کلاس Module ، نام دارد.

  • APPDomain ،  بعنوان يک  پردازه کم حجم ( سبک )  در نظر گرفته می شود.قبل از دات نت ، ايزولاسيون  از طريق جداسازی  پردازش ها  از يکديگر و بکمک سيستم عامل انجام می گرديد. اگر پردازه ای ، عمليات نامشحص و تعريف نشده ای  را  انجام   که باعث بروز مشکل برای ادامه حيات خود می گرديد ، حرکت وی باعث بروز اختلال در تمام سيستم  نشده  و صرفا" مشکل بوجود آمده در ارتباط با پردازه  خواهد بود . با توجه به اينکه "نوع ها"  ،بصورت کاملا" هدايت شده توسط فريمورک دات نت کنترل می گردند ، می توان از روش هائی بمنظورپياده سازی سطح مشابهی  ايزولاسيون در ارتباط با  يک پردازه استفاده کرد . اين روش Application Domain ويا AppDomain ناميده می شود. همانند اسمبلی و ماژول ، يک کلاس در کتابخانه کلاس فريمورک دات نت ، اکثر ويژگی ها و پتانسيل های  مربوط به يک Application Domain را کپسوله می نمايد. کلاس فوق ، AppDomain ناميده شده و در namespace با نام System قرار دارد .

  • IL  يا MSIL .  واژه IL از Intermediate Language و MSIL از Microsoft Intermediate Language ، اقتباس شده اند . IL  ، زبانی است که  اسمبلی ها  توسط آن نوشته شده و شامل مجموعه ای از دستورالعمل هائی است که کد مربوط به برنامه را ارائه می نمايند. به زبان فوق بدين دليل بدين دليل " ميانی " ( Intermediate )  ، اطلاق می گردد ، چون هنوز  بصورت native code  درنيامده است . در زمان مورد نطر ، کدهای IL توسط کمپايلر JIT به native code ، ترجمه خواهند شد .

  • JIT . واژه JIT از کلمات Just-In-Time اقتباس شده است . از کمپايلر فوق ، بمنظور ترجمه کدهای IL به native code استفاده می شود.

 پس ازاستقرار کد در حافظه ( Loading ) ، امکان اجرای آنان فراهم می گردد . از اين مرحله به بعد ( آغاز عمليات اجراء کد ) ، تفاوت محسوسی را بين  برنامه های قديمی ( قبل از دات نت ) و برنامه های جديد ( دات نت ) ، شاهد خواهيم بود . در حالت کد غيرمديريت يافته ( Unmanaged) ، کمپايلر و linker  بر روی کدهای مربوطه عمليات خود را آغاز و آنها را به native code تبديل می نمايند . بدين ترتيب  ،دستورالعمل ها می توانند بلافاصله اجراء گردند. لازم است به اين نکته مهم اشاره گردد که در صورتيکه قصد استفاده از برنامه نوشته شده بر روی محيط های متفاوت ( ساير پلات فرم ها ) وجود داشته باشد ، می بايست برای هر يک نسخه ای جداگانه را کمپايل کرد. در برخی حالات ، امکان ايجاد و ترجمه نسخه های متعدد بمنظور اجراء بر روی محيط های متفاوت ، امری مطلوب بنظر نمی رسد ، در چنين مواردی سعی می گردد ، صرفا" يک نسخه ارائه گردد. نسخه فوق ، بگونه ای طراحی و پياده سازی می گردد که بتواند با محيط های متفاوت سازگار باشد . بدين ترتيب ، امکان اجراء نرم افزارهای توليدی در محيط های متفاوت ، فراهم خواهد شد . وجود پتانسيل در بطن يک دستگاه سخت افزاری يک موضوع است و ارائه برنامه ای که زمينه بهره برداری از پتانسيل های مربوطه را فراهم  و برنامه ای که از پتانسيل های دستگاه فوق ، در نهايت استفاده می نمايد ، موضوعات ديگری است . مثلا" امروز ما کمتر شاهد ارائه نرم افزار از طرف شرکت های توليد کننده ای می باشيم که تاکيد و اصرار بر استفاده از يک محيط سخت افزاری  نظير وجود يک " شتاب دهنده گرافيک " ، داشته باشند . در چنين موارد علاوه بر اينکه توليد کننده " شتاب دهنده گرافيک " ، می بايست برای هر " کارت شتاب دهنده گرافيک " ، برنامه ای خاص را ارائه نمايد ، بلکه همچنين پياده کنندگان می بايست از برناهه های مجزائی برای هر يک از کارت ها ی عرضه  شده ، استفاده نمايند . " شتاب دهنده گرافيک " ، صرفا" يک نمونه در اين رابطه بوده و می توان به مواردی ديگر نظير :  disk cache,memory cache ، شبکه های با سرعت بالا ،   سيستم های مبتنی  بر چندين پردازنده  و  سخت افزارهای خاص بمنظور پردازش تصاوير، اشاره کرد .

يکی از اولين مراحلی که CLR  در ارتباط  با اجراء يک برنامه انجام می دهد ، بررسی متدی است که می بايست اجراء گردد ( آيا  به native code ،تبديل شده است ؟) . در صورتيکه متد به native code ، تبديل نشده باشد ، کد موجود در متد بصورت  JITd) Just - In - time compild) خواهد بود . تاخير در ترجمه يک متد ،  دارای دو مزيت است :

  • يک شرکت می تواند نسخه ای از نرم افزار توليد ی خود را براحتی بر روی محيط مورد نظر خود منتقل ( در محيط فوق نسخه ای از CLR نصب شده است ) و از CLR   بمنظور مديريت و سفارشی نمودن  کدها،  متناسب با محيط سخت افزاری مربوطه ، استفاده نمايد .

  •  کمپايلرهای JIT قادر به استفاده از مزايای بهينه سازی می باشند . بدين ترتيب ، امکان  اجراء سريعتر يک برنامه نسبت به يک برنامه همه منظور( نسخه unmanaged برنامه )  ، فراهم می گردد . سيستم هائی که دارای پردازنده های 64 بيتی می باشند ، دارای يک مد " سازگاری "  خواهند بود  که به برنامه های سی و دو بيتی   اجازه می دهد بدون اعمال تغييرات  بر روی يک پردازنده 64 بيتی اجراء گردند .اگر برنامه ای به IL ترجمه گردد ، می تواند از مزايای پردازش 64 بيتی بهره مند گردد (موتور JIT ، قادر به target نمودن پردازنده جديد 64 بيتی است) .

فرآيند استقرار يک متد در حافطه ( Loading )  و ترجمه آن ، در صورت نياز تکرار  تا زمانيکه تمام متدها ی موجود در برنامه ترجمه  و يا برنامه متوقف گردد .

شروع يک متد
CLR ، درارتباط با هر متد به اطلاعات زير نياز خواهد داشت . تمامی اطلاعات مورد نياز CLR  از طريق  متاديتا  ( Metadate)  موجود در هر اسمبلی در دسترس و ارائه خواهد شد .

  • دستورالعمل ها . CLR ، نيازمند ليستی از دستورالعمل های MSIL است . هر متد دارای اشاره گری به مجموعه دستوراتی است که بعنوان بخشی از متا ديتا ی مورد نظری است که به آن مرتبط شده است.

  • Signature .  هر متد دارای يک Signature است و CLR نيازمند استفاده از يک signature برای هر متد است . signature ،  برگرداندن نوع ، تعداد پارامتر و نوع پارامترها  را تشريح می نمايد.

  • Exception Handling Array .  دستورالعمل خاصی از IL که مربوط به برخورد با exception باشد ، وجود ندارد . در اين رابطه از  دايرکتيوهائی خاص در مقابل دستورالعمل های IL ، استفاده می گردد . در مقابل دستورالمل های Exception-handling ، اسمبلی دارای  ليستی از exceptions است . ليست فوق،  شامل نوع exception ، يک آدرس offest به اولين دستورالعمل پس از بلاک exception try   ، طول مربوط به بلاک try  ، است . ليست فوق ، همچنين شامل آفست  به handler code ، طول handler code ، و يک token  که مسئول تشريح کلاسی  است که از آن بمنظور کپسوله نمودن exception استفاده می گردد .

  • اندازه Evaulation stack . داده فوق ، از طريق متا ديتا اسمبلی قابل دسترس خواهد بود. می توان آن را از طريق  maxstack   x در ليست ILDASM مشاهده نمود. مقدار  x  ، اندازه پشته مورد نظر است . اندازه منطقی پشته  که توسط  x  ، مشخص شده است ، حداکثر  آيتم هائی را که می توان در پشته ، مستقر ( Push ) نمود ، مشخص می نمايد. اندازه فيزيکی آيتم ها و پشته  به CLR  واگذار تا در زمان اجراء آن را مشخص نمايد (زمانيکه  متد JITd است ) .

  • تشريح بردارهای محلی . هر متد نيازمند تعريف و  ذخيره سازی محلی آيتم های مورد نياز است.  evaluation stack ،(  برداری منطقی از آيتم ها  بهمراه  نوع هر آيتم)  و استفاده از يک flag در متاديتا بمنظور  مشخص نمودن ضرورت  مقداردهی اوليه ( مقدارصفر )  متغيرهای محلی در ابتدای فراخوانی يک متد ، نمونه هائی در اين زمينه می باشند.

با استفاده از اطلاعات فوق ، CLR ، قادر به ايجاد يک abstraction از چيزی خواهد بود که native stack frame است. عموما" هر پردازنده و يا ماشين يک stack frame را شکل که شامل آرگومانها ( پارامترها ) و يا مرجع به آرگومانها ی مربوط به متد است . در وضعيتی مشابه ، متغيرهای برگردانده شده در stack frame بر اساس  فراخوانی که وابسته به يک پردازنده و يا ماشين خاص است ، ذخيره می گردند. اولويت پارامترهای ورودی و خروجی در رابطه با  يک ماشين خاص ، مشخص می گردد . با توجه به اينکه تمام اطلاعات مورد نياز برای هر متد در دسترس است ، CLR  ، قادر به تشخيص وضعيت مورد نظر  stack frame ، در زمان اجراء است .
فراخوانی يک متد بگونه ای انجام خواهد شد که CLR دارای حداقل کنترل در رابطه با اجراء متد و حالت آن باشد .زمانيکه CLR ، يک متد را فرامی خواند ، متد  و حالت آن تحت کنترل CLR  خواهد بود ( Thread of control ) .
دربخش دوم اين مقاله به بررسی  نوع ها ی حمايت شده توسط
IL ، خواهيم پرداخت .

+ نوشته شده در  چهارشنبه سوم شهریور 1389ساعت 10:1  توسط فرزاد  | 

در چندین ماه گذشته پیشرفت های جدیدی در طراحی پروسسورها، بویژه از طرف شرکت AMD حاصل شد. این شرکت علاوه بر اینکه یک cpu با طراحی کاملا ْ۶۴ بیتی عرضه کرد که باعث برتری یافتن این شرکت در بازار کامپیوترهای رومیزی پیشرفته گردید، همچنین در حذف کنترل کننده‌های حافظه (MCH) پیشقدم شد که در عملکرد Athlon ۶۴ و چیپهای optron یک پیشرفت قابل ملاحظه نسبت به پروسسورهای intel به حساب می‌آید. اینتل به طور متقابل پروسسور سازگار ۶۴ بیتی را عرضه نمود. به تازگی نیز هر دو شرکت پردازشگرهای دوهسته ای را عرضه نموده‌اند، این پروسسورها بهتر از آن چیزی که شما انتظار دارید کار می‌کنند. پروسسورهای اینتل و AMD هر دو دارای دو هسته پروسسور، در حال کار در یک قالب می‌باشند که هر یک از هسته‌ها بصورت مستقل توابع و پردازشهای داده را انجام می‌دهند (در مورد اینتل این مورد کامل تر است) و هر دو این هسته‌ها توسط نرم افزار سیستم عامل هم آهنگ می گردند.
در این مقاله سعی شده تا تکنولوژی که در این دو محصول استفاده شده و مقدار افزایش کارایی که شما می توانید از آنها انتظار داشته باشید بررسی گردد. در حال حاضر AMD فقط پروسورهای کلاس سرور opteron با دو هسته را بطور کامل به بازار عرضه کرده و بزودی Athlon ۶۴*۲ برای کامپیوترهای رومیزی را نیز به بازار عرضه می‌کند. در طرف مقابل اینتل در حال حاضر پنتیوم Extreme Edition ۸۴۰ رومیزی با دو هسته را به بازار عرضه نموده در حالی که خطهای تولید Pentium D و dual xeons هنوز متوقف نشده اند.
با توجه به اینکه پروسسورهای دو هسته‌ای در اصل یک سیستم چند پروسسوره که در یک قالب قرار گرفته اند، می باشد. اجازه بدهید اینک چندین تکنولوژی که در سیستم های چند پردازشگر استفاده می شود را مورد بررسی قرار دهیم.

چند پردازشگرهای متقارن ( SMP (symmetric Multi processing
SMP روش مشترکی می باشد که چندین پردازشگر بطور جداگانه با یکدیگر در یک مادربرد کار می‌کنند. سیستم عامل با هر دو cpu تقریباً بطور یکسان کار می‌کند و کارهای مورد نیاز را به آنها ارجاع می‌دهد. چیپ‌های دوهسته ای جدید intel و AMD توانایی SMP را بصورت داخلی مورد توجه قرار داده‌اند. پروسسورهای سرور opteron دوهسته ای می‌تواند همچنین بصورت خارجی با دیگر چیپ‌های دوهسته ای ارتباط برقرار کند. (بشرط آنکه چیپ متقابل نیز دارای این خاصیت باشد)
محدودیت اصلیSMP در پشتیبانی سیستم عاملها و نرم افزارها از این تکنولوژی می‌باشد. خیلی از سیستم عاملها (مانند ویندوز XP سری خانگی ) توانایی پشتیبانی از SMP را ندارند و از دومین پردازشگر استفاده نمی‌کنند. همچنین بیشتر برنامه‌های پیشرفته بصورت تک رشته ای کار می‌کنند، در اصل در هر زمان فقط یک پردازشگر در حالت فعال می باشد. برنامه های چند رشته‌ای از پتانسیل موجود در سیستم‌های دو یا چند پرازشگر، می‌توانند نتایج مفیدتری بگیرند، ولی به صورت کامل عمومیت ندارد.
در گذشته intel و AMD سعی داشته‌اند تا تکنولوژی جدیدی مثل SMD را بیشتر برای پردازشگرهای سرور پیشرفته مانند opteron و Xeon استفاده نمایند ( البته تا قبل از پنتیوم ۳ )

Hyperthreading
این تکنولوژی بصورت اختصاصی توسط اینتل در پردازشگرهای چند هسته‌ای بکار گرفته شده است. این تکنولوژی قبلاً نیز توسط این شرکت بکار گرفته ‌شده‌ بود. اینتل برای آنکه از منابع CPUبنحو بهتری استفاده نماید فقط قسمتهایی که کار پردازش اطلاعات را انجام می دهد را تکثیر کرده است. یعنی آنکه منابع داده در داخل CPU بصورت مشترک استفاده می‌شد. ایده hyperthreading برای دو برابرکردن مقدار فعالیت چیپ می‌باشد تا آنکه کاهش عملکرد سیستم که در اثر فقدان حافظه Cash روی می‌دهد کمتر گردد همچنین بصورت تئوری نشان داده شده که منابع سیستم کمتر تلف می‌‌گردند.
در صورتی که CPU های hyperthreading مانند دو پروسسور حقیقی بنظر می رسد. ولی این CPU ها نمی‌توانند عملکردی مشابه دو CPU مجزا مانند CPU های دوهسته ای داشته باشند. زیرا در CPU های دو هسته ای دو “Threads”مشابه بطور همزمان و با Cash ‌های جداگانه L۱ و L۲ می‌توانند اجرا گردند که این عمل در پردازشگرهای hyperthreading قابل انجام نمی‌باشد.
یکی از چیپهای جدید اینتل بنام ، پردازشگر پنتیوم Extreme Edition ۸۴۰ ، در داخل هر هسته خود از تکنولوژی hyperthreading نیز پشتیبانی می‌کند، یعنی آنکه در یک سیستم عامل آن بصورت چهار پردازشگر حقیقی دیده می‌شود.

دو چیپ در یک قالب … چرا؟
چرا دو شرکت اینتل و AMD بطور ناگهانی شروع به توزیع پردازشگرهای دو هسته‌ای کردند؟
اول از همه رقابت چنانچه بعداً بیان خواهیم کرد AMD از ابتدا توانائی بالقوه دوهسته‌ای را در پردازشگرهای ۶۴ بیتی خود داشت. ساختمان ورودی و خروجی برای دومین هسته در CPU های فعلی ۶۴ بیتی AMD موجود می‌باشد.
هیچ شرکتی نمی تواند دیگران را از بدست آوردن تکنولوژی‌های جدید منع نماید و AMD در حال حاضر با موفقیت چشمگیر خط تولید پرداشگرهای ۶۴ بیتی آسودگی را از intel سلب نموده ‌است.
برای اینتل ضروری می‌باشد که دارای یک تولید تخصصی در تکنولوژی دوهسته ای ‌باشد تا رقابت با شرکاء تجاری خود را حفظ نماید.
دوم، کارایی می‌باشد. مطمئناً برنامه‌های کاربردی چند رشته‌ای در پردازشگرهایی که توانایی انجام چند پردازش را دارند در پردازشگرهایی که یک پردازش را در هر زمان انجام می‌دهند، بهتر عمل خواهند نمود.
البته برای سیستم های چند پردازشگره یک ایراد عمومی وجود دارد و آن تاْخیری می‌باشد که این CPU ها در اجرای کار سیستم بوجود می آورند. به بیان ساده در حال حاضر روشی برای سیستم عامل‌های موجود وجود ندارند تا پردازشها را بطور کاملاً مساوی در بین پردازشگرها تقسیم نماید، پردازشگر دوم عموماً بایک مداخله کمتر و کارایی پایین‌تر کارمی‌کند، در صورتی که ممکن است پردازشگر اول بصورت ۱۰۰% در حال پردازش ‌باشد.
سومین دلیل کمتر نمایان است، ناامیدی AMD و اینتل می‌باشد، هر دو شرکت با یک مانع جدی برای افزایش سرعت پردازشگرها و کوچکتر کردن اندازه قالب آنها روبرو شده اند تا این مانع حذف نشود و یا اینکه تا کاربران عمومی متوجه نشوند که GHZ به تنهایی کارایی را بیان نمی‌کند. هر دو شرکت برای دست یافتن به هر پیشرفت که کارایی پردازشگرها را بهبود بخشید تلاش خواهند نمود و تقریباً دلیل اصلی بوجود آمدن پردازشگرهای دو هسته ای را می‌توان همین دلیل سوم بیان نمود.

دسترسی AMD به تکنولوژی دو هسته ای

فرم فاکتور فعلی پردازشگر ۶۴ اتلن به طراحی دو هسته ای خیلی نزدیک می‌باشد. وجود کنترل کننده‌های Hypertransport و کنترل کننده حافظه درقالب چیپهای فعلی ۶۴ اتلن به معنی آنست که اضافه نمودن دومین هسته در داخل چیپ چندان مشکل نمی‌باشد.
بدلیل رابط NorthBridge که AMD برای اتلن ۶۴ تهیه کرده‌ است کنترل کننده حافظه و رابط Hypertransport در داخل چیپ پشتیبانی می گردد. این به چیپ‌های دوهسته‌ای امکان می دهد که از داخل خود پردازشگر با یکدیگر ارتباط برقرار کنند.

تعداد ترانزیستورهای پردازشگرهای اتلن ۶۴*۲ بیش از دو برابر پردازشگرهای اتلن ۶۴ می‌باشد. با توجه به اینکه در ساختن CPU های جدید از روش ۹۰nm استفاده می شود سایز کل چیپ کمی افزایش پیدا کرده و ولتاژ عملکرد ۱.۳۵ تا ۱.۴ می‌باشد و گرمای خروجی به بیش از ۱۱۰w کمی افزایش می‌یابد.
هر هسته پردازشگر حافظه Cash L۱ و L۲ مخصوص به خود را دارد، ۱۲۸ KB برای L۱ و بسته به مدل ۵۱۲ KB تا ۱ MB برای L۲.

دو برتری مهمی که AMD در CPU های دو هسته‌ای دارد عبارتند از اینکه :
“Crossbar Switch” که آدرسها را جمع‌آوری کرده و توزیع می کند و داده را از هر هسته به هسته دیگر یا باقی سیستم توزیع می کند در حال حاضر امکان اضافه شدن دومین هسته را دارد.
موفقیت دیگر AMD که از نظر مصرف کننده خیلی مهم می‌باشد امکان استفاده اتلن ۶۴*۲ از مادربردهای سوکت ۹۳۹/۹۴۰ می باشد و فقط لازم است که شرکت تولید کننده مادربرد BIOS را برای پشتیبانی از خصوصیات جدید به روز رسانی نماید.

دسترسی اینتل به پردازشگر دو هسته ای
با توجه به اینکه اینتل مانند AMD دارای مدل قبلی برای اضافه کردن هسته جدید در داخل یک قالب CPU نبود، برای ساخت آن مدل جدیدی را طراحی نمود که البته دارای نواقصی نسبت به مدل AMD می‌باشد.
پنتیوم D در اصل از دو پردازشگر “پرسکات” پنتیوم D در یک قالب تشکیل شده است ، این پردازنده دارای مزیت داشتن دو حافظه کش L۱ و L۲ برای هر هسته بطور مجزا می‌باشد، ولی دارای نواقصی نیز می باشند از جمله اینکه این دو پرداشگر برای ارتباط برقرار کردن با یکدیگر باید، از NorthBridge و FSB خارج پردازشگر استفاده نمایند. تعداد ترانزستورها برای چیپ های جدید بیش از ۲۳۰ میلیون و گرمای تولید شده به مقدار فوق‌العاده ۱۳۰W برای پنتیوم Extereme Edition می‌رسد.

یکی از بزرگترین معایب طراحی اینتل نسبت به AMD که سوکت‌های ۹۳۹ را برای طراحی پردازشگرهای دو هسته‌ای خود حفظ نمود آن است که راه حل دو هسته‌ای اینتل نیاز به یک جفت چیپ ست جدید بنامهای ۹۵۵X و ۹۴۵P دارد. شرکت nvidia اخیراً ویرایش اینتل SLI که پروسسورهای دو هسته‌ای را پشتیبانی می‌کند را به بازار عرضه کرده ‌است که این مورد هم زمان بیشتری را مصرف و هم هزینه‌ای اضافی برای مصرف کننده در پی دارد.

+ نوشته شده در  شنبه دوم مرداد 1389ساعت 10:29  توسط فرزاد  | 

فایل dll یک کتابخونه ازData و Code هست که می تونه در یک زمان توسط چندینApplication مورد استفاده قرار بگیره .

برای مثال در سیستم عامل Windows فایل Comdlg32.dll عملکرد های مربوط به Dialog Box ها رو انجام میده

در نتیجه هر Application ی در ویندوز می تونه از توابعی که توی این dll هستند موقع باز کردن Dialog Box استفاده کنه .

مزیت اصلی فایل های dll در استفاده مجدد و همینطور استفاده بهتر از حافظه سیستم هست .

 



در كامپيوتر، DLL که مخفف dynamic link library است مجموعه اي از برنامه هاي کوچک است، که هر کدام مي تواند توسط يک برنامه بزرگتر که در کامپيوتر در حال اجرا است احضار شود. برنامه کوچکي که به برنامه بزرگتر اجازه برقراري ارتباط با يک وسيله ويژه مثل چاپگر (پرينتر) و يا اسکنر را ميدهد همواره به عنوان يک برنامه DLL بسته بندي مي شود( معمولا به " فايل DLL " اشاره مي شود). مزيت فايل هاي DLL اين است که، از آنجا که آنها در حافظه كامپيوتر (RAM) با هم به همراه برنامه اصلي بارگذاري نــمي شوند، فضا در RAM صرفه جويي مي شود. وقتي که يک فايل DLL نياز است، بعد بارگذاري و اجرا مي شود. به طور مثال تا مادامي که يک کاربر microsoft word ( يک برنامه پردازش کلمه که توسط شرکت microsoft به وجود امده است ) دارد يک سند (Document) را ويرايش مي کند، فايل DLL چاپگر نياز نيست تا در RAM بارگذاري شود. اگر کاربر تصميم به پرينت گرفتن آن سند بگيرد، سپس برنامه کاربردي Word باعث مي شود تا فايل DLL چاپگر بارگذاري و اجرا شود.

اين ويژگي چندين مزيت دارد : اول اينكه چون فايل هاي DLL فقط در هنگام نياز بارگذاري مي شوند ، وقتي مورد استفاده نباشند ، حافظه اي رو مورد مصرف قرار نمي دهند . دوم اينكه چون فايل DLL فايلي جداگانه هست ، برنامه نويسان مي توانند بدون تاثير روي برنامه فراخوان يا فايلهاي DLL ديگر ، اصلاحات يا تغييراتي را در يك واحد ( فايل DLL ) انجام دهند .

به يک فايل DLL اغلب پسوند نام فايل ".dll" داده مي شود. فايل هاي DLL به صورت پويايي به برنامه اي که از آنها در طول زمان اجراي برنامه استفاده مي کند متصل هستند تا اينکه با برنامه اصلي گردآوري شوند. مجموعه چنين فايل هاي (يا DLL ) تقريبا قابل مقايسه با کتابخانه روال هايي هستند (library routines) که با زبان هاي برنامه ريزي از قبيل ++C و C فراهم مي شوند.

ويژگي خاصي در مايكروسافت ويندوز و سيستم عامل os/2 مي باشد واين امكان را فراهم مي سازد تا روالهاي اجرايي به عنوان فايل هاي جداگانه اي با پسوند dll ذخيره شوند. و فقط هنگام نياز برنامه اي فراخواننده آنها، بارگذاري شوند. اين ويژگي چندين مزيت دارد: اول اينكه چون فايل هاي dll فقط در هنگام نياز بارگذاري مي شوند، وقتي مورد استفاده نباشند، حافظه اي رو مورد مصرف قرار نمي دهند. دوم اينكه چون فايل dll فايلي جداگانه هست، برنامه نويسان مي توانند بدون تاثير روي برنامه فراخوان يا فايلهاي dll ديگر، اصلاحات يا تغييراتي را در يک واحد (فايل dll) انجام دهند.

 

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

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

استفاده از اینگونه کتابخانه‌های دو مزیت اصلی دارد:

1- امکان به اشتراک گذاری از کد را فراهم می‌سازند. یک DLL می‌تواند مورد استفاده خیلی از برنامه‌های قرار گیرد. بعنوان مثال کتابخانه Win32 API نمونه‌ای از این سری فایلها است. بعلاوه از زمانی که پروسه‌های گوناگون قادر به فراخوانی یک DLL واحد هستند امکان به اشتراک گذاری کد‌ها و روتین‌ها فراهم آمده است. یک فایل DLL تنها یکبار به درون حافظه لود می‌شود و بارها توسط پروسه‌های گوناگونی مورد استفاده قرار می‌گیرد و این یعنی مدیریت حافظه بهتر.

2- مزیت دیگر امکان نوشتن برنامه‌ها بصورت اجزای منفصل است که این اجزا خود قابل تعویض با نگارش‌های جدیدتر جهت توسعه نرم‌افزار خواهند بود بدون اینکه خطی از کد برنامه اصلی دگرگون شود.
با این توصیف فایلهای کتابخانه‌ای درونی که در پروژه‌های مورد استفاده قرار می‌گیرد در صورت تغییر نیاز هست تا پروژه اصلی دوباره کمپایل شود تا بتوان با آن ارتباط بر قرار کرد. اما در DLL ها چون بصورت پویا و قابل انعطاف نوشته شده‌اند این اتصال در بیرون از بدنه اصلی و درست در زمان فراخوانی آن قبیل از متدها و توابع شکل می‌گیرد و این خود تفاوت آشکار از مزیت این گونه از فایلها می‌باشد.همچنین یک فایل DLL می‌تواند حاوی توابعی باشد که فقط مورد استفاده خود هست و از درون به آن دسترسی نخواهیم داشت و آندسته از تابعی را که نیاز هست معرفی می‌کنیم تا از بیرون بدان دسترسی داشته باشیم. در این مرحله نیاز به معرفی در فایلهای Def هست که در پروژه‌های C و C++ مورد استفاده قرار می‌گیرد.

 

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

این دو نوع پروسه به DLL این امکان را می‌دهد که یک سری از مقدمات را پیش از استفاده مهیا کند یا بعد از استفاده پاکسازی نماید

کاربرد dll در برنامه نویسی :

با استفاده از این فایل های dll میشه برنامه هارو به صورت کاملا Modular و با مولفه های قابل مدیریت نوشت

دلیلشم اینه که Module ها به صورت جدا از هم کار می کنند و هر Moduleی که نصب شده باشه در زمان اجرا توی حافظه Load میشه و از یه Module فقط زمانی استفاده میشه که به اون Module احتیاج باشه .

مزیت دیگه استفاده از Module اینه کهUpdate برنامه خیلی راحت تر انجام میشه و فقط Module مورد نظر Update میشه بدون اثر گذاشتن روی سایر Module ها .

 

فایل های زیر در سیستم عامل Windows به عنوان DLL مورد استفاده قرار می گیرند .

ActiveX Controls (.ocx) files

مثه کنترل Calendar در ویندوز .

Control Panel (.cpl) files

مثه همه Item های موجود در کنترل پنل Windows

Device Driver Controls (.drv) files 

مثه یک فایل Driver برای یک Printe

 

برنامه نویسی DLL توی VStudio.Net خداییش کار خیلی سختیه ...

خوشبختانه خودWindows مجموعه کاملی از DLL ها رو در اختیار برنامه نویس قرار میده .

در نتیجه خیلی به ندرت پیش میاد که بخوایم DLL های مورد نیازمون رو خودمون بنویسیم ...
این کار بیشتر توی پروژه های Game Programing انجام میشه
+ نوشته شده در  سه شنبه پانزدهم تیر 1389ساعت 22:21  توسط فرزاد  | 

پروتكل RIP
RIP ( برگرفته شده از  Routing Information Protocol  )  به معنی واقعی يك پروتكل  distance-vector است . پروتكل فوق در هر 30 ثانيه تمام اطلاعات موجود در جدول روتينگ را برای تمامی اينترفيس های فعال ارسال می نمايد .  RIP صرفا" از تعداد hop برای تعيين بهترين مسير به شبكه راه دور استفاده می نمايد .حداكثر تعداد hop  می تواند عدد 15 را داشته باشد و نسبت دهی عددی بالاتر از 15 به منزله غيرقابل دسترس بودن شبكه است.
RIP در شبكه های كوچك به خوبی كار می كند ولی برای شبكه های بزرگ كه دارای  لينك های ارتباطی WAN ( برگرفته شده از wide area network  ) كند و تعداد بسيار زيادی روتر هستند مناسب نمی باشد .  
در نسخه شماره يك RIP صرفا" از روتينگ  classful استفاده می گردد . اين بدان معنی است كه تمامی دستگاه های موجود  در شبكه می بايست از subnet mask مشابهی استفاده نمايند . محدوديت فوق به دليل ماهيت ارسال اطلاعات بهنگام می باشد. در نسخه شماره يك RIP  ، اطلاعات بهنگام ارسالی شامل اطلاعات subnet mask نمی باشند .
در RIP نسخه دو ، ويژگی جديدی به نام روتينگ Prefix ارائه شده است كه به كمك آن امكان ارسال اطلاعات subnet mask به همراه مسيرهای بهنگام شده فراهم می گردد . به اين نوع روتينگ ، اصطلاحا" روتينگ classless گفته می شود .

RIP از سه نوع تايمر مختلف برای تنظيم كارآئی خود استفاده می نمايد .

  • Route update timer ، فاصله زمانی ارسال يك نسخه كامل از اطلاعات بهنگام روتينگ را مشخص می نمايد . در بازه زمانی فوق ، روتر  يك نسخه كامل از اطلاعات موجود در جدول روتينگ خود را برای تمامی همسايگان ارسال می نمايد . اين زمان معمولا" 30 ثانيه در نظر گرفته می شود .

  • Route invalid timer ، مدت زمانی را مشخص می نمايد كه پس از سپری شدن آن ، روتر به اين نتيجه خواهيد رسيد كه يك مسير غيرمعتبر است . اين زمان معمولا" 180 ثانيه در نظر گرفته می شود و اگر يك روتر در بازه زمانی فوق هيچگونه اطلاعات جديدی را در خصوص يك مسير خاص دريافت ننمايد ، آن مسير را غيرمعتبر می نمايد . در صورت تحقق چنين شرايطی ، روتر اقدام به ارسال اطلاعات بهنگام برای تمامی همسايگان خود می نمايد تا به آنها بگويد كه مسير غيرمعتبر است .

  • Route flush timer ، مدت زمان بين غيرمعتبر اعلام شدن يك مسير و حذف آن از جدول روتينگ را مشخص می نمايد . اين زمان معمولا" 240 ثانيه در نظر گرفته می شود . قبل از اين كه يك مسير از جدول روتينگ حذف گردد ، روتر اين موضوع را به اطلاع  همسايگان خود می رساند . مقدار Route invalid timer می بايست كمتر از route flush timer باشد تا روتر زمان كافی جهت اطلاع به همسايگان خود را قبل از بهنگام سازی جدول در اختيار داشته باشد . 

پروتكل IGRP
IGRP ( برگرفته شده از  Interior Gateway Routing Protocol )  يكی از پروتكل روتينگ  distance-vector طراحی شده توسط شركت سيسكو است . اين بدان معنی است در صورت استفاده از پروتكل فوق در يك شبكه ، می بايست تمامی روترها از نوع سيسكو باشند . شركت سيسكو هدف از ايجاد پروتكل IGRP را غلبه بر برخی محدوديت های پروتكل RIP عنوان كرده است .
IGRP می تواند حداكثر دارای 255 ، hop باشد كه مقدار پيش فرض آن 100 در نظر گرفته می شود . اين وضعيت در شبكه های بزرگ بسيار مفيد است و مشكل داشتن حداكثر 15 hop در يك شبكه مبتنی بر پروتكل RIP را برطرف نمايد .
IGRP از يك روش متفاوت نسبت به RIP  جهت محاسبه متريك استفاده می كند . در اين پروتكل ، بطور پيش فرض از پهنای باند و تاخير خط به عنوان شاخص هائی جهت تعيين بهترين مسير استفاده می گردد .  به فرآيند فوق متريك تركيبی( composite metric ) گفته می شود . همچنين برای محاسبه متريك از شاخص هائی ديگر نظير قابليت اعتماد ، ميزان load و MTU ( برگرفته شده از maximum transmission unit  ) استفاده می گردد ( از شاخص های اشاره شده بطور پيش فرض در محاسبه متريك استفاده نمی گردد ) .
پروتكل IGRP با RIP دارای تفاوت های عمده ای است كه به برخی از آنها اشاره می گردد :

  • امكان استفاده از IGRP در شبكه های بزرگ

  • IGRP برای فعال شدن از يك AS number (برگرفته شده از  autonomous system ) استفاده می نمايد .

  • IGRP در هر 90 ثانيه يك مرتبه بهنگام سازی جدول روتينگ را بطور كامل انجام می دهد .

  • IGRP از پهنای باند و تاخير خط به عنوان يك متريك استفاده می نمايد .

برای كنترل كارآئی ، پروتكل IGRP  از تايمرهای مختلف زير با مقادير پيش فرض استفاده می نمايد :

  •  Update timers ، فركانس ارسال پيام های بهنگام روتينگ را مشخص می نمايد . مقدار پيش فرض 90 ثانيه در نظر گرفته شده است  .

  • Invalid timers ، مدت زمانی را كه يك روتر می بايست منتظر بماند قبل از اين كه يك مسير نادرست را به ديگران اعلام نمايد ( در صورتی كه در بازه زمانی مورد نظر يك بهنگام جديد دريافت نگردد ) ، مشخص می نمايد . مقدار پيش فرض سه برابر زمان Update timer است .

  • Holddown timers ، مدت زمان holddown را مشخص می نمايد . مقدار پيش فرض سه برابر زمان Update timer به اضافه 10 ثانيه در نظر گرفته شده است . 

  • Flush timers، مشخص می نمايد كه چه مدت زمانی می بايست سپری شود قبل از اين كه بتوان يك مسير را از جدول روتينگ حذف كرد . مقدار پيش فرض هفت برابر زمان Update timer در نظر گرفته می شود . در صورتی كه مقدار  Update timer برابر با 90 ثانيه در نظر گرفته شود ، 360 ثانيه طول خواهد كشيد تا بتوان يك مسير را از جدول روتينگ حذف كرد . 

پروتكل های روتينگ تركيبی و يا EIGRP
EIGRP  ( برگرفته شده از Enhanced IGRP ) يك پروتكل  distance-vector و classless است كه امكانات بيشتری را نسبت به IGRP ارائه می نمايد .
همانند IGRP  ، پروتكل EIGRP از مفهوم يك ناحيه خودمختار برای  تشريح مجموعه ای از روترهای همجوار كه پروتكل های روتينگ مشابهی را اجراء و اطلاعات روتينگ را به اشتراك می گذارند ، استفاده می نمايد . 
برخلاف IGRP ، پروتكل EIGRP در مسيرهای بهنگام خود از Subnet mask استفاده می نمايد . همانگونه كه اطلاع داريد ، ارائه اطلاعات subnet امكان استفاده از  VLSM ( برگرفته شد ه از Variable Length Subnet Masking  ) و خلاصه سازی را در زمان طراحی شبكه فر اهم می نمايد .
در برخی موارد به پروتكل EIGRP به عنوان يك پروتكل تركيبی روتينگ نيز اشاره می شود چراكه دارای ويژگی هائی از پروتكل های  distance-vector  و   link-state  می باشد .  مثلا" EIGRP اقدام به ارسال بسته های اطلاعاتی link-state همانند OSPF ( برگرفته شده از Open Shortest Path First  ) نمی كند . در مقابل ، EIGRP داده بهنگام distance-vector  شامل اطلاعاتی در رابطه با شبكه ها به اضافه هزينه رسيدن به آنها را از ديدگاه روتر پيشنهاد دهنده ارسال می نمايد .
همچنين ، پروتكل EIGRP دارای خصايص Link-state است .  يكسان سازی جداول روتينگ بين همسايگان در زمان راه اندازی و ارسال اطلاعات بهنگام جديد و خاص در زمان بروز تغييرات در توپولوژی شبكه ، نمونه ای در اين زمينه می باشد .
وجود برخی ويژگی های قدرتمند در پروتكل EIGRP آن را از IGRP و ساير پروتكل های روتينگ كاملا" متمايز می نمايد .

  • حمايت از IP ، IPX و AppelTalk از طريق  PDM  ( برگرفته شده از Protocol-Dependent Modules )

  • ارتباط از طريق RTP ( برگرفته شده از Reliable Transport Protocol )

  • انتخاب بهترين مسير از طريق DUAL  (برگرفته شده از diffusing update algorithm )

  • حمايت از چندين سيستم خودمختار ( AS )

  • حمايت از خلاصه سازی و VLSM ( برگرفته شده از  Variable Length Subnet Masking )

+ نوشته شده در  یکشنبه نهم خرداد 1389ساعت 15:49  توسط فرزاد  | 

حدود 33 سال از به ‌وجود آمدن اينترنت مي‌گذرد و از سال 1989 كه وب پديد آمد، بيشتر مردم از آن استفاده مي‌كنند و به‌صورت بخشي از زندگي ايشان در آمده است. شايد علت اين استفاده زياد از اينترنت، استاندارد باز آن بوده است كه امكان ارتباط كامپيوترهاي مختلف را با يكديگر مهيا مي‌سازد. با استفاده از اينترنت مي‌توانيد از هر كامپيوتري كه به‌آن متصل است، ايميل بفرستيد و شخصي در آن طرف دنيا با كامپيوتري كاملاً متفاوت با كامپيوتر شما، آن ايميل را به ‌راحتي بخواند و به ‌شما ايميل ديگري بفرستد.
امروزه تقريباً تمامي ‌شركت‌ها و سازمان‌هاي بزرگ، براي تبادل اطلاعات و فرستادن ايميل به‌مشتريان خود از اينترنت استفاده مي‌كنند. پرسش اين است كه آيا به‌راستي امكاناتي كه اينترنت در اختيار ما قرار مي‌دهد، فقط در فرستادن ايميل و داشتن وب‌سايت خلاصه مي‌شود؟ آيا اينترنت امكان استفاده از منابع سخت‌افزاري سيستم‌هاي ديگر را نيز به‌ ما مي‌دهد؟ پس از اينترنت چه ابزار يا بستري خواهد آمد؟
امروزه فناوري جديدي به‌ نام
Grid به ‌عرصه ارتباطات قدم نهاده است كه براساس آن با دانلودكردن يك محافظ نمايشگر مخصوص مي‌توانيم به‌كامپيوترهاي شخصي خود اجازه دهيم كه وقتي از آن استفاده نمي‌كنيم، به ‌شبكه جهاني متصل شوند و به ‌سيستم‌هاي بزرگ تحقيقاتي اجازه دهند از منابع آزاد و بلااستفاده سيستم ما استفاده نمايد. كامپيوترهاي امروزي مانند مغز انسان معمولا از بخش كوچكي از توانايي‌هاي خود استفاده مي‌كنند و اغلب به‌ صورت غيرفعالند و منتظر اطلاعات ورودي مي‌مانند.
تصور كنيد كه اگر از منابع سخت‌افزاري اين همه كامپيوتر غيرفعال استفاده شود و همه در يك كامپيوتر جمع شود، چه دستگاه پرقدرتي خواهيم داشت.
Grid Computing با ‌كمك به اينترنت زمينه‌اي را فراهم آورده است كه بتوان با استفاده از آن، از منابع سخت‌افزاري سيستم‌هاي ديگر نيز استفاده نماييم.

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

انواع
Grid
سيستم‌هاي
Grid با توجه به‌ نيازهاي كاربران مي‌توانند در انواع مختلف مورداستفاده قرار گيرند. اغلب اين سيستم‌ها بر اساس نوع كاري كه انجام مي‌دهند، طبقه بندي مي‌شوند. از سه نوع اصلي اين سيستم مي‌توان از Gridهاي اطلاعاتي، Gridهاي جوينده منابع و Grid‌هاي محاسباتي نام برد.
Gridهاي اطلاعاتي يا Data Grid موظفند اطلا‌عات را ذخيره كنند و آن‌ها را در اختيار كاربران قرار دهند. كاربران اين سيستم‌ها بدون آن‌كه از موقعيت جغرافيايي و مكاني اين اطلاعات آگاه باشند، به ‌اطلاعات دسترسي دارند. مثلاً تصور كنيد كه دو دانشگاه در دو سوي دنيا يكي در ايران و ديگري در انگلستان روي يك مطلب علمي‌مشترك تحقيق مي‌كنند و هر يك از آن‌ها اطلاعات خاص خود را ذخيره مي‌كند و مي‌خواهد دانشگاه ديگر نيز به ‌برخي از ‌اين اطلاعات (نه تمامي‌آن) دسترسي داشته باشد. اين دانشگاه‌ها مي‌توانند از يك Data Grid استفاده كنند و اطلاعات خود را با ضريب امنيتي بالايي با هم به‌اشتراك بگذارند.
در اين نوع
Grid دستگاه‌هاي متصل به‌سيستم نياز به‌قدرت زياد ندارند و فقط مسئول به ‌اشتراك گذاشتن اطلاعات هستند. از طرف ديگر Grid ‌هاي محاسباتي يا Computational Grid از آن جا كه نياز زيادي به ‌قدرت پردازنده‌ها دارند، بايد از ماشين‌هايي با قدرت بسيار بالا استفاده نمايند.
يكي ديگر از انواع
Gridها، سيستم‌هاي جوينده منابع يا Scavenging Grid است. اين سيستم‌ها از تعداد زيادي كامپيوتر شخصي استفاده مي‌كنند و به‌صورت مداوم به‌دنبال ظرفيت‌ها، منابع آزاد و چرخه پردازنده (CPU cycle) كامپيوتر‌هاي متصل به ‌Grid هستند و از اين منابع استفاده مي‌نمايند. البته صاحبان اين كامپيوترهاي شخصي بايد قبلا‌ً اجازه استفاده از منابع بدون استفاده خود را بدهند.

اهميت
Grid Computing
تقريبا در همه سازمان‌ها و شركت‌هاي بزرگ تعدادي كامپيوتر بدون استفاده وجود دارد. مثلاً سرورهاي يونيكس از تقريباً ده تا بيست درصد از ظرفيت حقيقي خود استفاده مي‌كنند و كامپيوترهاي شخصي حدوداً از 95 درصد از ظرفيت خود اصلاً استفاده نمي‌كنند. با استفاده از
Grid Computing در يك سازمان يا شركت بزرگ مي‌توان از منابع بلا‌استفاده كامپيوترهاي سازمان كمال استفاده را برد و سرعت پردازش اطلاعات در سيستم‌هايي كه با كمبود حافظه مواجهند را جبران نمود. از طرف ديگر، سرعت نرم‌افزارهايي كه از اين منبع بزرگ سخت‌افزاري استفاده مي‌كنند، بسيار بالاتر خواهد بود و در نتيجه مي‌توانيم به ‌فكر درست كردن نرم‌افزارهايي با قابليت‌هاي بالاتر باشيم و منابع بيشتري را در اختيار استفاده‌كنندگان قرار دهيم.
Grid Computing مي‌تواند مزاياي زيادي براي مديران و برنامه‌نويسان داشته باشد. مثلاً با آن مي‌توان برنامه‌هايي كه نياز به‌حافظه زيادي دارند را اجرا نمود و به ‌اطلاعات، دسترسي آسان‌تري پيدا كرد. اصولا ًGrid Computingمي‌تواند به‌سازمان‌ها و شركت‌هاي بزرگي كه سرمايه هنگفتي را در IT هزينه كرده‌اند، كمك كند از سيستم‌هاي خود حداكثر استفاده را ببرند.
فناوري‌هاي
Grid در واقع مي‌توانند از منابع و سيستم‌هاي غيرمتمركز پشتيباني كنند و امكان ارتباط سيستم‌ها را با هم فراهم ‌سازند. وقتي براي اولين بار فناوري Grid ابداع شد، هدف آن تنها به‌اشتراك گذاشتن منابع سيستم و در اختيارداشتن سيستمي‌قدرتمند بود و به‌طور كلي بيشتر در اختيار مؤسسات تحقيقاتي قرار داشت. اما امروزه از Grid توقع بيش‌تري مي‌رود و اهميت بيشتري پيدا كرده است؛ به‌ويژه در تجارت الكترونيك و سيستم‌هاي تجاري غيرمتمركز و توزيع‌يافته. به‌ عنوان نمونه، مدل تجارت الكترونيك B2B را در نظر بگيريد كه دو مؤسسه تجاري اطلاعات خود را از طريق اينترنت با هم مبادله مي‌كنند. Grid نيز مي‌تواند كاري مشابه ‌را انجام دهد و دو يا چند سيستم تجاري را به‌هم مرتبط سازد. به‌طوري كه بتوانند اطلاعات خود را به‌اشتراك بگذارند. فناوري Grid همچنين مي‌تواند راه‌حل مناسبي براي افزايش دسترسي، قابليت اطمينان و امنيت سيستم‌هاي غيرمتمركز نيز باشد.
+ نوشته شده در  پنجشنبه ششم خرداد 1389ساعت 17:52  توسط فرزاد  | 

کسب رتبه های همزمان 2 - 3 - 6 - 20 - 20 - 39 - 50 به ترتیب در گرایش های نفت - رسوب - چینه شناسی - تکتونیک - و رتبه 44 درمهندسی نفت گرایش اکتشاف در آزمون سراسری کارشناسی ارشد توسط ابراهیم سفیداری (سپی داری) را به ایشان ، خانواده محترم ،  آشنایان ، دوستان و به اهالی محترم شهرستان مریوان تبریک می گوییم.
+ نوشته شده در  شنبه یکم خرداد 1389ساعت 10:22  توسط فرزاد  | 

در پروتكل هاي روتينگ Distance vector ، بهترين مسير به يك شبكه راه دور بر اساس مسافت تعيين مي شود . هر مرتبه كه يك بسته اطلاعاتي از يك روتر عبور مي يابد  به آن hop گفته مي شود. مسيري كه داراي تعداد hop كمتري به شبكه مورد نظر باشد به عنوان بهترين مسير انتخاب خواهد شد . در واقع vector  ، نشاندهنده  مسير و يا جهت رسيدن به شبكه راه دور را مشخص مي نمايد . پروتكل هاي RIP ( برگرفته شده از  Routing Information Protocol ) و IGRP  ( برگرفته شده از Interior Gateway Routing Protocol ) دو نمونه متداول از پروتكل هاي روتينگ  Distance-vector  مي باشند .  الگوريتم هاي روتينگ  Distance-Vector ، اطلاعات جداول روتينگ را بطور كامل براي روترهاي همسايه ارسال تا آنها در ادامه اطلاعات دريافتي را با اطلاعات موجود در جداول روتينگ خود تركيب و دانش خود را در خصوص ارتباطات بين شبكه اي كامل نمايند .به روش فوق ،  روتينگ مبتني بر شايعه ( rumor ) گفته مي شود چراكه روتر ، بهنگام سازي جدول روتينگ خود را بر اساس اطلاعات دريافتي از روتر همسايه انجام  مي دهد. در اين روش روتر به اطلاعات دريافتي در خصوص شبكه هاي راه دور اعتماد مي نمايد بدون اين كه خود مستقيما" به اين نتايج رسيده باشد .
همانگونه كه اشاره گرديد ، RIP يك نمونه از پروتكل هاي روتينگ  Distance-vector است كه براي تشخيص بهترين مسير به يك شبكه صرفا" از تعداد hop استفاده مي نمايد . در صورتي كه RIP بيش از يك لينك را به يك شبكه مشابه و با تعداد hop برابر پيدا نمايد  ، بطور اتوماتيك از load balancing گردشي بر روي هر يك از لينك ها استفاده مي نمايد . پروتكل RIP قادر به انجام load balancing بر روي حداكثر شش خط با cost يكسان است .

نحوه آغاز به كار يك پروتكل  Distance-vector  براي آشنائي با پروتكل هاي روتينگ  Distance-vector  لازم است در ابتدا با  نحوه عملكرد  آنها پس از آغاز فعاليت آشنا شويم .  در شكل 1 ، وضعيت جدول روتينگ چهار روتر پس از راه اندازي نشان داده شده است . در جداول فوق صرفا" اطلاعات مربوط به شبكه هائي كه مستقيما" به  هر يك از روترها متصل شده اند ،‌ ذخيره شده است . 
پس از آغاز به كار يك پروتكل روتينگ  Distance-Vector بر روي هر يك از روترها ، جداول روتينگ با استفاده از اطلاعات مسيرهاي جمع آوري شده توسط هر يك از روترهاي همسايه بهنگام مي گردند . 

وضعيت اوليه جداول روتينگ روترها
شكل 1 : وضعيت اوليه جداول روتينگ روترها


همانگونه كه در شكل 1 مشاهده مي نمائيد ، در هر يك از جداول روتينگ صرفا"  اطلاعات شبكه هائي كه مستقيما" به هر روتر متصل شده اند ، ذخيره شده است . هر روتر اطلاعات كامل جدول روتينگ خود را براي هر يك از اينترفيس هاي فعال ارسال مي نمايد .
جدول روتينگ هر روتر شامل اطلاعاتي نظير شماره شبكه ، اينترفيس خروجي و تعداد hop به شبكه است .  بدين ترتيب ، اطلاعات جدول روتينگ كامل و هر يك از آنها دانش لازم در رابطه با تمامي شبكه هاي موجود در ارتباطات بين شبكه اي را كسب مي نمايد . 
شكل 2 ، وضعيت فوق را كه به آن همگرائي  (converge) گفته مي شود نشان مي دهد .  پس از همگرائي روترها ، اطلاعات موجود در جداول روتينگ بين آنها ارسال نخواهد شد .

 ايجاد همگرائي در شبكه
شكل 2 : ايجاد همگرائي در شبكه

بديهي است مدت زماني كه يك شبكه به همگرائي مي رسد بسيار حائز اهميت بوده و كند بودن اين فرآيند مي تواند پيامدهاي نامطلوبي را براي شبكه به دنبال داشته باشد . يكي از مسائل در ارتباط با پروتكل RIP ، كند بودن زمان همگرائي آن است .
جدول روتينگ در هر روتر اطلاعاتي راجع به شماره شبكه راه دور ،  اينترفيسي كه روتر از آن براي ارسال بسته هاي اطلاعاتي به شبكه استفاده مي نمايد و تعداد hop و يا متريك به شبكه را نگهداري مي نمايد . 

حلقه هاي روتينگ ( Routing loops  ) پروتكل هاي روتينگ Distance-Vector تغييرات ايجاد شده در ارتباطات بين شبكه اي  را با انتشار مستمر اطلاعات بهنگام شده روتينگ به تمامي اينترفيس هاي فعال انجام مي دهند .
در اين فرآيند تمامي اطلاعات موجود در جدول روتينگ منتشر مي گردد. فرآيند فوق علاوه بر اشغال بخشي از پهناي باند لينك ارتباطي ، افزايش load   پردازنده روتر را نيز به دنبال خواهد داشت . همچنين ، در صورتي كه يك شبكه با مشكل مواجه شود  ، سرعت كند همگرائي پروتكل هاي روتينگ Distance-Vector مي تواند پيامدهاي منفي نظير جداول روتينگ متناقض و حلقه هاي روتينگ را به دنبال داشته باشد .
در پروتكل هاي روتينگ  Distance-Vector همواره احتمال ايجاد حلقه هاي روتينگ وجود خواهد داشت چراكه هر روتر بطور همزمان بهنگام نمي گردد . براي آشنائي با نحوه ايجاد حلقه هاي روتينگ يك نمونه مثال را در شكل 3 بررسي مي نمائيم .
فرض كنيد اينترفيس به شبكه شماره 5  با مشكل مواجه شود . تمامي روترها دانش خود را در رابطه با شبكه شماره 5 از طريق روتر E دريافت مي نمايند . در جدول روتينگ روتر A يك مسير به شبكه شماره 5 از طريق روتر B وجود دارد .

حلقه هاي روتينگ
شكل 3 : حلقه هاي روتينگ

زماني كه شبكه شماره 5 دچار مشكل گردد ،‌ روتر E اين موضوع را به اطلاع روتر C مي رساند . اين كار باعث مي شود كه روتر C عمليات روتينگ به شبكه شماره 5 از طريق روتر E را متوقف نمايد . روترهاي B، A و D نسبت به بروز مشكل براي شبكه شماره 5 آگاهي نداشته و همچنان اقدام به ارسال اطلاعات بهنگام مي نمايند .سرانجام روتر C  اطلاعات بهنگام شده خود را ارسال و باعث مي گردد كه روتر B روتينگ به شبكه شماره 5 را متوقف نمايد . علي رغم اطلاع به روتر B ، روترهاي A و D هنوز به دليل عدم دريافت اطلاعات بهنگام شده از اين موضوع آگاهي نداشته و از نظر آنها شبكه شماره 5 همچنان از طريق روتر B با متريك شماره 3 دردسترس است .
مشكل زماني ايجاد مي شود كه روتر A پيامي با اين موضوع را ارسال نمايد : " من همچنان اين جا هستم و اين ليست لينك هائي است كه من آنها را مي شناسم "  . در پيام فوق قابليت رسيدن به شبكه شماره 5 و  نحوه دستيابي به آن تشريح شده است . بدين ترتيب روترهاي B و D اخبار جالبي را دريافت مي نمايند كه به آنها اعلام شده است شبكه شماره 5 از طريق روتر A قابل دستيابي است . روترهاي فوق نيز اقدام به ارسال اطلاعاتي مبني بر در دسترس بودن شبكه شماره 5  مي نمايند. بدين ترتيب هر بسته اطلاعاتي كه مقصد آن شبكه شماره 5 باشد به روتر A و سپس به روتر B رسيده و مجددا" به روتر A برگردانده مي شود .
بدين ترتيب يك "حلقه روتينگ " ايجاد مي گردد كه براي پيشگيري و برخورد با آنها مي بايست يك فكر اساسي كرد .

شمارش نامحدود به "حلقه هاي روتينگ " كه در بخش قبل تشريح گرديد ، " شمارش نامحدود " نيز گفته مي شود و علت اصلي‌ بروز اينچنين مسائلي ، شايعات بي‌اساس و اطلاعات نادرستي است كه در شبكه توزيع شده است . بدون وجود يك سيستم كنترلي ، تعداد hop هر مرتبه كه يك بسته اطلاعاتي از يك روتر عبور مي يابد  ، افزايش خواهد يافت . سرعت كند همگرائي شبكه در الگوريتم هاي روتينگ يكي از دلايل اصلي بروز اينچنين مشكلاتي در شبكه است .
براي پيشگيري از اين نوع مسائل ، راه حل هاي مختلفي در هر يك از پروتكل هاي روتينگ پياده سازي شده است  . تعريف حداكثر تعداد hop ، روش route poising ، روش  poison reverse و  split horizon نمونه هائي در اين رابطه مي باشند . 

حداكثر تعداد hop يكي از روش هاي حل مشكل "شمارش نامحدود " ، تعريف يك حداكثر براي تعداد hop است . پروتكل هاي روتينگ Distance-Vector نظير RIP  صرفا" امكان افزايش تعداد hop را  تا 15 فراهم مي نمايند . بنابراين هر چيزي كه نيازمند 16 hop  باشد به منزله غيرقابل دسترس بودن تلقي مي گردد . به عبارت ديگر ،‌ در مثال ارائه شده در بخش قبل ( شكل شماره 3 ) ، پس از ايجاد يك حلقه با پانزده hop ، اين موضوع به اثبات مي رسد  كه شبكه شماره 5 غيرفعال است .
بنابراين شمارش حداكثر تعداد hop ، باعث پيشگيري از گرفتار شدن بسته هاي اطلاعاتي در حلقه هاي تكرار مي گردد . روش فوق با اين كه راه حلي قابل اعمال در شبكه است ولي قادر به حذف حلقه هاي روتينگ در شبكه نمي باشد و بسته هاي اطلاعاتي همچنان در حلقه هاي روتينگ گرفتار خواهند شد . ولي در مقابل اين كه بسته هاي اطلاعاتي بدون نظارت ، كنترل و بررسي در طول شبكه حركت كنند ، حداكثر مسافتي را طي نموده ( به عنوان نمونه تا 16 hop ) و سپس از بين خواهند رفت .

Split Horizonيكي ديگر از راه حل هاي برخورد با مشكل حلقه هاي روتينگ ، Split Horizon است . در اين روش كه كاهش اطلاعات نادرست و حجم عملياتي اضافه روتينگ در يك شبكه Distance-Vector را به دنبال دارد از اين اصل تبعيت مي شود كه اطلاعات نمي توانند در مسيري كه از طريق آن دريافت شده اند مجددا" ارسال گردند . به عبارت ديگر ،‌ پروتكل روتينگ ، اينترفيسي را كه از طريق آن بسته اطلاعاتي را دريافت كرده است بخاطر سپرده و هرگز از اينترفيس فوق براي ارسال مجدد آن استفاده نخواهد كرد . 
بدين ترتيب و با تبعيت از اصل فوق ، روتر A از ارسال اطلاعات بهنگام شده اي كه  از طريق روتر B دريافت نموده است براي روتر B منع مي شود .

route poisoning  
يكي ديگر از روش هائي كه باعث پيشگيري از اطلاعات بهنگام شده  متناقض و توقف حلقه هاي روتينگ مي گردد ، route poisoning ناميده مي‌ شود . مثلا" زماني كه شبكه شماره  5 با مشكل مواجه مي گردد ( شكل 3 ) ، روتر E يك سطر را در جدول روتنيگ خود براي شبكه شماره 5  با مقدار hop شانزده ( غيرقابل دسترس بودن شبكه) درج مي نمايد ( مقدار دهي اوليه route poisoning ) .
با نادرست اعلام كردن مسير رسيدن به شبكه شماره  5 ، روتر C از بهنگام سازي اطلاعات جدول روتينگ خود مبني بر وجود يك مسير براي رسيدن به شبكه شماره  5 پيشگيري مي نمايد .زماني كه روتر C يك  route poisoning را از طريق روتر E دريافت مي نمايد ، يك  poison reverse را براي روتر E ارسال مي نمايد تا اين اطمينان ايجاد گردد كه  تمامي روترهاي موجود در سگمنت اطلاعات مربوط به route poisoning را دريافت نموده اند .
route poisoning و Split Horizon يك شبكه distance-vector با قابليت اطمينان و اعتماد بيشتر را ايجاد مي نمايند كه در آن از بروز حلقه هاي تكرار پيشگيري مي گردد .

Holddown با استفاده از  holddown پيشگيري لازم در خصوص بهنگام سازي اطلاعات يك مسير بي ثبات ، انجام مي شود .  اين وضعيت معمولا" بر روي يك لينك سريال اتفاق مي افتد كه در يك لحظه برقرار و در لحظه اي ديگر غيرفعال مي گردد (flapping ) . در  صورت عدم استفاده از روشي جهت تثبيت اين وضعيت ، شبكه هرگز همگراء نشده و اينترفيسي كه دائما" up و down مي گردد مي تواند تمامي شبكه را با مشكل مواجه سازد .
با استفاده از holddown  از ثبت مسيرهائي كه وضعيت آنها با سرعت زياد تغيير پيدا مي نمايد ، پيشگيري بعمل آمده و به آنها يك فرصت زماني داده مي شود تا وضعيت پايداري پيدا نمايند .  بدين ترتيب ، به روترها اعلام مي شود كه براي يك بازه زماني خاص هر گونه تغييراتي كه بر روي مسيرهاي حذف شده اخير تاثير مي گذارد را محدود نمايند . با اين كار از درج مسيرهاي بي ثبات در ساير جداول روتينگ پيشگيري بعمل مي آيد .
زماني كه يك روتر اطلاعات بهنگام شده اي را از طريق يكي از همسايگان مبني بر غيرقابل دسترس بودن يك شبكه دريافت مي نمايد ( شبكه اي كه تا پيش از اين فعال بوده است ) ، تايمر holddown آغاز به كار مي كند . در صورتي كه اطلاعات بهنگام شده جديدي از يك همسايه دريافت شود كه داراي متريك بهتري نسبت به وضعيت اوليه موجود در جدول روتينگ باشد ، holddown برداشته شده و داده عبور داده مي شود ولي اگر اطلاعات بهنگام شده اي از يك روتر همسايه دريافت گردد ( قبل از اتمام مدت زمان تايمر holddown ) ، كه داراي متريك برابر و يا كمتر از مسير قبلي باشد ، از اطلاعات جديد بهنگام صرفنظر و تايمر به فعاليت خود ادامه خواهد داد . بدين ترتيب زمان بيشتري براي ايجاد ثبات در شبكه قبل از آغاز فرآيند همگرائي آن فراهم مي گردد .
holddown از فرآيند بهنگام سازي مبتني بر trigger استفاده مي نمايد . در اين فرآيند تايمر reset مي گردد تا به روترهاي همسايه اطلاع داده شود يك تغيير در شبكه اتفاق افتاده است .  برخلاف پيام هاي بهنگام از روترهاي همسايه ، در اين نوع بهنگام سازي ( مبتني بر trigger ) يك جدول روتينگ جديد ايجاد و بلافاصله براي روترهاي همسايه ارسال مي گردد چراكه يك تغيير در ارتباطات بين شبكه اي تشخيص داده شده است .

+ نوشته شده در  دوشنبه بیستم اردیبهشت 1389ساعت 20:3  توسط فرزاد  |