X, Xorg และ D-Bus: ความแตกต่างคืออะไร?


35

ในกระบวนการของการเรียนรู้ที่จะทำบางสิ่งในการเขียนโปรแกรม GUI (เช่นการจองพื้นที่บนหน้าจอสำหรับแอปพลิเคชัน) ฉันต้องเรียนรู้เพิ่มเติมเกี่ยวกับ Window Manager โดยปกติคือ X11 บน Linux (ฉันไม่แน่ใจว่ามีของ distro ซึ่งใช้อย่างอื่นนอกเหนือจาก X11 ถึงแม้ว่าฉันเคยได้ยินเกี่ยวกับWaylandซึ่งยังไม่ได้นำมาใช้เลย)

ฉันค่อนข้างใหม่กับการเขียนโปรแกรมและใจร้อน ดังนั้นฉันแค่ดำน้ำเข้าไป ตอนนี้ฉันกำลังอ่าน ICCCM ด้วยความหวังว่าจะได้เรียนรู้เพิ่มเติม อย่างไรก็ตามเอกสารนี้มีจุดมุ่งหมายเพื่อสาธารณะที่รู้ (ทาง) มากกว่าฉัน ดังนั้นฉันจึงพบข้อมูลบางอย่างและฉันชอบที่จะรับการชี้แจงบางอย่าง

ส่วนที่ 2ของคำพูดของ ICCCM:

โปรดทราบว่าข้อมูลทั้งหมดที่ถ่ายโอนระหว่างเจ้าของและผู้ร้องขอจะต้องผ่านเซิร์ฟเวอร์ในสภาพแวดล้อม X Version 11 ลูกค้าไม่สามารถคิดได้ว่าลูกค้ารายอื่นสามารถเปิดไฟล์เดียวกันหรือแม้กระทั่งสื่อสารโดยตรง ไคลเอ็นต์อื่นอาจกำลังพูดคุยกับเซิร์ฟเวอร์โดยใช้กลไกเครือข่ายที่แตกต่างกันโดยสิ้นเชิง (ตัวอย่างเช่นไคลเอ็นต์หนึ่งอาจเป็น DECnet และ TCP / IP อื่น) ดังนั้นการส่งผ่านการอ้างอิงทางอ้อมไปยังข้อมูล (เช่นชื่อไฟล์ชื่อโฮสต์และหมายเลขพอร์ตและอื่น ๆ ) จะได้รับอนุญาตเฉพาะในกรณีที่ลูกค้าทั้งสองตกลงกันเป็นพิเศษ

เท่าที่ฉันเข้าใจ X Window Manager สร้างขึ้นบนสุดของ X Server (ขอบคุณ Wikipedia) ในใบเสนอราคาข้างต้น: มันบอกว่าลูกค้าสามารถสื่อสารกับเซิร์ฟเวอร์โดยใช้ DECnet หรือ TCP / IP จนถึงตอนนี้ฉันคิดว่า "เซิร์ฟเวอร์" เป็นคำพูดตอนนี้ฉันสงสัยว่า: X server เป็นเซิร์ฟเวอร์เหมือนใน "เว็บเซิร์ฟเวอร์" หรือไม่? ฉันจะเข้าใจฟังก์ชัน / คำจำกัดความของมันได้อย่างไร

จากนั้นมักจะมีการอ้างอิงถึง X11, Xorg, X Server และ / หรือ X Window Manager มันทำให้สับสน: X11 เป็นชุดรวมถึง Xorg และ X Window Manager หรือไม่? ถ้าเป็นเช่นนั้นมีอะไรอีกในชุด X11 นี้ไหม

X ต้องการเมาส์หรือคีย์บอร์ดหรืออินพุตชนิดอื่น ๆ : ส่วนนี้ของฟังก์ชั่นของ X Server ด้วยหรือไม่ X Window Manager ดูแลจอแสดงผลอย่างเคร่งครัดเท่านั้นหรือไม่

ในที่สุดข้อความที่กล่าวถึงข้างต้นนี้ยังกล่าวถึงลูกค้าที่สื่อสารกันหรือไม่กัน: สิ่งนี้ทำให้ฉันนึกถึง D-Bus ซึ่งฉันใช้ไปเล็กน้อยเพื่อจุดประสงค์ในการเรียนรู้ ด้วย D-Bus คุณยังสามารถทริกเกอร์เหตุการณ์หน้าต่าง นั่นทำให้ฉันสับสนเล็กน้อยว่าโปรแกรมควรสื่อสารกับคนอื่นอย่างไร: * มีความแตกต่างอะไรบ้างระหว่างโปรแกรมที่ใช้ X Server หรือ D-Bus? * * * *

มันเป็นความอัปยศที่ข้อมูลนี้ยังคงคลุมเครืออยู่บ้างทำให้ยากต่อการเรียนรู้ แต่หวังว่าคุณจะสามารถนำความรู้เกี่ยวกับเรื่องนี้ :) ขอบคุณ

คำตอบ:


61

คุณกำลังถามคำถามห้าข้อที่นี่และอาจจะดีกว่าถ้าถามห้าคำถาม I'll แต่ฉันจะกระโดดเข้าไป:

  1. X เป็นเซิร์ฟเวอร์และสามารถนำมาเปรียบเทียบกับ "เว็บเซิร์ฟเวอร์" ซึ่งเป็นกระบวนการที่รับฟังการเชื่อมต่อขาเข้าที่พูดโปรโตคอลเฉพาะ (โปรโตคอล X) และมันออกคำตอบ การเชื่อมต่อมาจากไคลเอนต์ X ซึ่งอาจอยู่บนโลคัลโฮสต์หรือบนรีโมตโฮสต์ที่เข้าถึงผ่านเครือข่าย

  2. X11 เป็น "รุ่นหลัก" ของโปรโตคอล X ซึ่งมีวิวัฒนาการมาตั้งแต่เริ่มแรก X11 เป็นโปรโตคอลล่าสุดและที่พบมากที่สุด (Xorg เป็นการดำเนินการของ X server, X library และคอลเลกชันของลูกค้าทั้งหมดที่พูดคุย X11 มีการใช้งานอื่น ๆ : XFree86 ที่เสียชีวิตส่วนใหญ่; เชิงพาณิชย์เช่น Hummingbird Exceed; forks เช่น XQuartz ซึ่งทำงานบน Mac OS X )

  3. "window manager" เป็นไคลเอนต์ X ซึ่งจัดการ windows โดยทั่วไปแล้วมันมีความรับผิดชอบในการตกแต่งหน้าต่างด้วยยกนูน / เส้นขอบวางเงา, แถบเมนูที่มีปุ่ม ฯลฯ - และจัดการตรรกะของการจัดวางหน้าต่าง; รองรับ windows ที่ถูกลากปรับขนาดหรือจัดเรียงใหม่เป็นต้น

  4. X ต้องการอินพุตและมีความรับผิดชอบร่วมกันในการจัดการกับเคอร์เนล ในอดีต X ทำการจัดการฮาร์ดแวร์ด้วยตัวเองมากมาย ในยุคปัจจุบันบนแพลตฟอร์ม Linux X จะค่อยๆกลายเป็น "เล็ก" และมอบหมายความรับผิดชอบนี้ให้กับเคอร์เนล Linux ข้อดีของสิ่งนี้คือ: X codebase ขนาดเล็ก; "cross-wire" น้อยลงด้วยเคอร์เนลและ X ทั้งคู่พยายามจัดการเนื้อหาเดียวกัน (ตัวอย่างนี้คืออินเตอร์เฟสเหตุการณ์ Linux ที่เหตุการณ์จากเมาส์ ฯลฯ ถูกตีความและแปลโดยเคอร์เนลและไดรเวอร์ของมันลงในอินเตอร์เฟสมาตรฐานที่/dev/input/event*ซึ่งใช้โดยเซิร์ฟเวอร์ X) โปรดทราบว่าในแพลตฟอร์มอื่น ๆ (BSD, Solaris) X ยังคงมีขนาดใหญ่มาก

  5. กระบวนการสื่อสารกับกันและกันมีหลายวิธี ฉันเชื่อว่าไคลเอนต์ X สามารถโต้ตอบโดยใช้โพรโทคอล X (ตัวอย่างเช่นตัวจัดการหน้าต่าง X แบบดั้งเดิมจำเป็นต้องรู้เมื่อไคลเอนต์อื่นวาดหน้าต่างเพื่อตกแต่งพวกเขาเพจเจอร์ต้องรู้เมื่อขนาดของหน้าต่างเปลี่ยนตำแหน่งหรือตำแหน่งเพื่อให้ สะท้อนให้เห็นว่าในเพจเจอร์) D-Bus เป็นเทคโนโลยีการสื่อสารระหว่างกระบวนการที่ทันสมัย ​​(IPC) ที่พัฒนาขึ้นเพื่อแก้ไขข้อบกพร่องของวิธีการอื่น มันไม่ได้เจาะจง X


ขอขอบคุณ! นั่นเป็นประโยชน์จริงๆ เกี่ยวกับคำถาม 5 ข้อ: ฉันไม่รู้ว่าโปรโตคอลคืออะไรในกรณีนั้น แต่ถ้าผู้ดูแลระบบต้องการให้ฉันแยกพวกเขาฉันจะได้ยินเกี่ยวกับมัน ฉันชอบที่จะมีมันในเอกสารเดียวและเห็นคำถาม 5 ข้อเป็นคำถามย่อยของชื่อเรื่อง ขอบคุณอีกครั้ง.
Benjamin

จุดที่ไม่ได้โพรโทคอลคือระบบ X Window ได้รับการออกแบบเพื่อให้แอปพลิเคชัน ("ไคลเอนต์") ไม่จำเป็นต้องทำงานบนโฮสต์เดียวกันนั่นคือคุณสามารถล็อกอินเข้าสู่เครื่องอื่นรันโปรแกรมที่นั่นและหน้าต่างจะเปิดขึ้นบนหน้าจอ เหมือนแอปพลิเคชันในท้องถิ่น หากโปรแกรมอื่นถามว่า "ID กระบวนการของคุณคืออะไรดังนั้นฉันสามารถคุยกับคุณโดยตรง" ไม่มีวิธีตอบคำถามนี้อย่างถูกต้อง
Simon Richter

คุณอาจจะต้องการไม่ว่าทรัพยากรที่ใช้ร่วมกันโดยเซิร์ฟเวอร์เอ็กซ์คือการแสดงประกอบด้วยหนึ่งหรือมากกว่าจอภาพและอุปกรณ์ป้อนข้อมูลสองคนหรือมากกว่า (แป้นพิมพ์เมาส์)
Hildred

มีประโยชน์อย่างแน่นอนทั้ง 5 คำถามด้วยกัน ขอขอบคุณ.
Harvey

@hildred ในกรณีของหน้าจอสัมผัสในการกำหนดค่าคีออสก์คุณอาจมีอุปกรณ์อินพุตเพียงไม่กี่ตัว
Shadur
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.