મારી વર્તમાન સમજ:
1) KVM
KVM (કર્નલ-આધારિત વર્ચ્યુઅલ મશીન) એ હાઇપરવાઇઝર (VMM – વર્ચ્યુઅલ મશીન મેનેજર) છે જે Linux OS પર મોડ્યુલ તરીકે ચાલે છે. અવિદ્યમાન (વર્ચ્યુઅલ) વાતાવરણમાં કેટલાક સોફ્ટવેર ચલાવવા માટે અને તે જ સમયે આ સોફ્ટવેરથી વાસ્તવિક ભૌતિક હાર્ડવેર કે જેના પર આ સોફ્ટવેર ચાલે છે તેને છુપાવવા માટે હાઇપરવાઇઝરની જરૂર છે. હાઇપરવાઇઝર ભૌતિક હાર્ડવેર (હોસ્ટ) અને વર્ચ્યુઅલ ઓએસ (ગેસ્ટ) વચ્ચે "સ્પેસર" તરીકે કામ કરે છે.
KVM એ Linux કર્નલનું પ્રમાણભૂત મોડ્યુલ હોવાથી, તે કર્નલ (મેમરી મેનેજમેન્ટ, શેડ્યૂલર, વગેરે)માંથી તમામ જરૂરી ગુડીઝ મેળવે છે. અને તે મુજબ, અંતે, આ તમામ લાભો મહેમાનોને જાય છે (કારણ કે અતિથિઓ હાઇપરવાઇઝર પર કામ કરે છે જે Linux OS કર્નલ પર/માં ચાલે છે).
KVM ખૂબ ઝડપી છે, પરંતુ તે પોતે વર્ચ્યુઅલ OS ચલાવવા માટે પૂરતું નથી, કારણ કે... આને I/O ઇમ્યુલેશનની જરૂર છે. I/O (CPU, ડિસ્ક, નેટવર્ક, વિડિયો, PCI, USB, સીરીયલ પોર્ટ વગેરે) માટે KVM QEMU નો ઉપયોગ કરે છે.
2) QEMU
QEMU (ક્વિક ઇમ્યુલેટર) એ વિવિધ ઉપકરણો માટેનું ઇમ્યુલેટર છે જે તમને એક આર્કિટેક્ચર માટે રચાયેલ ઓપરેટિંગ સિસ્ટમને બીજા પર ચલાવવાની મંજૂરી આપે છે (ઉદાહરણ તરીકે, ARM -> x86). પ્રોસેસર ઉપરાંત, QEMU વિવિધ પેરિફેરલ ઉપકરણોનું અનુકરણ કરે છે: નેટવર્ક કાર્ડ્સ, HDD, વિડિયો કાર્ડ્સ, PCI, USB, વગેરે.
તે આની જેમ કાર્ય કરે છે:
સૂચનાઓ/બાઈનરી કોડ (ઉદાહરણ તરીકે, એઆરએમ) TCG (નાના કોડ જનરેટર) કન્વર્ટરનો ઉપયોગ કરીને મધ્યવર્તી પ્લેટફોર્મ-સ્વતંત્ર કોડમાં રૂપાંતરિત થાય છે અને પછી આ પ્લેટફોર્મ-સ્વતંત્ર બાઈનરી કોડ લક્ષ્ય સૂચનાઓ/કોડમાં રૂપાંતરિત થાય છે (ઉદાહરણ તરીકે, x86).
ARM -> intermediate_code -> x86
અનિવાર્યપણે, તમે કોઈપણ હોસ્ટ પર QEMU પર વર્ચ્યુઅલ મશીનો ચલાવી શકો છો, જૂના પ્રોસેસર મોડલ્સ સાથે પણ કે જે Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine) ને સપોર્ટ કરતા નથી. જો કે, આ કિસ્સામાં, તે ખૂબ જ ધીમી ગતિએ કામ કરશે, કારણ કે એક્ઝેક્યુટીંગ બાઈનરી કોડને ફ્લાય પર TCG (TCG એ જસ્ટ-ઇન-ટાઇમ કમ્પાઇલર છે) નો ઉપયોગ કરીને બે વાર ફરીથી કમ્પાઇલ કરવાની જરૂર છે.
તે. QEMU પોતે મેગા કૂલ છે, પરંતુ તે ખૂબ જ ધીમેથી કામ કરે છે.
3) પ્રોટેક્શન રિંગ્સ
પ્રોસેસર્સ પર બાઈનરી પ્રોગ્રામ કોડ એક કારણસર કામ કરે છે, પરંતુ તે વિવિધ સ્તરો (રિંગ્સ / પ્રોટેક્શન રિંગ્સ) પર સ્થિત છે, જેમાં ડેટા એક્સેસના વિવિધ સ્તરો છે, સૌથી વિશેષાધિકૃત (રિંગ 0) થી લઈને સૌથી મર્યાદિત, નિયમન અને “નટ્સ ટાઈટેડ” સુધી. (રિંગ 3).
ઓપરેટિંગ સિસ્ટમ (OS કર્નલ) રિંગ 0 (કર્નલ મોડ) પર ચાલે છે અને તે કોઈપણ ડેટા અને ઉપકરણો સાથે જે ઈચ્છે તે કરી શકે છે. વપરાશકર્તા એપ્લિકેશન્સ રિંગ 3 સ્તર (વપરાશકર્તા મોડ) પર કાર્ય કરે છે અને તેઓ જે ઇચ્છે છે તે કરવાની મંજૂરી નથી, પરંતુ તેના બદલે ચોક્કસ કામગીરી કરવા માટે દરેક વખતે ઍક્સેસની વિનંતી કરવી આવશ્યક છે (આમ, વપરાશકર્તા એપ્લિકેશનોને ફક્ત તેમના પોતાના ડેટાની ઍક્સેસ હોય છે અને તે "મેળવી શકતી નથી." કોઈ બીજાના સેન્ડબોક્સમાં). રીંગ 1 અને 2 ડ્રાઇવરો દ્વારા ઉપયોગ માટે બનાવાયેલ છે.
Intel VT-x/AMD SVM ની શોધ પહેલાં, હાઇપરવાઇઝર રિંગ 0 પર ચાલતા હતા, અને મહેમાનો રિંગ 1 પર દોડતા હતા. કારણ કે રિંગ 1 પાસે OSના સામાન્ય સંચાલન માટે પૂરતા અધિકારો નથી, ગેસ્ટ સિસ્ટમના દરેક વિશેષાધિકૃત કૉલ સાથે, હાઇપરવાઇઝરને ફ્લાય પર આ કૉલને સંશોધિત કરવો પડ્યો હતો અને તેને રિંગ 0 પર એક્ઝિક્યુટ કરવાનો હતો (જેમ કે QEMU કરે છે). તે. અતિથિ દ્વિસંગી ના પ્રોસેસર પર સીધું જ ચલાવવામાં આવ્યું હતું, અને દરેક વખતે ફ્લાય પર ઘણા મધ્યવર્તી ફેરફારોમાંથી પસાર થયા હતા.
ઓવરહેડ નોંધપાત્ર હતું અને આ એક મોટી સમસ્યા હતી, અને પછી પ્રોસેસર ઉત્પાદકોએ, એકબીજાથી સ્વતંત્ર રીતે, સૂચનાઓનો વિસ્તૃત સમૂહ (Intel VT-x/AMD SVM) બહાર પાડ્યો જે ગેસ્ટ OS કોડને અમલમાં મૂકવાની મંજૂરી આપે છે. સીધા હોસ્ટ પ્રોસેસર પર (કોઈપણ મોંઘા મધ્યવર્તી પગલાંને બાયપાસ કરીને, જેમ કે પહેલા કેસ હતો).
Intel VT-x/AMD SVM ના આગમન સાથે, એક ખાસ નવું રીંગ લેવલ -1 (માઈનસ વન) બનાવવામાં આવ્યું હતું. અને હવે હાઇપરવાઇઝર તેના પર ચાલે છે, અને મહેમાનો રિંગ 0 પર ચાલે છે અને CPU માટે વિશેષાધિકૃત ઍક્સેસ મેળવે છે.
તે. આખરે:
- હોસ્ટ રિંગ 0 પર ચાલે છે
- મહેમાનો રીંગ 0 પર કામ કરે છે
- હાઇપરવાઇઝર રીંગ -1 પર ચાલે છે
4) QEMU-KVM
KVM મહેમાનોને રિંગ 0 ની ઍક્સેસ આપે છે અને I/O (પ્રોસેસર, ડિસ્ક, નેટવર્ક, વિડિયો, PCI, USB, સીરીયલ પોર્ટ, વગેરે જે મહેમાનો "જુએ છે" અને તેની સાથે કામ કરે છે) નું અનુકરણ કરવા QEMU નો ઉપયોગ કરે છે.
તેથી QEMU-KVM (અથવા KVM-QEMU) :)
ક્રેડિટ
PS આ લેખનો ટેક્સ્ટ મૂળરૂપે ટેલિગ્રામ ચેનલમાં પ્રકાશિત થયો હતો
ટિપ્પણીઓમાં લખો જ્યાં મને વિષય યોગ્ય રીતે સમજાતો નથી અથવા જો ઉમેરવા માટે કંઈ હોય તો.
આભાર!
સોર્સ: www.habr.com