لایه انتزاعی
در محاسبات، یک لایه انتزاعی یا یک سطح انتزاعی راهی برای پنهان کردن جزئیات کاری یک زیرسیستم است که امکان جداسازی ارتباطها را برای تسهیل قابلیت همکاری و استقلال پلت فرم فراهم میکند. نمونههایی برای مدلهای نرمافزاری که از لایههای انتزاعی استفاده میکنند عبارتند از مدل OSI برای پروتکلهای شبکه، OpenGL و کتابخانههای گرافیکی.
در علوم کامپیوتر، یک لایه انتزاعی، کلیت بخشی از یک مدل مفهومی یا الگوریتم است، بدون نیاز به پیادهسازی خاص. این تعمیمها ناشی از شباهتهای بسیار هستند که این شباهتها به بهترین وجه توسط مدلهایی که شباهتهای موجود در پیادهسازیهای مختلف را بیان میکنند، محصور میشوند. سادهسازی که توسط یک لایه انتزاعی خوب ارائه شده امکان استفاده مجدد و آسان را با اضافه کردن یک مفهوم یا الگوی طراحی مفید فراهم میکند تا موقعیتهایی که باید به دقت اعمال شوند، به سرعت شناسایی شوند.
یک لایه در صورتی که به لایه دیگری بستگی( جفتگری) دانش رایانه داشته باشد، آن لایه بالای آن در نظر گرفته میشود. هر لایه میتواند بدون لایههای بالای آن وجود داشته باشد وبه لایههای زیر برای عملکرد مناسب نیاز دارد. لایههای انتزاعی مکرراً میتوانند در سلسله مراتبی از سطوح انتزاعی تشکیل شوند. مدل OSI شامل هفت لایه انتزاعی است. هر لایه از این مدل بخش متفاوتی از نیازهای ارتباطات دیجیتال را در بر میگیرد و آدرس دهی میکند و در نتیجه پیچیدگی راه حلهای مهندسی مرتبط را کاهش میدهد.
جمله معروف دیوید ویلر این است که «همه مشکلات در علوم کامپیوتر را میتوان از راه غیر مستقیم حل کرد». و این جمله معمولاً به عمد اشتباه نقل میشود و «انتزاع» جایگزین «غیر مستقیم» میشود. همچنین گاهی اوقات این جمله به اشتباه به باتلر لمپسون نسبت داده میشود. نتیجهگیری کولین هنی این است: «... به غیر از مشکل لایههای غیرمستقیم و زیاد.»[۱]
معماری کامپیوتر[ویرایش]
در معماری کامپیوتر، یک سیستم کامپیوتری معمولاً متشکل از چندین سطح انتزاعی مانند:
منطق قابل برنامهریزی اغلب بخشی از سختافزار در نظر گرفته میشود، در حالی که گاهی اوقات تعاریف منطقی به عنوان بخشی از نرمافزار یا سیستم عامل دستگاه دیده میشود. سیستم عامل ممکن است فقط شامل نرمافزارهای سطح پایین باشد، در صورتی که میتواند شامل همه نرمافزارها، از جمله سیستمعامل و برنامههای کاربردی نیز باشد. لایههای نرمافزار را میتوان به لایههای انتزاعی سختافزار، درایورهای فیزیکی و منطقی دستگاه، مخازن مانند فایلهای سیستم، هستههای سیستم عامل، میانافزار، برنامهها و موارد دیگر تقسیم کرد. تفاوتها میتواند ناشی از زبانهای برنامهنویسی سطح پایین باشد مانند VHDL، زبان ماشین، زبان اسمبلی به زبان کامپایل شده، مفسر و زبان اسکریپت.
ورودی و خروجی[ویرایش]
در سیستم عامل یونیکس، بیشتر عملیات ورودی و خروجی به عنوان جریان بایتها یی در نظر گرفته میشوند که از یک دستگاه خوانده میشوند یا روی یک دستگاه نوشته میشوند. این مدل جریان بایت برای I/O فایل، سوکت I/O و ترمینال I/O برای ایجاد استقلال در دستگاه استفاده میشود. برای خواندن و نوشتن در سطح برنامه یک دستگاه، برنامه یک تابع را برای باز کردن دستگاه فراخوانی میکند که این دستگاه ممکن است یک دستگاه واقعی مانند یک ترمینال یا یک دستگاه مجازی مانند یک پورت شبکه یا یک فایل در یک سیستم فایل باشد. ویژگیهای فیزیکی دستگاه توسط سیستم عامل مشخص میشود که یک رابط انتزاعی را که به برنامهنویس اجازه میدهد تا بایتها را از دستگاه بخواند و در دستگاه بنویسد ارائه میدهد. سپس سیستم عامل تبدیل نهایی مورد نیاز برای خواندن و نوشتن جریان بایتها در دستگاه را انجام میدهد.
گرافیک[ویرایش]
اکثر کتابخانههای گرافیکی مانند OpenGL یک مدل دستگاه گرافیکی انتزاعی را به عنوان رابط ارائه میدهند. کتابخانه مسئول ترجمه دستورات ارائه شده توسط برنامهنویس به دستورات قابل فهم برای دستگاه است که برای ترسیم عناصر و اشیاء گرافیکی به آن نیاز دارد. دستورات قابل فهم برای دستگاهی مانند یک پلاتر با دستورات دستگاه برای مانیتور CRT متفاوت است، اما کتابخانه گرافیکی جزئیات وابسته به دستگاه و پیادهسازی را با ارائه یک رابط انتزاعی که مجموعه ای از موارد اولیه را ارائه میدهد و برای ترسیم اشیاء گرافیکی مفید هستند، پنهان میکند.
بیشتر[ویرایش]
- رابط برنامهنویسی برنامه (API)
- رابط باینری برنامه (ABI)
- کامپایلر، ابزاری برای انتزاع بین کد منبع و کد ماشین
- انتزاع سختافزاری
- پنهان کردن اطلاعات
- لایه (طراحی شی گرا)
- حلقه محافظ
- سیستم عامل، یک لایه انتزاعی بین یک برنامه و سختافزار کامپیوتر
- مهندسی نرمافزار
This article "لایه انتزاعی" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:لایه انتزاعی. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.
This page exists already on Wikipedia. |
- ↑ @kevlinhenney (September 3, 2012). "Yes, that's my corollary" (Tweet) – via Twitter.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.