2010-06-26 6 views
5

मैं लिनक्स में virtio तंत्र को समझने की कोशिश कर रहा हूँ। मैंने पढ़ा है कि किक फ़ंक्शन नए प्रकाशित बफर के बारे में मेजबान पक्ष को सूचित करेगा। मैं विशेष रूप से virtio_net पर देख रहा हूं। एक बार एक पैकेट ट्रांसमिशन के लिए तैयार होता है तो किक फ़ंक्शन को here कहा जाता है। यहां से मैंने कॉल का पता लगाया और मुझे लगता है कि यह this पर जाता है। यहां से यह कहां जाता है? कौन सा कोड virtio के बैकएंड ड्राइवर शामिल है। हाइपरवाइजर में कोड कहां है जहां यह किक जाएगा? धन्यवाद ...केवीएम में हाइपरकॉल की प्रविष्टि कहां है?

धन्यवाद, बाला

उत्तर

3

आईओ बंदरगाह यहां तक ​​पहुँचता है आभासी मशीन है, जो QEMU उदाहरण है, जिसमें वी एम का समर्थन करता है के द्वारा कार्यान्वित किया जाता है की "हार्डवेयर" के साथ संवाद कर रहे हैं। क्यूईएमयू कोड में शुरू करने की जगह virtio_ioport_write() in hw/virtio-pci.c है।

+0

बहुत बहुत धन्यवाद। एक और प्रश्न। क्या qemu उदाहरण अतिथिोस के उपयोगकर्ता-स्थान या होस्टोस के उपयोगकर्ता स्थान में चल रहा है? – bala1486

+1

होस्ट ओएस का उपयोगकर्ता स्थान। क्या आपने मूल [केवीएम पेपर] पढ़ा है (http://www.kernel.org/doc/ols/2007/ols2007v1-pages-225-230.pdf)? क्यूईएमयू यूजर स्पेस कोड I/O वर्चुअलाइजेशन प्रदान करता है जैसा कि खंड 3.1 और 5.1 में वर्णित है। अतिथि ओएस चलाने के लिए विशेष कुछ भी _need_ नहीं है; लेकिन एक तंत्र का उपयोग जैसे virtio (जहां अतिथि को ज्ञान है कि यह वर्चुअलाइज्ड है, और विशेष समर्थन का उपयोग करता है) बहुत अधिक I/O प्रदर्शन के लिए अनुमति देता है। (यह पेपर के सेक्शन 8.2 में संक्षिप्त रूप से वर्णित "पैरावार्च्यूलाइजेशन" है।) –

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