معماری پراکنده مرکز مدیریت خدمات DIRECTUM


بر اساس محاسبات چند خطی قابل پیکربندی L-Net

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

این راه حلها استفاده م efficientثر از منابع پایگاههای اضافی ، فنی و نرم افزاری را ارائه نمی دهد ، که بر تحمل خطا و مقیاس پذیری چنین راه حلهایی تأثیر منفی می گذارد. در صورت نقض معماری شبکه ، امکان پیکربندی مجدد پویا هم از فرایندهای پردازش اطلاعات و هم از طریق انتقال جریان داده (هم کنترل و هم اطلاعات) وجود ندارد. استفاده از میکروکنترلرهای خاص ، استفاده از DCS / SCADA توسعه و پشتیبانی سیستم ها ، گسترش عملکرد آنها را پیچیده می کند.

معماری سیستم کنترل توزیع شده

معماری معمول معمول یک سیستم کنترل توزیع شده (DCS) شامل سه سطح سلسله مراتبی مرتبط است: سطح اپراتور ، سطح کنترل و سطح I / O (شکل 1 را ببینید).

وظیفه اصلی سطح اپراتور این است که رابط انسان و ماشین (HMI) را برای اطمینان از پیکربندی و کنترل عملکرد کل سیستم فراهم کند. سطح کنترل مسئول دریافت و پردازش داده ها از حسگرها ، انتقال داده ها به سطح اپراتور و توسعه اقدامات کنترلی بر روی محرک ها است. سطح I / O نشان دهنده سنسورها و محرک هایی است که مستقیماً به شی کنترل شده متصل شده اند.

وظیفه نرم افزار ، در چارچوب معماری کلی DCS ، اطمینان از عملکرد سطح اپراتور و ارتباط آن با سطح کنترل سیستم است. در نتیجه ، سطح اساسی در طراحی نرم افزار و حل مسائل مربوط به تعامل آن با سخت افزار ، سطح اپراتور است. نرم افزار باید حداکثر استفاده را از منابع سخت افزاری موجود سیستم بکند در حالی که تا حد امکان مستقل از معماری داخلی سخت افزار باشد.

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

الزامات DCS

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

مروری بر معماری DCS

برای بررسی معماری DCS ، زیمنس SIMATIC PCS 7 DCS به عنوان یکی از پرمصرف ترین ها در بازار و RTS S3 به عنوان DCS بر اساس QNX RTOS اجرا شد.

PCS SIMATIC زیمنس 7

معماری سیستم دارای تمام ویژگی های معماری DCS عمومی است. ایستگاههای اپراتور رایانه هایی هستند که بر اساس معماری پردازنده x86 با سیستم عامل Windows و بسته زیمنس WinCC ، که HMI را ارائه می دهد ، هستند. سرورهایی با پایگاه داده وجود دارد. ایستگاههای اپراتور ، ایستگاههای مهندسی و سرورها توسط یک شبکه محلی مبتنی بر اترنت به یکدیگر متصل می شوند. سطح اپراتور به سطح کنترل شبکه مازاد اترنت صنعتی مرتبط است. در سطح کنترل ، کنترل کننده های منطقی قابل برنامه ریزی (PLC) با امکان افزونگی به دلیل تکرار عملکرد وجود دارد. امکان اتصال به سیستم ها و شبکه های خارجی و سازماندهی دسترسی از راه دور به سیستم وجود دارد.

RTS S3

این معماری به طور مشابه از لایه های ساختار کلی DCS تشکیل شده است. ایستگاه های اپراتور بر اساس پلت فرم سخت افزاری مشابه در SIMATIC DCS ساخته شده اند ، اما می توانند تحت هر دو سیستم عامل ویندوز و لینوکس کار کنند. ایستگاه های مهندسی با ایستگاه های اپراتور ترکیب می شوند. این سیستم یک محیط توسعه برنامه یکپارچه را فراهم می کند. اترنت گره های درون لایه حامل و سطح اپراتور را با سطح کنترل با استفاده از پشته پروتکل TCP / IP متصل می کند. در سطح کنترل ، رایانه های صنعتی دارای سیستم عامل QNX با پایگاه داده خود و امکان افزونگی با تکرار عملکرد گره وجود دارد.

معایب سیستم های توصیف شده

سیستم هایی که در بالا توضیح داده شد از پلت فرم سخت افزاری / نرم افزاری متفاوتی برای سطح اپراتور و سطح کنترل استفاده می کنند. در سطح اپراتور ، فقط می توان از یک معماری پردازنده استفاده کرد و برای پیکربندی و توسعه سطح کنترل به یک ایستگاه مهندسی خاص نیاز است. این DCS ها تنها افزونگی سخت افزاری را با تکرار عملکرد گره اضافی به عنوان راهی برای افزایش تحمل خطا ، که استفاده غیرمنطقی از سخت افزار اضافی است ، ارائه می دهند.

ویژگی ها و ویژگی های عملکردی سیستم L-Net

هنگام توسعه سیستم L-Net ، وظیفه ایجاد یک سیستم کنترل بود که دارای ویژگی های زیر باشد:

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

برای ساختن سیستمی با ویژگی های فوق ، یک سیستم عامل مورد نیاز است که در درجه اول برای ایجاد سیستم های کنترل و سیستم های تعبیه شده در نظر گرفته شده است. تجزیه و تحلیل سیستم عامل های موجود نشان داد که مناسب ترین سیستم عامل QNX 6 (Neutrino) است که از منابع و قابلیت های شبکه بسیار کارآمد برخوردار است. قابلیت های شبکه گسترده توسط پروتکل شبکه Qnet ارائه می شود. این مشکل قابلیت اطمینان و تعادل بار دینامیکی کانال های ارتباطی را حل می کند ، اما مشکل تحمل خطا در کل سیستم را حل نمی کند. در نتیجه ، یک سیستم کنترلی کنترل مبتنی بر یک محیط محاسبه چند خطی با قابلیت پیکربندی مجدد توزیع شده ایجاد شد. سیستم توسعه یافته دارای معماری نظیر به نظیر است که شامل سه بلوک منطقی است: یک بلوک ورودی-خروجی ، یک بلوک سوئیچ همه منظوره و یک بلوک محیط محاسبه مجدد (RCS) قابل پیکربندی (شکل 2 را ببینید).

مزایای اصلی این معماری عبارتند از:

  • از نوع همتا به همتا
  • عدم تمرکز
  • مقیاس پذیری
  • توزیع فضایی

ویژگی های کاربردی این معماری:

  • پردازش داده های خط لوله
  • افزونگی سخت افزار
  • توزیع بار
  • پیکربندی مجدد در پرواز

در سطح اول معماری یک واحد ورودی-خروجی (I / O) وجود دارد که شامل: گره های ورودی-خروجی ، سوئیچ گره های ورودی-خروجی ، رابط ورودی-خروجی ، سنسورها و محرک ها است. این واحد مسئول مکانیسم های اساسی برای ایجاد اقدامات کنترلی بر اساس داده های حسگرهای محلی و داده های دریافت شده از سطوح دیگر سیستم کنترل است. وظایف محوله بر اساس عملکرد نسبی فعلی آنها یا بصورت دستی توسط اپراتور بین گره های ورودی / خروجی سالم توزیع می شود. سنسورها و محرک ها از طریق گذرگاه به تمام گره های ورودی / خروجی در بلوک متصل می شوند ، که به هر گره اجازه می دهد تا هر حسگری را مورد بازجویی قرار دهد یا بر روی هر محرک تأثیر بگذارد. سوئیچ گره ورودی / خروجی ارتباط بین همه گره های ورودی / خروجی را برای تبادل داده بین آنها و سایر سطوح معماری سیستم برای به دست آوردن داده های کنترل و اطلاعات فراهم می کند. با قابلیت های سخت افزاری مناسب ، گره ها با یکدیگر و با گره ها ارتباط برقرار می کنند و به طور مستقیم در سطوح دیگر سیستم سوئیچ می کنند که باعث کاهش زمان پاسخگویی در شبکه می شود. ارتباط مستقیم بین گره ها و بار خاصی از گره ها در حالت فعلی عملکرد واحد ورودی / خروجی امکان سازماندهی محاسبات خط لوله در واحد را فراهم می کند که برای عملکرد این واحد بدون استفاده از توان محاسباتی خارجی سیستم کنترل ضروری است ( DCS) ، که امکان استفاده م effectivelyثر از منابع رایگان ارائه شده برای گره های اضافی واحد ورودی / خروجی در زمان خرابی را ممکن می سازد.

بلوک سوئیچ های همه منظوره که در سطح دوم معماری قرار دارد ، خطوط ارتباطی بین بلوک های ورودی-خروجی و DCS و سیستم های خارجی را سازماندهی می کند. هر سوئیچ می تواند پیوندها و کلیدهای مختلف را در کل سیستم کنترل به هم متصل کند. تعداد خطوط ارتباطی با قابلیت های سخت افزاری گره ها و سوئیچ های موجود در بلوک ها تعیین می شود. از آنجا که شبکه Qnet به شما امکان می دهد جریان داده ها را به صورت پویا توزیع کنید ، مقیاس بندی این بلوک به سادگی با اتصال دستگاه های جدید انجام می شود و نیازی به پیکربندی ندارد و اگر یکی از سوئیچ ها خراب شود ، انتقال داده بین گره ها در صورت سوئیچ دیگر ارتباط مشابهی بین گره ها فراهم می کند یا مستقیماً به هم مرتبط هستند. در عین حال ، لازم است از پهنای باند شبکه کافی برای پشتیبان گیری از سوئیچ خراب نیز مراقبت شود.

بلوک شبکه کامپیوتری مجدد (RCN) ، واقع در سطح سوم معماری ، یک سیستم مدیریت توان محاسباتی بالا را برای حل مشکلات پیچیده پردازش اطلاعات ، تصمیم گیری ، تشخیص و غیره فراهم می کند. بلوک مسئول راه اندازی کل سیستم کنترل است: بررسی عملکرد سوئیچ ها و گره ها ، یکپارچگی شبکه ، ایجاد نمودار شبکه کل سیستم ، تنظیم پارامترهای اولیه برای عملکرد بلوک های ورودی-خروجی. گره های این بلوک آرشیو داده ها و داده های خود را از بلوک های ورودی / خروجی فراهم می کند. هر گره این بلوک می تواند نقش یک دستگاه اپراتور را برای نظارت بر عملکرد سیستم و تنظیم برنامه های کاری این گره و همه گره های سیستم ایفا کرده و پیکربندی مجدد را در صورت نیاز انجام دهد.

توزیع بار

یکی از وظایف اصلی سیستم L-Net توزیع بار محاسباتی بر روی گره های شبکه است. راه حل این مشکل بر اساس ساخت خطوط لوله محاسباتی است. برای ایجاد یک خط لوله محاسباتی ، یک نمودار وظیفه از قبل ساخته شده است - طرحی برای تبادل جریان داده از منبع به گیرنده. حسگرها به عنوان یک منبع عمل می کنند و محرک ها به عنوان یک گیرنده عمل می کنند. خط لوله محاسباتی خود نگاشت نمودار وظیفه (شکل 3 را ببینید) بر روی نمودار شبکه کامپیوتری (شکل 4 را ببینید) ، با در نظر گرفتن الزامات وظیفه به منابع محاسباتی سیستم و وضعیت فعلی آن.

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

تحمل خطا

مشکل اصلی عملکرد چنین سیستمی اختلال کامل خطوط لوله محاسباتی در صورت خرابی هر گره از این نقاله یا نقض انتقال داده بین آنها است. ابزارهای اصلی پروتکل Qnet به دلیل نقض جزئی گره ها به دلیل خطوط پشتیبان ارائه شده توسط معماری ، به ترمیم اتصالات بین گره ها می رسند. سیستم L-Net مشکل بازگرداندن عملکرد در صورت خرابی کامل میزبان سیستم محاسباتی را با پیکربندی مجدد پویا خط لوله محاسباتی حل می کند. استفاده از منابع کاری برای جایگزینی بلاک بد این سیستم سه سناریوی بازیابی (پیکربندی مجدد) ارائه می دهد که از نظر زمان پاسخ به خرابی ، زمان بازیابی و منابع سخت افزاری مورد استفاده متفاوت است: در صورت خرابی ، با آمادگی غیرفعال و آمادگی فعال.

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

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

نتیجه

سیستم توسعه یافته L-Net ، بر خلاف آنالوگ های موجود ، استفاده از طیف وسیعی از ویژگی های سخت افزاری گره های DCS را با سازگاری کامل نرم افزار آنها فرض می کند. هنگامی که گره ها تحت کنترل یک سیستم عامل (QNX Neutrino) کار می کنند ، می توان آنها را بر روی معماری های مختلف پردازنده (x86 ، ARM ، MIPS و غیره) با انواع رابط ها و دستگاه های جانبی ساخت. پیاده سازی گره ها به شکل رومیزی ، رایانه های شخصی صنعتی ، رایانه های پوشیدنی و رایانه های تک برد امکان پذیر است. همه اجزای مجموعه نرم افزاری DCS توسعه یافته را می توان بر روی هر یک از گره های آن با سیستم عامل QNX راه اندازی کرد ، در حالی که استفاده از گره ها با سیستم عامل متفاوت امکان پذیر است. این رویکرد اجازه می دهد تا از هر گره برای حل وظایف سطح اپراتور و کنترل استفاده شود. در نتیجه ، یک سیستم انعطاف پذیر از تعامل بین همسالان بدون سلسله مراتب سختی از سطوح ذاتی معماری DCS عمومی و سیستم هایی که از این معماری به عنوان پایه استفاده می کنند ، وجود دارد. شبکه همتا به همتا فرآیندهای استقرار ، عملکرد ، مقیاس بندی و اشکال زدایی یک سیستم را ساده می کند.

برای درک پتانسیل محاسباتی سخت افزار اضافی در سیستم توسعه یافته ، الگوریتم هایی برای پیکربندی پویا و پیکربندی مجدد بر اساس پروتکل شبکه Qnet و نرم افزار شبکه L-Net پیشنهاد شده است. الگوریتم پیکربندی پویا مبتنی بر توزیع بار محاسباتی در تمام گره ها با خط کشی و موازی سازی وظایف و متعادل سازی پویا بار روی کانال های انتقال داده بین گره ها است. الگوریتم پیکربندی مجدد سیستم ، سه سناریو را برای بازیابی عملکرد در صورت خرابی ، بسته به سخت افزار موجود ، اولویت ها و وظایف محوله به سیستم فرض می کند: در صورت خرابی ، با آمادگی غیرفعال (تخصیص منابع) و با آمادگی فعال (استفاده از منابع) به الگوریتم های پیکربندی پویا و پیکربندی مجدد عملکرد و قابلیت اطمینان را با استفاده از ذخایر سخت افزاری در سیستم بهبود می بخشد.

مزیت مهم سیستم حداکثر شفافیت هر دو فناوری سخت افزاری و نرم افزاری مورد استفاده در آن است که این امر باعث می شود پشتیبانی فنی سیستم و توسعه ماژول های جدید برای آن به طور جدی ساده شود.

نتیجه

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

  1. http://kazanets.narod.ru/DCSIntro.htm.
  2. http://kazanets.narod.ru/PCS7Overview.htm.
  3. http://www.rts.ua/rus/news/678/0/409.
  4. Zyl S. QNX Momentics: مبانی کاربرد. - SPb: BHV-Petersburg ، 2005.
  5. Krten R. مقدمه ای بر QNX Neutrino. راهنمای توسعه برنامه های زمان واقعی - SPb: BHV-Petersburg ، 2011.

کلید واژه ها:سیستم کنترل توزیع شده ، پشتیبانی اطلاعات برای سیستم های کنترل ، سیستم های قابل پیکربندی مجدد توزیع شده.

معماری یک سیستم کنترل توزیع شده مبتنی بر محیط محاسبات چند خطی L-Net

سرگئی یو. پوتومسکی ، استادیار دانشگاه ملی تحقیقات "مدرسه عالی اقتصاد".

نیکیتا A. Poloyko ، دانشجوی سال پنجم دانشگاه ملی تحقیقات "مدرسه عالی اقتصاد". دستیار مطالعه برنامه نویس زمینه آموزش: "کنترل و انفورماتیک در سیستم های فنی".

خلاصه.این مقاله به یک سیستم کنترل توزیع شده مبتنی بر محیط محاسبه چند خطی قابل پیکربندی اختصاص داده شده است. معماری سیستم ارائه شده است. همچنین ، ویژگی های اساسی و ویژگی های عملکردی سیستم نیز ارائه شده است. این مقاله منطقی برای انتخاب سیستم عامل ارائه می دهد. مزایای اساسی سیستم در مقایسه با پیشرفتهای مشابه موجود در مقاله نشان داده شده است.

کلید واژه ها:سیستم کنترل توزیع شده ، سیستم های پشتیبانی نرم افزار ، توزیع مجدد پیکربندی شده است.


در تماس با

سیستم های چند رایانه ای ناهمگن

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

شبکه متصل کننده آنها همچنین می تواند بسیار ناهمگن باشد.

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

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

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

قدیمی ترین و اساسی ترین معماری توزیع شده سرویس گیرنده سرویس گیرنده است که در آن یکی از طرفین (مشتری) با ارسال درخواست به طرف دیگر (سرور) مبادله داده ها را آغاز می کند. سرور درخواست را پردازش می کند و در صورت لزوم پاسخی را به سرویس گیرنده ارسال می کند (شکل 2.7).

برنج. 2.7 مدل تعامل مشتری و سرور

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



برنج. 2.8 سطوح منطقی برنامه

یک برنامه معمولی خاص را در نظر بگیرید ، که مطابق با مفاهیم مدرن ، می توان آن را به سطوح منطقی زیر تقسیم کرد (شکل 2.8): رابط کاربر (UI) ، منطق برنامه (LP) و دسترسی به داده (DD) ، کار با پایگاه داده (DB) ... کاربر سیستم از طریق رابط کاربری با آن ارتباط برقرار می کند ، پایگاه داده داده های توصیف کننده دامنه برنامه را ذخیره می کند و لایه منطقی برنامه همه الگوریتم های مربوط به دامنه را پیاده سازی می کند.

از آنجا که در عمل ، کاربران مختلف سیستم معمولاً علاقمند به دسترسی به داده های یکسان هستند ، ساده ترین تفکیک توابع چنین سیستمی بین چندین کامپیوتر ، تقسیم لایه های منطقی برنامه بین یک بخش سرور برنامه است. مسئول دسترسی به داده ها و قسمت های سرویس گیرنده واقع در چندین کامپیوتر. پیاده سازی رابط کاربری. منطق برنامه را می توان به سرور ، کلاینت ها اختصاص داد یا بین آنها به اشتراک گذاشت (شکل 2.9).

برنج. 2.9 معماری دو طبقه

معماری برنامه های کاربردی که بر اساس این اصل ساخته شده است ، کلاینت سرور یا دو پیوندی... در عمل ، چنین سیستم هایی اغلب به عنوان توزیع طبقه بندی نمی شوند ، اما از نظر رسمی می توان آنها را ساده ترین نماینده سیستم های توزیع شده دانست.

توسعه معماری سرویس گیرنده-مشتری است معماری سه طبقه، که در آن رابط کاربر ، منطق برنامه و دسترسی به داده ها به اجزای مستقل سیستم که می توانند بر روی رایانه های مستقل اجرا شوند ، جدا می شود (شکل 2.10).

برنج. 2.10 معماری سه طبقه

درخواست کاربر در چنین سیستم هایی به طور متوالی توسط بخش سرویس گیرنده سیستم ، سرور منطق برنامه و سرور پایگاه داده پردازش می شود. با این حال ، یک سیستم توزیع شده معمولاً به عنوان سیستمی با معماری پیچیده تر از سه لایه شناخته می شود.

برنج. 2.11 سیستم توزیع خرده فروشی

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

مثال دیگر سیستم توزیع شده ، شبکه ها هستند تبادل مستقیم داده بین مشتریان (شبکه های همتا به همتا)... اگر مثال قبلی دارای معماری "درخت" بود ، شبکه های مبادله مستقیم به شکل پیچیده تری سازماندهی می شوند ، شکل 2.12. چنین سیستم هایی در حال حاضر ، احتمالاً ، یکی از بزرگترین سیستم های توزیع شده موجود هستند که میلیون ها کامپیوتر را متحد می کند.

برنج. 2.12 سیستم تبادل مستقیم اطلاعات بین مشتریان

(مطالب سایت http://se.math.spbu.ru)

معرفی.

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

شش ویژگی اصلی سیستم های توزیع شده وجود دارد.

  1. منابع را به اشتراک بگذارید سیستم های توزیع شده امکان اشتراک منابع سخت افزاری (هارد دیسک ها ، چاپگرها) و نرم افزاری (فایل ها ، کامپایلرها) را فراهم می کنند.
  2. باز بودن.این قابلیت توسعه سیستم با افزودن منابع جدید است.
  3. موازی کاریدر سیستم های توزیع شده ، چندین فرآیند می توانند همزمان روی رایانه های مختلف شبکه اجرا شوند. این فرآیندها می توانند در حین اجرا با یکدیگر تعامل داشته باشند.
  4. مقیاس پذیری . زیر مقیاس پذیریامکان افزودن ویژگی ها و روش های جدید قابل درک است.
  5. تحمل خطا. وجود چندین رایانه امکان تکرار اطلاعات و مقاومت در برابر برخی خطاهای سخت افزاری و نرم افزاری را فراهم می آورد. در صورت بروز خطا ، سیستم های توزیع شده می توانند از عملکرد جزئی پشتیبانی کنند. خرابی کامل سیستم تنها با خطاهای شبکه رخ می دهد.
  6. شفافیت.دسترسی کاملی به منابع سیستم در اختیار کاربران قرار می گیرد ، در حالی که اطلاعات توزیع منابع در سراسر سیستم از نظر آنها مخفی است.

سیستم های توزیع شده نیز دارای معایب متعددی هستند.

  1. پیچیدگی... درک و ارزیابی خصوصیات سیستم های توزیع شده به طور کلی بسیار دشوارتر است و طراحی ، آزمایش و نگهداری آنها دشوارتر است. همچنین ، عملکرد سیستم بستگی به سرعت شبکه دارد و به پردازنده های جداگانه بستگی ندارد. تخصیص مجدد منابع می تواند به طور قابل توجهی سرعت سیستم را تغییر دهد.
  2. ایمنی... به طور معمول ، از چندین دستگاه مختلف می توان به سیستم دسترسی داشت ، پیام های موجود در شبکه را می توان مشاهده و رهگیری کرد. بنابراین ، در یک سیستم توزیع شده ، حفظ امنیت بسیار دشوارتر است.
  3. قابلیت کنترل... این سیستم می تواند شامل انواع مختلفی از رایانه ها باشد که می توان نسخه های مختلف سیستم عامل ها را بر روی آنها نصب کرد. خطاهای موجود در یک دستگاه می تواند به طور غیرقابل پیش بینی به دستگاه های دیگر منتقل شود.
  4. غیرقابل پیش بینی بودن ... واکنش سیستم های توزیع شده به برخی رویدادها غیرقابل پیش بینی است و به بار کامل سیستم ، سازماندهی و بار شبکه بستگی دارد. از آنجا که این پارامترها می توانند دائماً تغییر کنند ، بنابراین ، زمان پاسخ به درخواست ممکن است با زمان متفاوت باشد.

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

  1. شناسایی منابع ... منابع در سیستم های توزیع شده در رایانه های مختلف قرار دارند ، بنابراین سیستم نامگذاری منابع باید در نظر گرفته شود تا کاربران بتوانند به راحتی به منابع مورد نیاز خود دسترسی پیدا کرده و به آنها مراجعه کنند. به عنوان مثال می توان به سیستم URL (Uniform Resource Locator) اشاره کرد که نام صفحات وب را مشخص می کند.
  2. ارتباطات... عملکرد جهانی اینترنت و اجرای کارآمد پروتکل های TCP / IP در اینترنت برای اکثر سیستم های توزیع شده ، نمونه هایی از م effectiveثرترین روش سازماندهی ارتباط بین رایانه ها هستند. با این حال ، در برخی موارد که عملکرد یا قابلیت اطمینان خاصی مورد نیاز است ، می توان از ابزارهای تخصصی استفاده کرد.
  3. کیفیت خدمات سیستم ... این پارامتر عملکرد ، سلامت و قابلیت اطمینان را نشان می دهد. عوامل متعددی بر کیفیت خدمات تأثیر می گذارد: توزیع فرآیندها ، منابع ، سخت افزار و سازگاری سیستم.
  4. معماری نرم افزار ... معماری نرم افزار توزیع توابع سیستم بین اجزای سیستم و همچنین توزیع این اجزا بین پردازنده ها را توصیف می کند. اگر نیاز به حفظ خدمات سیستم با کیفیت بالا دارید ، انتخاب معماری مناسب بسیار مهم است.

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

  1. معماری مشتری / سرور ... در این مدل ، سیستم را می توان مجموعه ای از خدمات ارائه شده توسط سرورها به مشتریان دانست. در چنین سیستم هایی ، سرورها و کلاینت ها تفاوت چشمگیری با یکدیگر دارند.
  2. معماری سه طبقه ... در این مدل ، سرور به طور مستقیم خدمات را به مشتریان ارائه نمی دهد ، بلکه از طریق سرور منطق کسب و کار ارائه می دهد.

در مورد دو مدل اول قبلاً بیش از یک بار گفته شده است ، بگذارید در مورد مدل سوم با جزئیات بیشتری صحبت کنیم.

  1. معماری شیء توزیع شده ... در این حالت ، هیچ تفاوتی بین سرورها و کلاینت ها وجود ندارد و سیستم را می توان مجموعه ای از اشیاء متقابل در نظر گرفت که مکان آنها واقعاً مهم نیست. هیچ تفاوتی بین ارائه دهنده خدمات و کاربران آنها وجود ندارد.

این معماری امروزه بسیار مورد استفاده قرار می گیرد و همچنین نامیده می شود معماری خدمات وبسرویس وب برنامه ای است که از طریق اینترنت قابل دسترسی است و برخی از خدمات را ارائه می دهد ، که فرم آن مستقل از ارائه دهنده (از فرمت داده جهانی - XML ​​استفاده می شود) و بستر عملکرد است. در حال حاضر ، سه فناوری مختلف وجود دارد که از مفهوم سیستم های شیء توزیع شده پشتیبانی می کند. اینها فناوری های EJB ، CORBA و DCOM هستند.

ابتدا چند کلمه در مورد اینکه XML به طور کلی چیست. XML یک فرمت داده عمومی است که برای ارائه خدمات وب استفاده می شود. خدمات وب بر اساس استانداردها و پروتکل های باز است: SOAP ، UDDI و WSDL.

  1. صابون ( پروتکل دسترسی ساده به اشیا ، که توسط W3C توسعه یافته است ، فرمت درخواست های خدمات وب را تعریف می کند. پیامهای بین یک سرویس وب و کاربر آن در پاکتهای SOAP (گاهی اوقات پاکت XML نیز نامیده می شود) بسته بندی می شوند. خود پیام می تواند شامل یک درخواست برای انجام یک عمل ، یا یک پاسخ - نتیجه این عمل باشد.
  2. WSDL (زبان توصیف سرویس وب).رابط سرویس وب در اسناد WSDL شرح داده شده است (و WSDL زیر مجموعه ای از XML است). قبل از استقرار سرویس ، توسعه دهنده توضیحات آن را به زبان WSDL می نویسد ، آدرس سرویس وب ، پروتکل های پشتیبانی شده ، لیستی از عملیات مجاز و فرمت های درخواست و پاسخ را مشخص می کند.
  3. UDDI (توضیحات جهانی ، کشف و ادغام) -پروتکل جستجوی خدمات اینترنتی اینترنت ( http://www.uddi.org/). این یک ثبت تجاری است که ارائه دهندگان خدمات وب خدمات را ثبت می کنند و توسعه دهندگان خدمات مورد نیاز خود را در برنامه های خود پیدا می کنند.

با توجه به صحبت ها ، ممکن است به نظر برسد که خدمات وب بهترین راه حل بی چون و چرا است و تنها س questionال در انتخاب ابزارهای توسعه است. با این حال ، اینطور نیست. جایگزینی برای خدمات وب وجود دارد ، وب معنایی ، که تیم برنرز لی ، خالق WWW پنج سال پیش درباره آن صحبت کرد.

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

کتابشناسی - فهرست کتب

  1. سامرویلI. مهندسی نرم افزار.
  2. Dranitsa A. Java در مقابل .NET. - "Computerra" ، # 516.
  3. منابع اینترنتی

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

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

شکل 13.1. مدل سیستم معماری توزیع شده


سیستم های توزیع شده ، که در ادبیات به خوبی توصیف شده اند ، به طور سنتی در دسته های زیر قرار می گیرند:

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

سیستم های توزیع شده مانند "نیوکاسل" ، که امکان ارتباط از راه دور را با نام فایل های راه دور در کتابخانه فراهم می کند (نام برگرفته از مقاله "ارتباط نیوکاسل" است - نگاه کنید). فایلهای حذف شده دارای یک BOM (نام ممتاز) هستند که در مسیر جستجو شامل کاراکترهای خاص یا یک جزء نام اختیاری است که قبل از ریشه سیستم فایل قرار دارد. پیاده سازی این روش شامل تغییراتی در هسته سیستم نمی شود و بنابراین ساده تر از سایر روشهای مورد بحث در این فصل است ، اما انعطاف پذیری کمتری دارد.

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

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

13.1 پردازنده های محیطی

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

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


شکل 13.2. پیکربندی سیستم جانبی


شکل 13.3. قالب های پیام

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

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

برای توضیح نحوه عملکرد سیستم جانبی ، تعدادی از عملکردها را در نظر بگیرید: getppid ، open ، write ، fork ، exit و signal. عملکرد getppid بسیار ساده است زیرا با فرم های درخواست و پاسخ ساده که بین محیط جانبی و CPU رد و بدل می شود ، سروکار دارد. هسته در پردازنده جانبی پیامی تولید می کند که دارای یک علامت است و از آن نتیجه می گیرد که تابع درخواستی تابع getppid است و درخواست را به پردازنده مرکزی ارسال می کند. فرآیند ماهواره ای روی پردازنده مرکزی پیام پردازنده محیطی را می خواند ، نوع عملکرد سیستم را رمزگشایی می کند ، آن را اجرا می کند و شناسه والد خود را به دست می آورد. سپس پاسخی ایجاد می کند و آن را به یک فرآیند جانبی منتظر در انتهای دیگر خط ارتباطی منتقل می کند. هنگامی که پردازنده جانبی پاسخی دریافت می کند ، آن را به فرایندی که تابع getppid system نامیده می شود ، ارسال می کند. اگر فرآیند جانبی داده ها (مانند شناسه فرایند والدین) را در حافظه محلی ذخیره کند ، اصلاً مجبور نیست با همراه خود ارتباط برقرار کند.

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


شکل 13.4. فراخوانی تابع باز از یک فرایند جانبی

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

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


شکل 13.5. اجرای عملکرد چنگال در CPU

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


شکل 13.6. اجرای عملکرد چنگال در پردازنده جانبی

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

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


الگوریتم sighandle / * الگوریتم پردازش سیگنال * /
اگر (روند فعلی همراه کسی است یا نمونه اولیه دارد)
اگر (سیگنال نادیده گرفته می شود)
if (سیگنال در حین اجرای عملکرد سیستم آمده است)
قرار دادن سیگنال در مقابل فرایند ماهواره ؛
ارسال پیام سیگنال به یک فرآیند جانبی ؛
else ( / * فرایند محیطی * /
/ * آیا سیگنالی در حین اجرای عملکرد سیستم دریافت شده است یا خیر * /
ارسال سیگنال به فرایند ماهواره ؛
algorithm
اطلاعات ورودی: وجود ندارد
اطلاعات خروجی: هیچ
اگر (وقفه ای در حین اجرای عملکرد سیستم دریافت شد)
ارسال پیام وقفه ، سیگنال به فرآیند محیطی ؛
else / * اجرای عملکرد سیستم قطع نشد * /
ارسال پاسخ: پرچم نشان دهنده ورود سیگنال را فعال کنید.

شکل 13.7. پردازش سیگنال در سیستم جانبی


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

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

2. در صورتی که به فرآیند نادیده گرفتن این نوع سیگنال دستور داده شود ، ماهواره همچنان الگوریتم اجرای عملکرد سیستم را بدون خروج از حالت تعلیق توسط longjmp دنبال می کند. در پاسخی که به فرایند جانبی ارسال می شود ، هیچ پیام سیگنالی دریافت نخواهد شد.

3. اگر به محض دریافت سیگنال ، فرآیند ماهواره ای اجرای سیستم را قطع کند (توسط longjmp) ، فرآیند جانبی را در این مورد اطلاع می دهد و شماره سیگنال را به آن اطلاع می دهد.

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


شکل 13.8. وقفه در حین اجرای عملکرد سیستم

برای مثال فرض کنید که یک فرایند جانبی یک تابع خواندن را از پایانه متصل به پردازنده مرکزی فراخوانی می کند و در حالی که عملکرد ماهواره ای عملکرد را انجام می دهد ، کار خود را متوقف می کند (شکل 13.8). اگر کاربر کلید break را فشار دهد ، هسته CPU سیگنالی را به فرایند ماهواره ارسال می کند. اگر ماهواره در حالت تعلیق بود و منتظر بخشی از داده ها از ترمینال بود ، بلافاصله از این حالت خارج شده و عملکرد خواندن را خاتمه می دهد. ماهواره در پاسخ به درخواست یک فرآیند جانبی ، کد خطا و شماره سیگنال مربوط به وقفه را گزارش می کند. فرایند جانبی پاسخ را تجزیه و تحلیل می کند و از آنجا که پیام می گوید وقفه رسیده است ، سیگنال را به خود می فرستد. قبل از خروج از عملکرد خواندن ، هسته محیطی سیگنال دهی را بررسی می کند ، یک سیگنال وقفه را از فرایند ماهواره تشخیص می دهد و طبق معمول آن را پردازش می کند. اگر در نتیجه دریافت سیگنال وقفه ، فرآیند محیطی کار خود را با استفاده از تابع خروجی خاتمه دهد ، این تابع مراقبت از بین بردن فرایند ماهواره را بر عهده می گیرد. اگر فرآیند محیطی سیگنال های وقفه را قطع کند ، تابع مدیریت سیگنال تعریف شده توسط کاربر را فرا می خواند و هنگام خروج از عملکرد خواندن ، یک کد خطا به کاربر باز می گرداند. از طرف دیگر ، اگر ماهواره عملکرد سیستم stat را به نمایندگی از فرآیند محیطی اجرا کند ، هنگام دریافت سیگنال ، عملکرد آن را قطع نمی کند (عملکرد stat تضمین شده است که از هرگونه وقفه خارج می شود ، زیرا زمان انتظار منابع محدودی دارد) ) ماهواره اجرای عملکرد را تکمیل می کند و شماره سیگنال را به فرایند محیطی باز می گرداند. فرآیند محیطی سیگنالی را به خود می فرستد و در خروجی از عملکرد سیستم دریافت می کند.

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

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

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

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

13.2 ارتباط NEWCASTLE

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

این سیستم ها از یکی از دو مسیر زیر برای شناسایی پرونده های حذف شده استفاده می کنند. در برخی سیستم ها ، یک کاراکتر ویژه به نام فایل مرکب اضافه می شود: جزء نامی که قبل از این کاراکتر قرار دارد ، دستگاه را مشخص می کند ، بقیه نام فایل موجود در آن دستگاه است. بنابراین ، برای مثال ، نام ممتاز


"sftig! / fs1 / mjb / rje"


فایل " / fs1 / mjb / rje" را در دستگاه "sftig" شناسایی می کند. این طرح شناسایی پرونده از قرارداد uucp برای انتقال فایلها بین سیستمهای UNIX پیروی می کند. در یک طرح دیگر ، فایلهای حذف شده با افزودن یک پیشوند خاص به نام مشخص می شوند ، به عنوان مثال:


/../sftig/fs1/mjb/rje


جایی که "/../" یک پیشوند است که نشان می دهد فایل حذف شده است. دومین جزء نام فایل ، نام دستگاه از راه دور است. این طرح از نحو نام فایل UNIX آشنا استفاده می کند ، بنابراین بر خلاف طرح اول ، برنامه های کاربر نیازی به سازگاری با استفاده از نام هایی با ساختار غیر معمول ندارند (نگاه کنید به).


شکل 13.9. فرمول بندی درخواست ها به سرور فایل (پردازنده)


ما بقیه این بخش را به مدلی از سیستم با استفاده از پیوند نیوکاسل اختصاص می دهیم ، که در آن هسته به تشخیص فایل های حذف شده اهمیت نمی دهد. این تابع به طور کلی به زیر روالهای کتابخانه استاندارد C اختصاص داده شده است ، که در این حالت نقش رابط سیستم را ایفا می کنند. این روالها اولین جزء نام فایل را تجزیه و تحلیل می کنند ، که در هر دو روش شناسایی توصیف شده حاوی نشانه ای از دور بودن فایل است. این فاصله ای از روال معمول است که در آن روال کتابخانه نام فایل ها را تجزیه نمی کند. شکل 13.9 نحوه فرمول بندی درخواست ها به سرور فایل را نشان می دهد. اگر فایل محلی است ، هسته سیستم محلی درخواست را به طور معمول پردازش می کند. مورد مقابل را در نظر بگیرید:


باز کردن ("/../ sftig / fs1 / mjb / rje / file" ، O_RDONLY) ؛


زیر روال باز کتابخانه C دو جزء اول نام فایل را تجزیه می کند و می داند که باید فایل را در دستگاه راه دور "sftig" جستجو کند. برای داشتن اطلاعاتی در مورد اینکه آیا این فرآیند قبلاً با یک ماشین خاص ارتباط داشته است ، زیر روال ساختار خاصی را شروع می کند که در آن این واقعیت را به خاطر می آورد و در صورت پاسخ منفی ، با سرور فایل در حال اجرا در دستگاه از راه دور ارتباط برقرار می کند. هنگامی که فرآیند اولین درخواست خود را برای پردازش از راه دور فرم می دهد ، سرور از راه دور درخواست را تأیید می کند ، در صورت لزوم ، پرونده هایی را در زمینه کد شناسایی کاربر و گروه ثبت می کند و یک فرایند ماهواره ای ایجاد می کند که به نمایندگی از فرایند مشتری عمل می کند.

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

یک مسئله ظریف تر ، اخذ حقوق فوق کاربر در رابطه با کار با فایل های از راه دور است. از یک طرف ، مشتری superuser نباید از حقوق یکسانی بر روی سیستم از راه دور برخوردار باشد تا کنترل های امنیتی سیستم از راه دور را گمراه نکند. از سوی دیگر ، برخی از برنامه ها ، اگر به حقوق فوق استفاده کننده اعطا نشوند ، به سادگی قادر به کار نخواهند بود. نمونه ای از چنین برنامه ای برنامه mkdir است (به فصل 7 مراجعه کنید) ، که یک فهرست جدید ایجاد می کند. سیستم از راه دور به کلاینت اجازه نمی دهد که یک فهرست جدید ایجاد کند زیرا حقوق superuser در حذف تأثیر نمی گذارد. مشکل ایجاد دایرکتوری های راه دور به عنوان یک دلیل جدی برای بازنگری عملکرد سیستم mkdir در جهت گسترش قابلیت های آن در ایجاد خودکار تمام اتصالات مورد نیاز کاربر است. با این حال ، هنوز هم یک مشکل رایج این است که برنامه های setuid (مانند برنامه mkdir) حقوق فوق کاربر بر روی فایل های حذف شده را به دست آورند. شاید بهترین راه حل برای این مشکل تنظیم ویژگی های اضافی برای پرونده هایی باشد که دسترسی فوق العاده از راه دور به آنها را شرح می دهد. متأسفانه ، این امر نیاز به تغییراتی در ساختار فهرست دیسک (از نظر افزودن زمینه های جدید) دارد و باعث ایجاد آشفتگی بیش از حد در سیستم های موجود می شود.

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

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

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

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

13.3 سیستم های فایل توزیع شده "شفاف"

اصطلاح "تخصیص شفاف" به این معنی است که کاربران روی یک دستگاه می توانند به فایلهای یک دستگاه دیگر دسترسی پیدا کنند بدون اینکه متوجه شوند از مرزهای دستگاه عبور می کنند ، درست همانطور که در دستگاه خود هنگام حرکت از یک سیستم فایل به سیستم دیگر از نقاط اتصال عبور می کنند. اسامی که فرایندها به فایلهای واقع در ماشینهای از راه دور اشاره می کنند مشابه نام فایلهای محلی است: هیچ کاراکتر متمایزی در آنها وجود ندارد. در پیکربندی نشان داده شده در شکل 13.10 ، فهرست "/ usr/ src" متعلق به ماشین B در فهرست "/ usr/ src" متعلق به ماشین A. "نصب شده است" همان کد منبع سیستم ، که به طور سنتی در "/ یافت می شود. پوشه usr / src ". کاربرانی که بر روی دستگاه A کار می کنند می توانند با استفاده از نحو آشنای نوشتن نام فایلها (به عنوان مثال: "/usr/src/cmd/login.c") به فایلهای واقع در دستگاه B دسترسی پیدا کنند و خود هسته تصمیم می گیرد که فایل از راه دور باشد یا محلی به کاربرانی که روی دستگاه B کار می کنند به فایلهای محلی خود دسترسی دارند (غافل از اینکه کاربران دستگاه A می توانند به فایلهای مشابه دسترسی داشته باشند) ، اما به نوبه خود به فایلهای واقع در دستگاه A دسترسی ندارند. البته ، گزینه های دیگر نیز امکان پذیر است ، در به ویژه ، آنهایی که در آنها تمام سیستم های از راه دور در ریشه سیستم محلی نصب شده اند ، به طوری که کاربران به همه فایل های همه سیستم ها دسترسی دارند.


شکل 13.10. سیستم های فایل پس از نصب از راه دور

شباهت های بین نصب سیستم های فایل محلی و اجازه دسترسی به سیستم های فایل از راه دور ، باعث تطبیق عملکرد mount با سیستم های فایل از راه دور شده است. در این مورد ، کرنل دارای یک میز نصب با فرمت گسترده است. با اجرای عملکرد mount ، کرنل یک اتصال شبکه با یک دستگاه از راه دور را سازماندهی می کند و اطلاعات مشخصه این اتصال را در جدول Mount ذخیره می کند.

یک مشکل جالب مربوط به نام مسیرهایی است که شامل ".." می شوند. اگر یک فرایند فهرست فعلی را از یک سیستم فایل از راه دور ایجاد کند ، استفاده از نویسه های ".." در نام به احتمال زیاد فرایند را به سیستم فایل محلی باز می گرداند تا به فایل های بالای دایرکتوری فعلی دسترسی پیدا کند. با بازگشت مجدد به شکل 13.10 ، توجه داشته باشید که وقتی یک فرآیند متعلق به ماشین A ، با انتخاب دایرکتوری فعلی " / usr / src / cmd" واقع در سیستم فایل از راه دور ، فرمان را اجرا می کند.



فهرست فعلی دایرکتوری ریشه ای متعلق به ماشین A خواهد بود نه ماشین B. الگوریتم namei که در هسته سیستم راه دور اجرا می شود ، پس از دریافت دنباله کاراکترهای ".." ، بررسی می کند که آیا فراخوانی عامل عامل فرآیند مشتری ، و اگر چنین است ، تنظیم می کند که آیا سرویس گیرنده در حال کار با دایرکتوری کاری فعلی به عنوان ریشه سیستم فایل از راه دور است.

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


شکل 13.11. باز کردن یک فایل از راه دور


فرایندی را در نظر بگیرید که یک فایل راه دور "/usr/src/cmd/login.c" را باز می کند ، جایی که "src" نقطه اتصال است. با تجزیه نام فایل (با استفاده از طرح namei-iget) ، کرنل تشخیص می دهد که فایل حذف شده است و درخواستی را برای دریافت فهرست قفل شده به دستگاه میزبان ارسال می کند. با دریافت پاسخ مورد نظر ، هسته محلی یک کپی از ایندکس را در حافظه مربوط به فایل راه دور ایجاد می کند. سپس هسته با ارسال یک پیام دیگر به دستگاه از راه دور ، دسترسی لازم به فایل (برای مثال ، برای خواندن) را بررسی می کند. الگوریتم باز کاملاً مطابق با طرح ارائه شده در فصل 5 ادامه می یابد و در صورت لزوم پیام ها را به دستگاه راه دور ارسال می کند ، تا زمانی که الگوریتم کامل شود و شاخص آزاد شود. رابطه بین ساختارهای داده هسته پس از تکمیل الگوریتم باز در شکل 13.11 نشان داده شده است.

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

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

در مورد عملکرد سیستم باز ، درخواست اجرای عملکرد ارسال شده به دستگاه راه دور شامل قسمتی از نام فایل است که پس از حذف اجزای نام مسیر جستجو که فایل راه دور را متمایز می کند ، و همچنین پرچم های مختلف باقی مانده است. در مثال اولیه باز کردن فایل "/usr/src/cmd/login.c" ، هسته نام "cmd/login.c" را به دستگاه راه دور ارسال می کند. این پیام همچنین شامل اطلاعاتی مانند کدهای شناسایی کاربر و گروه است که برای تأیید مجوزهای فایل در دستگاه از راه دور مورد نیاز است. اگر پاسخی از دستگاه راه دور دریافت شود که نشان دهنده عملکرد باز موفق است ، هسته محلی یک فهرست رایگان در حافظه دستگاه محلی می آورد و آن را به عنوان فهرست فایل از راه دور علامت گذاری می کند ، اطلاعات مربوط به دستگاه از راه دور و فهرست از راه دور را ذخیره می کند و به طور معمول یک ورودی جدید در جدول فایل اختصاص می دهد. در مقایسه با شاخص واقعی در دستگاه از راه دور ، شاخص متعلق به دستگاه محلی رسمی است و پیکربندی مدل را نقض نمی کند ، که به طور کلی با پیکربندی مورد استفاده در روش از راه دور مشابه است (شکل 13.11). اگر تابعی که توسط یک فرایند فراخوانی می شود با یک توصیف کننده به یک فایل از راه دور دسترسی پیدا کند ، هسته محلی از فهرست (محلی) می داند که فایل از راه دور است ، درخواستی را که شامل تابع فراخوانی شده است فرموله می کند و آن را به دستگاه راه دور ارسال می کند. درخواست شامل یک اشاره گر به نمای راه دور است که توسط آن فرآیند ماهواره ای می تواند خود فایل از راه دور را شناسایی کند.

با دریافت نتیجه اجرای هر عملکرد سیستم ، کرنل می تواند برای پردازش به خدمات یک برنامه ویژه متوسل شود (پس از اتمام کار هسته با عملکرد) ، زیرا پردازش محلی نتایج مورد استفاده در یک سیستم تک پردازنده همیشه برای سیستمی با چندین پردازنده مناسب نیست. در نتیجه ، تغییرات در معناشناسی الگوریتم های سیستم ممکن است با هدف پشتیبانی از اجرای عملکردهای سیستم از راه دور ارائه شود. با این حال ، در همان زمان ، حداقل جریان پیام ها در شبکه گردش می کند و حداقل زمان پاسخگویی سیستم به درخواست های ورودی را تضمین می کند.

13.4 مدل توزیع شده بدون فرآیندهای انتقال

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

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

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

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

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

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


شکل 13.12. نمودار مفهومی تعامل با فایل های راه دور در سطح هسته

13.5 نتیجه گیری

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

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

13.6 تمرینات

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

2. فرآیندها نمی توانند سیگنال های SIGKILL را نادیده بگیرند. توضیح دهید که هنگام دریافت چنین سیگنالی در سیستم جانبی چه اتفاقی می افتد.

* 3 پیاده سازی عملکرد سیستم exec در سیستمی با پردازنده های جانبی را شرح دهید.

*4 پردازنده مرکزی چگونه باید فرآیندها را بین پردازنده های جانبی توزیع کند تا بار کلی را متعادل کند؟

*پنج چه اتفاقی می افتد اگر پردازنده جانبی حافظه کافی برای قرار دادن همه فرایندهای بارگیری شده در آن را نداشته باشد؟ تخلیه و تعویض فرآیندها در شبکه چگونه باید انجام شود؟

6. سیستمی را در نظر بگیرید که در آن درخواست ها به سرور فایل از راه دور ارسال می شوند اگر پیشوند خاصی در نام فایل یافت شود. اجازه دهید فرآیند execl ("/../ sftig / bin / sh" ، "sh" ، 0) را فراخوانی کند. فایل اجرایی بر روی دستگاه از راه دور است ، اما باید بر روی سیستم محلی اجرا شود. نحوه انتقال ماژول راه دور به سیستم محلی را توضیح دهید.

7. اگر سرپرست نیاز به اضافه کردن ماشین های جدید به سیستم موجود با اتصال مانند نیوکاسل داشته باشد ، بهترین راه اطلاع رسانی ماژول های کتابخانه C در این مورد چگونه است؟

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

*نه. همانطور که در بخش 13.2 نشان داده شده است ، فراخوانی عملکرد سیستم خروجی در سیستم هایی با اتصال نیوکاسل منجر به ارسال پیامی به فرآیند همراه می شود ، که دومی را مجبور به خاتمه می کند. این کار در سطح روال کتابخانه انجام می شود. وقتی یک فرآیند محلی سیگنالی دریافت می کند که به آن می گوید در حالت کرنل خارج شود ، چه اتفاقی می افتد؟

*10 در سیستمی با پیوند نیوکاسل ، جایی که فایل های راه دور با پیشوند نام با یک پیشوند خاص مشخص می شوند ، چگونه می تواند یک کاربر با مشخص کردن ".." (فهرست اصلی) به عنوان جزء نام فایل ، از نقطه اتصال از راه دور عبور کند؟

11. از فصل 7 می دانیم که سیگنال های مختلف باعث می شوند که یک فرایند محتویات حافظه را در فهرست فعلی رها کند. اگر فهرست فعلی از سیستم فایل از راه دور باشد چه اتفاقی می افتد؟ اگر سیستم از رابطه ای مانند نیوکاسل استفاده کند ، چه پاسخی می دهید؟

*12 در صورت حذف کلیه فرآیندهای ماهواره ای یا سرور از سیستم ، پیامدهای آن برای فرآیندهای محلی چیست؟

*13 نحوه پیاده سازی الگوریتم پیوند در یک سیستم توزیع شفاف را در نظر بگیرید ، پارامترهای آن می تواند دو نام فایل از راه دور و همچنین الگوریتم exec باشد که با انجام چندین عملیات خواندن داخلی مرتبط است. دو نوع ارتباط را در نظر بگیرید: یک تماس از راه دور و یک تماس عملکرد از راه دور.

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


شکل 13.13. پیکربندی سرور ترمینال

*پانزده هنگامی که یک کاربر وارد سیستم می شود ، خط ترمینال اطلاعاتی را ذخیره می کند که ترمینال یک ترمینال اپراتور است که گروهی از فرایندها را هدایت می کند. به همین دلیل ، هنگامی که کاربر کلید "break" را در صفحه کلید ترمینال فشار می دهد ، تمام فرایندهای گروه سیگنال وقفه را دریافت می کنند. پیکربندی سیستم را در نظر بگیرید که در آن تمام پایانه ها به صورت فیزیکی به یک دستگاه متصل هستند ، اما ثبت نام کاربر به طور منطقی بر روی ماشین های دیگر پیاده سازی می شود (شکل 13.13). در هر مورد ، سیستم یک فرایند getty برای ترمینال از راه دور ایجاد می کند. اگر درخواست ها به یک سیستم از راه دور توسط مجموعه ای از فرآیندهای سرور پردازش می شوند ، توجه داشته باشید که هنگام اجرای روش باز ، سرور منتظر اتصال نمی ماند. پس از اتمام عملکرد باز ، سرور به مجموعه سرور باز می گردد و اتصال آن را به ترمینال قطع می کند. چگونه سیگنال وقفه با فشار دادن کلید "break" به آدرس فرآیندهای موجود در یک گروه ارسال می شود؟

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

* 17 الگوریتم های صفحه بندی و صفحه بندی مورد بحث در فصل 9 استفاده از پیجر محلی را فرض می کنند. چه تغییراتی باید در این الگوریتم ها ایجاد شود تا بتواند از دستگاه های بارگیری از راه دور پشتیبانی کند؟

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

*نوزده هنگامی که یک فرایند به یک فایل از راه دور دسترسی پیدا می کند ، ممکن است این فرآیند در جستجوی فایل از چندین ماشین عبور کند. به عنوان مثال نام " / usr / src / uts / 3b2 / os" را در نظر بگیرید ، جایی که " / usr" فهرست مربوط به ماشین A است ، " / usr / src" نقطه اتصال ریشه ماشین B است ، " / usr / src / uts / 3b2 "نقطه اتصال ریشه ماشین C. پیاده روی از طریق چندین ماشین به مقصد نهایی خود ، Multihop نامیده می شود. با این حال ، اگر یک اتصال شبکه مستقیم بین ماشینهای A و C وجود داشته باشد ، ارسال داده از طریق ماشین B ناکارآمد خواهد بود. ویژگی های پیاده سازی "چندگانگی" را در یک سیستم با اتصال نیوکاسل و در یک سیستم توزیع شده "شفاف" توضیح دهید.

امروزه تقریباً همه سیستم های نرم افزاری بزرگ توزیع شده اند. سیستم توزیع شده سیستمی است که در آن پردازش اطلاعات نه بر روی یک کامپیوتر ، بلکه بین چندین کامپیوتر توزیع می شود. هنگام طراحی سیستم های توزیع شده ، که شباهت زیادی به طراحی سایر نرم افزارها دارد ، هنوز تعدادی ویژگی خاص باید در نظر گرفته شود. برخی از این موارد قبلاً در مقدمه فصل 10 هنگام بررسی معماری سرویس گیرنده / سرور ذکر شده بود و در اینجا با جزئیات بیشتری مورد بحث قرار گرفته است.

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

همه سیستم های نرم افزاری مدرن را می توان به سه کلاس گسترده تقسیم کرد.

1. سیستم های نرم افزاری کاربردی که فقط برای کار بر روی یک کامپیوتر شخصی یا ایستگاه کاری طراحی شده اند. اینها شامل پردازنده های کلمه ، صفحات گسترده ، سیستم های گرافیکی و غیره است.

2. سیستم های جاسازی شده که برای کار بر روی یک پردازنده واحد یا بر روی گروهی از پردازنده های یکپارچه طراحی شده اند. اینها شامل سیستم های کنترل لوازم خانگی ، لوازم مختلف و غیره است.

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

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

شش ویژگی اصلی سیستم های توزیع شده شناسایی شده است.

1. منابع را به اشتراک بگذاریدسیستم های توزیع شده امکان اشتراک گذاری منابع سخت افزاری و نرم افزاری مانند هارد دیسک ها ، چاپگرها ، فایل ها ، کامپایلرها و موارد مشابه را که از طریق شبکه به یکدیگر متصل شده اند ، می دهد. بدیهی است که اشتراک منابع در سیستم های چند کاربره نیز امکان پذیر است ، اما در این مورد ، رایانه مرکزی باید مسئول تامین منابع و مدیریت آنها باشد.

2. باز بودن.این قابلیت گسترش سیستم با افزودن منابع جدید است. سیستم های توزیع شده سیستم های باز هستند که سخت افزار و نرم افزار تولید کنندگان مختلف را به هم متصل می کنند.

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

4. مقیاس پذیریدر اصل ، همه سیستم های توزیع شده مقیاس پذیر هستند: به منظور برآوردن نیازهای جدید ، سیستم را می توان با افزودن منابع محاسباتی جدید گسترش داد. اما در عمل ، تجمع می تواند محدود به شبکه متصل به رایانه های فردی در سیستم باشد. اگر بسیاری از ماشین های جدید به هم متصل شده باشند ، ممکن است پهنای باند شبکه کافی نباشد.

5. تحمل خطا.وجود چندین رایانه و توانایی تکرار اطلاعات به این معنی است که سیستم های توزیع شده در برابر خطاهای سخت افزاری و نرم افزاری مقاوم هستند. اکثر سیستم های توزیع شده ، در صورت بروز خطا ، معمولاً می توانند حداقل عملکرد جزئی را پشتیبانی کنند. خرابی کامل سیستم فقط در صورت بروز خطاهای شبکه رخ می دهد.

6. شفافیت.این ویژگی به این معنی است که به کاربران دسترسی کاملاً شفاف به منابع داده می شود و در عین حال اطلاعات مربوط به توزیع منابع در سیستم از نظر آنها مخفی می شود. با این حال ، در بسیاری از موارد ، دانش خاص از سازمان سیستم به کاربر کمک می کند تا از منابع بهتر استفاده کند.

البته سیستم های توزیع شده دارای معایب متعددی هستند.

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

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

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

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

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

جدول 9.1. مشکلات طراحی سیستم های توزیع شده

مشکل طراحی شرح
شناسایی منابع منابع در یک سیستم توزیع شده در رایانه های مختلف قرار دارند ، بنابراین سیستم نامگذاری منابع باید در نظر گرفته شود تا کاربران بتوانند به راحتی به منابع مورد نیاز خود دسترسی پیدا کرده و به آنها مراجعه کنند. به عنوان مثال سیستم Uniform Resource Locator (URL) که آدرس صفحات وب را مشخص می کند. بدون یک سیستم شناسایی آسان و قابل تشخیص ، اکثر منابع برای کاربران سیستم غیرقابل دسترسی خواهد بود.
ارتباطات عملکرد جهانی اینترنت و اجرای کارآمد پروتکل های TCP / IP در اینترنت برای اکثر سیستم های توزیع شده ، نمونه هایی از م effectiveثرترین روش سازماندهی ارتباط بین رایانه ها هستند. با این حال ، در مواردی که الزامات خاصی به عملکرد ، قابلیت اطمینان و غیره تحمیل می شود ، می توان از روش های جایگزین ارتباطات سیستم استفاده کرد.
کیفیت خدمات سیستم کیفیت خدمات ارائه شده توسط سیستم نشان دهنده عملکرد ، قابلیت اطمینان و قابلیت اطمینان آن است. کیفیت خدمات متاثر از عوامل متعددی است: توزیع فرآیندهای سیستم ، تخصیص منابع ، سخت افزار سیستم و شبکه و سازگاری سیستم.
معماری نرم افزار معماری نرم افزار توزیع توابع سیستم بین اجزای سیستم و همچنین توزیع این اجزا در پردازنده ها را توصیف می کند. اگر شما نیاز به حفظ خدمات سیستم با کیفیت بالا دارید ، انتخاب معماری مناسب یک عامل تعیین کننده است.

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

1. معماری مشتری / سروردر این مدل ، سیستم را می توان مجموعه ای از خدمات ارائه شده توسط سرورها به مشتریان دانست. در چنین سیستم هایی ، سرورها و کلاینت ها تفاوت چشمگیری با یکدیگر دارند.

2. معماری شیء توزیع شدهدر این حالت ، هیچ تفاوتی بین سرورها و کلاینت ها وجود ندارد و سیستم را می توان مجموعه ای از اشیاء متقابل در نظر گرفت که مکان آنها واقعاً مهم نیست. هیچ تفاوتی بین ارائه دهنده خدمات و کاربران آنها وجود ندارد.

در یک سیستم توزیع شده ، اجزای مختلف سیستم را می توان در زبان های برنامه نویسی مختلف پیاده سازی کرد و روی انواع مختلف پردازنده اجرا کرد. مدلهای داده ، ارائه اطلاعات و پروتکلهای ارتباطی لزوماً همه در یک سیستم توزیع شده از یک نوع نیستند. در نتیجه ، سیستم های توزیع شده به نرم افزاری نیاز دارند که بتواند این قسمتهای ناهمگن را مدیریت کرده و تعامل و تبادل داده بین آنها را تضمین کند. میان افزاردقیقاً به این کلاس نرم افزار اشاره می کند. همانطور که گفته شد ، در وسط بین بخشهای مختلف اجزای توزیع شده سیستم قرار دارد.

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