Языки уровни и виртуальные машины + видео обзор

Языки и современные многоуровневые машины

Многоуровневая организация компьютеров

Существует огромная разница между тем, что удобно для людей, и тем, что удобно для компьютеров Так как большинство машинных языков очень примитивны, использовать их трудно и утомительно. Это привело к необходимости построения ряда уровней абстракций, каждая из которых надстраивается над абстракцией более низкого уровня. Именно таким образом можно преодолеть сложности при общении с компьютером. Такой подход называется многоуровневой компьютерной организацией.

Языки и современные многоуровневые машины

Проблему можно решить двумя способами. Оба эти способа включают в себя разработку новых команд, которые более удобны для человека, чем встроенные машинные команды.

Эти новые команды в совокупности формируют язык, который мы будем называть Я 1.

Встроенные машинные команды тоже формируют язык, и мы будем называть его Я 0. Компьютер может выполнять только программы, написанные на его машинном языке Я 0.

Упомянутые два способа решения проблемы различаются тем, каким образом компьютер будет выполнять программы, написанные на языке Я 1.

Первый способ выполнения программы, написанной на языке Я 1, — замена каждой команды на эквивалентный набор команд в языке Я 0. В этом случае компьютер выполняет новую программу, написанную на языке Я 0, вместо старой программы, написанной на Я 1. Эта технология называется трансляцией.

Второй способ — написание программы на языке Я 0, которая берет программы, написанные на языке Я 1, в качестве входных данных, рассматривает каждую команду по очереди и сразу выполняет эквивалентный набор команд языка Я 0. Эта технология не требует составления новой программы на Я 0. Она называется интерпретацией,а программа, которая осуществляет интерпретацию, называется интерпретатором.

Трансляция и интерпретация сходны. При применении обоих методов компьютер в конечном итоге выполняет набор команд на языке Я 0, эквивалентных командам Я 1. Различие лишь в том, что при трансляции вся программа Я 1 переделывается в программу Я 0, программа Я 1 отбрасывается, а новая программа на Я 0 загружается в память компьютера и затем выполняется.

При интерпретации каждая команда программы на Я 1 перекодируется в Я 0 и сразу же выполняется. В отличие от трансляции, здесь не создается новая программа на Я 0, а происходит последовательная перекодировка и выполнение команд. Оба эти метода, а также их комбинация широко используются.

Обычно гораздо проще представить себе существование гипотетического компьютера или виртуальной машины,для которой машинным языком является язык Я 1, чем думать о трансляции и интерпретации. Назовем такую виртуальную машину М 1, а виртуальную машину с языком Я 0 — М 0. Если бы такую машину М 1 можно было бы сконструировать без больших денежных затрат, язык Я 0, да и машина, которая выполняет программы на языке Я 0, были бы не нужны. Можнобыло бы просто писать программы на языке Я 1, а компьютер сразу бы их выполнял. Даже если виртуальная машина слишком дорога или ее очень трудно сконструировать, люди все же могут писать программы для нее. Эти программы могут транслироваться или интерпретироваться программой, написанной на языке Я 0, которая сама могла бы выполняться фактически существующим компьютером. Другими словами, можно писать программы для виртуальных машин, как будтоони действительно существуют.

Чтобы трансляция и интерпретация были целесообразными, языки Я 0 и Я 1не должны сильно различаться. Это значит, что язык Я 1 хотя и лучше, чем Я 0, новсе же далек от идеала.

Очевидное решение этой проблемы — создание еще одного набора команд, которые в большей степени ориентированы на человека и в меньшей степени на компьютер, чем Я 1. Этот третий набор команд также формирует язык, который мыбудем называть Я 2, а соответствующую виртуальную машину — М 2. Человек может писать программы на языке Я 2, как будто виртуальная машина с машинным ЯЗЫКОМ Я2 действительно существует. Такие программы могут или транслироваться на язык Я 1, или выполняться интерпретатором, написанным на языке Я 1.

Между языком и виртуальной машиной существует важная зависимость. У каждой машины есть какой-то определенный машинный язык, состоящий из всехкоманд, которые эта машина может выполнять. В сущности, машина определяет язык. Сходным образом язык определяет машину, которая может выполнять всепрограммы, написанные на этом языке. Машину, задающуюся определенным языком, очень сложно и дорого сконструировать из электронных схем, но мы можем представить себе такую машину. Компьютер с машинным языком C++ или COBOL был бы слишком сложным, но его можно было бы сконструировать, если учитывать высокий уровень современных технологий. Однако существуют веские причины не создавать такой компьютер: это слишком сложно по сравнению с другими техническими приемами.

Языки уровни и виртуальные машины

Компьютер с п уровнями можно рассматривать как п разных виртуальных машин, у каждой из которых есть свой машинный язык. Термины «уровень» и «виртуальная машина» мы будем использовать как синонимы. Только программы, написанные на Я0, могут выполняться компьютером без применения трансляции иинтерпретации. Программы, написанные на Я 1, Я 2. Я п, должны проходить через интерпретатор более низкого уровня или транслироваться на язык, соответствующий более низкому уровню.

Человеку, который пишет программы для виртуальной машины уровня п, не обязательно знать о трансляторах и интерпретаторах более низких уровней. Машина выполнит эти программы, и не важно, будут ли они выполняться шаг за шагом интерпретатором или их будет выполнять сама машина. В обоих случаях результат один и тот же: программа будет выполнена.

Большинство программистов, использующих машину уровня п, интересуются только самым верхним уровнем, то есть уровнем, который меньше всего сходен с машинным языком. Однако те, кто хочет понять, как в действительности работает компьютер, должны изучить все уровни. Те, кто проектирует новые компьютеры или новые уровни (то есть новые виртуальные машины), также должны быть знакомы со всеми уровнями. Рассмотрим понятия и технические приемы конструирования машин как системы уровней, а также детали уровней.

Дата добавления: 2016-10-26 ; просмотров: 3414 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

Источник

Многоуровневая организация вычислительных машин

Согласно всемирно известному специалисту в области информационных технологий Эндрю Таненбауму, в основе структурной организации компьютера лежит идея иерархической структуры, в которой каждый уровень выполняет вполне определенную функцию. Это утверждение в равной мере относится как к аппаратной организации, так и к организации программного обеспечения.

Достоинства такого представления вычислительных машин:

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

Преобразование операторов языков высокого уровня в машинный код или в микрокоманды требует от транслятора, во-первых, умения распознать операторы и команды различных уровней и, во-вторых, для любого оператора языка высокого уровня генерировать десятки или сотни команд низкого уровня. Это приводит к усложнению транслятора, увеличению трудоемкости его разработки, снижению производительности генерируемых программ. Наличие этих проблем называют семантическим разрывом между уровнями. Основным способом его преодоления является специализация машин, при которой операторы проблемно-ориентированных языков могут непосредственно выполняться аппаратными средствами машины и не требовать трансляции, например аппаратная реализация графических преобразований, аппаратная реализация операций с векторами и матрицами.

Языки, уровни и виртуальные машины

Основой функционирования любой вычислительной машины является ее способность выполнять заданные действия. Аппаратные средства любой вычислительной машины способны выполнять только ограниченный набор сравнительно простых команд. Эти примитивные команды составляют так называемый машинный язык. Говоря о сложности аппаратуры компьютера, машинные команды целесообразно делать как можно проще, но примитивность большинства машинных команд делает их использование неудобным и трудным. Для эффективной работы человека с компьютером разработчики вводят другой набор команд, более удобный для человеческого общения (языки более высокого уровня).

Появляются новые языки программирования еще более высокого уровня, и каждый такой язык использует своего предшественника как основу, поэтому вычислительную машину рассмотрим в виде ряда многоуровневой машины, структура которой изображена на рис. 1.1. Между языками программирования и существующей виртуальной машиной существует тесная связь. Язык, находящийся в самом низу иерархической структуры компьютера, является примитивным, а тот, что расположен на ее вершине, — самым сложным. Большинство современных вычислительных машин включают 6—7 уровней виртуализации. Нижние уровни, начиная с машинного, более консервативны к изменениям.

Языки уровни и виртуальные машины

Рис. 1.1. Структура многоуровневой вычислительной машины

Источник

Многоуровневая структура компьютера: языки, уровни и виртуальные машины

Существует огромная разница между тем, что удобно людям, и тем, что могут компьютеры. Люди хотят сделать X, но компьютеры могут сделать только Y. Из-за этого возникает проблема.

Вышеупомянутую проблему можно решить двумя способами. Оба способа подразумевают разработку новых команд, более удобных для человека, чем встроенные команды. Эти новые команды в совокупности формируют язык, который мы будем называть Я 1. Встроенные машинные команды тоже формируют язык, и мы будем называть его Я 0. Компьютер может выполнять только программы, написанные на его машинном языке Я 0. Два способа решения проблемы различаются тем, каким образом компьютер будет выполнять программы, написанные на языке Я 1, — ведь в конечном итоге компьютеру доступен только машинный язык Я 0.

Первый способ выполнения программы, написанной на языке Я 1, подразумевает замену каждой команды эквивалентным набором команд на языке Я 0. В этом случае компьютер выполняет новую программу, написанную на языке Я 0, вместо старой программы, написанной на Я 1. Эта технология называется трансляцией.

Второй способ означает создание программы на языке Я 0, получающей в качестве входных данных программы, написанные на языке Я 1. При этом каждая команда языка Я 1 обрабатывается поочередно, после чего сразу выполняется эквивалентный ей набор команд языка Я 0. Эта технология не требует составления новой программы на Я 0. Она называется интерпретацией, а программа, которая осуществляет интерпретацию, называется интерпретатором.

Между трансляцией и интерпретацией много общего. В обоих подходах компьютер в конечном итоге выполняет набор команд на языке Я 0, эквивалентных командам Я 1. Различие лишь в том, что при трансляции вся программа Я 1 переделывается в программу Я 0, программа Я 1 отбрасывается, а новая программа на Я 0 загружается в память компьютера и затем выполняется.

При интерпретации каждая команда программы на Я 1 перекодируется в Я 0 и сразу же выполняется. В отличие от трансляции, здесь не создается новая программа на Я 0, а происходит последовательная перекодировка и выполнение команд. С точки зрения интерпретатора, программа на Я 1 есть не что иное, как «сырые» входные данные. Оба подхода широко используются как вместе, так и по отдельности.

Впрочем, чем мыслить категориями трансляции и интерпретации, гораздо проще представить себе существование гипотетического компьютера или виртуальной машины, для которой машинным языком является язык Я 1. Назовем такую виртуальную машину М 1, а виртуальную машину для работы с языком Я 0 — М 0. Если бы такую машину М 1 можно было бы сконструировать без больших денежных затрат, язык Я 0, да и машина, которая выполняет программы на языке Я 0, были бы не нужны. Можно было бы просто писать программы на языке Я 1, а компьютер сразу бы их выполнял. Даже с учетом того, что создать виртуальную машину, возможно, не удастся (из-за чрезмерной дороговизны или трудностей разработки), люди вполне могут писать ориентированные на нее программы. Эти программы будут транслироваться или интерпретироваться программой, написанной на языке Я 0, а сама она могла бы выполняться существующим компьютером. Другими словами, можно писать программы для виртуальных машин так, как будто эти машины реально существуют.

Трансляцию и интерпретацию возможно выполнить только в том случае, когда Я 0 и Я 1 не сильно отличаются друг от друга. Но ведь цель создания Я 1 заключалась в создании языка более удобного для человека. Очевидно что она не может быть достигнута. Чтобы решить эту проблему можно создать еще одну виртуальную машину М 2 и язык Я 2, который будет более понятен для человека, чем Я 1. При этом, программы написанные на языке Я 2 могут транслироваться на язык Я 1 или выполняться интерпретатором, написанным на языке Я 1.

Изобретение целого ряда языков, каждый из которых более удобен для человека, чем предыдущий, может продолжаться до тех пор, пока мы не дойдем до подходящего нам языка. Каждый такой язык использует своего предшественника как основу, поэтому мы можем рассматривать компьютер в виде ряда уровней, такая структура изображена на рисунке ниже. Язык, находящийся в самом низу иерархической структуры компьютера, — самый примитивный, а тот, что расположен на ее вершине — самый сложный.

Языки уровни и виртуальные машины

Многоуровневая структура компьютера

Компьютер с п уровнями можно рассматривать как п разных виртуальных машин, у каждой из которых есть свой машинный язык. Термины «уровень» и «виртуальная машина» мы будем использовать как синонимы. Только программы, написанные на Я 0, могут выполняться компьютером без трансляции или интерпретации. Программы, написанные на Я 1, Я 2, …, Я п, должны проходить через интерпретатор более низкого уровня или транслироваться на язык, соответствующий более низкому уровню.

Источник

Языки, уровни и виртуальные машины

Языки уровни и виртуальные машины Языки уровни и виртуальные машины Языки уровни и виртуальные машины Языки уровни и виртуальные машины

Языки уровни и виртуальные машины

Языки уровни и виртуальные машины

Цифровой компьютер — это машина, которая может решать задачи, выполняя данные ей команды. Последовательность команд, описывающих решение опре¬деленной задачи, называется программой. Электронные схемы каждого компью¬тера могут распознавать и выполнять ограниченный набор простых команд. Все программы перед выполнением должны быть превращены в последовательность таких команд, которые обычно не сложнее, чем, например:

♦ проверить, не является ли число нулем;

♦ скопировать блок данных из одной части памяти компьютера в другую.

Эти примитивные команды в совокупности составляют язык, на котором лю¬ди могут общаться с компьютером. Такой язык называется машинным. Разработ¬чик при создании нового компьютера должен решить, какие команды включить в машинный язык этого компьютера. Это зависит от назначения компьютера и от задач, которые он должен решать. Обычно стараются сделать машинные ко¬манды как можно проще, чтобы избежать сложностей при разработке компьюте¬ра и снизить затраты на необходимую электронику. Большинство машинных языков крайне примитивны, из-за чего писать на них и трудно, и утомительно.

Это простое наблюдение с течением времени привело к построению ряда уровней абстракций, каждая из которых надстраивается над абстракцией более низкого уровня. Именно таким образом можно преодолеть сложности при обще¬нии с компьютером. Мы называем этот подход многоуровневой компьютерной организацией.

Люди хотят сделать X, но компьютеры могут сделать только Y. Из-за этого возникает проблема. Эту проблему можно решить двумя способами. Оба способа подра¬зумевают разработку новых команд, более удобных для человека, чем встроенные машинные команды.

Эти новые команды в совокупности формируют язык, кото¬рый мы будем называть Я 1. Встроенные машинные команды тоже формируют язык, и мы будем называть его Я 0. Компьютер может выполнять только про¬граммы, написанные на его машинном языке Я 0. Два способа решения пробле¬мы различаются тем, каким образом компьютер будет выполнять программы, на¬писанные на языке Я 1, — ведь в конечном итоге компьютеру доступен только машинный язык Я 0.

Первый способ выполнения программы, написанной на языке Я 1, подразумева¬ет замену каждой команды эквивалентным набором команд на языке Я 0. В этом случае компьютер выполняет новую программу, написанную на языке Я 0, вме¬сто старой программы, написанной на Я 1. Эта технология называется трансля¬цией.

Второй способ означает создание программы на языке Я 0, получающей в ка¬честве входных данных программы, написанные на языке Я 1. При этом каждая команда языка Я 1 обрабатывается поочередно, после чего сразу выполняется эквивалентный ей набор команд языка Я 0. Эта технология не требует составле¬ния новой программы на Я 0. Она называется интерпретацией, а программа, ко¬торая осуществляет интерпретацию, называется интерпретатором.

Между трансляцией и интерпретацией много общего. В обоих подходах ком-пьютер в конечном итоге выполняет набор команд на языке Я 0, эквивалентных командам Я 1. Различие лишь в том, что при трансляции вся программа Я 1 пе-ределывается в программу Я 0, программа Я 1 отбрасывается, а новая программа на Я 0 загружается в память компьютера и затем выполняется.

При интерпретации каждая команда программы на Я 1 перекодируется в Я 0 и сразу же выполняется. В отличие от трансляции, здесь не создается новая про¬грамма на Я 0, а происходит последовательная перекодировка и выполнение ко¬манд. С точки зрения интерпретатора, программа на Я 1 есть не что иное, как «сырые» входные данные. Оба подхода широко используются как вместе, так и по отдельности.

Трансляция и интерпретация целесообразны лишь в том случае, если языки Я 0 и Я 1 не слишком отличаются друг от друга. Это значит, что язык Я 1 хотя и лучше, чем Я 0, но все же далек от идеала.

Языки уровни и виртуальные машины

Очевидное решение проблемы — создание еще одного набора команд, кото¬рые в большей степени, чем Я 1 ориентированы на человека и в меньшей степе¬ни на компьютер. Этот третий набор команд также формирует язык, который мы будем называть Я 2, а соответствующую виртуальную машину — М 2. Человек может писать программы на языке Я 2, как будто виртуальная машина для рабо¬ты с машинным языком Я 2 действительно существует. Такие программы могут либо транслироваться на язык Я 1, либо выполняться интерпретатором, напи¬санным на языке Я 1.

Изобретение целого ряда языков, каждый из которых более удобен для чело¬века, чем предыдущий, может продолжаться до тех пор, пока мы не дойдем до подходящего нам языка. Каждый такой язык использует своего предшественни¬ка как основу, поэтому мы можем рассматривать компьютер в виде ряда уров¬ней, изображенных на рис. 1.1. Язык, находящийся в самом низу иерархической структуры, — самый примитивный, а тот, что расположен на ее вершине — са¬мый сложный.

Языки уровни и виртуальные машины

Человеку, который пишет программы для виртуальной машины уровня n, не обязательно знать о трансляторах и интерпретаторах более низких уровней. Ма¬шина выполнит эти программы, и не важно, будут они поэтапно выполняться интерпретатором или же их обработает сама машина. В обоих случаях результат один и тот же — это выполнение программы.

Источник

1. Языки, уровни и виртуальные машины

Цифровой компьютер — это машина, которая может решать задачи, выполняя данные ей команды. Последовательность команд, описывающих решение опре¬деленной задачи, называется программой. Электронные схемы каждого компью¬тера могут распознавать и выполнять ограниченный набор простых команд. Все программы перед выполнением должны быть превращены в последовательность таких команд, которые обычно не сложнее, чем, например:

♦ проверить, не является ли число нулем;

♦ скопировать блок данных из одной части памяти компьютера в другую.

Эти примитивные команды в совокупности составляют язык, на котором лю¬ди могут общаться с компьютером. Такой язык называется машинным. Разработ¬чик при создании нового компьютера должен решить, какие команды включить в машинный язык этого компьютера. Это зависит от назначения компьютера и от задач, которые он должен решать. Обычно стараются сделать машинные ко¬манды как можно проще, чтобы избежать сложностей при разработке компьюте¬ра и снизить затраты на необходимую электронику. Большинство машинных языков крайне примитивны, из-за чего писать на них и трудно, и утомительно.

Это простое наблюдение с течением времени привело к построению ряда уровней абстракций, каждая из которых надстраивается над абстракцией более низкого уровня. Именно таким образом можно преодолеть сложности при обще¬нии с компьютером. Мы называем этот подход многоуровневой компьютерной организацией.

Люди хотят сделать X, но компьютеры могут сделать только Y. Из-за этого возникает проблема. Эту проблему можно решить двумя способами. Оба способа подра¬зумевают разработку новых команд, более удобных для человека, чем встроенные машинные команды.

Эти новые команды в совокупности формируют язык, кото¬рый мы будем называть Я 1. Встроенные машинные команды тоже формируют язык, и мы будем называть его Я 0. Компьютер может выполнять только про¬граммы, написанные на его машинном языке Я 0. Два способа решения пробле¬мы различаются тем, каким образом компьютер будет выполнять программы, на¬писанные на языке Я 1, — ведь в конечном итоге компьютеру доступен только машинный язык Я 0.

Первый способ выполнения программы, написанной на языке Я 1, подразумева¬ет замену каждой команды эквивалентным набором команд на языке Я 0. В этом случае компьютер выполняет новую программу, написанную на языке Я 0, вме¬сто старой программы, написанной на Я 1. Эта технология называется трансля¬цией.

Второй способ означает создание программы на языке Я 0, получающей в ка¬честве входных данных программы, написанные на языке Я 1. При этом каждая команда языка Я 1 обрабатывается поочередно, после чего сразу выполняется эквивалентный ей набор команд языка Я 0. Эта технология не требует составле¬ния новой программы на Я 0. Она называется интерпретацией, а программа, ко¬торая осуществляет интерпретацию, называется интерпретатором.

Между трансляцией и интерпретацией много общего. В обоих подходах ком-пьютер в конечном итоге выполняет набор команд на языке Я 0, эквивалентных командам Я 1. Различие лишь в том, что при трансляции вся программа Я 1 пе-ределывается в программу Я 0, программа Я 1 отбрасывается, а новая программа на Я 0 загружается в память компьютера и затем выполняется.

При интерпретации каждая команда программы на Я 1 перекодируется в Я 0 и сразу же выполняется. В отличие от трансляции, здесь не создается новая про¬грамма на Я 0, а происходит последовательная перекодировка и выполнение ко¬манд. С точки зрения интерпретатора, программа на Я 1 есть не что иное, как «сырые» входные данные. Оба подхода широко используются как вместе, так и по отдельности.

Трансляция и интерпретация целесообразны лишь в том случае, если языки Я 0 и Я 1 не слишком отличаются друг от друга. Это значит, что язык Я 1 хотя и лучше, чем Я 0, но все же далек от идеала.

Очевидное решение проблемы — создание еще одного набора команд, кото¬рые в большей степени, чем Я 1 ориентированы на человека и в меньшей степе¬ни на компьютер. Этот третий набор команд также формирует язык, который мы будем называть Я 2, а соответствующую виртуальную машину — М 2. Человек может писать программы на языке Я 2, как будто виртуальная машина для рабо¬ты с машинным языком Я 2 действительно существует. Такие программы могут либо транслироваться на язык Я 1, либо выполняться интерпретатором, напи¬санным на языке Я 1.

Изобретение целого ряда языков, каждый из которых более удобен для чело¬века, чем предыдущий, может продолжаться до тех пор, пока мы не дойдем до подходящего нам языка. Каждый такой язык использует своего предшественни¬ка как основу, поэтому мы можем рассматривать компьютер в виде ряда уров¬ней, изображенных на рис. 1.1. Язык, находящийся в самом низу иерархической структуры, — самый примитивный, а тот, что расположен на ее вершине — са¬мый сложный.

Языки уровни и виртуальные машины

Человеку, который пишет программы для виртуальной машины уровня n, не обязательно знать о трансляторах и интерпретаторах более низких уровней. Ма¬шина выполнит эти программы, и не важно, будут они поэтапно выполняться интерпретатором или же их обработает сама машина. В обоих случаях результат один и тот же — это выполнение программы.

Источник

Видео

Классификация языков программирования по поколениям и уровням. Что такое машинный код и ассемблер

Классификация языков программирования по поколениям и уровням. Что такое машинный код и ассемблер

// Алгоритмизация #8 // Виртуальная машина //

// Алгоритмизация #8 // Виртуальная машина //

VirtualBox: Установка и настройка (для новичков). Создание виртуальной машины

VirtualBox: Установка и настройка (для новичков). Создание виртуальной машины

vmware workstation 16 pro . Виртуальные машины для начинающих

vmware workstation 16 pro . Виртуальные машины для начинающих

4.Основы виртуализации. Виртуальные машины

4.Основы виртуализации. Виртуальные машины

VmWare Workstation: Виртуальная Машина | Установка и Настройка в Windows 10 | UnderMind

VmWare Workstation: Виртуальная Машина | Установка и Настройка в Windows 10 | UnderMind

Что такое виртуальная машина Установка Настройка

Что такое виртуальная машина  Установка  Настройка

QEMU или VirtualBox ▲ Виртуальные машины на каждый день, обзор установка и настройка

QEMU или VirtualBox ▲ Виртуальные машины на каждый день, обзор установка и настройка

Языки программирования и методы трансляции. Лекция 5. Виртуальная машина. Оптимизация машинного кода

Языки программирования и методы трансляции. Лекция 5. Виртуальная машина. Оптимизация машинного кода

ПОЛНАЯ СЕТЕВАЯ АНОНИМНОСТЬ VPN + Виртуальная Машина

ПОЛНАЯ СЕТЕВАЯ АНОНИМНОСТЬ VPN + Виртуальная Машина
Поделиться или сохранить к себе:
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных, принимаю Политику конфиденциальности и условия Пользовательского соглашения.