Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Операционные среды, системы и оболочки. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
101
качиваться с него обратно в физическую память. Таким образом реализуется виртуальная память.
Применительно к памяти различают три адресных простран­ства: логическое, линейное и физическое. Основным режимом работы 32-разрядных процессоров считается защищенный режим, в котором работают все механизмы преобразования адресных пространств (рис. 3.4) [12, 13].
Вычисление эффективного адреса
INDEX
31 0
Физическая
память
32-х разрядный
физический
адрес
Блок страничной
переадресации
(необязательной)
15
Сегментный
BASE DISPLACEMENT
X
SCALE
1,2,4,8
+
32-х разрядный эффективный
2 1 0
Селектор
регистр
R P L
14-ти разрядный индекс
14- 32-
дескриптора ло гического или
виртуального адреса
сегментации
адрес
Блок
32-х разрядный
линейный
адрес
Рис. 3.4 − Формирование адреса памяти 32-разрядных процессоров
в защищенном режиме
Логический адрес, также называемый виртуальным, со- стоит из селектора сегмента Seg (в реальном режиме – просто адреса сегмента) и эффективного адреса, называемого также смещением (Offset). Логический адрес обозначается в форме Seg:Offset. Селектор сегмента хранится в старших 14 битах сегментного регистра (CS, DS, ES, SS, FS или GS), участвующе­го в адресации конкретного элемента памяти. По значению се­лектора из специальных таблиц, хранящихся в памяти, извлека­ется начальный адрес сегмента. Эффективный адрес форми­руется суммированием компонентов base, index, displacement с
102
учетом масштаба scale. Поскольку каждая задача может иметь до 16 Кбайт селекторов (2
14
), а смещение, ограниченное разме-
ром сегмента, может достигать 4 Гбайт, логическое адресное пространство для каждой задачи может достигать 64 Тбайт. Все это пространство виртуальной памяти в принципе доступно про­граммисту при условии поддержки со стороны операционной системы.
Блок сегментации транслирует логическое адресное про­странство в 32-битное пространство линейных адресов. Линей- ный адрес образуется сложением базового адреса сегмента с эффективным адресом. Базовый адрес сегмента в реальном ре­жиме образуется умножением содержимого используемого сег­ментного регистра на 16 (как и в 8086). В защищенном режиме базовый адрес загружается из дескриптора, хранящегося в таб­лице, по селектору, загруженному в используемый сегментный регистр.
32-битный физический адрес памяти образуется после пре­образования линейного адреса блоком страничной переадресации. Он выводится на внешнюю шину адреса процессора. В простей­шем случае при отключенном блоке страничной переадресации физический адрес совпадает с линейным. Включенный блок стра­ничной переадресации осуществляет трансляцию линейного адре­са в физический страницами размером 4 Кбайт (для последних по­колений процессоров возможны страницы размером 2– 4 Мбайт). Блок обеспечивает и расширение разрядности физического адреса процессоров шестого поколения до 36 бит. Блок переадресации может включаться только в защищенном режиме.
Для обращения к памяти процессор совместно с внешними схемами формирует шинные сигналы для операций записи и чтения. Шина адреса разрядностью 32/36 бит позволяет адресо­вать 4/64 Гбайт физической памяти, но в реальном режиме дос­тупен только 1 Мбайт, начинающийся с младших адресов.
3.3.4 Кэширование памяти
Архитектура современных 32-разрядных процессоров включает ряд средств кэширования памяти: два уровня кэша инструкций и данных (L1 Cache и L2 Cache); буферы ассоциа-
103
тивной трансляции (TLB) блока страничной переадресации и буферы записи. Эти средства в разных вариациях (на кристалле, картридже процессора или системной плате) представлены в сис­темах с процессорами 486, Pentium и Р6. В процессоре 80386 (Intel) имелся только TLB, а кэш-память, устанавливаемая на сис­темной плате, не имела поддержки со стороны процессора.
Все механизмы кэширования в основном прозрачны для прикладных программ и после разрешения кэширования пропус­кают через себя потоки инструкций и данных без требования яв­ного программного управления. Однако знание особенностей ме­ханизмов кэширования помогает в оптимизации кода. Например, можно определить оптимальные размеры одновременно обраба­тываемых структур данных, при которох кэш не «буксует» (cache thrashing). Процессоры разных моделей имеют различные харак­теристики отдельных элементов кэша, их определение для про­цессоров Р6 осуществляется посредством вызова инструкции CPUID(2). Заметим, что не все модели процессоров способны кэ­шировать весь объем физически адресуемой памяти.
Кэш-память процессоров строится с учетом возможности обращений к памяти со стороны внешних абонентов – других процессоров или иных контроллеров шины. Процессоры имеют механизмы внешнего слежения за состоянием собственного кэ­ша с соответствующими аппаратными интерфейсами. Для под­держания согласованности данных кэша и основной памяти процессор отрабатывает циклы слежения (Snoop Cycle или Inquire Cycle), инициированные внешней для него системой. В этих циклах, происходящих при обращении к памяти со сторо­ны внешнего абонента, процессор определяет присутствие за­требованной области в своем собственном кэше. Если область отображается в кэше, то действия процессора зависят от состоя­ния соответствующей строки кэша и типа внешнего обращения: обращение по записи вызовет аннулирование данной строки; обращение по чтению к области, соответствующей модифици­рованной («грязной») строке, – выгрузку ее содержимого в ос­новную память, прежде чем внешний абонент выполнит реаль­ное считывание. В процессорах Р6 обращение к «грязной» стро­ке со стороны другого процессора может вызывать выгрузку ее содержимого непосредственно в обращающийся процессор, что
104
экономит время. Выгрузка этой строки в основную память будет произведена позже, согласно алгоритму обратной записи.
Кэш процессоров, начиная с Pentium, поддерживает протокол
MESI, названный по определяемым им состояниям М (Modified), E (Exclusive), S (Shared), I (Invalid). Первичный кэш инструкций
реализует протокол лишь в части «SI», поскольку он не допус­кает записи. Существуют различные состояния строк для каждо­го процессора [13]:
М-состояние – строка присутствует в кэше только этого процессора и модифицирована, то есть отличается от содержи­мого основной памяти; запись в эту строку не приведет к гене­рации внешнего по отношению к локальной шине цикла обра­щения;
Е-состояние – строка присутствует в кэше только этого процессора, но не модифицирована (ее копия в основной памяти действительна); запись переведет ее в М-состояние, не вызывая внешнего цикла обращения оперативной памяти;
S-состояние – строка присутствует в кэше этого процессо- ра и потенциально может присутствовать в кэшах других про­цессоров (копия в памяти действительна); запись в нее должна сопровождаться сквозной записью в основную память, что по­влечет аннулирование соответствующих строк в других кэшах;
I-состояние – строка отсутствует в кэше, ее чтение может привести к генерации цикла заполнения строки; запись в нее будет сквозной и выйдет на внешнюю шину.
В процессорах шестого поколения в связи с их «беспоря­дочностью» и «спекулятивностью» обращения к памяти могут производиться с различными методами повышения эффективно­сти. По возможностям кэширования память можно классифици­ровать следующим образом [13]:
некэшируемая память UС (Uncacheable). Все обращения процессора по чтению и записи выполняются строго в порядке, предписанном программным кодом, и выходят на системную шину. Никакие спекулятивные чтения и предварительные вы­борки не используются. Такой тип требуется для ввода-вывода, отображенного на память. Работа процессора в этом режиме с обычным ОЗУ приведет к значительному снижению производи­тельности;
105
память с комбинируемой записью WC (Write Combining).
Некэшируемая память, когерентность памяти не поддерживаются протоколом шины. Спекулятивное чтение допустимо, записи мо­гут комбинироваться и откладываться до любого события, вызы­вающего сериализацию (инструкция CPUID
– обращение к не­кэшируемой памяти, прерывание и др.). Такой тип применим, например, для видеопамяти графического адаптера (порядок за­писей не важен);
память со сквозной записью WT (Write-through). Кэши­руемая память, все операции записи и отражаются в кэше, и вы­ходят на системную шину. Чтения по возможности выполняют­ся из кэша, кэш-промахи вызывают заполнение строк кэша. Спекулятивное чтение и комбинирование записей разрешено. Данный тип применим, например, для буферов кадров, а также для памяти, к которой могут обращаться устройства, подклю­ченные к шине и не поддерживающие протоколов обеспечения когерентности;
память с обратной записью WB (Write-back). Кэшируемая память, все операции чтения и записи по возможности выполня­ются только с кэш-памятью. Запись на системную шину выхо­дит только при необходимости освобождения строк или по тре­бованию от других абонентов шины, что уменьшает необяза­тельный трафик шины. Спекулятивное чтение и комбинирова­ние записи разрешено. Этот тип самый производительный, но требует поддержки протокола обеспечения когерентности от всех абонентов шины, обращающихся к данной области памяти;
память с защищенной записью WP (Write protected). Кэ­шируемая память, операции чтения по возможности выполня­ются из кэша, промахи вызывают заполнение строк. Записи вы­ходят на системную шину и вызывают аннулирование строк в кэшах всех остальных абонентов шины (процессоров).
Доступные методы кэширования зависят от возможностей процессора. Базовые методы (сквозная и обратная запись или отмена кэширования) управляются атрибутами системы управ­ления страничной переадресации, более совершенные методы программируются только через регистры MTRR (Memory Type Range Registers – регистры, описывающие свойства областей
106
памяти) или PAT (Page Attribute Table – таблица атрибутов стра­ниц памяти), имеющиеся в процессоре.
Вопросы для самопроверки
1. Назовите основные принципы фон-неймановской архи-
тектуры вычислительных машин.
2. Что такое LH-порядок следования байт?
3. Расскажите, как переводить числа из одной системы ис-
числения в другую.
4. В чем отличие ячеек памяти, портов ввода-вывода и ре-
гистров?
5. Как строится адресация ячеек памяти в реальном режиме?
6. Опишите распределение оперативной памяти в MS DOS.
7. Опишите распределение оперативной памяти в Windows 9x.
8. Опишите распределение оперативной памяти в Windows NT.
9. Что такое Conventional memory?
10. Приведите структуру UMA.
11. Что такое HMA?
12. В чем отличие EMS и XMS спецификаций?
13. В чем отличие Shadow ROM и Shadow RAM?
14. Опишите принцип работы виртуальной памяти.
15. Как осуществляется переключение задач в ОС Windows
и работа виртуальных машин?
16. Как строится адресация ячеек памяти в защищенном
режиме?
17. Что такое стек?
18. Расскажите о механизме кэширования памяти.
107
4. УПРАВЛЕНИЕ ВНЕШНЕЙ ПАМЯТЬЮ И ФАЙЛОВЫЕ СИСТЕМЫ
4.1 Характеристика устройств внешней памяти
4.1.1 Общие свойства устройств внешней памяти
К внешней памяти компьютера относятся устройства хра­нения данных, позволяющие сохранять и накапливать информа­цию для последующего ее использования независимо от состоя­ния компьютера (включен или выключен). В устройствах хране­ния данных могут быть реализованы различные физические принципы хранения информации – магнитный, оптический, электронный – в любых их сочетаниях.
В состав внешней памяти компьютера входят:
- накопители на жестких магнитных дисках;
- накопители на гибких магнитных дисках;
- накопители на магнито-оптических компакт-дисках;
- накопители на магнитной ленте (стримеры) и др.
Внешняя память принципиально отличается от внутренней (оперативной, постоянной и специальной) способом доступа
процессора (исполняемой программы) к тому или другому виду памяти. Устройства внешней памяти оперируют блоками ин­формации, но никак не байтами или словами, как, например, опе­ративная память. Блоки обычно имеют фиксированный размер, кратный степени числа 2. Блок может быть переписан из внут­ренней памяти во внешнюю или обратно только целиком, и для выполнения любой операции обмена с внешней памятью требу­ется специальная процедура (подпрограмма). Процедуры обме­на с устройствами внешней памяти привязаны к типу устройства, его контроллеру и способу подключения устройства к системе (интерфейсу).
По методу доступа к информации устройства внешней па- мяти разделяются на устройства с прямым (или непосредствен­ным) и последовательным доступом [12]. Прямой доступ (direct access) подразумевает возможность обращения к блокам по их адресам в произвольном порядке. Традиционными устройства­ми с прямым доступом являются дисковые накопители, и часто
108
в понятие «диск», или дисковое устройство» (disk device), вкла­дывают значение «устройство внешней памяти прямого досту­па». Так, например, виртуальный диск в ОЗУ и электронный диск на флэш-памяти отнюдь не имеют круглых, а тем более вращающихся деталей. Традиционными устройствами с после­довательным доступом являются накопители на магнитной ленте (tape device), они же стримеры. Здесь каждый блок
инфор-
мации тоже может иметь свой адрес, но для обращения к нему уст­ройство хранения должно сначала найти некоторый маркер начала ленты (тома), после чего последовательным холостым чтением блока за блоком дойти до требуемого места и только тогда произ­водить собственно операции обмена данными. Конечно, каждый раз возвращаться на начало ленты необязательно, однако необхо­димость последовательного сканирования блоков (вперед или на­зад) – неотъемлемое свойство устройств последовательного досту­па. Несмотря на очевидный проигрыш во времени доступа к тре­буемым данным, ленточные устройства последовательного досту­па в качестве внешней памяти находят применение для хранения очень больших массивов информации. В отличие от них устройст­ва прямого доступа – диски самой различной природы – являются обязательной принадлежностью подавляющего большинства компьютеров.
4.1.2 Основные характеристики устройств внешней
памяти
Главная характеристика устройств – емкость хранения (capaci-ty), измеряемая в килобайтах (Кбайт), мегабайтах (Мбайт), гигабайтах (Гбайт) и терабайтах (Тбайт), или в англий-
ской транскрипции – KB, MB, GB, ТВ соответственно. Здесь, как правило, приставки кило-, мега-, гига-, тера- имеют десятичные значения – 103, 106, 109 и 1012 соответственно. В других подсис­темах компьютера, например при определении объема ОЗУ, ПЗУ и другой внутренней памяти, эти же приставки чаще при­меняют в двоичных значениях 210, 220, 230 и 240 соответст­венно, при этом 1 Кбайт равен 1024 байтам, 1 Мбайт – 1024 Кбайт, 1 Гбайт – 1024 Мбайт, 1 Тбайт – 1024 Гбайт [12]. Этими разночтениями объясняются различия значений емкости одного и
109
того же устройства, полученные из разных источников. «Двоич­ные» кило-, мега-, гига-, тера- более «увесисты», поэтому ем­кость устройства, отраженная в десятичных единицах, будет выглядеть внушительнее. Например, до недавнего времени один и тот же порог «беспроблемного» объема жесткого диска со­ставлял 528 Мбайт (десятичных) или 504 Мбайт (двоичных).
Устройства внешней памяти могут иметь сменные или фик­сированные носители информации. Применение сменных носи­телей (remo-vable media) позволяет хранить неограниченный объем информации, а если носитель и формат записи стандарти­зованы, то они позволяют еще и обмениваться информацией между компьютерами. Существуют устройства с автоматиче­ской сменой носителя – ленточные карусели, дисковые устрой­ства (JukeBox). Эти достаточно дорогие устройства применяют в мощных файл-серверах. Для настольных машин имеются нако­пители CD-ROM с несколькими дисками (CD-changer), сменяе­мыми автоматически.
Важнейшими общими параметрами устройств являются время доступа, скорость передачи данных, удельная стоимость хранения информации, скорость записи и считывания.
Время доступа (access time) определяется как усредненный интервал времени от выдачи запроса на передачу блока данных до фактического начала передачи. Дисковые устройства имеют время доступа от единиц до сотен миллисекунд. Для электронных устройств внешней памяти время доступа определяется быстро­действием используемых микросхем памяти и при чтении со­ставляет доли микросекунд, причем запись может продолжаться значительно дольше, что объясняется природой энергонезависи­мой электронной памяти. Для устройств с подвижными носите­лями основной расход времени имеет место в процессе пози­ционирования головок (seek time – время поиска) и ожидания подхода к ним требуемого участка носителей (latency – скрытый период). Для дисковых и ленточных устройств принципы пози­ционирования различны, и различные составляющие процесса поиска будут подробнее рассмотрены в описании соответст­вующих устройств.
Скорость записи и считывания определяется как отноше­ние объема записываемых или считываемых данных ко времени,
110
затрачиваемому на эту операцию. В затраты времени входит и время доступа, и время передачи данных. При этом оговаривает­ся характер запросов (линейный или случайный), что сильно ска­зывается на величине скорости из-за влияния времени доступа. При определении скорости линейных запросов чтения-записи (linear transfer rate read/write) производится обращение к длин­ной цепочке блоков с последовательным нарастанием адреса. При определении скорости случайных запросов чтения-записи (random transfer rate read/write) соседние запросы разбросаны по всему носителю, что увеличивает время записи или считывания. Для современных многозадачных ОС характерно чередующееся выполнение нескольких потоков запросов, и в каждом потоке высока вероятность последовательного нарастания адреса.
Скорость передачи данных (Transfer Speed, Transfer Rate)
определяется как производительность обмена данными после выполнения поиска данных. Однако в способе измерения этого параметра возможны разночтения, поскольку современные уст­ройства имеют в своем составе буферную память
6
существенных
размеров. Скорости обмена буферной памяти с собственно носи­телем (внутренняя скорость) и внешним интерфейсом могут существенно различаться. Если скорость работы внешнего ин­терфейса ограничивается быстродействием электронных схем и достижимой частотой передаваемых сигналов, то внутренняя скорость более жестко ограничивается возможностями электро­механических устройств (скоростью движения носителя и плот­ностью записи). При измерениях скорости передачи на неболь­ших объемах пересылок проявится ограничение внешнего ин­терфейса буферной памяти, при средних объемах – ограничение внутренней скорости, а при больших объемах проявится еще и время поиска последующих блоков информации. Бывает, что в качестве скорости передачи данных указывают лишь макси­мальную скорость интерфейса, а о внутренней скорости можно судить по частоте вращения дисковых носителей и числу секто­ров на треке, но об этих понятиях будет сказано чуть позже.
6
Буферной памятью называется объект памяти, которым владеют
одновременно два объекта, не связанные между собой.