تحمل خطا (علوم رایانه)

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

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

دلایل[ویرایش]

دلایل نیاز به تحمل خطا[۲]

  1. اتکا پذیری: کارکرد بلادرنگ سیستم بدون هیچ وقفه‌ای
  2. دسترسی: دسترسی به اطلاعات در هر زمان
  3. امنیت: جلوگیری از دسترسی‌های غیرمجاز

دلایل به وجود آمدن خطا

  1. خطاهای نرم‌افزاری و یا سخت‌افزاری
  2. دسترسی غیرمجاز

طراحی مقاوم در برابر خطا[ویرایش]

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

روش‌های تحمل خطا[ویرایش]

به طور عمومی تحمل خطا می‌تواند با دو روش عمومی حاصل شود:

خود تثبیت[ویرایش]

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

معایب: مشکلات اصلی این روش وقتی است که سلسله‌ای از خطاهای حیاتی در سامانه رخ دهد و یا هزینهٔ سامانه با ضریب اطمینان بالا خیلی زیاد شود.

نسخه برداری[ویرایش]

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

روش‌های تحمل خطا در نرم‌افزار[ویرایش]

درخت رویکرد نرم‌افزار در رابطه با تحمل خطا.

روش‌های تحمل خطا در حوزهٔ نرم‌افزار به سه دستهٔ کلی تقسیم می‌شود:[۴]

  • جلوگیری یا اجتناب از خطا
  • حذف خطا
  • پیش بینی خطا
  • تحمل خطا

جلوگیری یا اجتناب از خطا

این روش رویکردی شبه خودتثبیت دارد و نرم‌افزاری بدون خطا طراحی می‌شود.

حذف خطا[ویرایش]

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

پیش بینی خطا[ویرایش]

پیش بینی خطاهای احتمالی در نرم‌افزار و شرایط رخدادشان و خطرهای احتمالی ناشی از آن‌ها.

تحمل خطا[ویرایش]

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

رویکرد تحمل خطا[ویرایش]

در زمان رخداد خطا دو راه حل وجود دارد:[۵]

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

روش‌های تحمل خطا در دیسک‌ها[ویرایش]

RAID 1 نسخه ی دوم از هر داده را بر روی دیسک کمکی ذخیره می کند.

اصلی‌ترین روش در این حوزه به کارگیری آرایه چندگانه دیسک‌های مستقل (به انگلیسی:redundant array of independent disks) یا RAID است.

از اصلی‌ترین اهداف این فناوری:

  1. افزایش توان کارکرد از راه تکنیکی به نامdata striping(خواندن و نوشتن داده‌ها بر روی چند دیسک به صورت موازی)
  2. افزایش توان تحمل در برابر خطا (fault-tolerance) از راه نسخه برداری و تصحیح گرهای داده‌ها (Error correcting).

منابع[ویرایش]

  1. Oscar González. «Adaptive Fault Tolerance and Graceful Degradation». 1997, University of Massachusetts - Amherst. 
  2. Sumit jain. «Fault tolerance in distributed systems». jul 2, 2014. 
  3. Johnson, B. W. "Fault-Tolerant Microprocessor-Based Systems". IEEE Micro, vol. 4, no. 6, pp. 6–21, 1984. 
  4. Laura L. Pullum "Software Fault Tolerance Techniques and "Implementation. Artech House، 2001. 
  5. «Techniques for Fault Tolerance in Software». بازبینی‌شده در 2017-04-25.