рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Типы архитектур ядер операционных систем

Типы архитектур ядер операционных систем - раздел Образование, Аппаратная архитектура Фон-Нейманна Монолитное Ядро Предоставляет Богатый Набор Абстракций Обору...

Монолитное ядро предоставляет богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве. Это такая схема операционной системы, при которой все компоненты её ядра являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путём непосредственного вызова процедур..Достоинства: Скорость работы, упрощённая разработка модулей.Недостатки: Поскольку всё ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы.Примеры: Традиционные ядра UNIX(такие как BSD), Linux; ядро MS-DOS, ядро KolibriOS.

Модульное ядро — современная, усовершенствованная модификация архитектуры монолитных ядер операционных систем компьютеров.

В отличие от «классических» монолитных ядер, считающихся ныне устаревшими, модульные ядра, как правило, не требуют полной перекомпиляции ядра при изменении состава аппаратного обеспечения компьютера. Вместо этого модульные ядра предоставляют тот или иной механизм подгрузки модулей ядра, поддерживающих то или иное аппаратное обеспечение). При этом подгрузка модулей может быть как динамической так и статической

Микроядро предоставляет только элементарные функции управления процессами и минимальный набор абстракций для работы с оборудованием. Бо́льшая часть работы осуществляется с помощью специальных пользовательских процессов, называемых сервисами. Решающим критерием

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

Достоинства: Устойчивость к сбоям оборудования, ошибкам в компонентах системы. Основное достоинство микроядерной архитектуры — высокая степень модульности ядра операционной системы.Микроядерная архитектура повышает надежность системы, поскольку ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра.Недостатки: Передача данных между процессами требует накладных расходовПримеры: Symbian OS; Windows CE; Mach, используемый в GNU/Hurd и Mac OS X; QNX; AIX; Minix; ChorusOS; AmigaOS; MorphOS.

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

Возможность доступа к устройствам на уровне контроллеров позволит эффективней решать некоторые задачи, которые плохо вписываются в рамки универсальной ОС, например реализация СУБД будет иметь доступ к диску на уровне секторов диска, а не файлов и кластеров, что положительно скажется на быстродействии.

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

Гибридные ядра — это модифицированные микроядра, позволяющие для ускорения работы запускать «несущественные» части в пространстве ядра. Имеют «гибридные» достоинства и недостатки.

4.

Интерфейс – это внешнее представление, абстракция какого-то информационного объекта.

Протокол – это набор правил взаимодействия между объектами.

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

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

Языковые интерфейсы. Эти стандарты обеспечивают действующие интерфейсы к различным языкам программирования. В настоящее время это языки СИ, АДА, ФОРТРАН 77 и ФОРТРАН 90. Операционная среда Открытых Систем. Эти стандарты включают руководство по операционной среде POSIX и прикладные профили. Прикладной профиль - это стандарты POSIX вместе с их опциями и параметрами, которые необходимы для конкретной прикладной среды. Прикладные профили - это весьма важное средство, позволяющее получить небольшое количество хорошо определенных типов реализации операционных систем для конкретных прикладных контекстов.

Задачи Posix:

· содействовать облегчению переноса кода прикладных программ на иные платформы;

· способствовать определению и унификации интерфейсов заранее при проектировании, а не в процессе их реализации;

· сохранить по возможности и учитывать все главные, созданные ранее и используемые прикладные программы;

· определять необходимый минимум интерфейсов прикладных программ, для ускорения создания, одобрения и утверждения документов;

· развивать стандарты в направлении обеспечения коммуникационных сетей, распределенной обработки данных и защиты информации;

· рекомендовать ограничение использования бинарного (объектного) кода для приложений в простых системах.

5.

Драйвера можно поделить на 3 типа:

Символьные – работают с устройствами которые разрешают передавать данные по 1 символу (байту) : разные консолы, модемы

Блоковые – работают с устройствами которые разрешают осуществлять буферезацию ввода-вивода: разные дисковые накопители

Сетевые

Также их иожно разделить на 3 группы: драйверы системных устройств, драйверы карт расширения, драйверы перифирийных устройств.

Драйверы системных устройств — обычно это драйверы тех устройств, в работу которых пользователю лучше не лезть: контроллер электропитания, процессор.

Драйверы карт расширения — это драйверы для видеокарт, звуковых плат, тв-тюнера и т. д. Эти драйверы лучше обновлять.

Драйверы перифирийных устройств — это драйверы для тех устройств, которые подключаются к компьютеру через различные разъемы, в частности через USB.

 

6.

7. Каждый домен определяет набор объектов и типов операций, которые могут быть осуществлены над каждым объектом. Возможность выполнять операции над объектом есть права доступа. Домен - набор прав доступа, каждое из которых есть упорядоченная пара <object-name, rights-set>. Hапример, если домен D имеет права доступа <file F, {read, write}>, это означает, что процесс, выполняемый в домене D, может читать или писать в файл F, но не может выполнять других операций над этим объектом.

Связь процессов с доменами может быть статической и динамической. Организация динамической связи сложнее.

Заметим, что домен может быть реализован различными способами:

· Каждый пользователь может быть доменом. В этом случае набор объектов, к которым может быть организован доступ, зависит от идентификации пользователя. Переключение между доменами имеет место, когда меняется пользователь (один входит в систему, другой выходит из нее).

· Каждый процесс может быть доменом. В этом случае набор доступных объектов определяется идентификацией процесса. Переключение между доменами происходит, когда один из процессов посылает сообщение другому и ждет отклика.

· Каждая процедура может быть доменом. В этом случае набор доступных объектов соответствует локальным переменным, определенным внутри процедуры. Переключение между доменами происходит, когда процедура выполнена.

Рассмотрим стандартную двух режимную модель выполнения ОС. Когда процесс выполняется в режиме системы (kernel mode), он может выполнять привилегированные инструкции и иметь полный контроль над компьютерной системой. С другой стороны, если процесс выполняется в пользовательском режиме, он может вызывать только непривилегированные инструкции. Следовательно, он может выполняться только внутри предопределенного пространства памяти. Наличие этих двух режимов позволяет защитить ОС (monitor domain) от пользовательских процессов .

В ОС Unix домен связан с пользователем. Переключение доменов соответствует смене пользователя. Это изменение реализуется через файловую систему.

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

Когда процессу, работающему на кольце 0, нужно передать процессору команды для выполнения, процессор проверяет номер кольца и убеждается, что этому процессу можно полностью доверять. После этого процессор позволяет этому процессу работать с любыми своими функциями, предоставляемыми процессам. Некоторыми из наиболее критичных действий, для выполнения которых необходимы максимальные привилегии (нахождение на кольце 0), являются операции ввода/вывода и доступ к памяти.

Когда другому процессу, находящемуся на кольце 3, нужно передать процессору команды для выполнения, процессор снова проверяет номер кольца процесса. Поскольку это процесс

с кольца 3, процессор знает, что операционная система доверяет этому процессу в наименьшей степени, поэтому он ограничивает объем своих функциональных возможностей, доступных этому процессу.

 

8.

9.

10.

11.

12.Самый верхний сегмент в адресном пространстве процесса – стек, в котором хранятся локальные переменные и параметры функций в большинстве языков программирования.

Под стеком, размещается сегмент памяти отображения. Здесь ядро ​​отображает содержимое файлов непосредственно в память. Любое приложение может запросить такое отображение с помощью Linux mmap() или CreateFileMapping() / MapViewOfFile() в Windows. Память отображения является удобным и высокопроизводительным способом сделать файловый ввод /вывод, поэтому он используется для загрузки динамических библиотек.

Heap (куча)обеспечивает выполнение распределения памяти, как стек, предназначенный для данных, которые должны «пережить» распределение, которое делает функция, в отличие от стека. Большинство языков обеспечивают куче управление программами. Удовлетворение запросов памяти, таким образом, представляет связь между языковой средой и ядром.

Оба BSS и DATA сегменты используются для статических (глобальных) переменных в C. Разница в том, что BSS сохраняет содержимое неинициализированных статических переменных, значения которых не установлены программистом в исходном коде. Размер BSS памяти является анонимным: он не отображает никакой файл.

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

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

mmap – POSIX-совместимый системный вызов Unix, позволяющий выполнить отображение файла или устройства на память. Является методом ввода/вывода через отображение файла на память и естественным образом реализует выделение страниц по запросу, поскольку изначально содержимое файла не читается с диска и не использует физическую память вообще. Реальное считывание с диска производится в «ленивом» режиме, то есть при осуществлении доступа к определённому месту.

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

Пример, для чего может использоваться: предположим, что наша программа должна прочитать файл размером в несколько сотен мегабайт, и посчитать в нем статистику встречаемости разных символов. Задача выглядит тривиальной - открываем файл, читаем блоками, скажем, по 64Kb (экспериментально подобраная величина, которая часто оказывается оптимальной) и считаем в них статистику. Проще, вроде бы не придумаешь. Можно, конечно, считать сразу весь файл в память, но во-первых памяти может просто не хватить, а во-вторых мы все-таки в многозадачной ОС. А теперь посмотрим что при этом происходит реально для каждого блока блок данных с диска пересылается в кэш (обычно используя, чтобы не загружать процессор, дабы он мог в это время заняться другими делами), из этого кэша данные копируются в наш буфер, в котором и производится обработка. При этом, разумеется, данные в кэше обычно остаются. То же самое происходит со следующим блоком. В результате некоторое количество блоков просто занимают кэш (мы ведь все равно читам файл последовательно), происходят лишние операции копирования (которые, в отличии от дисковых, во-первых забирают на себя ресурсы процессора, а во-вторых забивают кэш процессора, тем самым тормозя всю систему в целом). Представим себе, что мы запустили одновременно десяток таких программ. Часть памяти ушла впустую на буферы внутри программ, хотя она нам в этот момент была бы так нужна в качестве дискового кэша, и огромное количество процессорного времени на тупое копирование по многу раз одинаковых данных. Неприятно.

 

13. Форматы исполняемых файлов:

· .COM(англ. command) использовалось в некоторых компьютерных операционных системах в различных целях.В системах DOS и в 8-битной CP/M, файл COM – простой тип исполняемого файла, размер которого не может превышать 64 Кбайт-256 байт (65280 = 216 − 28 байт).

· .EXE (сокр. англ. executable – программа) – расширение исполнимого файла, применяемое в системах DOS, Microsoft Windows, Symbian, OS/2, и в некоторых других. Кроме объектного кода, может содержать различные метаданные (значок, цифровую подпись).

· A.out (от англ. assembler output) – формат запускаемых файлов в некоторых (старых) версиях UNIX. Формат исполняемого файла a.out преимущественно используется в Linux. Раcширенная версия этого формата a.outb используется группой BSD-совместимых операционных систем (NetBSD, FreeBSD и OpenBSD). Компилятор NASM может генерировать файлы обоих форматов, если указать ключ -f aout для Linux или -f aoutb для BSD. Компилятор GCC по умолчанию выдаёт файл a.out, если не используется опция -o.

· Executable and Linkable Format
ELF (англ. Executable and Linkable Format – формат исполняемых и компонуемых файлов) – формат файлов, используемый во многих UNIX-подобных операционных системах, например, в GNU/Linux и Solaris, а также, после некоторой модификации ПО, – в некоторых мобильных телефонах компаний Siemens, Sony Ericsson, Motorola (платформа P2K) и во многих цифровых фотовидеокамерах (Olympus, Rekam и проч.). Каждый файл формата ELF имеет специальный заголовок, в котором, в частности, указан адрес точки входа (стартовый адрес) программы. Поля этого заголовка использует загрузчик (ELF interpreter) для загрузки программы в оперативную память перед исполнением. Каждый ELF файл состоит из одного заголовка ELF, за которым следуют данные. Файлы могут включать в себя

o Таблицу Program Header, описывающую ноль или более сегментов

o Таблицу Section Header, описывающую ноль или более секций

o Данные, упомянутые в записях названных таблиц

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

· MZ – стандартный формат 16-битных исполняемых файлов с расширением .EXE для DOS. Файлы .EXE и .DLL для Windows начинаются с заглушки в формате MZ, которая при попытке запустить файл в DOS выводит сообщение This program cannot be run in DOS mode. («Эту программу невозможно запустить в режиме DOS»).

· Portable Executable (PE) – формат исполняемых файлов, объектного кода и динамических библиотек, используемый в 32- и 64-битных версиях операционной системы Microsoft Windows. Формат PE представляет собой структуру данных, содержащую всю информацию, необходимую PE загрузчику для проецирования файла в память.

 

14. Соглашение вызова или модель вызова (англ. Calling convention) – часть двоичного интерфейса приложений, которая регламентирует технические особенности вызова подпрограммы, передачи параметров, возврата из подпрограммы и передачи результата вычислений в точку вызова. Если говорить проще, то это протокол для передачи аргументов функциям, или договоренность между вызывающим и вызываемым кодом.

сdecl – основной способ вызова для Си (отсюда название, сокращение от «c-declaration»). Аргументы передаются через стек, справа налево. Очистку стека производит вызывающая программа. Это основной способ вызова функций с переменным числом аргументов (например, printf(…))

thiscall– используется в компиляторах C++. Обеспечивает передачу аргументов при вызовах методов класса в объектно ориентированной среде. Аргументы передаются через стек, справа налево. Очистку стека производит вызываемая функция. Указатель (this) на объект, для которого вызывается метод, записывается в регистр ECX. Возвращаемое значение функции хранится в регистре eax. Если его размер слишком велик для размещения в регистре, то оно размещается на верхушке стека, а значение в регистре eax будет указывать на него.

15. Что такое виртуальная память? Какие задачи она решает? Что такое трансляция адресов? Опишите разные виды адресов в памяти.

Виртуальная память — это подход к управлению памятью компьютером, который скрывает физическую память (в различных формах, таких как: оперативная память, ПЗУ или жесткие диски) за единым интерфейсом, позволяя создавать программы, которые работают с ними как с единым непрерывным массивом памяти с произвольным доступом.

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

Задачи:

1. поддержка изоляции процессов и защиты памяти путём создания своего собственного виртуального адресного пространства для каждого процесса

2. поддержка изоляции области ядра от кода пользовательского режима

3. поддержка памяти только для чтения и с запретом на исполненение

4. поддержка выгрузки не используемых участков памяти в область подкачки на диске (свопинг)

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

6. поддержка разделяемой между процессами памяти, в том числе с

7. копированием-при-записи для экономии физических страниц

Применение механизма виртуальной памяти позволяет:

· упростить адресацию памяти клиентским программным обеспечением;

· рационально управлять оперативной памятью компьютера (хранить в ней только активно используемые области памяти);

· изолировать процессы друг от друга (процесс полагает, что монопольно владеет всей памятью).

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

 

Видыадресов

Для идентификации переменных и команд используются символьные имена (метки), виртуальные адреса и физические адреса.

Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.

Виртуальные адреса вырабатывает транслятор, переводящий программу на машинный язык. Так как во время трансляции в общем случае не известно, в какое место оперативной памяти будет загружена программа, то транслятор присваивает переменным и командам виртуальные (условные) адреса, обычно считая по умолчанию, что программа будет размещена, начиная с нулевого адреса. Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. Каждый процесс имеет собственное виртуальное адресное пространство. Максимальный размер виртуального адресного пространства ограничивается разрядностью адреса, присущей данной архитектуре компьютера, и, как правило, не совпадает с объемом физической памяти, имеющимся в компьютере.

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

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

 

16.Опишите сегментную реализацию виртуальной памяти. Какие ее преимущества и недостатки? Опишите алгоритма трансляции адресов в ней. Что такое плоская модель сегментации? Какие еще модели сегментации существуют?

В системах с сегментной и страничной адресацией виртуальный адрес имеет сложную структуру. Он разбит на два битовых поля: номер страницы(сегмента) и смещение в нем. Соответственно, адресное пространство оказывается состоящим из дискретных блоков. Если все эти блоки имеют фиксированную длину и образуют вместе непрерывное пространство,они называются страницами. Если длина каждого блока может задаватися произвольно, а неиспользуемым частям блоков соответствуют ``дыры'' в виртуальном адресном пространстве, они называются сегментами. Как правило,один сегмент соответствует коду или данным одного модуля программы. Сегментная организация в чистом виде практически не встречается.

При загрузке процесса часть сегментов помещается в оперативную память, а часть размещается на диске. Сегменты одной программы могут занимать в оперативной памяти несмежные участки. Во время загрузки система создает таблицу сегментов процесса (аналогичную таблице страниц), в которой для каждого сегмента указывается начальный физический адрес сегмента в оперативной памяти, размер сегмента, правила доступа, признак модификации, признак обращения к данному сегменту за последний интервал времени и некоторая другая информация.

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

Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, а s — смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.

Преимущества:

1. устраняется один из крупных недостатков страничного механизма — внутренняя фрагментация памяти (то есть наличие большого количества неиспользованных участков памяти внутри страниц)

Недостатки:

1. приводит к внешней фрагментации памяти (то есть наличию большого количества мелких неиспользованных участков памяти между сегментами)

2. более медленное по сравнению со страничной организацией преобразование адреса

При сегментной организации виртуальный адрес является двумерным и состоит из двух полей - номера сегмента и смещения внутри сегмента. Логическое адресное пространство - набор сегментов. Каждый сегмент имеет имя, размер и другие параметры. Пользователь специфицирует каждый адрес двумя величинами: именем сегмента и смещением. Каждый сегмент - линейная последовательность адресов от 0 до максимума. Различные сегменты могут иметь различные длины, которые могут меняться динамически (например, сегмент стека). В элементе таблицы сегментов помимо физического адреса начала сегмента (если виртуальный сегмент содержится в основной памяти) содержится длина сегмента. Если размер смещения в виртуальном адресе выходит за пределы размера сегмента, возникает прерывание.

Логический адрес - упорядоченная пара v=(s,d)( номер сегмента и смещение внутри сегмента). В системах, где сегменты поддерживаются аппаратно, эти параметры обычно хранятся в таблице дескрипторов сегментов, а программа обращается к этим дескрипторам по номерам‑селекторам. При этом в контекст каждого процесса входит набор сегментных регистров, содержащих селекторы текущих сегментов кода, стека, данных и др. и определяющих, какие сегменты будут использоваться при разных видах обращений к памяти. Это позволяет процессору уже на аппаратном уровне определять допустимость обращений к памяти, упрощая реализацию защиты информации от повреждения и несанкционированного доступа.

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

Модели сегментации: Защищенная плоская модель, Многосегментная модель .

17.Опишите страничную реализацию виртуальной памяти. Какие ее преимущества и недостатки? Опишите алгоритма трансляции адресов в ней. Опишите подходы к ее оптимизации. Какие проблемы возникают в ней при увеличении разрядности аппаратной архитектуры до 64 бит.

Способ разрывного размещения задач в памяти при котором все фрагменты задачи одинакового размера кратного степени двойки называется страничным, а фрагменты страницами. В этом случае память разбивается на физические страницы (кадры, фреймы). А программа разбивается на виртуальные страницы. Часть виртуальных страниц размещается в ОЗУ, а часть во внешней памяти. Место на жестком диске, где размещаются виртуальные страницы называют файлом подкачки или страничным файлом (SWAP-файл). Чтобы подчеркнуть, что записи этого файла-страницы замещают друг друга в ОЗУ в некоторых операционных системах виртуальные страницы располагаются не в файле, а в специальном разделе диска. (Физический адрес ячейки памяти определяется парой (Pp, i), а виртуальный (Pv, i). Pv – номер виртуальной страницы, Pp – номер физической страницы, а I – номер ячейки (индекс) внутри страницы. Для отображения виртуального адресного пространства на физическую память для каждой задачи необходимо иметь таблицы страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти операционной системы заводит соответствующий дескриптор. По номеру виртуальной страницы в таблице дескрипторов текущей задачи находится соответствующий элемент (дескриптор). Если бит присутствия равен единице, то данная страница находится в ОЗУ и в дескрипторе находится номер физической страницы, отведенной под данную виртуальную страницу.)

 

Преимущества:

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

Недостатки:

1. Накладные расходы, т.е. таблицы страниц нужно размещать в памяти и их нужно обрабатывать

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

 

Передача информации между памятью и диском всегда осуществляется целыми страницами. Страницы, в отличие от сегментов, имеют фиксированную длину, обычно являющуюся степенью числа 2, и не могут перекрываться.

Виртуальный адрес в страничной системе упорядоченная пара (p,d), где p - номер страницы в виртуальной памяти, а d - смещение в рамках страницы p, где размещается адресуемый элемент. Процесс может выполняться, если его текущая страница находится в оперативной памяти. Если текущей страницы в главной памяти нет, она должна быть переписана (подкачана) из внешней памяти. Поступившая страница может быть размещена в любой свободный страничный кадр. Система отображения виртуальных адресов в физические сводится к системе отображения виртуальных страниц в физические и представляет собой таблицу страниц.

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

Динамическое преобразование адресов в системе осуществляется следующим образом. Выполняемый процесс обращается по виртуальному адресу v = (p,d). Механизм отображения ищет номер страницы p в таблице отображения и определяет, что эта страница находится в страничном кадре p', формируя реальный адрес из p' и d.

Номер страницы, как индекс хранится в таблице страниц (page table), которая адресуется при помощи специального регистра процессора, и позволяет определить номер кадра по виртуальному адресу. Помимо этой основной задачи при помощи атрибутов, записанных в строке таблицы страниц, можно организовать контроль доступа к конкретной странице и ее защиту.

Используя схему пэйджинга, мы не имеем внешней фрагментации. Однако сталкиваемся с внутренней фрагментацией: адресное пространство процесса занимает целое число страниц, и в среднем половина страницы на процесс пропадает.

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

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

Для оптимизации страничной памяти используются следующие подходы:

 

• специальный кеш — TLB (translation lookaside buffer) — в котором хранится очень небольшое число (поярдка 64) наиболее часто используемых адресов страниц (основные страницы, к которым постоянно обращается ОС)

• многоуровневая (2, 3 уровня) таблица страниц — в этом случае виртуальный адрес разбивается не на 2, а на 3 (4,...) части. Последняя часть остается смещением внутри страницы, а каждая из остальных задает номер страницы в таблице страниц 1-го, 2-го и т.д. уровней. В этой схеме для трансляции адресов нужно выполнить не 1 обращение к таблице страниц, а 2 и более. С другой стороны, это позволяет свопить таблицы страниц 2-го и т.д. уровней, и подгружать в память только те таблицы, которые нужны текущему процессу в текущий момент времени или же даже кешировать их. А каждая из таблиц отдельного уровня имеет существенно меньший размер, чем имела бы одна таблица, если бы уровень был один

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

 

Размер страницы и количество страниц зависит от того, какая часть адреса выделяется на номер страницы, а какая на смещение. К примеру, если в 32-разрядной системе разбить адрес на две равные половины, то количество страниц будет составлять 2^16, т.е. 65536, и размер страницы в байтах будет таким же, т.е. 64 КБ. Если уменьшить количество страниц до 2^12, то в системе будет 4096 страницы по 1МБ, а если увеличить до 2^20, то 1 миллион страниц по 4КБ. Чем больше в системе страниц, тем больше занимает памяти таблица страниц, соответственно работа процессора с ней замедляется. А поскольку каждое обращение к памяти требует обращения к таблице страниц для трансляции виртуального адреса, такое замедление очень нежелательно. С другой стороны, чем меньше страниц и, соотвественно, чем они больше по объему — тем больше потери памяти, вызванные внутренней фрагментацией страниц, поскольку страница является единицей выделения памяти. В этом заключается диллема оптимизации страничной памяти. Она особенно актуальна при переходе к 64-разрядным архитектурам.

 

 

– Конец работы –

Эта тема принадлежит разделу:

Аппаратная архитектура Фон-Нейманна

Архитектура х... ЧТО ТАКОЕ ЯДРО ОС КАКИЕ ОСОБЕННОСТИ ЕГО РАБОТЫ ПО СРАВНЕНИЮ С ДРУГИМИ ПРОГРАММАМИ КАКИЕ АРХИТЕКТУРЫ ОС ПО РЕАЛИЗАЦИИ...

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

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Принципы фон Неймана
Принцип двоичного кодирования Принцип однородности памяти Программы и данные хранятся в одной и той же памяти. Поэтому ЭВМ не различает, что хранится в данной ячейк

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги