X, Xorg ve D-Bus: fark nedir?


35

GUI programlamasında bazı şeyler yapmayı öğrenme sürecinde (örneğin, bir uygulama için ekranda yer ayırma), Pencere Yöneticisi hakkında daha fazla şey öğrenmek zorundayım, genellikle Linux'ta X11 (dağıtıcının olup olmadığından emin değilim) X11'den başka bir şey kullanan , henüz henüz uygulanmamış Wayland'ı duyduğum halde .

Programlama konusunda oldukça yeni ve sabırsızım; bu yüzden sadece içine dalıyorum. Şimdi daha fazla bilgi edinmek için ICCCM'yi okuyorum. Ancak bu belge, benden daha çok şey bilen bir halkı hedeflemektedir. Bu yüzden bazı bilgilere rastladım ve bazı açıklamalar almak isterdim.

ICCCM'nin 2. Bölümündeki alıntılar:

Bir mal sahibi ile talep sahibi arasında aktarılan tüm verilerin genellikle X Sürüm 11 ortamında sunucu aracılığıyla yapılması gerektiğini unutmayın. Bir müşteri başka bir müşterinin aynı dosyaları açabileceğini veya hatta doğrudan iletişim kurabileceğini kabul edemez. Diğer istemci, tamamen farklı bir ağ oluşturma mekanizması vasıtasıyla sunucuyla konuşuyor olabilir (örneğin, bir müşteri DECnet ve diğer TCP / IP olabilir). Bu nedenle, dolaylı referansların verilere (örneğin dosya adları, ana bilgisayar adları ve bağlantı noktası numaraları vb.) Aktarılmasına yalnızca her iki müşteri de özellikle aynı fikirde ise izin verilir.

Anladığım kadarıyla, X Pencere Yöneticisi X Sunucunun Tepesi üzerine kuruludur (teşekkürler Wikipedia). Yukarıdaki alıntıda: istemcinin DECnet veya TCP / IP kullanarak sunucu ile iletişim kurabildiğini söylüyor. Şimdiye kadar "sunucunun" bir konuşma şekli olduğunu düşündüm, şimdi şüphe ediyorum: X sunucusu bir "web sunucusu" gibi bir sunucu mu? İşlevini / tanımını nasıl anlamalıyım?

Daha sonra, X11, Xorg, X Server ve / veya X Window Manager'a genellikle referanslar vardır. Kafa karıştırıcı olur: X11, Xorg ve X Window Manager'ı da içeren bir paket midir? Eğer öyleyse, bu X11 paketinde başka bir şey var mı?

X ayrıca fareye, klavyeye veya başka bir giriş türüne de ihtiyaç duyar: X Server'ın işlevlerinin de bir parçası mı? X Window Manager kesinlikle sadece ekrana bakıyor mu?

Son olarak, buradaki alıntı aynı zamanda müşteriyle birbirleriyle iletişim kurup kurmamakta da bahsetmektedir: bu bana biraz öğrenme amaçlı kullandığım D-Bus'ı hatırlattı. D-Bus ile pencere olaylarını da tetikleyebilirsiniz. Bu, programların birbirleriyle nasıl iletişim kurmaları gerektiği konusunda biraz kafamı karıştırıyor: * X Server veya D-Bus kullanarak etkileşime giren programlar arasında ne fark var? *

Bu bilgilerin bir şekilde belirsiz kalması utanç verici, öğrenmeyi zorlaştırıyor, ama umarım buna biraz ışık tutabilirsiniz :) Teşekkürler.

Yanıtlar:


61

Burada beş soru soruyorsunuz ve beş soru sormanız daha iyi olabilir ☺ Fakat atlayacağım:

  1. X bir sunucudur ve belirli bir protokolü (X protokolü) konuşan gelen bağlantıları dinleyen ve cevapları veren bir süreç olduğu için "web sunucusu" ile karşılaştırılabilir. Bağlantılar, yerel ana bilgisayarda veya bir ağ üzerinden erişilen uzak bir ana bilgisayarda bulunan X istemcilerinden gelir.

  2. X11, kuruluşundan bu yana gelişen X protokolünün "büyük bir sürümüdür". X11 en yeni protokol ve en yaygın olanıdır. (Xorg, bir X sunucusunun, X kitaplıklarının ve hepsi de X11 konuşan bir müşteri topluluğunun bir uygulamasıdır. Başka uygulamalar da vardır: büyük ölçüde geçersiz olan XFree86; Hummingbird Exceed gibi ticari olanlar; Mac OS X'te çalışan XQuartz gibi) )

  3. Bir "pencere yöneticisi", pencereleri yöneten bir X istemcisidir. Pencereleri eğim / kenarlık, alt gölgeler, düğmeler içeren bir menü çubuğu vb. İle dekore etme - ve pencere yerleştirme mantığını kullanma; sürgülü, yeniden boyutlandırılmış veya yeniden düzenlenmiş vb.

  4. X, girdi gerektirir ve bunu Çekirdek ile yönetmek için ortak bir sorumluluğu vardır. Tarihsel olarak, X bir çok donanım yönetimi gerçekleştirdi. Modern zamanlarda, Linux platformunda, X yavaş yavaş “küçülüyor” ve bu sorumluluğu Linux çekirdeğine devrediyor. Bunun avantajları: daha küçük X kod temeli; Çekirdek ve X ile aynı şeyleri yönetmeye çalışan daha az sayıda "çapraz tel" var. (Buna bir örnek, fare vb. olayların çekirdek ve sürücüleri /dev/input/event*tarafından X sunucusu tarafından tüketilen standart arabirime yorumlandığı ve çevrildiği Linux olay arabirimidir ). Diğer platformlarda (BSD, Solaris) X'in hala oldukça monolitik olduğunu unutmayın.

  5. Süreçlerin birbirleriyle iletişim kurmasının çok, çok yolu vardır. X istemcilerinin X protokolü ile etkileşime girebileceğine inanıyorum (örneğin, geleneksel X pencere yöneticilerinin, diğer müşterilerin pencereleri ne zaman dekore ettiklerini, onları süslemek için ne zaman çizeceklerini bilmeleri gerekir; çağrı cihazına yansıtın). D-Bus, diğer yöntemlerin eksikliklerini gidermek için geliştirilen modern bir süreçler arası iletişim (IPC) teknolojisidir. X'e özgü değil.


Güzel, teşekkürler! Bu gerçekten yardımcı oldu. 5 soru hakkında: bu durumda protokolün ne olduğunu bilmiyorum, ancak bir yönetici onları bölmemi istiyorsa bunu duyacağım. Şahsen bunu bir belgede bulundurmayı seviyorum ve 5 soruyu başlığın alt soruları olarak görüyorum. Tekrar teşekkürler.
Benjamin

Atlamalı protokollerde dikkat edilmesi gereken nokta, X Pencere Sisteminin, uygulamalar ("istemciler") aynı ana bilgisayarda çalışmasına gerek kalmayacak şekilde tasarlanmasıdır, yani başka bir makineye giriş yapabilir, orada bir program çalıştırabilir ve ekranınızdaki pencere açılabilir. Yerel bir uygulama gibi. Başka bir program "işlem kimliğiniz nedir, bu yüzden doğrudan sizinle konuşabilirim" diye soruyorsa, bu soruyu doğru yanıtlamanın bir yolu yoktur.
Simon Richter

X sunucusu tarafından paylaşılan kaynağın, bir veya daha fazla monitör ve iki veya daha fazla giriş cihazından (klavye, fare) oluşan bir ekran olmadığını isteyebilirsiniz
hildred

Kesinlikle tüm 5 soru birlikte yardımcı olur. Teşekkür ederim.
Harvey

@hildred Kiosk konfigürasyonunda bir dokunmatik ekran olması durumunda, bir giriş cihazına kadar sahip olabilirsiniz.
Shadur
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.