برای درک مفهوم server skeleton و client stub ابتدا بهتر است که با مفهوم CORBA و ORB آشنا شویم.
CORBA مخفف Common Object Request Broker Architecture یک معماری نرم افزاری است که قطعاتی به نام اشیا را صرفنظر از زبانی که با آن نوشته شده اند یا سیستم عاملی که بر روی آن اجرا میشوند به برقراری ارتباط با یکدیگر قادر میسازد.CORBA بوسیله یک کنسرسیوم صنعتی به نام OMG توسعه داده میشود.
ORB مخفف Object Request Broker است و یک جز از CORBA است که بعنوان میان افزار بین client و Server عمل میکند.
مدل شی CORBA شی ای را در نظر میگیرد که صفات و سرویس ها را بسته بندی کرده باشد. اشیا CORBA باید واسط جداگانه ای داشته باشند که صفات و عملیات عمومی شی را تعریف کند . واسط های شی CORBA با استفاده از واسط IDL(زبان تعریف واسط) تعریف شده اند.اگر شی ای بخواهد از سرویس های شی دیگر استفاده کند ، از طریق واسط IDL به آنها دسترسی دارد.اشیا CORBA شناسه منحصربفردی به نام IOR دارند.این IOR وقتی استفاده میشود که شی ای سرویس هایی را از شی دیگر درخواست کند.کارگزار درخواست شی(object request server) اشیای درخواست کننده سرویس ها و واسط های بین آنها را می شناسد.ORB ارتباط بین اشیا را اداره می کند .اشیایی که با هم ارتباط برقرار میکنند لازم نیست محل یکدیگر را بدانند و از پیاده سازی همدیگر اطلاع داشته باشند.چون واسط IDL اشیا را از ORB جدا می کند میتوان پیاده سازی شی را بسادگی تغییر داد.محل شی ممکن است در فراخوانی ها تغییر کند و تمام اشیا دیگر هم این تغییر محل را ببینند.شکل زیر نشان میدهد که چگونه دوشی O1و O2 از طریق ORB با هم ارتباط برقرار می کنند.

ارتباط اشیا از طریق ORB
شی فراخوان (O1) یک stub(تابع) مربوط به IDL دارد که واسط شی ای را تعریف می کند که سرویس های درخواستی را ارائه میدهد.پیاده سازی O1 هنگام نیاز به سرویس ها فراخوانی این تابع(stub) را در پیاده سازی شی خود تعبیه می کندIDL شبیه به ++C است و در نتیجه اگر به C++ ، C یا Java برنامه نویسی کنید IDL میتواند به این تابع دسترسی داشته باشد.
شی ای که سرویس ها را ارائه می کندیک اسکلت IDL دارد که واسط را به پیاده سازی زبان مورد استفاده پیوند میدهد.وقتی رویه اجرا شود IDL Skeleton نتیجه را به به IDL ترجمه می کند به طوری که اشیای فراخوان می توانند به آن دستیابی داشته باشند.وقتی شی ای سرویس هایی را برای اشیای دیگر ارائه می کند و از سرویس های اشیای دیگر استفاده می کند به IDL Stubو IDL skeleton نیاز دارد . Stub برای هر شی ای لازم است.
معماری CORBA آنقدر گسترده است که به مباحث پیچیده تری برای درک کامل آن نیاز است اما امیدوارم با همین اندک مطلب نگاشته شده توانسته باشم بخشی از سوالتان را جواب دهم.
لیست System Call Standard posix چه چیزهایی را شامل میشود؟
متاسفانه من زیاد با posix آشنایی ندارم و تنها کمکی که در این مورد میتوانستم انجام دهم تهیه مقاله ای کامل از لیست فراخوانی های سیستمی posix بود .فکر می کنم با مطالعه این مقاله بتوانید پاسخ سوالتان را بیابید.امیدوارم که توانسته باشم کمکی به شما بکنم.
()System call fork برای ایجاد یک پردازش جدید به کار میرود . هیچ آرگومانی ندارد و شناسه یک پروسه را بر می گرداند.هدف از به کارگیری تابع ()Fork ایجاد یک پروسه زیرشاخه است که پروسه فراخواننده را بعنوان والد خود داراست.هر دوی پروسه ها دستورات بعد از فراخوانی تابع ()Fork را اجرا می کنند بنابراین باید بتوانید پروسه فرزند و پروسه والد را تشخیص دهید.این عمل را میتوانید با تست مقدار ()Fork انجام دهید:
اگر ()Fork یک مقدار منفی بازگرداند، ایجاد پروسه فرزند با موفقیت همراه نبوده است.
اگر ()Fork مقدار صفر را بازگرداند بتازگی یک پروسه فرزند ایجاد کرده است.
اگر ()Fork یک مقدار مثبت را بازگرداند ، این مقدار مثبت شناسه پردازش پروسه فرزند است.که این شناسه از نوع T_id بوده و در سرفایل sys/types.h تعریف میشود.اگرچه شما با استفاده از تابع ()getpid هم میتوانید شناسه یک پروسه را بدست بیاورید.
توجه داشته باشید که یونیکس یک کپی دقیق از آدرس فضای پروسه والد تهیه کرده و آنرا در اختیار پروسه فرزند قرار میدهد بنابراین در یونیکس پروسه های فرزند و والد آدرس های متفاوتی خواهند داشت.
Under flow (پاریز) به شرایطی گفته میشود که کامپیوتر سعی می کند تا یک عدد بسیار کوچک (بطور مثال یک عدد خیلی کوچک نزدیک به صفر ) را نمایش دهد. برنامه ها در صورت مواجه شدن با این وضعیت به چند صورت عمل می کنند.بعضی ها یک خطا را گزارش می کنند ، در حالیکه بعضی دیگر به بهترین وجه ممکن این عدد را گرد کرده و به پردازش ادامه می دهند.برای مثال اگر کامپیوتر شما تا هشت رقم اعشار پشتیبانی کند و محاسبات برنامه ما عدد 0.000000005 را تولید کند( با نه رقم اعشار)،وضعیت Under flow رخ داده است .
در مقابل ، Overflow(سرریز) به شرایطی گفته میشود که کامپیوتر سعی میکند تا یک عدد بسیار بزرگ خارج از محدوده اش را نمایش دهد.هر کامپیوتر تنها قادر است تا محدوده ای از اعداد را به نمایش بگذارد.اگر در طی اجرا ، برنامه به عددی خارج از این محدوده برسد یک خطای Overflow رخ خواهد داد.
برای فهم بهتر این مطلب که ادیتور جز کدام دسته از نرم افزار هاست بهتر است که تعریف دقیقی از هر دو دسته نرم افزاری یعنی نرم افزارهای کاربردی و نرم افزارهای سیستمی داشته باشیم :
نرم افزارهای سیستمی (Systems software ):
به سیستم عامل ها و برنامه های سودمندی (Utility ) گفته میشود که برای مدیریت منابع کامپیوتری در سطح پایین(Low level) به کار می روند . نرم افزارهای سیستمی علاوه بر سیستم عاملها، کامپایلرها(Compilers) ، بارکننده ها(Loaders) ، الحاق گر ها(Linkers) و اشکالزداها(Debuggers) را در بر می گیرند.
نرم افزارهای کاربردی(Applications Software) :
یک برنامه یا تعدادی از برنامه ها که برای کاربران پایانی طراحی شده اند.کاربران پایانی افرادی هستند که از محصولات نرم افزاری هنگامی که به طور کامل توسعه داده شده و اشکالزدایی شده باشند، استفاده می کنند . برنامه های مدیریت پایگاه داده(Database programs) ، پردازشگرهای کلمات یا ادیتورها (Word Processor) ، و نرم افزارهای صفحه گسترده (Spread Sheet programs) از این دسته هستند.نرم افزارهای کاربردی در سطح بالایی نرم افزارهای سیستمی قرار دارند . این نرم افزارها در صورت عدم وجود سیستم عامل و نرم افزارهای سیستمی نمی توانند اجرا شوند.
شکل زیر تفاوت بین این دو دسته را به خوبی نمایش می دهد:

امیدوارم پاسخم برای شما مفید واقع شود.






