امیرحسین کریم پور
مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

منظور از Display Server در لینوکس چیست ؟

خوب در این مطلب از سری مطالب تشریح عناصر قرار داده شده در زنجیره ساختار گرافیکی معماری لینوکس میرسیم به توضیح مفهومی بسیار مهم به نام Display Server. همونطور که خودتون بهتر میدونید زمانیکه از صحبت از سرور میشه پس حتما چیزی به اسم کلاینت هم توی ماجرا وجود داره. به زبان ساده ، Display Server برنامه ای هست که وظیفه برقراری هماهنگی ورودی و خروجی داده های گرافیکی کلاینت هاش رو بین سخت افزار و سیستم عامل به عهده داره. میشه گفت DS لایه ای (اینو با درایور اشتباه نگیرید لطفا!) بین سخت افزار/کارت گرافیک و سیستم عامل/کرنل هستش. به لطف Display Server هست که شما میتونید لینوکس رو بصورت گرافیکی ببینید وگرنه همون ترمینال یا CLI سیاه و سفید رو میدیدید. 

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
سرفصل های این مطلب
  1. X11
  2. Wayland

اگه فنی تر بخوایم براتون بگیم باید بگیم که Display Server یه Framework برای محیط گرافیکی سیستم عامل فراهم می کنه تا کاربر بتونه با ماوس و کیبورد با اپلیکیشن (توصیه می کنم نکته پایینی رو بخونید) ها کار کنه. Display Server عنصر کلیدی هر رابط کاربری گرافیکی ای که مخصوصا داره از ساختار Windowing System استفاده می کنه به حساب میاد.

Display Server داده های ورودی رو از درایور کارت گرافیک میگیره و داده ها رو برای استفاده کلاینت ها در دسترس قرار میده. همینطور ، Display Server داده های ورودی رو هم از کلاینت میگیره و پردازششون می کنه و اونارو به یکی از کامپوننت های کرنل DRM ، gem و یا KMS driver (ما به این سه تا زیاد کاری نداریم اینا تو حوزه Kernel دارن استفاده میشن و مستقیما دارن با کرنل کار می کنن) برای کار های Rendering ، Buffering ، Decoding و ... ارسال می کنه. 

نکته : زمانیکه صحبت از اپلیکیشن می کنیم منظور همون برنامه های کاربردی ای هست که میتونیم بصورت گرافیکی با اونا کار کنیم. مثل Emailer ها ، مرورگر ها ، Text Editor هایی مثل Nano ، Vim ، GNOME Text Editor و کلا اپلیکیشن هایی که به همراه Desktop Environment نصب میشن. اما در عوض برنامه های خط فرمانی مثل ls ، cat ، grep ، top و ... که محیط گرافیکی براشون وجود نداره Display Server ها معمولا (نه همیشه) روی اونا تاثیری ندارن چون رو بستر Terminal Emulator یا همون shell دارن اجرا میشن.

اگه شبکه خونده باشید پس حتما میدونید که پروتکلی رو اگه بخوایم توی محیط عملیاتی مورد استفاده قرار بدیم که یه سروری آدرس IP بده و کلاینت (ها) IP رو دریافت کنه میتونیم به پروتکل DHCP اشاره کنیم که DHCP Server وظیفه اختصاص آدرس IP و سایر option هاش و DHCP Client دریافت کننده IP و مخلفاتش از DHCP Server هست. خوب الان تو این موضوع هم این مورد صدق می کنه. هر Display Server ای با Display Client هاش به یک زبان یا Protocol ای باید صحبت کنه که این پروتکل یا برنامه در حقیقت موضوع اصلی این مطلب مون هستش. از Display Server Protocol هایی که برای لینوکس طراحی شدن میتونیم به X11 و Wayland اشاره کنیم. که هر کدوم رو در ادامه بهتون معرفی می کنیم ...

نکته : با این همه توضیحات بالا ، ولی باز هم یادآوری می کنم : Display Server رو با Desktop Environment اشتباه نگیرید! Desktop Environemt در لایه های پایینی داره از Display Server برای کار هاش استفاده می کنه. 

X11

X11 (که بهش X هم میگن) قدیمی ترین و محبوب ترین Display Server ای هست که برای لینوکس ساخته شده. X11 به خاطر جا افتاده بودن توی خیلی از توزیع ها و همچنین پشتیبانی از قابلیت Remoting توی خیلی از توزیع های لینوکسی داره استفاده میشه. پروتکل X11 از X.org server Display Server برای انجام کار هاش استفاده می کنه. از Compositor هایی که به X11 وابسته هستش میتونیم به Compton ، Mutter و Kwin اشاره کنیم.

Wayland

ٌWayland به عنوان جایگزینی برای X server ساخته شد که توسعه و نگهداریش به خاطر سبک بودنش راحت تر هستش. خیلی از اپلیکیشن ها و Framework هاش به X server وابسته هستن اما به خوبی Wayland نیستن. بر خلاف توزیع های دیگه توزیع Ubuntu سال های سال بود که به عنوان Backward Compatibility داشت از X server استفاده می کرد اما توی اوبونتو های جدید دیگه کلا سوئیچ کرده روی Wayland. از Compositor هایی که به Wayland وابسته هستش میتونیم به Weston ، Mutter و Kwin اشاره کنیم. امیدوارم مورد توجه تون قرار گرفته باشه. در ادامه اگه سوالی داشتید در خدمتم.


امیرحسین کریم پور
امیرحسین کریم پور

مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

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

نظرات