دسته (محاسبات)

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

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

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

مقایسه با اشاره گرها

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

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

امنیت

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

برای مثال، اگر برنامه ای بخواهد فایل رمز عبور سیستم ( /etc/passwd) را در حالت خواندن/نوشتن ( ) بخواند O_RDWR، می تواند از طریق فراخوانی زیر سعی کند فایل را باز کند:

int fd = open ( "/etc/passwd" ، O_RDWR );    

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

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

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

مثالها

دستگیره ها راه حل محبوبی برای مدیریت حافظه در سیستم عامل های دهه 1980 مانند Mac OS [1] و Windows بودند. ساختار داده FILE در کتابخانه استاندارد C I/O یک دسته فایل است که از نمایش فایل زیرین انتزاع می شود (در یونیکس اینها توصیفگرهای فایل هستند ). مانند سایر محیط های دسکتاپ , Windows API به شدت از دستگیره ها برای نشان دادن اشیاء در سیستم و ایجاد یک مسیر ارتباطی بین سیستم عامل و فضای کاربر استفاده می کند . به عنوان مثال، یک پنجره در دسکتاپ با یک دسته از نوع نمایش داده می شودHWND(دسته، پنجره).

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

همچنین ببینید

منابع

  1. هرتزفلد، اندی (ژانویه 1982)، مکینتاش اصلی: مجارستانی ، بازیابی شده 10-05-2010

پیوندهای خارجی