
- •Isbn 978-601-217-247-8
- •Есептеу машиналары
- •§1.1.1 Параллель виртуалды машиналар
- •1 Сурет. Vm/sp, vм/ха, vn/еsа машиналары
- •2 Сурет. Виртуалды машина жүйесі
- •3 Сурет. VMware терезесі
- •4 Сурет. Бір компьютерде бірнеше операциялық жүйе
- •5 Сурет. Вм консолынің мысалы
- •6 Сурет. Виртуалды машиналар жүйесінің архитектурасы
- •§1.1.2 Виртуалды машиналардың түрлері
- •§1.1.3 Виртуаландыру - ақпараттық жүйелерді реттеудің басты жолы
- •§1.2.1 Компьютердің аппараттық құрылымын жетілдіру
- •7 Сурет. Бір операцияны бес тактіде орындайтын тізбекті құрылғының
- •8 Сурет. Бір операцияны әрбірі бес тактіде орындайтын екі бірдей тізбекті
- •10 Сурет. Конвейерлік құрылғы өнімділігінің кіріс деректер
- •11 Сурет. Illiac IV матрицалық жүйесінің жобасы
- •§1.2.2 Компьютерді басқарудың интеллектуалдығын жоғарылату
- •12 Сурет. Ортақ жадылы параллель компьютерлер
- •13 Сурет. Таратылған жадылы параллель компьютерлер
- •14 Сурет. Ортақ шиналы мультипроцессорлық жүйе.
- •15 Сурет. Матрицалық коммутаторлардағы
- •16 Сурет. Омега - желі мультипроцессорлық жүйесі.
- •17 Сурет. Мультикомпьютерлерлік жүйелер байланыс топологияларымен: а – сызықша; б – дөңгелек; в – жұлдызша
- •18 Сурет. Процессорлардың байланыс топологияларының нұсқалары
- •19 Сурет. Сm* есептеу жүйесінің сызбасы
- •20 Сурет. Bbn Butterfly есептеу жүйесінің сызбасы
- •§1.2.3 Функционалды құрылғылар жүйесі
- •§1.3.1 Параллель компьютерлер және жүйелер классификациясы
- •21 Сурет. М. Флин классификациясының sisd және simd кластары
- •22 Сурет. М. Флин классификациясының misd және mimd кластары
- •23 Сурет. Mimd класына р. Хокнидың қосымша
- •§1.3.2 Векторлы-конвейерлік компьютелер
- •24 Сурет. Cray c90 компьютерінің жалпы сүлбесі
- •25 Сурет. Cray c90 компьютері жадысының бөлінуі
- •26 Сурет. Cray c90 компьютерінде векторлық операциялардың орындалуы
- •27 Сурет. Cray c90 компьютерінде векторлық операциялардың ілінісуі
- •§1.3.3 Ортақ жадылы параллель компьютерлер
- •28 Сурет. Hewlett Packard Superdome компьютері
- •29 Сурет. Hewlett Packard Superdome компьютерінің
- •§1.3.4 Таратылған жадылы есептеу жүйелері
- •30 Сурет. Cray t3e компьютерінің коммуникациялық торы
- •31 Сурет. Cray т3d/t3e компьютерлеріндегі барьерлі синхрондау
- •32 Сурет. Есептеу кластерінің жалпы схемасы
- •33 Сурет. Мвс-1000м суперкомпьютерінің құрылымы
- •34 Сурет. Коммуникациялық ортаның латенттілігі және өткізу қабілеті
- •§1.3.5 Метакомпьютинг
- •§2.1.1 Үлкен есептер және үлкен компьютерлер
- •35 Сурет. Сандық эксперименттің этаптары
- •§ 2.1.2 Алгоритм графы және параллель есептеулер
- •§ 2.1.3 Шексіз параллелділік концепциясы
- •§ 2.1.4 Ішкі параллельділік
- •37 Сурет. Матрицаларды көбейту графы
- •38 Сурет. Үшбұрышты жүйелерге арналған графтар
- •39 Сурет. Блокты-екідиагоналды жүйеге арналған Макрограф
- •40 Сурет. Блокты-екідиагоналды жүйеге арналған граф
- •41 Сурет. Жалпыланған пралллель форманың ярустары
- •42 Сурет. Графтағы микро және макропараллельділік
- •§2.2.1 Дәстүрлі тізбекті тілдерді пайдалану.
- •§2.2.2 OpenMp бағдарламалау технологиясы
- •44 Сурет. ОреnМр: бағдарламаның орындалу процесі
- •§2.2.3 Хабарлама жіберу негізіндегі бағдарламалау жүйелері. Mpi бағдарламалау жүйесі
- •Int mpi_Comm_rank(mpi_Comm comm, int *rank)
- •Int mpi_Send(void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm)
- •Integer count, datatype, dest, msgtag, comm, request, ierr
- •Int mpi_Isend(void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Int mpi_Irecv(void *buf, int count, mpi_Datatype datatype, int source, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Integer count, datatype, source, msgtag, comm, request, ierr
- •Int main(argc,argv)
- •Int argc;
- •Include 'mpif.H’
- •Integer ierr, rank, size, prev, next, reqs(4), buf(2)
- •Integer stats(mpi_status_size, 4)
- •Int mpi_Waitany( int count, mpi_Request *requests, int *index, mpi_Status *status)
- •Integer count, requests(*), index, status(mpi_status_size), ierr
- •Int mpi_Waitsome( int incount, mpi_Request *requests, int *outcount, int *indexes, mpi_Status *statuses)
- •Integer incount, requests(*), outcount, indexes(*), ierr,
- •Int mpi_Test(mpi_Request *request, int *flag, mpi_Status *status)
- •Integer request, ierr, status(mpi_status_size)
- •Int mpi_Testall( int count, mpi_Request *requests, int *flag, mpi_Status *statuses)
- •Integer count, requests(*), statuses(mpi_status_size,*), ierr
- •Int mpi_Testany(int count, mpi_Request *requests, int *index, int *flag, mpi_Status *status)
- •Integer count, requests(*), index, status(mpi_status_size), ierr
- •Int mpi_Testsome( int incount, mpi_Request *requests, int *outcount, int *indexes, mpi_Status *statuses)
- •Integer incount, requests(*), outcount, indexes(*), ierr,
- •Int mpi_Iprobe( int source, int msgtag, mpi_Comm comm, int *flag, mpi_Status *status)
- •Include 'mpif.H’
- •Integer ierr, rank, size, n, nl, I, j
- •Integer irr, status(mpi_status_size), req(maxproc*2)
- •If(ir .Ne. Rank)
- •Int mpi_Send_init( void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Integer count, datatype, dest, msgtag, comm, request, ierr
- •Int mpi_Recv_init( void *buf, int count, mpi_Datatype datatype, int source, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Integer count, datatype, source, msgtag, comm, request, ierr
- •Integer сомм, ierr
- •Include 'mpif.H’
- •Integer ibuf(maxproc)
- •Integer req(2*maxproc), statuses(mpi_status_size, maxproc)
- •Integer count, datatype, root, comm, ierr
- •Integer scount, stype, rcount, rtype, root, comm, ierr
- •Integer scount, stype, rcounts(*), displs(*), rtype, root, comm, ierr
- •Integer scount, stype, rcount, rtype, root, comm, ierr
- •Int mpi_Bcast(void *buf, int count, mpi_Datatype datatype, int source, mpi_Comm comm)
- •Int mpi_Gather( void *sbuf, int scount, mpi_Datatype stype, void *rbuf, int rcount, mpi_Datatype rtype, int dest, mpi_Comm comm)
- •Int mpi_Scatter(void *sbuf, int scount, mpi_Datatype stype, void *rbuf, int rcount, mpi_Datatype rtype, int source, mpi_Comm comm)
- •Int main(argc,argv)
- •Int argc;
- •Int numtasks, rank, sendcount, recvcount, source;
- •Int mpi_Barrier (mpi_Comm comm)
- •§ 2.2.4 Бағдарламалаудың басқа тілдері және жүйелері.
- •Параллель есептеуде қолданылатын қысқаша қазақша-орысша терминологиялық сөздік
- •Параллель есептеуде қолданылатын қысқаша орысша-қазақша терминологиялық сөздік
- •Және орта айнымалылары
- •Mpi функциялары
5 Сурет. Вм консолынің мысалы
Пайдаланушы, виртуалды машинаның «ішіне» нақты компьютердегі сияқты өзіне керекті операциялық жүйені орнатады. Осындай, нақты ВМ-ға тиісті операциялық жүйе қонақтық деп аталады (guest OS). Қолданылатын қонақтық ОЖ тізімі - виртуалды машиналардың ең маңызды сипаттамаларының бірі болып табылады. Бүгінгі күнгі заманауи виртуалды машиналар Windows, Linux және MacOS операциялық жүйелері ұрпақтарының бірнеше ондаған нұсқаларын қолдауды қамтамасыз етеді.
Виртуалды машинаның ішкі көрінісі
Виртуалды машина жасалып, іске қосылғаннан кейін, пайдаланушыға өзінің жеке процессоры, жедел жадысы, видеожүйесі және ішіне флоппи–дисковод, CD/DVD оқу құрылғылары кіретін «стандартты» сыртқы құрылғылыры жиынтығы бар автономды компьютермен жұмыс істеп отырғандай болып көрінуі мүмкін (сондай иллюзия туындауы мүмкін).
Бірақ шын мәнінде, виртуалды машина нақты компьютердің физикалық ресурстарына қатынай алмайды (не имеет доступа). Бұл жұмыс біз жоғарыда атап өткен ВММ–на және тағы да бір қызмет көрсетуші бағдарлама – виртуалды машиналар драйверіне жүктеледі.
Виртуалды машиналар пайдаланылатын қарапайым ықшамдалған түрдегі жүйе архитектурасы төмендегідей көрініске ие болады.
хосттық ОЖ және виртуалды машиналар мониторы компьютердің аппараттық компоненттерін басқаруды өзара бөлісіп алады; бұнда хосттық ОЖ ресурстарды өз қосымшалары арасында таратумен (ВМ консолін қоса есептегенде) айналысады;
ВМ мониторы ресурстардың іске қосылған виртуалды машиналар арасында таратылуын қадағалайды, және олар үшін аппараттық деңгейге нақты ену иллюзиясын жасайды (бұл механизмді виртуалдану деп атайды);
өзіне бөлінген ресурстар шегінде қонақтық ОЖ «өзінің» қосымшаларының жұмысын басқарады (6 сурет).
6 Сурет. Виртуалды машиналар жүйесінің архитектурасы
Келтірілген құрылым жалпыға тән болып есептеледі. Сонымен бірге қазіргі таңдағы нарықта ұсынылып жатқан виртуалды машиналар жүйелерінің біршама ерекшеліктері де бар. Бұның басты себебі – әрбір жүйедегі виртуалдандыру механизмінің қандай түрін пайдалануда болып тұр.
§1.1.2 Виртуалды машиналардың түрлері
Виртуалды машиналар жүйесі әр түрлі платформалар базасында және әр түрлі технологиялар көмегімен жасалуы мүмкін. Виртуалдандыруды пайдаланатын схема аппараттық платформаға және хосттық ОЖ мен қолдау көрсетілетін қонақтық ОЖ-лердің «қарым-қатынастарының» ерекшеліктеріне де байланысты болады. Кейбір архитектуралар виртуалдандыру мүмкіндігін аппараттық деңгейде қамтамасыз етеді, басқалары қосымша бағдарламалық көмектерді қолдануды қажет етеді.
Қазіргі кезде виртуалдандырудың үш схемасы кеңінен таралған:
қонақтың ОЖ АРІ эмуляциялау;
қонақтық ОЖ толық эмуляциялау;
қонақтық ОЖ квазиэмуляциялау.
Қонақтық ОЖ АРІ эмуляциялауымен виртуалды машиналар
Көбінесе қосымшалар оқшауланған адрестік кеңістікте жұмыс істейді және қондырғымен операциялық жүйе ұсынған АРІ (Apрlication Programming Interfase – қолданбалы бағдарламалау интерфейсі) интерфейсінің көмегімен қарым-қатынас жасайды. Егер, екі операциялық жүйе өздерінің АРІ интерфейстерімен сәйкес (совместимы) болса (мысалы Windows МЕ және Windows ХР), онда олардың біріне арналып жасалған қосымша екіншісінде де жұмыс істей алады. Ал егер екі операциялық жүйенің АРІ интерфейстері сәйкес болмаса (мысалы Windows 2000 және Linux), онда қонақтық ОЖ АРІ-не бағытталған қосымшалар қатынасын ұстап алуды (перехват) және оның әрекетін хосттық ОЖ құралдарымен имитация жасауды қамтамасыз ету керек. Бұндай кезде бір операциялық жүйені орнатып қойып бір мезгілде оның өзінің қосымшаларымен де және басқа операциялық жүйенің қосымшаларымен де жұмыс жүргізуге болады.
Тек АРІ - дің шақырулары ғана эмуляцияланып, қосымшаның тұтас коды эмуляциясыз орындалатын болғандықтан, виртуалдандырудың бұндай схемасы виртуалды машиналардың өнімділігінің шамалы ғана кемуіне алып келеді. Алайда, көптеген қосымшалар құжатталмаған АРІ функцияларын пайдаланатын болғандықтан, немесе АРІ–ді айналып өтіп тікелей операциялық жүйенің қызметіне жүгінетіндіктен, ең жақсы деген АРІ эмуляторының өзінде сәйкестік мәселелері туындайды, соның салдарынан мүмкін болған барлық қосымшалардың 70 % - ға жуығын ғана іске қосуға мүмкіндік береді. Сонымен бірге, өте тез дамып келе жатқан операциялық жүйелердің (мысалы, Windows сияқты) АРІ эмуляциясының жұмысын тұрақты қолдап тұру оңай емес, сондықтан да АРІ эмуляторының көпшілігі операциялық жүйенің қандай да бір нақты нұсқасының эмуляторы болып қалуда. Мысалы, Windows NТ/ 2000 ОЖ осы күнге дейін І.х. нұсқасының OS/2 қосымшасына арналған эмулятор орнатылған. Қонақтық ОЖ АРІ эмуляциялауымен ВМ–ның ең басты кемшілігі – оның нақты бір операциялық жүйеге бағытталғандығы.
Қонақтық ОЖ АРІ эмуляциялау технологиясы бойынша жасалған өнімдер мысалдары:
ашық кодты Wine жобасы (Wine Is Not an Emulator, «Wine» - эмулятор емес), ол Linux және Unix операциялық жүйелері басқаруымен Dos-, Win16- және Win32 қосымшаларын жүктеуге мүмкіндік береді;
Linux операциялық жүйесі басқаруымен Windows операциялық жүйесін қосуға мүмкіндік беретін Netraverse компаниясының Win4Lin өнімі;
Linux операциялық жүйе басқаруында Dоs–қосымшаларды іске қосуға мүмкіндік беретін ашық кодты DOSEMU жобасы;
бір компьютерде Linux операциялық жүйесінің бірнеше нұсқасын іске қосуға мүмкіндік беретін ашық кодты User Mode Linux (UML) жобасы. (қазіргі кезде Linux 2.6 ядросына ендірілген);
бір компьютерде Linux операциялық жүйесінің бірнеше нұсқасын іске қосуға мүмкіндік беретін ресейлік SWsoft компаниясы құрастырып шығарған Virtuozzo технологиясы.
Қонақтық ОЖ толық эмуляцияланған виртуалды машиналар
Толық эмуляция технологиясына қолдау көрсететін жобалар, қонақтық ОЖ бұйрықтар жүйесіндегі нұсқауларды интерпретациялау қағидасы (по принципу интерпретации) бойынша жұмыс атқарады. Бұл жағдайда процессордың, сонымен бірге барлық сыртқы құрылғылардың да іс–әрекеті толық эмуляцияланатындықтан, Intel x86 архитектуралы компьютерлерді басқа архитектуралы компьютерлерде эмуляциялау мүмкіндігі туады, мысалы, Мас жұмыс станцияларында немесе RISC–процессорларымен Sun серверлерінде.
Толық эмуляциялаудың басты кемшілігі – бұл қонақтық операциялық жүйенің өнімділігінің айтарлықтай төмендеуінде («қонақтық» қосымшалардың жұмыс жылдамдығы 100 – 1000 есеге төмендеуі мүмкін). Сондықтан да, толық эмуляцияланған ВМ соңғы кезге дейін операциялық жүйелерді зерттеу және белгілеуге арналған төменгі деңгейлі жөндеушілер есебінде пайдаланылды. Бірақ, бүгінгі күні есептеу машиналарының есептеу қуатының жылдам көбеюінің арқасында, толық эмуляцияланған ВМ бәсекеге қабілетті бола бастады. Осындай ВМ ең бір жарқын мысалы Connectix фирмасының Virtual РС өнімі (қазіргі кезде оны Microsoft сатып алған).
Толық эмуляциялау технологиясы бойынша жасалған басқа жобалардың мысалы ретінде төмендегілерді келтіруге болады:
Linux негізінде жасалған Intel x86, Windows, BeOS, Mac OS сияқты түрлі операциялық жүйелерді іске қосуға мүмкіндік беретін ашық кодты Bochs жобасы;
Windows және басқа да операциялық жүйелер басқаруындағы түрлі Intel x86 операциялық жүйелерді іске қосуға мүмкіндік беретін Virtutech компаниясының Simics өнімі;
Qemu жобасы – РС әртүрлі архитектуралар эмуляторы.
Қонақтық ОЖ квазиэмуляцияланған виртуалды машиналар
Қонақтық ОЖ квазиэмуляциялау технологиясы, қонақтық ОЖ нұсқауларының барлығы бірдей хосттық операциялық жүйе құралдары арқылы эмуляциялауды талап етпейтіндігіне негізделген. «Қонақтық» қосымшалардың дұрыс жұмыс істеуіне қажетті нұсқаулардың көпшілігі, хосттық ОЖ тікелей нақты адрестелген болуы мүмкін. Олардың ішінен басқаруға арналған келесі құралдарды шығарып тастауға болады: видеокарта, ІDE-бақылаушы (контроллер) таймер және тағы басқалар.
Сонымен, квазиэмуляцияланған ВМ жұмыс істеу процесінде қонақтық ОЖ нұсқауларын таңдап эмуляциялау іске асады. Сондықтан да, осындай ВМ өнімділігі толық эмуляцияланған ВМ қарағанда анағұрлым артық болатыны анық. Соған қарамастан, жоғарыда айтылғандай, дербес компьютерлердің деңгейінің өсу барысында бұл айырмашылық онша көп болмайды.
Квазиэмуляциялау технологиясы бойынша жасалған жобалардың мысалдары:
Virtual Platform технологиясы, оның негізінде VMware компаниясы төрт түрлі өнімді ұсынады: Windows NT/2000/XP үшін VMware Workstation, Linux үшін VMware Workstation, VMware GSX Server (group server) және VMware ESX Server (enterprise server);
Германиялық NetSys CmbH компаниясының тапсырысы бойынша Ресейдің Параллели (Parallels) компаниясы құрастырған Serenity Virtual Station (SVISTA, бұрынғы twoOStwo) виртуалды машинасы;
Linux басқаруындағы әртүрлі Intel x86 операциялық жүйелерді іске қосуға мүмкіндік беретін ашық кодты Plex86 жобасы;
Микроядроны пайдаланатын ашық кодты L4Ka жобасы;
Белгілі бір шарттарды сақтаған кезде өнімділікті де арттыра алатын Linux, FreeBSD, NetBSD басқаруындағы жетілдірілген Linux ОЖ, FreeBSD, NetBSD, WindowsXP операциялық жүйелерін іске қосуға мүмкіндік беретін ашық кодты Хеn жобасы.