लायनेक्स ग्राफिक्स स्टैक को कैसे आयोजित किया जाता है?


31

क्या कोई समझा सकता है (उम्मीद है कि एक तस्वीर के साथ), लिनक्स ग्राफिक्स स्टैक का आयोजन कैसे किया जाता है? मैं एक्स / जीटीके / जीएनओएमई / केडीई आदि के बारे में हर समय सुनता हूं, लेकिन मुझे वास्तव में यह पता नहीं है कि वे वास्तव में क्या करते हैं और वे एक-दूसरे और स्टैक के अन्य भागों के साथ कैसे बातचीत करते हैं। एकता और वायलैंड कैसे फिट होते हैं?


1
Linux के भविष्य के Xorg डेवलपर कीथ पैकर्ड का वीडियो linux.conf.au पर भविष्य में जनवरी 2011 में: linuxconfau.blip.tv/file/4693305 यह वर्तमान मॉडल और निकट और मध्यम भविष्य की योजनाओं को शामिल करता है।
Mattdm

arstechnica.com/open-source/guides/2011/03/… स्टैक के ऊपर एक हाल का लेख भी है, और उबंटू की वाइलैंड के प्रति प्रतिबद्धता की प्रशंसा करता है।
अपूर्व ०२

- हाँ, हालाँकि वह लेख गुम टुकड़ों और यहाँ तक कि अशुद्धियों से भरा है और मेरे निर्णय में, बहुत सुसंगत नहीं है।
mattdm

@mattdm - भले ही यह असंगत है, आदि, यह विषय की बड़ी तस्वीर में चला जाता है, जिसे सीधे नीचे दिए गए उत्तरों में नहीं छुआ जाता है।
अपूर्व ०२०

जवाबों:


29

X विंडो सिस्टम क्लाइंट-सर्वर आर्किटेक्चर का उपयोग करता है। एक्स सर्वर उस मशीन पर चलता है जिसमें डिस्प्ले (मॉनिटर + इनपुट डिवाइस) होता है, जबकि एक्स क्लाइंट किसी अन्य मशीन पर चला सकते हैं, और एक्स प्रोटोकॉल का उपयोग करके एक्स सर्वर से कनेक्ट कर सकते हैं (सीधे नहीं, बल्कि लाइब्रेरी का उपयोग करके, जैसे Xlib, या अधिक आधुनिक गैर-अवरुद्ध घटना-संचालित XCB)। एक्स प्रोटोकॉल को एक्स्टेंसिबल होने के लिए डिज़ाइन किया गया है, और इसमें कई एक्सटेंशन हैं (देखें xdpyinfo(1))।

एक्स सर्वर केवल निम्न स्तर के ऑपरेशन करता है, जैसे कि विंडोज़ बनाना और नष्ट करना, ड्रॉइंग ऑपरेशन करना (आजकल ज्यादातर ड्राइंग क्लाइंट पर की जाती है और सर्वर पर एक इमेज के रूप में भेजी जाती है), विंडोज़ पर इवेंट भेजते हैं, ... आप देख सकते हैं कि कितना कम एक एक्स सर्वर चलाकर करता है X :1 &(किसी अन्य एक्स सर्वर द्वारा पहले से उपयोग किए गए किसी भी नंबर का उपयोग करें) या Xephyr :1 &(एक्सपीयर आपके वर्तमान एक्स सर्वर पर एम्बेडेड एक्स सर्वर चलाता है) और फिर xterm -display :1 &चलकर नए एक्स सर्वर पर स्विच करना (आपको एक्स प्राधिकरण स्थापित करने की आवश्यकता हो सकती है) का उपयोग करते हुए xauth(1))।

जैसा कि आप देख सकते हैं, एक्स सर्वर बहुत कम करता है, यह टाइटल बार नहीं खींचता है, विंडो मिनिमाइजेशन / आइकॉनिफिकेशन नहीं करता है, विंडो प्लेसमेंट का प्रबंधन नहीं करता है ... बेशक, आप मैन्युअल रूप से कमांड चलाने वाले विंडो प्लेसमेंट को नियंत्रित कर सकते हैं जैसे xterm -geometry -0-0, लेकिन आपके पास आमतौर पर एक विशेष एक्स क्लाइंट होगा जो उपरोक्त चीजें कर रहा है। इस क्लाइंट को विंडो मैनेजर कहा जाता है । एक बार में केवल एक विंडो मैनेजर सक्रिय हो सकता है। आप अब भी पिछले आदेशों के नंगे X सर्वर खुला है, तो आप उस पर एक विंडो प्रबंधक को चलाने के लिए कोशिश कर सकते हैं, जैसे twm, metacity, kwin, compiz, larswm, pawm, ...

जैसा कि हमने कहा, एक्स केवल निम्न स्तर के संचालन करता है, और पुशबट्टन, मेनू, टूलबार के रूप में उच्च स्तर की अवधारणाएं प्रदान नहीं करता है, ... ये टूलकिट नामक पुस्तकालयों द्वारा प्रदान किए जाते हैं , जैसे: Xaw, GTK, Qt, FLTK, ...

डेस्कटॉप वातावरण एक एकीकृत उपयोगकर्ता अनुभव प्रदान करने के लिए डिज़ाइन किए गए कार्यक्रमों का संग्रह है। इसलिए डेस्कटॉप वातावरण आमतौर पर पैनल, एप्लिकेशन लॉन्चर, सिस्टम ट्रे, कंट्रोल पैनल, कॉन्फ़िगरेशन इन्फ्रास्ट्रक्चर (जहां सेटिंग्स को बचाने के लिए) प्रदान करता है। कुछ प्रसिद्ध डेस्कटॉप वातावरण KDE (Qt टूलकिट का उपयोग करके बनाया गया), Gnome (GTK का उपयोग करके), प्रबुद्धता (अपने टूलकिट पुस्तकालयों का उपयोग करके), ...

कुछ आधुनिक डेस्कटॉप प्रभाव 3 डी हार्डवेयर का उपयोग करके सबसे अच्छा किया जाता है। तो एक नया घटक दिखाई देता है, समग्र प्रबंधक । X एक्सटेंशन, XComposite एक्सटेंशन, समग्र प्रबंधक को विंडो सामग्री भेजता है। समग्र प्रबंधक उन सामग्रियों को बनावट में परिवर्तित करता है और उन्हें कई मायनों में (अल्फा सम्मिश्रण, 3 डी अनुमानों, ...) की रचना करने के लिए ओपनजीएल के माध्यम से 3 डी हार्डवेयर का उपयोग करता है।

इतना समय पहले नहीं, एक्स सर्वर ने हार्डवेयर उपकरणों से सीधे बात की। इस डिवाइस को संभालने का एक महत्वपूर्ण हिस्सा OS कर्नेल पर जा रहा है: DRI (X और डायरेक्ट रेंडरिंग क्लाइंट द्वारा 3D हार्डवेयर तक पहुंच की अनुमति ), evdev (इनपुट डिवाइस हैंडलिंग के लिए एकीकृत इंटरफ़ेस), KMS (कर्नेल में ग्राफ़िक्स मोड सेट करना) , GEM / TTM (बनावट स्मृति प्रबंधन)।

इसलिए, डिवाइस हैंडलिंग की जटिलता के साथ अब ज्यादातर एक्स के बाहर, सरलीकृत विंडो सिस्टम के साथ प्रयोग करना आसान हो गया। वायलैंड एक विंडो सिस्टम है जो कम्पोजिट मैनेजर कॉन्सेप्ट पर आधारित है, यानी विंडो सिस्टम कंपोजिट मैनेजर है। वेलैंड उस उपकरण से निपटने का उपयोग करता है जो एक्स से बाहर निकल गया है और ओपनजीएल का उपयोग करके रेंडर करता है।

यूनिटी के लिए, यह एक डेस्कटॉप वातावरण है जिसे नेटबुक के लिए उपयुक्त यूजर इंटरफेस के लिए बनाया गया है।


अंतिम वाक्य के बारे में असहमत हैं, लेकिन एक बहुत जानकारी-युक्त उत्तर। +1।
6

"(आजकल अधिकांश ड्राइंग क्लाइंट पर किया जाता है और सर्वर पर एक छवि के रूप में भेजा जाता है)" यह वास्तव में सच नहीं है, उनमें से कुछ लोग एक्सगेल एक्सटेंशन के माध्यम से भी एक संगीतकार के बिना ओपेंगल रेंडरिंग करेंगे।
एडम डी। रूप्पे

13

पारंपरिक स्टैक 3 मुख्य घटकों पर बनाया गया है:

  • एक्स सर्वर जो डिस्प्ले को हैंडल करता है
  • विंडो मैनेजर जो खिड़कियों को फ्रेम में रखता है, खिड़कियों को कम से कम संभालता है आदि। यह यूनिक्स में नीति से तंत्र के अलगाव का हिस्सा है
  • स्टैकएक्सचेंज वेबसाइट को प्रदर्शित करने के रूप में उपयोगी कार्य करने वाले ग्राहक। वे एक्स प्रोटोकॉल का सीधे उपयोग कर सकते हैं (आत्महत्या), xlib या xcb (थोड़ा आसान) का उपयोग करें या टूलकिट जैसे कि GTK + / qt का उपयोग करें।

X आर्किटेक्चर को नेटवर्क बनाया गया था, जिससे क्लाइंट्स को अलग होस्ट और फिर सर्वर पर रहने की अनुमति मिलती थी।

अब तक सब ठीक है। हालाँकि वह रास्ता वापस से छवि थी। आजकल यह सीपीयू नहीं है जो ग्राफिक्स को संभालता है लेकिन जी.पी.यू. मॉडल में इसे शामिल करने के लिए कई प्रयास हुए हैं - और जब कर्नेल अधिक विस्तार के लिए जगह में आता है।

सबसे पहले ग्राफिक कार्ड के उपयोग के संबंध में कुछ धारणाएं बनाई गई हैं। उदाहरण के लिए केवल ऑन-स्क्रीन प्रतिपादन मान लिया गया था। मुझे अभी विकिपीडिया पर यह जानकारी नहीं मिल रही है, लेकिन DRI 1 ने यह भी मान लिया है कि एक ही समय में केवल एक एप्लिकेशन OpenGL का उपयोग करेगा (मैं तुरंत उद्धृत नहीं कर सकता लेकिन मैं बग खोद सकता हूं जहां यह DRI पर प्रतीक्षा करने के लिए नोट के साथ WONTFIX के रूप में बंद था। 2)।

अप्रत्यक्ष प्रतिपादन (समग्र WM के लिए आवश्यक) के लिए कुछ अस्थायी समाधान प्रस्तावित किया गया है:

  • XGL - प्रारंभिक प्रस्ताव समर्थन अनुप्रयोगों को सीधे कार्ड से बात करते हुए
  • AIGLX - ओपन प्रोपेलल के नेटवर्क गुणों का उपयोग करने वाले स्वीकार किए जाते हैं
  • एनवीडिया का मालिकाना समाधान

नए आर्किटेक्चर (DRI 2) पर काम शुरू किया गया था। इसमें शामिल हैं:

  • मेमोरी हैंडलिंग के लिए इन-कर्नेल समर्थन (GEM / TTM)
  • कर्नेल मोडसेटिंग (KMS) रिज़ॉल्यूशन को इन-कर्नेल में बदलने की अनुमति देता है, इसलिए एक्स और कंसोल और कुछ अन्य विशेषताओं के बीच स्विच करने में देरी से बचने (जैसे कि एक्स चलने पर भी घबराहट पर संदेश प्रदर्शित करना - जिसे IIRC लागू करने की योजना है)।

गैलियम ड्राइवरों पर काम शुरू करने के लिए किसी तरह ऑर्थोगोनल शुरू किया गया है। मेसा लाइब्रेरी ने सीपीयू पर ओपनजीएल के कार्यान्वयन के रूप में शुरू किया और फिर जीपीयू त्वरण का उपयोग करना शुरू कर दिया। यह हमेशा OpenGL के लिए कड़ा किया गया है। OpenGL 3.0 में मॉडल में काफी बदलाव आया है और लाइब्रेरी का पुनर्लेखन अपरिहार्य था। हालाँकि, वे कोड को कई परतों में विभाजित करने का अवसर ले रहे हैं, सामान्य कोड निकालने और निम्न-स्तरीय API प्रदान करने की अनुमति देते हुए, इसके ऊपर विभिन्न 3D API को लागू करने की अनुमति देता है - उदाहरण के लिए शराब, OpenX के माध्यम से जाने के बजाय सीधे गैलियम से DirectX बात कर रहा है API परत (जिसमें 1-1 कॉल प्रत्यक्ष नहीं हो सकती)।


वायलैंड एक ऐसी परियोजना है जो उपरोक्त को थोड़ा जटिल मानती है और "इतिहास" के साथ भी। 1984 से डिजाइन (हालांकि अत्यधिक संशोधित और अनुकूलित) 21 सी की शुरुआत से मेल नहीं खाता है। समर्थकों के अनुसार।

यह अधिक लचीलापन और बेहतर प्रदर्शन की पेशकश करने के लिए माना जाता है, हालांकि यह अभी भी कुछ महत्वपूर्ण सुविधाओं को पूरा कर रहा है जैसे कि पूर्ण ओपनजीएल समर्थन (और कुछ के लिए महत्वपूर्ण समर्थन)।


डेस्कटॉप वातावरण और विंडो प्रबंधकों के बारे में थोड़ा और अधिक। विंडो मैनेजर एक एप्लिकेशन है जो विंडो के व्यवहार के लिए जिम्मेदार है - उदाहरण के लिए यह कार्यस्थानों को प्रबंधित करने, टाइटलबार (विंडो शीर्षक के साथ स्क्रीन के ऊपर की चीज और न्यूनतम / अधिकतम / करीब बटन) आदि के लिए जिम्मेदार है।

सबसे पहले केवल न्यूनतम WM का उपयोग किया गया था, लेकिन बाद में उपयोगकर्ता डेस्कटॉप वातावरणों को चाहने लगा - यानी अधिक चित्रित संस्करण, जिसमें मेनू प्रारंभ, डेस्कटॉप पृष्ठभूमि आदि शामिल थे। हालांकि, डेस्कटॉप वातावरण के अधिकांश भाग एक विंडो प्रबंधक नहीं हैं, हालांकि वे अक्सर एकीकृत होते हैं।

कुछ समय बाद कंपोजिट WM को पेश किया गया था जो OpenGL और अप्रत्यक्ष रेंडरिंग का उपयोग अपने काम को करने के लिए करता है। वे न केवल चित्रमय प्रभाव प्रदान करते हैं, बल्कि कुछ एक्सेसिबिलिटी सुविधाओं (जैसे आवर्धक) के आसान कार्यान्वयन की अनुमति भी देते हैं।


तो क्यूटी की तरह एक फ्रेमवर्क एक आवेदन को खुद को आकर्षित करने की अनुमति देता है, और ग्नोम और केडीई जैसे डेस्कटॉप वातावरण तय करते हैं कि एक ही डेस्कटॉप पर कई खिड़कियां कैसे खींचनी हैं?
अपूर्व ०२०

काफी नहीं। क्यूटी एप्लिकेशन को खुद को आकर्षित करने की अनुमति देता है (यानी यह आवेदन को यह निर्दिष्ट करने की अनुमति देता है कि यह कैसे व्यवहार करता है)। WM मेटास्टेसिस (ग्नोम के लिए) या केविन (केडीई के लिए) निर्दिष्ट करता है कि वातावरण में खिड़की कैसे व्यवहार करती है। डेस्कटॉप वातावरण पैकेज है जिसमें डब्लूएम, पैनल और अन्य एप्लिकेशन शामिल हैं जैसे पीआईएम उपयोगकर्ता के लिए अतिव्यापी अनुभव प्रदान करता है।
मैकीज पाइचोटका

9

सबसे पहले, वास्तव में कोई लिनक्स ग्राफिक्स स्टैक नहीं है। लिनक्स में कोई चित्रमय प्रदर्शन क्षमता नहीं है।

हालांकि, लिनक्स एप्लिकेशन ग्राफिकल डिस्प्ले का उपयोग कर सकते हैं और ऐसा करने के लिए कई अलग-अलग सिस्टम हैं। सबसे आम सभी एक्स विंडो के शीर्ष पर बनाए गए हैं।

एक्स एक नेटवर्क प्रोटोकॉल है क्योंकि एक्स प्रोटोकॉल स्टैक के बीच में आप एक मानक घटक के रूप में नेटवर्क रख सकते हैं। आइए एक विशिष्ट उपयोग के मामले को देखें। बर्लिन में एक भौतिक विज्ञानी एक परमाणु कण कोलेकर पर स्विट्जरलैंड के सर्न में एक प्रयोग चलाना चाहता है। वह दूरस्थ रूप से लॉग इन करता है और सर्न के सुपरकंप्यूटर सरणियों में से एक पर एक डेटा विश्लेषण कार्यक्रम चलाता है और अपनी स्क्रीन पर परिणामों को रेखांकन करता है।

बर्लिन में, भौतिक विज्ञानी के पास एक एक्स-टर्मिनल डिवाइस है जो कुछ एक्स-सर्वर सॉफ़्टवेयर चला रहा है जो दूरस्थ अनुप्रयोगों को एक ग्राफिकल प्रदर्शन क्षमता प्रदान कर रहा है। एक्स-सर्वर सॉफ़्टवेयर में एक फ्रेमबफ़र है जो विशिष्ट हार्डवेयर के लिए विशिष्ट डिवाइस ड्राइवर से बात करता है। और एक्स-सर्वर सॉफ्टवेयर एक्स प्रोटोकॉल बोलता है। तो परतें ग्राफिकल डिवाइस हो सकती हैं-> डिवाइस ड्राइवर-> फ्रेम बफर-> एक्स सर्वर-> एक्स प्रोटोकॉल।

फिर, स्विट्जरलैंड में, एप्लिकेशन एक्स प्रोटोकॉल का उपयोग करके एक डिस्प्ले से जुड़ता है और "ड्रा आयत" या "अल्फा मिश्रण" जैसे ग्राफिक डिस्प्ले कमांड भेजता है। आवेदन शायद एक उच्च स्तरीय चित्रमय पुस्तकालय का उपयोग करता है और पुस्तकालय की संभावना होगी, बदले में, निम्न स्तर के पुस्तकालय पर आधारित होगी। उदाहरण के लिए, एप्लीकेशन को WxWidget टूलकिट का उपयोग करके Python में लिखा जा सकता है जो GTK के शीर्ष पर बनाया गया है जो कोर ग्राफिकल ड्राइंग कमांड के लिए काहिरा नामक एक पुस्तकालय का उपयोग करता है। काहिरा के शीर्ष पर ओपेंगल भी हो सकता है। परतें इस तरह हो सकती हैं: WxWidgets-> GTK-> काहिरा-> X टूलकिट-> X प्रोटोकॉल। स्पष्ट रूप से यह मध्य में प्रोटोकॉल है जो चीजों को जोड़ता है, और चूंकि लिनक्स यूनिक्स सॉकेट्स का भी समर्थन करता है, डेटा के लिए पूरी तरह से आंतरिक परिवहन, ये दो प्रकार की चीजें एक मशीन पर चल सकती हैं यदि आप चाहते हैं।

एक्स प्रोटोकॉल को संदर्भित करता है और आर्किटेक्चर के लिए मौलिक कुछ भी है जैसे एक्स-सर्वर जो ग्राफ़िकल डिस्प्ले, पॉइंटिंग डिवाइस और कीबोर्ड चलाता है।

जीटीके और क्यूटी दो सामान्य उद्देश्य जीयूआई लाइब्रेरी हैं जो विंडोज़, संवाद, बटन आदि का समर्थन करते हैं।

गनोम और केडीई दो डेस्कटॉप वातावरण हैं जो ग्राफिकल डेस्कटॉप पर खिड़कियों का प्रबंधन करते हैं, बटन बार जैसे उपयोगी एपलेट्स और चीजें प्रदान करते हैं। वे कई एप्लिकेशन को एक्स-सर्वर (एक्स-टर्मिनल डिवाइस) के माध्यम से भी संवाद करने की अनुमति देते हैं, भले ही ऐप अलग-अलग रिमोट कंप्यूटर पर चल रहे हों। उदाहरण के लिए कॉपी और पेस्ट इंटरप्लिकेशन संचार का एक रूप है। GNOME को GTK के ऊपर बनाया गया है। केडीई क्यूटी के ऊपर बनाया गया है। और GNDE ऐप्स को KDE डेस्कटॉप पर या KDE ऐप्स को GNOME डेस्कटॉप पर चलाना संभव है क्योंकि ये सभी एक ही अंतर्निहित एक्स-प्रोटोकॉल के साथ काम करते हैं।


7
यह उत्तर पुराना है। कर्नेल लंबे समय से ग्राफिक्स में शामिल है।
mattdm

5
Mattdm की टिप्पणी पर विस्तार करने के लिए, यहां तक ​​कि जब ग्राफिक्स कर्नेल ट्री के बाहर से ड्राइवरों द्वारा चलाए जा रहे हैं, तब भी वे ग्राफिकल संसाधनों तक पहुंच को नियंत्रित करने के लिए कर्नेल सेवाओं का उपयोग करते हैं। स्टैक के नीचे कर्नेल हमेशा बैठता है।
dmckee

मैं यह नहीं मानूंगा कि कर्नेल स्टैक के निचले भाग में है। बेशक, हार्डवेयर के लिए विशेषाधिकार प्राप्त करने के लिए डिवाइस ड्राइवर कर्नेल सेवाओं का उपयोग करते हैं, लेकिन एक एक्स एप्लिकेशन नेटवर्क से बात कर रहा है इसलिए नेटवर्क कार्ड से परे भी अधिक परतें हैं।
माइकल डिलन

एक्स नेटवर्क पर बनाया जा रहा है, जबकि कई पर कुछ सेटअप के लिए महत्वपूर्ण कार्यान्वयन विस्तार (विशेष रूप से डेस्कटॉप के लिए) है और एमआईटी-एसएचएम जैसी सीमाएं हैं। डीआरएम ड्राइवरों, केएमएसएस और साथ ही बनावट को संभालने के लिए कर्नेल वर्तमान स्टैक में महत्वपूर्ण भूमिका निभाता है।
मैकीज पाइचोटका

DRM और KMS डिवाइस ड्राइवरों के बारे में अधिक हैं जिन्हें अब ग्राफिक्स कार्ड पर एक ग्राफिकल रेंडरिंग सीपीयू के लिए एक समर्पित आंतरिक नेटवर्क कनेक्शन पर संवाद करना होगा। यह ग्राफ़िकल स्टैक का हिस्सा हो सकता है, और यह (यानी अमेज़ॅन ईसी 2 लिनक्स) नहीं हो सकता है।
माइकल डिलन

2

यह इसका संगठन है, आप इस चित्र से और अधिक सीखेंगे जो पाठ के कई पृष्ठों से आता है:

यहाँ छवि विवरण दर्ज करें


1
ये कहां से है? कुछ परिचालित संख्याएं हैं, उनका क्या मतलब है? और यह वीलैंड के लिए विशिष्ट लगता है, जबकि मुझे लगता है कि एक्स अकेले या मीर के अलग-अलग संगठन होंगे।
मुरु

1
@ muru एक रिवर्स सर्च कर रहा है, मैं इसे लेकर आया हूं .... en.wikipedia.org/wiki/EGL_%28API%29 ... हालांकि इसकी वर्तमान में imgur पर होस्ट की गई है, क्योंकि यह एक अपलोड प्रतीत होता है? लेकिन मैं स्रोत छवि को जोड़ने से सहमत हूं और जहां इसका प्रदर्शन करना सही तरीका है?
जमुनाश

1
यह छवि वास्तव में हालांकि xserver से परे कुछ भी नहीं समझाती है? आप X11-clientइसे सिर्फ एक बूँद को देख रहे हैं , लेकिन उस बूँद में बहुत कुछ चल रहा है। जैसा कि अन्य वास्तव में भयानक उत्तरों द्वारा समझाया गया है।
जमुनाश

1

डेस्कटॉप और कुछ सर्वरों पर लिनक्स अभी भी सभी एक्स और फ्रेम बफर ग्राफिक्स है। X विंडो के अंतर्गत -यह GTK + और Qt आता है, YES BOTH X सिस्टम का उपयोग करता है, फिर से बहुत सारे डेस्कटॉप वातावरण हैं - Gnome, KDE X डिस्प्ले और उनके शेल आदि का उपयोग करता है।

Btw, लिनक्स के हाल के वीडियो (http://blip.tv/file/4693305/) से हाल ही में एक वीडियो था। इंटेल से कीथ पैकर्ड ने एक्स और जीएल के बारे में बात की * यह दिलचस्प था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.