Операционные системы 2011 (1114689), страница 20
Текст из файла (страница 20)
Соответственно,аппарат виртуальной страничной памяти позволяет автоматически (т.е. аппаратно)преобразовывать номер виртуальной страницы в номер физической страницыпосредством обращения к таблице страниц (Рис. 57). Программных действий при такомподходе требуется минимально: при выборе операционной системой очередного процесса,который ставится на обработку на центральный процессор, она должна лишь корректнозаполнить аппаратную таблицу страниц процессора для данного процесса.67Рис.
57. Страничная организация памяти. Преобразование виртуального адреса вфизический.Типовая схема преобразования адресов достаточно проста (Рис. 58). Пусть втаблице страниц имеется N строк. Это означает, что в компьютере дозволеноиспользовать N страниц. Содержимое каждой i-ой строки таблицы — αi – определяетсяоперационной системой в момент запуска процесса. Пусть в нашем модельном примереесли αi >= 0, то это номер физической страницы, которая соответствует i-ой виртуальнойстранице. Если αi < 0, то это означает, что данной страницы у программы нет, и если входе обработки процесса процессор обращается к строке таблицы страниц сотрицательным содержимым, происходит прерывание по защите памяти, и управлениеполучает ОС.
Причин возникновения прерывания в данном случае может две. Во-первых,может оказаться, что действительно i-ой виртуальной страницы у программы нет, чтосвидетельствует об ошибке в программе. Во-вторых, может оказаться, чтосоответствующей страницы нет в оперативной памяти – она расположена на внешнемзапоминающем устройстве (ВЗУ), т.е. данная i-ая виртуальная страница легальна, но вданный момент ее нет в ОЗУ. Так или иначе, операционная система анализирует причинувозникновения прерывания и для последнего случая осуществляет подкачку из ВЗУ в ОЗУтребуемой страницы. Таким образом, замечательным свойством страничной организациипамяти является то, что при такой организации не обязательно загружать всю программу воперативную память.
При смене задачи система должна сначала скопировать содержимоетаблицы страниц в свою программную таблицу, а после этого восстановить содержимоетаблицы страниц той программы, которая будет исполняться следующей.Отметим, что страничная организация памяти решает все вышеперечисленныепроблемы, связанные с выполнением программ. Здесь имеется механизм защиты памяти(в этой схеме процесс никогда не сможет обратиться к «чужой» странице), но такжеимеется возможность разделять некоторые страницы между несколькими процессами (вэтом случае операционная система каждому из процессов допишет в таблицу страницномер общей страницы). Данная схема обладает достаточной производительностью,поскольку ее функционирование основано на использовании регистров.
Основнымдостоинством данного подхода является решение проблемы фрагментации, поскольку всепрограммы оперируют в терминах страниц (каждая из которых имеет фиксированныйразмер), и мы можем размещать программу по страницам в произвольном порядке.Помимо этого решается еще и проблема перемещаемости программ по ОЗУ, причем дажев рамках одной программы соответствие между виртуальными и физическими страницамиможет оказаться произвольным: нулевая виртуальная страница программы можетрасполагаться в одной физической странице, первая виртуальная — в другой (совершенноне связанной с первой) физической странице, и т.д. Еще одним важным достоинствомстраничной организации памяти заключается в том, что нет необходимости держать воперативной памяти весь исполняемый процесс.
Это свойство позволяет существенноповысить эффективность использования ОП. Реально в ОЗУ может находиться лишьнезначительное число страниц, в которых расположены команды и требуемые длятекущих вычислений операнды, а все оставшиеся страницы могут находиться на внешнейпамяти — в областях подкачки. Следствием только что сказанного является то, что68размеры физической и виртуальной памяти могут быть произвольными. Может оказаться,что физической памяти в компьютере больше, чем размеры адресного пространствавиртуальной памяти, а может оказаться и наоборот: физической памяти существенноменьше виртуальной.
Но во всех этих случаях система окажется работоспособной.Aисп.вирт.k k-10Номер виртуальной страницы0α01α12α2αiНомер в страницеда0i-ой виртуальной страницесоответствует физическая сномером αiнетiαiПолученная страница неразмещена в ОЗУПрерывание по защитепамяти.
Причина?m–1αm–1Обращение в«чужую» памятьПолучаем адрес физическойстраницы Aисп.физ..Продолжение работы программыСтраница откачана в целяхоптимизации использования ОЗУПодкачка нужной страницы,вычисление физического адреса,продолжение работы программыSTOPРис. 58. Модельный пример организации страничной виртуальной памяти. Схемапреобразования адресов.Но данный подход имеет и свои недостатки. Во-первых, это страничнаяфрагментация, или внутренняя (скрытая) фрагментация: если в странице используетсяхотя бы один байт, то вся страница отводится процессу и считается занятой (т.е., решиввопрос с т.н. внешней фрагментацией, мы в данном случае не используем память,размером со страницу минус один байт). Во-вторых, описанная выше модель являетсявырожденной: если таблица страниц целиком располагается на регистровой памяти, то всилу дороговизны последней размеры подобной таблицы должны быть слишком малы (аследовательно, будет невелико количество физических страниц).
Реальные современныесистемы имеют более сложную логическую организацию, и речь о ней пойдет ниже.Кроме того, при смене процессов таблицу страниц сначала обязательно надо сохранить, апотом обновить – дополнительные накладные расходы.Напоследок заметим, что данное нами определение аппарата виртуальной памятирасходится с определениями некоторых других источников. Повторим, что мырассматриваем механизм виртуальной памяти как механизм преобразования виртуальногоадресного пространства в физическое.
Во многих изданиях, посвященных рассмотрениюоперационных систем, виртуальной памятью считается то, что позволяет часть программыразмещать на внешних устройствах, т.е. считают механизм виртуальной памяти каксредство увеличения объема физической памяти. Мы считаем такое определениенекорректным. Если рассматривать, например, виртуальную память как механизмувеличения объема памяти, то возникает вопрос: в случае большого объема физическойпамяти разве виртуальная память отсутствует? Соответственно, возникают проблемы сподобным определением.69И еще одно важное замечание. В компьютере имеется физическое адресноепространство и виртуальное.
Физическое пространство — это та оперативная память,которая физически может быть подключена к компьютеру, а виртуальное адресноепространство — это то пространство, которое доступно программе. И возникает вопрос,что и каким способом задает максимальные размеры этих адресных пространств. Наразмер виртуального адресного пространства влияет разрядность исполнительныхадресов, получаемых в ходе обработки программы на центральном процессоре. Размерфизического пространства определяется характеристикой компьютера: зависит от того,сколько физически можно подключить памяти к машине, и какова разрядностьвнутренней аппаратной шины. Но и то, и другое являются аппаратными характеристикамикомпьютера.1.2.7 Многомашинные, многопроцессорные ассоциацииВ настоящее время одиночный компьютер можно сравнить с телефоннымаппаратом без телефонной сети.
Т.е., говоря об ЭВМ, мы подразумеваем машину внекотором окружении и взаимодействии с другими машинами. В зависимости от степениинтегрированности машин в рамках одного комплекса различают многопроцессорныеассоциации, где степень связанности машин довольно велика, и многомашинныеассоциации, в которых наблюдаются слабые связи между машинами (в некоторых случаяхговорят о сетях ЭВМ).Начиная данную тему, мы, следуя традиционному научному подходу, сначаларассмотрим классификацию — это позволит выявить среди большого разнообразиямашинных ассоциаций группы с идентичными свойствами, которые помогут нампознакомиться с наиболее общими подходами, абстрагируясь от деталей реализации.Для классификации существуют множество методов, проводящих деление поразличным характеристикам (например, по производительности).
Одна из наиболеепростых классических классификаций многопроцессорных систем — это классификацияпо Флинну (M.Flynn), основанная на анализе некоторых характеристик потоковинформации в машине. Основная концепция этой классификации – переборвсевозможных характеристик потока команд (инструкций) и потока данных. Обработкакаждого из этих потоков может быть одиночная либо множественная.В контексте машины можно выделить два потока информации: поток управления(для передачи управляющих воздействий на конкретное устройство) и поток данных(циркулирующий между оперативной памятью и внешними устройствами). Возможнынекоторые оптимизации данных потоков.
В потоке команд — это переход от команднизкого уровня к высокоуровневым (когда ЦП вместо работы с микрокомандами начинаетвырабатывать высокоуровневые команды, которые передаются «умному» устройствууправления, непосредственно реализующему данные команды); в потоке данных — этоисключение участия ЦП в обменах между внешними устройствами и оперативнойпамятью.Флинн предлагает рассматривать компьютер с позиции 2 потоков:- поток команд: выбор одной или группы команд- поток данных, операндов: с выполнением каждой команды выбирается либоединичная, либо множественная порция данных. В результате получаем четыре классаархитектур:ОКОД (одиночный поток команд, одиночный поток данных, или SISD — singleinstruction, single data stream) — это традиционные компьютеры (близкие машине фонНеймана) с единственным ЦП. Они имеют одно устройство управления, котороепоследовательно выбирает команды, и каждая команда обрабатывает единичнуюпорцию данных.70ОКМД (одиночный поток команд, множественный поток данных, или SIMD — singleinstruction, multiple data stream) — например, векторные компьютеры, способныеоперировать векторами данных, матричная обработка данных.
Обычно для этих целейв данных машинах существуют векторные регистры, а также обычно имеютсявекторные операции, предполагающие векторную обработку. В этой архитектуреимеется одно УУ, которое последовательно выбирает команды, а обработка данныхведётся агрегировано. Заметим, что принадлежность конкретной системы кконкретному классу относительно условна.МКОД (множественный поток команд, одиночный поток данных, или MISD —multiple instruction, single data stream) — имеется смесь команд, которая оперирует надодними и теми же данными. Этот класс архитектур является спорным.