Инструменты пользователя

Инструменты сайта


igor:istoria

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версияСледующая версия справа и слева
igor:istoria [2019/04/11 21:37] – [Программирование в средние века] igorigor:istoria [2019/04/11 21:46] – [Программирование в средние века] igor
Строка 276: Строка 276:
 Выше мы уже употребили термин "системы виртуальных машин" - настала пора хоть немного разобраться, что это такое. Сформулируем так: **//виртуальная машина//** (ВМ) - это машина, которой нет, но функции ее выполняются. Это программный инструмент в составе операционной системы, который придается в помощь каждой прикладной программе с целью преодоления ограничений, накладываемых реальной машиной. Это оболочка (контейнер), изолирующий "свою" прикладную программу от всего внешнего мира, как программного, так и железячного, и эмулирующий (воспроизводящий) "целевую платформу" (компьютер, которого у нас нет, но который мы хотели бы иметь) на имеющемся компьютере ("хост-платформе"). Системные вызовы прикладной программы воспринимаются виртуальной машиной и при необходимости передаются операционной системе, так что прикладная программа живет в виртуальной машине не как рак-отшельник в раковине, а скорее как морская свинка в клетке, ни в чем не нуждаясь, никому не мешая и ничего не зная о том, что происходит за стенами клетки. \\ Выше мы уже употребили термин "системы виртуальных машин" - настала пора хоть немного разобраться, что это такое. Сформулируем так: **//виртуальная машина//** (ВМ) - это машина, которой нет, но функции ее выполняются. Это программный инструмент в составе операционной системы, который придается в помощь каждой прикладной программе с целью преодоления ограничений, накладываемых реальной машиной. Это оболочка (контейнер), изолирующий "свою" прикладную программу от всего внешнего мира, как программного, так и железячного, и эмулирующий (воспроизводящий) "целевую платформу" (компьютер, которого у нас нет, но который мы хотели бы иметь) на имеющемся компьютере ("хост-платформе"). Системные вызовы прикладной программы воспринимаются виртуальной машиной и при необходимости передаются операционной системе, так что прикладная программа живет в виртуальной машине не как рак-отшельник в раковине, а скорее как морская свинка в клетке, ни в чем не нуждаясь, никому не мешая и ничего не зная о том, что происходит за стенами клетки. \\
 В древнюю эпоху, когда программы на компьютере исполнялись одна за другой, проблема обеспечения "уживаемости" множества прикладных программ на одной машине не стояла. Когда же она возникла, виртуальные машины стали одним из вариантов решения этой проблемы. Если прикладная программа делает что-то не то, то последствия ее действий не выходят за пределы "своей" виртуальной машины, так что она не может серьезно навредить. \\ В древнюю эпоху, когда программы на компьютере исполнялись одна за другой, проблема обеспечения "уживаемости" множества прикладных программ на одной машине не стояла. Когда же она возникла, виртуальные машины стали одним из вариантов решения этой проблемы. Если прикладная программа делает что-то не то, то последствия ее действий не выходят за пределы "своей" виртуальной машины, так что она не может серьезно навредить. \\
-Идея виртуальных машин позволяет решить проблему переносимости программ с компьютера на компьютер на новом уровне. Представим, что у нас имеется игровая программа, созданная когда-то раньше для эксплуатации на игровой приставке, а теперь мы хотим эксплуатировать ее на обычном компьютере. Теперь мы можем категорически отказаться от переделки самой программы: максимум, что нам грозит, - это написать новый контейнер, но это придется делать, только если не найдем подходящий готовый. Правда, эта задача хорошо решается при условии, что обе "платформы" снабжены хорошей документацией, а это в нашем мире, к сожалению, бывает не всегда. Так появилась идея создать СВМ - операционную систему, в которой прикладная программа обязательно помещается в "контейнери живет только в нем. Стало быть, все, что нужно для плодотворной работы прикладному программисту, - это справочник по тем услугам (сервисам), которые предоставляет контейнер, а программисту, пишущему контейнер, - справочники по системным вызовам обеих ОС. Но ведь контейнер обычно проще, чем большая прикладная программа или чем ОС, да и необходимость в его разработке возникает не так часто, поэтому программистов, разрабатывающих контейнеры, может быть немного, и основные людские силы можно сосредоточить на разработке прикладных программ, что мы и хотим. \\+Идея виртуальных машин позволяет решить проблему переносимости программ с компьютера на компьютер на новом уровне. Представим, что у нас имеется игровая программа, созданная когда-то раньше для эксплуатации на игровой приставке, а теперь мы хотим эксплуатировать ее на обычном компьютере. Теперь мы можем категорически отказаться от переделки самой программы: максимум, что нам грозит, - это написать новый контейнер, но это придется делать, только если не найдем подходящий готовый. Правда, эта задача хорошо решается при условии, что обе "платформы" снабжены хорошей документацией, а это в нашем мире, к сожалению, бывает не всегда. Так появилась идея создать СВМ - операционную систему, в которой прикладная программа обязательно помещается в контейнер и живет только в нем. Стало быть, все, что нужно для плодотворной работы прикладному программисту, - это справочник по тем услугам (сервисам), которые предоставляет контейнер, а программисту, пишущему контейнер, - справочники по системным вызовам обеих ОС. Но ведь контейнер обычно проще, чем большая прикладная программа или чем ОС, да и необходимость в его разработке возникает не так часто, поэтому программистов, разрабатывающих контейнеры, может быть немного, и основные людские силы можно сосредоточить на разработке прикладных программ, что мы и хотим. \\
 Сказанное не означает, что виртуализация нужна только для запуска программ на "чужом" железе. Она уместна и в том случае, если хост-платформа и целевая платформа различаются чисто количественно, например емкостью оперативной памяти. \\ Сказанное не означает, что виртуализация нужна только для запуска программ на "чужом" железе. Она уместна и в том случае, если хост-платформа и целевая платформа различаются чисто количественно, например емкостью оперативной памяти. \\
-**//Виртуальную память//** определим подобно тому, как мы выше определили виртуальную машину: это память, которой нет, но функции ее выполняются. Виртуальная память - важнейший элемент виртуальной машины. Настолько важнейший, что оправдывает существование даже такой ВМ, которая ничего иного не обеспечивает. Представим, что у нас есть модельный ряд машин с емкостью оперативной памяти от 8КБ (ЕС-1010) до 8МБ (ЕС-1060), а нам поставили задачу обработать массив размером 64МБ. Без виртуальной памяти это задача не может быть решена ни на одной из имеющихся машин, но на ЕС есть СВМ, которая позволяет нам писать программы, вообще не задумываясь о том, сколько памяти будет на той машине, на которой эта программа будет работать - и, с другой стороны, нашу программу можно будет эксплуатировать на любой машине, поддерживающей СВМ. \\+**//Виртуальную память//** определим подобно тому, как мы выше определили виртуальную машину: это память, которой нет, но функции ее выполняются. Виртуальная память - важнейший элемент виртуальной машины. Настолько важнейший, что оправдывает существование даже такой ВМ, которая ничего иного не обеспечивает. Представим, что у нас есть модельный ряд машин с емкостью оперативной памяти от 8КБ (ЕС-1010) до 8МБ (ЕС-1060), а нам поставили задачу обработать массив размером 64МБ. Без виртуальной памяти это задача не может быть решена ни на одной из имеющихся машин, но на ЕС есть СВМ, которая позволяет нам писать программы, вообще не задумываясь о том, сколько памяти будет на той машине, на которой эта программа будет работать - и, с другой стороны, нашу программу можно будет эксплуатировать на любой машине, поддерживающей СВМ, причем эксплуатировать с максимальной эффективностью, с использованием всей памяти, которую машина готова нам предоставить, и без необходимости что-либо менять в прикладной программе или в ОС. \\
 По аналогии с виртуальной памятью нетрудно разобраться, что такое виртуальные периферийные устройства. Средневековые ЭВМ чаще всего имели множество однотипных периферийных устройств, например 8 накопителей на магнитных дисках. Который из них будет отведен для нашей задачи? Прикладному программисту было бы крайне желательно работать, не задумываясь над такими вопросами. А в идеале - писать программу так, чтобы устройство ввода-вывода при эксплуатации программы можно было бы переназначить, не переделывая саму программу... Забегая вперед, скажу, что в ОС нового времени, например в DOS и GNU/Linux, имеются механизмы стандартного ввода и стандартного вывода - по большому счету это то же самое, что виртуальные устройства. \\ По аналогии с виртуальной памятью нетрудно разобраться, что такое виртуальные периферийные устройства. Средневековые ЭВМ чаще всего имели множество однотипных периферийных устройств, например 8 накопителей на магнитных дисках. Который из них будет отведен для нашей задачи? Прикладному программисту было бы крайне желательно работать, не задумываясь над такими вопросами. А в идеале - писать программу так, чтобы устройство ввода-вывода при эксплуатации программы можно было бы переназначить, не переделывая саму программу... Забегая вперед, скажу, что в ОС нового времени, например в DOS и GNU/Linux, имеются механизмы стандартного ввода и стандартного вывода - по большому счету это то же самое, что виртуальные устройства. \\
 Очевидно, операционные системы виртуальных машин обещают определенное удобство, но мы должны понимать, что любое удобство в этом мире не бесплатно: СВМ требует определенного времени на выполнение своих обязанностей, поэтому множество прикладных программ в СВМ будет выполняться медленнее (иногда значительно медленнее), чем на реальной машине без СВМ. В древние века, когда машин было мало и их быстродействие оставляло желать лучшего, такие идеи не имели шансов на признание. В средние века они оказались востребованы, а в последующие десятилетия стали практически обязательными. \\ Очевидно, операционные системы виртуальных машин обещают определенное удобство, но мы должны понимать, что любое удобство в этом мире не бесплатно: СВМ требует определенного времени на выполнение своих обязанностей, поэтому множество прикладных программ в СВМ будет выполняться медленнее (иногда значительно медленнее), чем на реальной машине без СВМ. В древние века, когда машин было мало и их быстродействие оставляло желать лучшего, такие идеи не имели шансов на признание. В средние века они оказались востребованы, а в последующие десятилетия стали практически обязательными. \\
igor/istoria.txt · Последнее изменение: 2022/05/01 18:15 — igor