Простейшим методом управления псевдонимами является их запрещение на аппаратном уровне [3]. Если процесс вызывает исключение (страничную ошибку), ядро проверяет страницу на предмет существования другого отображения. Если отображение будет обнаружено, ядро сбрасывает его вхождение и удаляет соответствующую страницу из кэша.
После этого создается новое отображение.
Также вам может показаться, что такая тема как http://texenergo.com/products/0T-00000891 никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт texenergo.com. Тема Посты управления ПКЕ 212 2 там представлена весьма широко. На том сайте можно узнать много интересного на тему Посты управления ПКЕ 212 2. Что означает вообще тема Посты управления ПКЕ 212 2, где найти Посты управления ПКЕ 212 2 - про это написано на сайте texenergo.com. Это очень важная для многих людей тема - Посты управления ПКЕ 212 2. Спасибо сайту texenergo.com за информацию на тему Посты управления ПКЕ 212 2.
Для данной методики разделение памяти требует частого изменения отображений и сброса кэша, так как в один момент времени может быть корректно только одно отображение страницы.
Однако описанное выше решение является слишком затратным, в первую очередь, из-за длительности операции сброса кэша. Кроме этого, необходимо обрабатывать часто возникающие исключительные состояния, иначе при обращении к разделяемым страницам разными процессами будут постоянно возникать коллизии.
Необходимо найти более подходящие альтернативы. Одним из наиболее очевидных улучшений является разрешение использования псевдонимов при обращении к страницам в режиме «только для чтения». Если процесс попытается произвести запись в такую страницу, ядро объявит недействительными все остальные отображения страницы.
Псевдонимы являются причиной появления некорректных данных только в том случае, если адреса не выравнены. Несмотря на то, что системы UNIX позволяют прикладным процессам создавать отображения разделяемых областей или других объектов памяти в адреса, указываемые пользователем, большинство приложений не зависят от наличия этой возможности. Системные вызовы типа shmat и mmap, как правило, имеют опции, предоставляющие выбор подходящего диапазона адресов ядру. Если это возможно, ядро выбирает для отображения выравненный адрес, что решает проблему некорректности кэша.
Например, если на машине Sun-З два адреса отличаются на некоторую величину, кратную 128 Кбайт, они отображаются в одно вхождение кэша. В этой системе ядро пытается находить адреса, которые эквивалентны, либо отличаются на значение, кратное 128 Кбайт, с целью создания отображения для другого процесса, разделяющего область памяти.
726
Глава 15. Дополнительные сведения об управлении памятью
Многие реализации UNIX еще более консервативны и либо вообще запрещают подобные возможности, либо ограничивают их применение. Например, во многих версиях операционной системы HP-UX корпорации Hewlett- Packard [5] не поддерживается вызов mmap. При разделении области памяти должны быть отображены по одним и тем же адресам всех процессов. В таких системах совместное использование текстов реализовано за счет глобального разделяемого сегмента виртуальных адресов. В системе SunOS проблема решена путем запрета кэширования страниц, имеющих несколько невыравненных виртуальных адресов.
Операции прямого доступа к памяти должны также обрабатываться особым образом при использовании виртуально адресуемых кэшей. Перед началом чтения в режиме DMA ядро обязано сбрасывать из кэша всю информацию из считываемых страниц. Это дает гарантию, что основная память не содержит данных, являющихся более ранними по сравнению с кэшированной информацией. Точно так же при записи DMA ядро должно сначала удалить все вхождения кэша, содержащие перезаписываемые данные. Если этого не сделать, кэш будет содержать устаревшие вхождения, которые впоследствии могут быть сброшены в оперативную память, тем самым будет перезаписана информация, полученная при прямом доступе к памяти.
Ввод-вывод и драйверы устройств
Управление обменом данных между памятью и периферийными устройствами, такими как диски, принтеры и терминалы, осуществляется при помощи подсистемы ввода-вывода. Ядро взаимодействует с такими аппаратными компонентами через драйверы устройств. Драйвер управляет одним или несколькими устройствами и представляет собой интерфейс между устройством и остальной частью ядра системы. Такое разделение помогает скрыть особенности аппаратуры от ядра, которое обращается к устройствам, используя простой процедурный интерфейс.
Опубликовал katy
June 23 2015 06:36:20 ·
0 Комментариев ·
3287 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.