2009-03-13 4 views
5

मैं एक सामान्य यूएसबी कीबोर्ड का उपयोग कर रहा हूं, लिनक्स 2.6.27 gnome डेस्कटॉप, gnome-terminal और bash shell के साथ। मुझे यह जानने में दिलचस्पी है कि सॉफ्टवेयर में क्या होता है। मेरे कीबोर्ड के विशेष पात्रों को वर्णों में कुछ एन्कोडिंग के साथ व्याख्या कैसे किया जाता है और चरित्र चित्र कहां से आते हैं?जब मैं कीबोर्ड पर कुंजी दबाता हूं और यह एक खोल पर दिखाता है तो क्रियाओं का वास्तविक पथ क्या होता है?

+0

वाह:

यहाँ एक चित्र में अपने प्रयास है।इसका उत्तर आसानी से इस्तेमाल किए गए विस्तार स्तर के आधार पर पुस्तकें या किताबों के अलमारियों को भर सकता है। – unwind

+0

@unwind सहमत हुए। यह मुझे एक नेटवर्किंग कंपनी में मेरे सामने आने के बाद, मेरे पसंदीदा साक्षात्कार प्रश्न की याद दिलाता है। क्या होता है जब आप अपना ब्राउज़र खोलते हैं और यूआरएल पर नेविगेट करते हैं? –

उत्तर

8

यूएसबी ड्राइवरों के साथ लिनक्स इनपुट परत कीबोर्ड से मूल रूप से "कुंजी 1 नीचे" "कुंजी 1 यूपी" प्राप्त करती है।

एक्स स्कैनकोड को कीकोड और एक्स इनपुट ईवेंट में कनवर्ट करने के लिए अपने कीमैप का उपयोग करता है।

जीटीके इनपुट विधि इनपुट घटनाओं के अनुक्रम को मिश्रित यूनिकोड वर्णों में परिवर्तित करती है।

जीनोम-टर्मिनल इन्हें यूटीएफ -8 में खोल के लिए एन्कोड करता है।

शैल परवाह नहीं है। यह सिर्फ जानता है कि यह एक मल्टीबाइट एन्कोडिंग से निपट रहा है।

शैल टीटीवी के माध्यम से वापस multibyte-encoded पाठ echoes।

जीनोम टर्मिनल आने वाले पाठ को डीकोड करता है और यूनिकोड कोड बिंदु निर्धारित करता है।

जीनोम टर्मिनल जीटीके + सुविधाओं का उपयोग कर पात्र खींचता है।

जीटीके + टेक्स्ट को प्रस्तुत करने के लिए पेंगो का उपयोग करता है, और एक्स लाइब्रेरी को स्क्रीन पर पिक्सल खींचने के लिए कॉल करता है।

एक्स सर्वर स्क्रीन बफर में वर्ण खींचता है और वीडियो कार्ड उन्हें प्रदर्शित करता है।

alt text http://osoft.us/system_layers.png

+0

छवि नीचे है और इंटरनेट पर कोई प्रतिलिपि नहीं है। :( –

2

परतों में इसे देखें। सबसे पहले हार्डवेयर है, और लिनक्स कर्नेल में एक डिवाइस ड्राइवर के पास डिवाइस में स्थिति रजिस्टरों के माध्यम से कुंजीपटल को नियंत्रित करने और प्रतिक्रिया देने और हैंडलर को बाधित करने के लिए विशिष्ट विधियां होंगी, उदाहरण के लिए।

अगला लिनक्स कर्नेल है, जिसमें बूट समय पर पता लगाए गए हार्डवेयर के प्रत्येक टुकड़े के लिए उपयुक्त ड्राइवर लोड करने की कुछ विधि होगी। एक बार लोड हो जाने पर, डिवाइस ड्राइवर कुछ कर्नेल-ड्राइवर इंटरफ़ेस के अनुरूप होता है, जो डिवाइस से डेटा को कर्नेल और इसके विपरीत प्रदान करता है।

कर्नेल के बाहर, कुछ स्तर पर, डिवाइस ड्राइवर और हार्डवेयर दिखाई दे रहे हैं, आमतौर पर/dev निर्देशिका में एक सूची के रूप में। एक टर्मिनल एमुलेटर की तरह सॉफ़्टवेयर, जिसे किसी डिवाइस का उपयोग करने की आवश्यकता होती है, उसे/dev में प्रविष्टि के माध्यम से डिवाइस तक पहुंच प्राप्त होगी।

उपयोगकर्ता-स्तरीय एप्लिकेशन और डिवाइस के बीच संचार अब पढ़ने/लिखने और ioctl संचालन की श्रृंखला के माध्यम से होता है। कर्नेल में ये जाल (कुछ विवरण के लिए इनके लिए मैन्युअल पेज देखें), जिस बिंदु पर कर्नेल ऊपर लोड किए गए डिवाइस ड्राइवर के साथ संचार करता है।

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

क्या इससे मदद मिलती है?

संबंधित मुद्दे