Sirus-v کاربر اخراج شده
تاريخ عضويت: شنبه 1 مرداد 1384 تعداد ارسالها: 325
3 شنبه 18 بهمن 1384 - 01:38 |
|
|
ببین دوست عزیز اول از همه خدمتت عرض کنم که C یک زبان سطح بالا هست نه سطح پایین (تفکر غلتی که بخاطر دشواری این زبان بهش تحمیل شده ) اما در مورد دلایل استفاده از سی :
اگه در این مورد بخوایم توضیح بدیم یک کتاب میشه و چیزی نیست که راحت بشه تو تالارها عنوان کرد ولی خلاصه بگم خدمتت که این زبان اولین بار برای طراحی سیستم عامل یونیکس نوشته شد و در تمام سیستم عاملها کامپایلرش موجوده , همچنین قدرت اصلی زبان سی به آزادی کار با حافظه ( چیزی که در جاوا و بیسیک کاملا" محدود شده ) و اشاره گر هاست و مورد مهم دیگه این زبان در ویندوز ارتباط راحت آن با توابع سیستمی و API هاست . نکته دیگه وجود اون تو هر سیستم عاملی هست و با توجه به اینکه perl و Python هم در اکثر سیستم عاملها قابل اجرا هستند میشه گفت که این دو با اینکه بسیار قدرتمند هستند برای مصارف سیستمی بکار نمی رند و بیشتر برای CGI های تحت وب و Socket programming مورد استفاده هستند . ولی سی یک زبان 100% سیستمی هست که برای همین مقصد هم طراحی شده و با یک نکته بیشتر به تفاوت این زبان پی می برید .
تا حالا کلمه Overflow رو شنیدین ؟؟ زمانی که محتوای یک متغیر در حافظه بیش از حد پر بشه محتویات از فضای اصلی خارج شده و به رجیستر ها مثل : ESP, Return address و غیره ریخته میشند و چون اونها هم شامل محتوایی خاص هستند (حاوی آدرس ادامه Return توابع در حافظه هستند ) محتواشون OverWrite میشه و اصطلاحا" Buffer Overflow اتفاق میفته .
این یک حفره امنینتی بسیار خطرناک محسوب میشه و اکثر حملات به سیستم عاملها (مثل باگ های معروف LSASS و PRC , ویندوز ) از این طریق هستند .
در یک زبانی مثل VB براحتی این حملات کنترل میشند و فقط برنامه متوقف شده و پیغام Overflow میده ولی در سی برنامه متوقف شده و خطای Segmentation Fault (در لینوکس مشهورتره ) داده میشه . این خطا سرچشمه حملات امنیتی .... حالا میتونیم بگیم VB از سی قوی تره ؟؟؟ خیر چون سی امکانات بیشتری به برنامه نویس برای کار با حافظه Buffer ها و غیره میده .
موارد دیگه ای هم هستند . مثل Raw Socket که بعد از مدت ها کامپوننتش به نام PocktX برای ویژوال بیسیک کاران نوشته شد در حالی که از خیلی قبل پیش در سی بوحود اومد . موارد دیگه ای هم هست که در اصول طراحی کامپایر ها و سیستم عامل بیشتر باهاش آشنا میشی (اگه علاقه داشته باشی )
موفق باشید . |
|
|