NetBSD ప్రాజెక్ట్ డెవలపర్లు కొత్త హైపర్వైజర్ మరియు అనుబంధిత వర్చువలైజేషన్ స్టాక్ని సృష్టించడం గురించి, ఇది ఇప్పటికే ప్రయోగాత్మక NetBSD-ప్రస్తుత శాఖలో చేర్చబడింది మరియు NetBSD 9 యొక్క స్థిరమైన విడుదలలో అందించబడుతుంది. NVMM ప్రస్తుతం x86_64 ఆర్కిటెక్చర్కు మద్దతు ఇవ్వడానికి పరిమితం చేయబడింది మరియు దీనికి రెండు బ్యాకెండ్లను అందిస్తుంది హార్డ్వేర్ వర్చువలైజేషన్ మెకానిజమ్లను ఎనేబుల్ చేస్తోంది: AMDకి మద్దతుతో x86-SVM మరియు Intel CPUల కోసం x86-VMX CPU వర్చువలైజేషన్ ఎక్స్టెన్షన్స్. దాని ప్రస్తుత రూపంలో, ఒక హోస్ట్పై 128 వరకు వర్చువల్ మిషన్లను అమలు చేయడం సాధ్యమవుతుంది, వీటిలో ప్రతి ఒక్కటి 256 వర్చువల్ ప్రాసెసర్ కోర్లు (VCPU) మరియు 128 GB RAM వరకు కేటాయించబడతాయి.
NVMM సిస్టమ్ కెర్నల్ స్థాయిలో రన్ అయ్యే డ్రైవర్ను కలిగి ఉంటుంది మరియు హార్డ్వేర్ వర్చువలైజేషన్ మెకానిజమ్లకు యాక్సెస్ను సమన్వయం చేస్తుంది మరియు వినియోగదారు స్థలంలో రన్ అయ్యే Libnvmm స్టాక్. కెర్నల్ భాగాలు మరియు వినియోగదారు స్థలం మధ్య పరస్పర చర్య IOCTL ద్వారా నిర్వహించబడుతుంది. NVMM యొక్క లక్షణం KVM వంటి హైపర్వైజర్ల నుండి వేరు చేస్తుంది మరియు భైవ్, కెర్నల్ స్థాయిలో హార్డ్వేర్ వర్చువలైజేషన్ మెకానిజమ్ల చుట్టూ కనీస అవసరమైన బైండింగ్లు మాత్రమే నిర్వహించబడతాయి మరియు అన్ని హార్డ్వేర్ ఎమ్యులేషన్ కోడ్ కెర్నల్ నుండి వినియోగదారు స్థలంలోకి తరలించబడుతుంది. ఈ విధానం ఎలివేటెడ్ అధికారాలతో అమలు చేయబడిన కోడ్ మొత్తాన్ని తగ్గించడానికి మరియు హైపర్వైజర్లోని దుర్బలత్వాలపై దాడులు జరిగినప్పుడు మొత్తం సిస్టమ్ను రాజీ చేసే ప్రమాదాన్ని తగ్గించడానికి మిమ్మల్ని అనుమతిస్తుంది. అదనంగా, ప్రాజెక్ట్ యొక్క డీబగ్గింగ్ మరియు ఫజ్ టెస్టింగ్ గమనించదగ్గ విధంగా సరళీకృతం చేయబడింది.
అయినప్పటికీ, Libnvmm కూడా ఎమ్యులేటర్ ఫంక్షన్లను కలిగి ఉండదు, కానీ ఇప్పటికే ఉన్న ఎమ్యులేటర్లలో NVMM మద్దతును ఏకీకృతం చేయడానికి మిమ్మల్ని అనుమతించే APIని మాత్రమే అందిస్తుంది, ఉదాహరణకు, QEMU. వర్చువల్ మిషన్ను సృష్టించడం మరియు ప్రారంభించడం, గెస్ట్ సిస్టమ్కు మెమరీని కేటాయించడం మరియు VCPUలను కేటాయించడం వంటి ఫంక్షన్లను API కవర్ చేస్తుంది. భద్రతను మెరుగుపరచడానికి మరియు సాధ్యమయ్యే దాడి వెక్టర్లను తగ్గించడానికి, libnvmm స్పష్టంగా అభ్యర్థించిన ఫంక్షన్లను మాత్రమే అందిస్తుంది-డిఫాల్ట్గా, కాంప్లెక్స్ హ్యాండ్లర్లు స్వయంచాలకంగా పిలవబడవు మరియు వాటిని నివారించగలిగితే అస్సలు ఉపయోగించబడకపోవచ్చు. NVMM చాలా క్లిష్టంగా మారకుండా, మరియు మీ పనిలో వీలైనన్ని అంశాలను నియంత్రించడానికి మిమ్మల్ని అనుమతిస్తుంది, విషయాలను సరళంగా ఉంచడానికి ప్రయత్నిస్తుంది.
NVMM యొక్క కెర్నల్-స్థాయి భాగం NetBSD కెర్నల్తో చాలా కఠినంగా అనుసంధానించబడి ఉంది మరియు గెస్ట్ OS మరియు హోస్ట్ ఎన్విరాన్మెంట్ మధ్య సందర్భ స్విచ్ల సంఖ్యను తగ్గించడం ద్వారా మెరుగైన పనితీరును అనుమతిస్తుంది. వినియోగదారు స్థలం వైపు, libnvmm సాధారణ I/O ఆపరేషన్లను సమగ్రపరచడానికి ప్రయత్నిస్తుంది మరియు అనవసరంగా సిస్టమ్ కాల్లను నివారించేందుకు ప్రయత్నిస్తుంది. మెమరీ కేటాయింపు వ్యవస్థ pmap సబ్సిస్టమ్పై ఆధారపడి ఉంటుంది, ఇది సిస్టమ్లో మెమరీ కొరత ఉన్న సందర్భంలో స్వాప్ విభజనకు గెస్ట్ మెమరీ పేజీలను తొలగించడానికి మిమ్మల్ని అనుమతిస్తుంది. NVMM గ్లోబల్ లాక్లు మరియు స్కేల్లు లేకుండా ఉంటుంది, వివిధ గెస్ట్ వర్చువల్ మెషీన్లను అమలు చేయడానికి వివిధ CPU కోర్లను ఏకకాలంలో ఉపయోగించేందుకు మిమ్మల్ని అనుమతిస్తుంది.
హార్డ్వేర్ వర్చువలైజేషన్ మెకానిజమ్లను ప్రారంభించడానికి NVMMని ఉపయోగించే QEMU-ఆధారిత పరిష్కారం సిద్ధం చేయబడింది. QEMU యొక్క ప్రధాన నిర్మాణంలో సిద్ధం చేసిన ప్యాచ్లను చేర్చడానికి పని జరుగుతోంది. QEMU+NVMM కలయిక ఇప్పటికే ఉంది FreeBSD, OpenBSD లతో గెస్ట్ సిస్టమ్లను విజయవంతంగా నడపడం, Linux, Windows AMD మరియు ఇంటెల్ ప్రాసెసర్లతో కూడిన x86_64 సిస్టమ్లలో XP/7/8.1/10 మరియు ఇతర ఆపరేటింగ్ సిస్టమ్లు (NVMM స్వయంగా ఒక నిర్దిష్ట ఆర్కిటెక్చర్కు పరిమితం కాదు; ఉదాహరణకు, సరైన బ్యాకెండ్తో, ఇది ARM64 సిస్టమ్లలో కూడా పనిచేయగలదు). NVMM యొక్క ఇతర అనువర్తనాలలో వ్యక్తిగత అప్లికేషన్లను శాండ్బాక్సింగ్ చేయడం కూడా ఒకటి.
మూలం: opennet.ru
