В. Столлингс - Операционные системы (1114679), страница 67
Текст из файла (страница 67)
Так, команды ветвления содержат адреса, указывающие на омацды, которые должны быть выполнены после них; команды обращения к яццым — адреса байтов илн слов, с которыми они работают. Так или иначе, но процессор и программное обеспечение операционной системы должны быть спо.обцы перевести ссылки в коде программы в реальные физические адреса, соответствующие текущему расположению программы в основной памяти. Каждый процесс должен быть защищен от нежелательного воздействия других про 1тессов "вссов, случаиного или преднамеренного.
Следовательно, код других прсщессов не долже ° жен иметь возможности без разрешения обращаться к памяти данного процесса для чте я чтения или записи. Однако удовлетворение требованию перемещаемости усложняет з задачу защиты. Поскольку расположение программы в основной памяти вепре д азуемо, проверка абсолютных адресов во время компиляции невозможна. роме „о того, в большинстве языков программирования возможно динамическое вы'"сленне адресов во время исполнения (например, вычисление адреса элемента масгяя или и указателя на поле структуры данных). Следовательно, во время работы и 7. управление памятью 359 рамм чмы необходимо выполнять проверку всех обращений к памяти, процессом, чтобы удостовериться, что все они — только к памяти, в юму процессу.
К счастью, как вы увидите позже, механизмы подде ~ений обеспечивают и поддержку защиты. '":~4 Обычно пользовательский процесс не может получить доступ ни,,~, " .и операционной системы — ни к коду, ни к данным. Код одного про ~ет выполнить команду ветвления, целевой код которой находится-.в,. цессе. Если не приняты специальные меры, код одного процесса Не учить доступ к данным другого процесса. Процессор должен быть рвать выполнение таких команд.
Заметим, что требования защиты памяти должны быть удовлетворены " процессора (аппаратного обеспечения), а не на уровне операционной "" ~граммного обеспечения), поскольку операционная система не в с ать все обращения к памяти, которые будут выполнены программой. такое было возможно, сканирование каждой программы в поиске предя Ушений защиты было бы слишком Расточительно с точки зрения ис цессорного времени. Следовательно, соответствующие возможности :печения — единственный способ определения допустимости обращения н: " ейным или коду) во время работы программы.
ф. вместное использование Любой механизм защиты должен иметь достаточную гибкость, бы обеспечить возможность нескольким процессам обращаться к одйо$;, области основной памяти. Например, если несколько процессов в н и тот же машинный код, то будет выгодно позволить каждому " отать с одной и той же копией этого кода, а не создавать свою со инессам, сотрудничающим в работе над некоторой задачей, может . ься совместн~й доступ к одним и тем же структурам данных. Систем ия памятью должна, таким образом, обеспечивать управляемый д деляемым областям памяти, при этом никоим образом не ослабляя.,„ взяти, Как мы увидим позже, механизмы поддержки перемещений >т и поддержку совместного использования памяти.
1гическая органиэация Фактически всегда основная память в компьютерной системе орг ~ейное (одномерное) адресное пространство, состоящее из последова или слов. Аналогично организована и вторичная память на своем вне. Хотя такая организация и отражает особенности используемого снечения, она не соответствует способу, которым обычно создаются ~ьшинство программ организованы в виде модулей, некоторые из когоР.',:,: ~ны (только для чтения, только для исполнения), а другие содержат ые могут быть изменены.
Если операционная система и аппаратное тпьютера могут эффективно работать с пользовательскими программам®; ми, представленными модулями, то это обеспечивает ряд преимуществ. . Модули могут быть созданы и скомпилированы независимо друГ Ю- при этом все ссылки из одного модуля во второй разрешаются с время работы программы. ,2. Разные модули могут получить разные степени за|цнты (только для чтения, только для исполнения) за счет весьма умеренных накладных расходов. З, Возможно применение механизма, обеспечивающего совместное использование модулей разными процессами. Основное достоинство обеспечения совместного использования на уровне модулей заключается в том, что они соответствуют взгляду программиста на задачу и, следовательно, ему проще определить, требуется или нет совместное использование того или иного модуля Инструментом, наилучшим образом удовлетворяющим данным требованиям, является сегментация, которая будет рассмотрена в данной главе среди про„ня методов управления памятью.
Физическая органиэация Как указывалось в разделе 1.5, память компьютера разделяется как минимум на два уровня: основная и вторичная. Основная память обеспечивает быстРый доступ по относительно высокой цене; кроме того, она энергозависима, т,е. не обеспечивает долговременного хранения. Вторичная память медленнее и дешевле основной и обычно энергонезависима. Следовательно, вторичная память большой емкости может служить для долговременного хранения программ и данных, а основная память меньшей емкости — для хранения программ и данных, использующихся в текущий момент. В такой двухуровневой структуре основной заботой системы становится организация потоков информации между основной и вторичной памятью.
Ответственность за эти потоки может быть возложена и на отдельного программиста, но это непрактично и нежелательно по следующим причинам. 1. Основной памяти может быть недостаточно для программы и ее данных. В этом случае программист вынужден прибегнуть к практике, известной как структуры с перекрытием — оверлеи (обжег)ау), когда программа и данные организованы таким образом, что различные модули могут быть назначены одной и той же области памяти; основная программа при этом ответственна за перезагрузку модулей при необходимости. Даже при помощи соответствующего инструментария компиляции оверлеев разработка таких программ приводит к дополнительным затратам времени программиста.
2. Во многозадачной среде программист при разработке программы не знает, ~ акой объем памяти будет доступен программе и где эта память будет располагал -я, таким образом, очевидно, что задача перемещения информации между двумя у Уровнями памяти должна возлагаться на операционную систему. Эта задача являет яется сущностью управления памятью. Главн "заной операцией управления памятью является разме1цение программы в основной и памяти для ее выполнения процессором. Практически во всех совреенных, многозадачных системах эта задача предполагает использование слож, о" схем известной как виртуальная память. Виртуальная память, в свою ; ~ 7 Управление памятью дь основана на использовании одной или обеих базовых техиол дь1 нтов и страниц.
Перед тем как перейти к рассмотрению этих метода" . ~ии виртуальной памяти, мы должны сперва познакомиться с бол~"" и методами (табл. 7.1) Одна из приведенных в таблице технологий счение памяти — использовалась в различных вариациях в некото бытых и настоящему времени операционных системах, Две другие простая страничная организация и сегментация — сами по себе ' ": ~уются, однако их рассмотрение в отрыве от виртуальной памяти уп ' .
злейшее понимание предлагаемого материала. 1 .";; Ф Ф...' '.",:й Окончание табл, 7.1 Описание Сильные стороны Слабые стороны Техпология Все, как при простой страничной организа- ции, с тем исключени- ем, что не требуется од- новременно загружать все страницы процесса. Необходимые нерези- дентные страницы ав- томатически загружа- ются в память Нет внешней фраг- ментации; более вы- сокал степень много- задачности; большое виртуальное адресное пространство С рапкчкая органэацяя аиргуаой памяти Накладные рас- ходы из-за слож- ности системы управления па- мятью Сильные стороны Слабые Описание Все, как при простой сегментации, с тем исключением, что не требуется одновременно загружать асе сегменты процесса.
Необходимые нерезидентные сегменты автоматически загружаются в память элогия Нет внутренней фрагментации более высокая степень многозадачности; большое виртуальное адресное пространство," поддержка защиты и совместного исполь- сегментация акр алькой памяти Накладные рас- ходы из-за слож- ности системы управления па- мятью Простота реализации малые системные на- кладные расходы Осяовяая память разде- ляется на ряд статиче- ских раздечов во время генерации системы. Про- цесс может быть загру- жен в раздел равного или большего размера крованное еделеиие Отсутствует внутренняя фрагментация, более эффективное использование основной памяти Разделы создаются ди- намически; каждый процесс загружается в раздел строго необхо- димого размера мическое юдел ение Отсутствует внешняя фрагментация гая странкч~ргаиизация "4 улучше цользоваи мяти и с ные накл ' расходы ЙФ1.