Аннотация: В настоящей лекции рассматриваются простейшие способы управления памятью в ОС. Физическая память компьютера имеет иерархическую структуру. Программа представляет собой набор сегментов в логическом адресном пространстве. ОС осуществляет связывание логических и физических адресных пространств.
Введение
Главная задача компьютерной системы – выполнять программы. Программы вместе с данными, к которым они имеют доступ , в процессе выполнения должны (по крайней мере частично) находиться в оперативной памяти . Операционной системе приходится решать задачу распределения памяти между пользовательскими процессами и компонентами ОС. Эта деятельность называется управлением памятью. Таким образом, память ( storage , memory ) является важнейшим ресурсом, требующим тщательного управления. В недавнем прошлом память была самым дорогим ресурсом.
Часть ОС, которая отвечает за управление памятью , называется менеджером памяти.
Физическая организация памяти компьютера
Запоминающие устройства компьютера разделяют, как минимум, на два уровня: основную (главную, оперативную , физическую ) и вторичную (внешнюю) память.
[Основы ОС, практика] Устройство памяти 1: трансляция адресов
Основная память представляет собой упорядоченный массив однобайтовых ячеек, каждая из которых имеет свой уникальный адрес (номер). Процессор извлекает команду из основной памяти , декодирует и выполняет ее. Для выполнения команды могут потребоваться обращения еще к нескольким ячейкам основной памяти . Обычно основная память изготавливается с применением полупроводниковых технологий и теряет свое содержимое при отключении питания.
Вторичную память (это главным образом диски) также можно рассматривать как одномерное линейное адресное пространство , состоящее из последовательности байтов. В отличие от оперативной памяти , она является энергонезависимой, имеет существенно большую емкость и используется в качестве расширения основной памяти .
Эту схему можно дополнить еще несколькими промежуточными уровнями, как показано на рис. 8.1. Разновидности памяти могут быть объединены в иерархию по убыванию времени доступа, возрастанию цены и увеличению емкости.
Рис. 8.1. Иерархия памяти
Многоуровневую схему используют следующим образом. Информация, которая находится в памяти верхнего уровня, обычно хранится также на уровнях с большими номерами. Если процессор не обнаруживает нужную информацию на i-м уровне, он начинает искать ее на следующих уровнях. Когда нужная информация найдена, она переносится в более быстрые уровни.
Локальность
Оказывается, при таком способе организации по мере снижения скорости доступа к уровню памяти снижается также и частота обращений к нему.
Ключевую роль здесь играет свойство реальных программ, в течение ограниченного отрезка времени способных работать с небольшим набором адресов памяти. Это эмпирически наблюдаемое свойство известно как принцип локальности или локализации обращений.
Свойство локальности (соседние в пространстве и времени объекты характеризуются похожими свойствами) присуще не только функционированию ОС, но и природе вообще. В случае ОС свойство локальности объяснимо, если учесть, как пишутся программы и как хранятся данные, то есть обычно в течение какого-то отрезка времени ограниченный фрагмент кода работает с ограниченным набором данных.
Tecomat Foxtrot-введение в систему 1/4; запись вебинара
Эту часть кода и данных удается разместить в памяти с быстрым доступом. В результате реальное время доступа к памяти определяется временем доступа к верхним уровням, что и обусловливает эффективность использования иерархической схемы. Надо сказать, что описываемая организация вычислительной системы во многом имитирует деятельность человеческого мозга при переработке информации. Действительно, решая конкретную проблему, человек работает с небольшим объемом информации, храня не относящиеся к делу сведения в своей памяти или во внешней памяти (например, в книгах).
Кэш процессора обычно является частью аппаратуры, поэтому менеджер памяти ОС занимается распределением информации главным образом в основной и внешней памяти компьютера. В некоторых схемах потоки между оперативной и внешней памятью регулируются программистом (см. например, далее оверлейные структуры ), однако это связано с затратами времени программиста, так что подобную деятельность стараются возложить на ОС.
Адреса в основной памяти , характеризующие реальное расположение данных в физической памяти , называются физическими адресами. Набор физических адресов, с которым работает программа, называют физическим адресным пространством .
Логическая память
Аппаратная организация памяти в виде линейного набора ячеек не соответствует представлениям программиста о том, как организовано хранение программ и данных. Большинство программ представляет собой набор модулей, созданных независимо друг от друга. Иногда все модули, входящие в состав процесса, располагаются в памяти один за другим, образуя линейное пространство адресов. Однако чаще модули помещаются в разные области памяти и используются по-разному.
Схема управления памятью, поддерживающая этот взгляд пользователя на то, как хранятся программы и данные, называется сегментацией. Сегмент – область памяти определенного назначения, внутри которой поддерживается линейная адресация. Сегменты содержат процедуры, массивы, стек или скалярные величины , но обычно не содержат информацию смешанного типа.
По-видимому, вначале сегменты памяти появились в связи с необходимостью обобществления процессами фрагментов программного кода (текстовый редактор, тригонометрические библиотеки и т. д.), без чего каждый процесс должен был хранить в своем адресном пространстве дублирующую информацию. Эти отдельные участки памяти, хранящие информацию, которую система отображает в память нескольких процессов, получили название сегментов . Память, таким образом, перестала быть линейной и превратилась в двумерную. Адрес состоит из двух компонентов: номер сегмента , смещение внутри сегмента . Далее оказалось удобным размещать в разных сегментах различные компоненты процесса (код программы, данные, стек и т. д.). Попутно выяснилось, что можно контролировать характер работы с конкретным сегментом , приписав ему атрибуты, например права доступа или типы операций, которые разрешается производить с данными, хранящимися в сегменте .
Рис. 8.2. Расположение сегментов процессов в памяти компьютера
Некоторые сегменты , описывающие адресное пространство процесса, показаны на рис. 8.2. Более подробная информация о типах сегментов имеется в лекции 10.
Большинство современных ОС поддерживают сегментную организацию памяти. В некоторых архитектурах (Intel, например) сегментация поддерживается оборудованием.
Адреса, к которым обращается процесс, таким образом, отличаются от адресов, реально существующих в оперативной памяти . В каждом конкретном случае используемые программой адреса могут быть представлены различными способами. Например, адреса в исходных текстах обычно символические. Компилятор связывает эти символические адреса с перемещаемыми адресами (такими, как n байт от начала модуля). Подобный адрес, сгенерированный программой, обычно называют логическим (в системах с виртуальной памятью он часто называется виртуальным) адресом. Совокупность всех логических адресов называется логическим (виртуальным) адресным пространством .
Связывание адресов
Итак логические и физические адресные пространства ни по организации, ни по размеру не соответствуют друг другу. Максимальный размер логического адресного пространства обычно определяется разрядностью процессора (например, 2 32 ) и в современных системах значительно превышает размер физического адресного пространства . Следовательно, процессор и ОС должны быть способны отобразить ссылки в коде программы в реальные физические адреса, соответствующие текущему расположению программы в основной памяти . Такое отображение адресов называют трансляцией (привязкой) адреса или связыванием адресов (см. рис. 8.3).
Связывание логического адреса, порожденного оператором программы, с физическим должно быть осуществлено до начала выполнения оператора или в момент его выполнения. Таким образом, привязка инструкций и данных к памяти в принципе может быть сделана на следующих шагах [Silberschatz, 2002].
- Этап компиляции ( Compile time ). Когда на стадии компиляции известно точное место размещения процесса в памяти, тогда непосредственно генерируются физические адреса. При изменении стартового адреса программы необходимо перекомпилировать ее код. В качестве примера можно привести .com программы MS-DOS, которые связывают ее с физическими адресами на стадии компиляции.
- Этап загрузки ( Load time ). Если информация о размещении программы на стадии компиляции отсутствует, компилятор генерирует перемещаемый код. В этом случае окончательное связывание откладывается до момента загрузки. Если стартовый адрес меняется, нужно всего лишь перезагрузить код с учетом измененной величины.
- Этап выполнения ( Execution time ). Если процесс может быть перемещен во время выполнения из одной области памяти в другую, связывание откладывается до стадии выполнения. Здесь желательно наличие специализированного оборудования, например регистров перемещения. Их значение прибавляется к каждому адресу, сгенерированному процессом. Большинство современных ОС осуществляет трансляцию адресов на этапе выполнения, используя для этого специальный аппаратный механизм (см. лекцию 9).
Источник: intuit.ru
1.1. БУФЕР ОБМЕНА
Буфер обмена – это средство Windows для копирования текстовой и графической информации из одного приложения в другое.
Буфер обмена представляет собой специальную область памяти (оперативной), к которой имеют доступ все прикладные программы. Программа может скопировать или вырезать данные в буфер обмена, а затем вставить данные из него. Например, для копирования некоторого текста из одного документа в другой нужно сначала скопировать данные из исходного документа в буфер обмена, затем открыть документ назначения (в который вы хотите скопировать данные) и вставить их в нужное место. Данные остаются в буфере обмена, пока вы не замените их другими или не выйдете из Windows.
Все прикладные программы обеспечивают одинаковый набор команд для вырезания, копирования и вставки данных. Эти команды расположены обычно в меню «Правка» программ. Для перемещения данных из документа в буфер обмена нужно выбрать команду «Вырезать». Для помещения копии информации в буфер обмена необходимо выбрать команду «Копировать»; для помещения содержимого буфера обмена в документ – команду «Вставить».
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Что такое файл?
2. Чем характеризуется файл?
3. Сколько символов может быть в названии файлов?
4. Сколько символов может быть в расширении файла?
5. Что такое логические диски, как их обозначают?
6. Можно ли использовать буфер обмена для копирования файлов?
7. помещаются файлы, удаленные с жесткого диска ПК?
9. Что такое корневой каталог?
10. Как называется меню, в котором располагаются команды копирования, удаления и т.д. ?
Источник: libraryno.ru
Специальная область памяти к которой имеют доступ все прикладные программы
CISC-архитектура Intel x86 используется семейством однокристальных (размещенных на одной микросхеме) процессоров, к которому относятся процессоры 086, 186, 286, 386, 486, Pentium, Pentium Pro и Pentium II.
На самом деле все гораздо хуже — некоторые программы явно рассчитывают на 16-разрядную адресацию. Например в них сильно изменяются условия возникновения переполнения при выполнении арифметических операций в регистрах и т. д. Очевидно, что такого рода зависимости не проявляются сразу после перехода с 16-ти на 32-х разрядные процессоры (регистры) и в результате появляются «плавающие» ошибки, которые очень трудно обнаружить.—Прим. консультанта.
Американский бушель равен примерно 35,2 литра. — Прим. консультанта.
T.D. Kilburn, B.G. Edwards, M.J. Lanigan, F.H. Sumner. One-level Storage System./Ii?E Transactions on Electronic Computers. 1962.
April.
Идея виртуальной памяти заворожила тогда и меня, и я избрал ее в качестве темы своей диссертации в Университете штата Айова. Я недоумевал, как производители компьютеров, включая IBM, смогли «втиснуть» такую простую и элегантную идею в безумно сложные структуры. В конце концов, поиск такого решения виртуальной памяти, которое не требовало бы огромных накладных расходов и обеспечивало бы высокую производительность, привел к созданию System/38.
Я хочу предупредить возражения моих друзей — специалистов в области производительности — и, прежде всего, Рича Тернера (Rich Turner). Действительно, производительность пакетной обработки зависит не только от скорости процессора. Важную роль играют и размер памяти, и возможности дисковой подсистемы.
Перед объявлением System/38 в Рочестер приехал «эксперт» из IBM, который заявил, что планируемые нами размеры памяти слишком велики. Несмотря на протесты тех из нас, кто хорошо разбирался в теме дискуссии, размер памяти пришлось сократить. В результате оригинальная Model 5 работала плохо, так как была ограничена 2 мегабайтами памяти. А ведь при увеличении размера памяти производительность росла. Когда тот же самый «эксперт» вернулся, чтобы помочь нам с AS/400, мы вышвырнули его вон.
Прерывания часто называют также исключительными ситуациями. — Прим. консультанта.
Так как я сам и был тем человеком, кто провел эти вычисления и решил, что проблем не возникнет, то и все гневные отклики на эту ошибку достались мне. Должен признаться, что это был сильный стимул заняться переводом AS/400 на 64-разрядный аппаратный адрес.
Группа доступа, упомянутая в главе 5, представляет собой системный объект, позволяющий объединять несколько временных объектов и работать с ними как с целым. Возможно, читателю знакома группа доступа процесса PAG (process access group).
Перезагрузить систему действительно очень просто. Гораздо труднее было объяснить заказчику почему он должен это делать каждый месяц. Особенно если система установлена, например, в финансовой компании. — Прим. консультанта.
В начале 40-х годов Гарвардский Университет (Harvard University) разработал серию компьютеров Mark (проект финансировался IBM). Компьютеры Mark-III и Mark-IV имели раздельные памяти для команд и данных. Термин «гарвардская архитектура» до сих пор используется для обозначения машин с раздельной памятью.
Очевидно, однако, что не все перечисленные технологии оправдывают возлагавшиеся на них ожидания. Так что, похоже, дискам суждена еще очень долгая жизнь.
Здесь следует учитывать, что когда компонент управления дисками записывает объект, особенно большой, на диск, он обычно пытается распределить его между несколькими дисковыми устройствами. Причина этого — стремление повысить производительность и загруженность дисков. Путем распределения объектов на несколько дисков можно сократить время его считывания или записи, так как дисковые операции могут выполняться параллельно.
Даже сегодня диски на AS/400 не считаются устройствами ввода-вывода. Они рассматриваются как память.
На самом деле в секторе может быть 520 или 522 байта. Формат 522-байтового сектора в сочетании с современными дисковыми контроллерами (типа 6512 или 6532) позволяет улучшить характеристики ввода/вывода. — Прим. консультанта.
G. Bell and W.D. Strecker. Computer Structures: What Have We Learned From the PDP-11? / Proc. Third Annual Symposium on Computer Architecture. 1976. January. Pp.
1-14.
- Альтернативная медицина
- Астрономия и Космос
- Биология
- Биофизика
- Ботаника
- Ветеринария
- Военная история
- Геология и география
- Государство и право
- Деловая литература
- Домашние животные
- Домоводство
- Здоровье
- Зоология
- История
- Компьютеры и Интернет
- Кулинария
- Культурология
- Литературоведение
- Математика
- Медицина
- Металлургия
- Научная литература — прочее
- Обществознание
- Педагогика
- Политика
- Психология
- Радиоэлектроника
- Религиоведение
- Сад и огород
- Самосовершенствование
- Сделай сам
- Спорт
- Строительство и сопромат
- Технические науки
- Транспорт и авиация
- Учебники
- Физика
- Физическая химия
- Философия
- Химия
- Хиромантия
- Хобби и ремесла
- Шпаргалки
- Эзотерика
- Экология
- Юриспруденция
- Языкознание
Источник: www.plam.ru