قبل از ابداع کامپیوترهای شخصی، عملا برنامه های توزیع شده ای وجود نداشته است .
در آن دوران ، استفاده از کامپیوتر، شامل نشستن پشت یک ترمینال و برقراری ارتباط با یک سیستم بزرگ (Mainframe) بود.
با اینکه ترمینال ها در چندین ساختمان و یا حتی محل فیزیکی قرار می گرفتند ، ولی عملا یک کامپیوتر مرکزی وجود داشت که مسئولیت انجام تمامی پردازش ها و ذخیره سازی داده ها را برعهده می گرفت .
با ابداع مینی کامپیوترها و کامپیوترهای شخصی، فعالیت های غیرمتمرکز، در دو زمینه پردازش و ذخیره سازی ، آرزوئی دست یافتنی گردید.
با طراحی برنامه های توزیع شده ، امکان پردازش و ذخیره سازی داده ها از حالت متمرکز خارج گردید.یک برنامه توزیع شده، برنامه ای است که پتانسیل های پردازشی آن ممکن است توسط چندین کامپیوتر فیزیکی تامین و داده های آن در چندین محل فیزیکی، مستقر شده باشد .
تعریف سیستم توزیع شده:
هر سیستمی که بر روی مجموعه ای از ماشین ها که دارای حافظه اشتراکی نیستند، اجرا شده و برای کاربران به گونه ای اجرا شود که گویا بر روی یک کامپیوتر می باشند ، یک سیستم توزیع شده است.
در یک سیستم توزیع شده :
یک نرم افزار یا مجموعه نرم افزاری واحد و متحد الشکل بر روی هر گره اجرا می شود.
همه ماشینها یک کرنل مشابه را اجرا می کند.
هر کرنل منابع خود را کنترل می کند 
 چرا به برنامه های توزیع شده نیاز داریم ؟
در این رابطه دلایل متعددی عنوان می شود که مهمترین آنان عبارتند از : 
هزینه سیستم های Mainfarme .
یکی از اولین دلایل مهم ، هزینه های بالای سیستم های Mainframe است .
این مسئله از دو زاویه متفاوت قابل بررسی است : هزینه بالای سرمایه گذاری اولیه که بسیاری از سازمان ها و موسسات توان مالی آن را ندارند و دوم اینکه در این مدل ، دارای صرفا یک نقطه آسیب پذیر با ریسک بالا می باشیم .
مالکیت اختصاصی داده ها.
یکی از فاکتورهای مهم دیگر، سیاست های مربوط به مالکیت داده ها است .
سازمان ها و موسسات که دارای داده های اختصاصی خود می باشند، علاقه مند به واگذاری مسئولیت مدیریت داده های مربوطه ، به سایر مکان های فیزیکی نمی باشند .
امنیت .
یکی دیگر از فاکتورهای مهم در این زمینه موضوع امنیت است .
برای یک سازمان ، اولا دستیابی به اغلب داده های آن می بایست بسادگی محقق گردد و ثانیا داده ها ی حساس موجود در سازمان می بایست از بعد امنیتی، ایمن نگهداری گردند .
تامین دو خواسته فوق ( رویکردهای رقابتی و رویکردهای امنیتی ) با جدا سازی فیزیکی داده ا از یکدیگر محقق خواهد شد ( انباشت داده ها، با نگرش های متفاوت در رابطه با سرعت در دستیابی و ایمن در ذخیره سازی ، ضرورت وجود برنامه های توزیع شده را بخوبی نمایان می سازد ) 
مواردی که در طراحی سیستم توزیع شده باید در نظر گرفت:
قابلیت اطمینان:
در دسترس بودن یک فاکتور مهم مرتبط با این سیستم ها است.
طراحی نباید به گونه ای باشد که نیاز به اجرای همزمان کامپوننت های اساسی باشد.
افزونگی بیشتر داده هاه باعث افزایش در دسترس بودن شده اما ناسازگاری را بیشتر میکند.
قدرت تحمل نقص(Fault tolerance) باعث پوشاندن خطاهای ایجاد شده توسط کاربر می شود.
 کارآیی:
بدون کارآیی مناسب کلیه موارد استفاده نرم افزار بی فایده می باشد.
اندازه گیری کارایی در سیستم های توزیع شده کار آسانی نیست.
برای رسیدن به کارایی باید توازنی خاص در تعداد پیغامها و اندازه کامپوننهای توزیع شده بر قرار باشد.
 قابلیت گسترش:
قابلیت گسترش یک اصل کلی برای توسعه سیستمهای توزیع شده می باشد.
برای رسیدن به این قابلیت باید از کامپوننتها، جداول و الگوریتمهای متمرکز دوری کرد.
فقط باید از الگوریتمهای غیر متمرکز استفاده شود.
 
سیستمهای توزیع شده متکی بر ارتباطات هستند و به طور کلی از دو سرویس زیر استفاده می کنند:
انتقال پیام Message Passing 
فراخوانی از راه دور رویه ها Remote Procedure Call 
 سیستم توزیع شده از دید لایه بندی ها بخشهای اصلی سیستم عامل توزیع شده · مدیریت فایل · مدیریت منابع · مدیریت حافظه · مدیریت فرآیندها · Kernel سیستم عامل توزیع شده باید امکانات Encapsulating منابع را مهیا سازد.
کرنل و سرورها هر دو وظیفه مدیریت منابع را بر عهده دارند و چون شامل منابع نیز می باشند، باید موارد زیر را مهیا سازند: مجتمع سازی داده ها و سرویس ها Encapsulating پردازش همزمان محافظت داده ها نحوه دسترسی به منابع کلاینتها با مشخص سازی منابع در آرگومان عملیات (فراخوانی از راه دور رویه ها در سرور یا فراخوانی سیستم در کرنل)به آنها دسترسی پیدا می کنند.
مسائل فوق، ضرورت حرکت بسمت ایجاد یک الگوی جدید بمنظور طراحی برنامه های کامپیوتری را مطرح و بر همین اساس نسل جدیدی از برنامه های کامپیوتری با عنوان " برنامه های توزیع شده" در عرصه نرم افزار بوجود آمد .
فصل دوم محاسبات توری (Grid computing) مقدمهای بر محاسبات توری (Grid computing) مسأله گرید گرید و مفاهیم دیگر از محاسبات توزیعی محاسبات توری چیست؟
فواید محاسبات توری بهره برداری از منابع مورد استفاده ظرفیت پردازنده موازی منابع مجازی و سازمانهای مجازی باری مشارکت دستیابی به منابع اضافی توازن منابع قابلیت اطمینان مدل معماری گرید ارزیابی معماری گرید ارزیابی معماری محاسبات گرید و مدلهای گرید Adoption استانداردها برای محیطهای گرید استاندارد OGSI استاندارد گرید FTP استاندارد WSRF استانداردهای مرتبط با سرویسهای وب معرفی امنیت گرید (گرید Security) نیازهای امنیتی گرید چالشهای امنیتی موجود در محیط یک گرید دامنههای امنیتی گرید اصول امنیت اصطلاحات مهم در رابطه با امنیت گرید The Certificate Authority اسناد دیجیتالی انواع متفاوت Certificateها چگونگی دسترسی به گرید Authentication & Aithorization SSL Handshake طراحی گرید اهداف راه حل توپولوژی گرید Intra گرید Extra گرید Inter گرید بررسی برخی از پروژههای گرید Search for Extra Terrestrial Intelligence: SETI @ Home NaREGI Folding @ Home Google (Basic Local Alignment Search tool) BLAST گرید Sim چیست؟
معماری سیستم موجودیتهای گرید Sim مقایسه و نتیجه گیری 1-1 مقدمهای بر محاسبات توری (Grid computing) ایده توزیع کار به منظور دستیابی به سرعت و به عبارت دیگر یک صرفه جویی در زمان قرن هاست که مدنظر بوده است.
تاریخ پر است از این مثالها - تفکر در ساخت هرم ها، چیدن کتان در کشتزار و یا یورش گردانهای نظامی در جنگ که میتوانند به شما ایده بدهند.
این ایده به طور طبیعی حتی پیش تر نیز وجود داشته که کندوی عسل یک مثال بارز از آن است.
بسیاری از تکنیکهای مدرن علمی از قبیل میکرو آرایهها و 98-well plate نیز کارها را برای دستیابی به سرعت، توزیع میکنند.
در اوایل قرن بیستم، کامپیوتر مثل شخصی بود که کارهای محاسباتی را که به صورت توزیع شده نیز قابل انجام بودند، به تنهایی انجام میداد (کارهایی از قبیل جدول بندی دادههای سرشماری).
به طور خلاصه یک گرید عبارتست از: محاسبه توزیع شده قابل توسعه در مقابل Platformهای ناهمگن چندگانه، سازمانها و مکان ها.
اصطلاح قابل توسعه یا همان Scalable، به نیاز عملیاتی و مدیریتی منابع توزیع شده به صورت امن، برمی گردد.
همانگونه که در شکل زیر نشان داده شده است، کنترل یک گرید توسط میان افزار Middleware، مدیریت میشود که یک مجموعه استاندارد سازگار از سرویسهای گرید را برای Applicationها فراهم میکند تا با منابع شبکه ای، محاسبه ای، اطلاعات و ذخایر داده به صورت امن تعادل داشته باشند.
بود که Applicationها توسط مهندسان و محققان، روی کلاسترهای محاسباتی با کارایی بالا اجرا میشدند.
گریدهای امروزی میتوانند در سازمانهای گوناگون از قبیل تحقیقات علمی، کشف داروها، تجزیه و تحلیل ریسکهای مالی، پیش بینی آب و هوا، طراحی، شبیه سازی، هوش تجاری و محیطهای پردازش تراکنش، در سرتاسر جهان یافت شوند.
همچنین از مشخصههای معمول گرید میتوان به موارد زیر اشاره کرد: * مجازی سازی * اشتراک گذاری منابع * فراهم آوردن منابع پویا 1-2 مسأله گرید: محاسبات توری بدین وسیله جدا کردن خود از محاسبات توزیعی از طریق تمرکز روی اشتراک گذاری منابع، هماهنگی، قابلیت مدیریت و کارایی بالا، به یک عنصر مهم در صنعت کامپیوتر تبدیل شده است.
تمرکز روی «اشتراک گذاری منابع»، مسأله گرید نامیده میشود که میتواند به عنوان مجموعه از مسایل مرتبط به هم با اشتراک گذاری منابع بین مجموعهای از گروهها تعریف شود.
2-2 گرید و مفاهیم دیگر از محاسبات توزیعی: یکی از مشخصههای اساسی گرید، توانایی آن در مجازی سازی application ها، اطلاعات و منابع دیگر IT مانند شبکه ها، سرویس دهندهها و غیره میباشد.
مجازی سازی عبارتست از یک نمایش منطقی از منابعی که از مکان فیزیکی خود جدا شده اند.
در حقیقت مجازی سازی، applicationها و اطلاعات را از اینکه به صورت فیزیکی تخصیص داده شوند ، رها می کند.گرید با استفاده از مفهوم مجازی سازی ، application ها و منابع اطلاعاتی مرتبط به زیربنای IT را مجازی سازی میکند.
توجه به این نکته مهم است که بسیاری از گریدهای امروزی، اغلب از منابع IT غیرمجازی ساخته شده اند.همچنین گرید، از یک نوع معماری مشهور به نام معماری سرویس گرا (Service-Oriented Architecture) یا SOA برای ساختن و مدیریت applicationها حمایت و بهره برداری میکند.
معماری سرویس گرا (SOA)، یک روش برای معماری نرم افزار جهت حمایت از کارها و سرویسهای تکراری میباشد.
3-2 محاسبات توری چیست؟
محاسبات توری، برای اشخاص مختلف معانی مختلفی میتواند داشته باشد.
یک دیدگاه کلی که اغلب به عنوان یک مقیاس برای قدرت گریدها استفاده میشود جایی است که کاربران یا لوازم الکتریکی از طریق پریزهای دیوار به الکتریسیته دسترسی پیدا میکنند بدون در نظر گرفتن اینکه الکتریسیته دقیقاً کجا و چگونه تولید میشود.
اگر از این دید به محاسبات توری نگاه کنیم، فرآیندی منتشر شونده است و کاربران شخصی یا اپلیکیشنهای مشتری، به منابع محاسباتی (پردازنده ها، حافظه، دیتا، برنامههای کاربردی و امثال آن) که مورد نیازشان است دسترسی دارند با آگاهی کم و یا بدون آگاهی از اینکه آن منابع کجا واقع شده اند و یا از چه تکنولوژیهای زیرین سخت افزار، سیستم عامل و غیره استفاده میکنند.
اگر این دیدگاه را به عنوان یک هدف نهایی در نظر بگیریم، قدمهای کوچکتر بسیاری وجود دارند که برای رسیدن به این هدف باید برداشته شوند.
این قدمهای کوچک هر یک فواید خاص خود را دارند.
بنابراین محاسبات توری میتواند به عنوان سفر در امتداد مسیری دیده شود که در این مسیر تکنولوژیهای متنوع و راه حلهای متنوع با هم ادغام میشوند و ما را به هدف نهاییمان نزدیکتر میکند.
محاسبات توزیع شده تکنولوژیهایی را بنا میکند که در پشتیبانی برنامههای کاربردی سازمان گذر در حال تکاملند و این به اشتراک گذاشتن منابع در یک کلمه به معنی مجازی سازی است.مجازی سازی از میان تکنولوژیها، پلتفرمها و سازمانها.
این نوع مجازی سازی فقط از طریق به کارگیری استانداردهای باز قابل دستیابی است.
استاندارهای باز اطمینان میدهند که برنامههای کاربردی هر آنچه را که منابع اختصاصی میتوانند در اختیار آنها قرار دهند را میتوانند استفاده کنند.
محیطی که بتواند توانایی دسترسی به منابع به طور اشتراکی و شفاف را از میان یک محیط توزیع شده نامتجانس ایجاد کند، نه تنها به تکنولوژی نیاز دارد که منابع معین را مجازی سازی کند بلکه به تکنولوژیها و استانداردهایی در زمینه زمانبندی، امنیت، حسابداری، مدیریت سیستم و مانند آن نیاز خواهد داشت.
محاسبات توری میتواند به عنوان هر تنوع از سطوح مجازی سازی در امتداد یک پیوستار تعریف شود.
این پیوستار در شکل زیر شرح داده شده است.
با شروع از پایین ترین قسمت سمت چپ ملاحظه میکنید که سیستمهای واحدی که از یکدیگر جدا هستند.
مجازی سازی با توانایی تکه تکه کردن یک ماشین به ماشینهای مجازی شروع میشود.
همین طور که در این طیف حرکت میکند شروع میکنید به مجازی سازی منابع مشابه.
مجازی سازی نه تنها برای سرویس دهندهها و پردازندهها به کار میرود بلکه برای حافظه، شبکهها و حتی برنامههای کاربردی نیز به کار برده میشود.
با حرکت در این طیف به مجازی سازی منابع نامتشابه میرسیم.
قدم بعدی یک مجازی سازی جسورانه تر است که نه تنها در یک مرکز دادهای خاص یا در یک دپارتمان است بلکه در سرتاسر یک سازمان توزیع شده صورت میپذیرد و سپس در آخر مجازی سازی فوق العاده جسورانهای صورت میگیرد یعنی مجازی سازی در سطح اینترنت.
جایی که شما میتوانید دقیقاً به منابع یک مجموعه و تهیه کنندگانشان دسترسی داشته باشید و یا ممکن است اطلاعات را در سرتاسر یک شبکه از شرکاء، ادغام کنید.
محاسبات توری شامل یک مجموعه در حال تکامل از استانداردهای باز برای سرویسهای وب و واسطهایی است که سرویسها و یا منابع محاسبات در دسترس روی اینترنت را میسازند.
اگر توجهمان را روی محاسبات توزیع شده متمرکز کنیم، میتوانیم یک تعریف برای محاسبات توری ارایه دهیم برای اینکه در سطح اینترنت به صورت محاسبات توزیع شده باشد.
هدف این است که یک خطا ایجاد کنیم به این صورت که کاربر یک کامپیوتر مجازی ساده و بزرگ و قدرتمند را تصور کند در حالی که این کامپیوتر قدرتمند یک مجموعه از سیستمهای به