Файл: Debian Таненбаум Бос.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 47975

Скачиваний: 190

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

46  

 Глава 1. Введение 

никакого отношения к физике, он появился в результате наблюдений одного из со-
учредителей корпорации Intel Гордона Мура (Gordon Moore) за темпами, с которыми 
шло уменьшение размеров транзисторов. Закон Мура соблюдался в течение трех де-
сятилетий и, как ожидается, будет соблюдаться как минимум еще одно десятилетие. 
После этого число атомов в транзисторе станет настолько мало, что дальнейшему 
уменьшению размеров транзистора воспрепятствует усиливающаяся роль законов 
квантовой механики.

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

Следующим очевидным шагом является дублирование не только функциональных 
блоков, но и части управляющей логики. Это свойство, впервые использованное 
в Pentium 4 и названное многопоточностью, или гиперпоточностью (hyperthreading 
по версии Intel), стало неотъемлемой принадлежностью процессора x86 и ряда других 
процессоров, включая SPARC, Power5, Intel Xeon, а также процессоры семейства Intel 
Core. В первом приближении эта технология позволяет процессору сохранять состо-
яние двух различных потоков и переключаться между ними за наносекунды. (Поток 
является разновидностью легковесного процесса, который, в свою очередь, является 
выполняющейся программой; подробности мы рассмотрим в главе 2.) Например, 
если одному из процессов нужно прочитать слово из памяти (что занимает несколько 
тактов), многопоточный процессор может переключиться на другой поток. Многопо-
точность не предлагает настоящей параллельной обработки данных. Одновременно 
работает только один процесс, но время переключения между процессами сведено до 
наносекунд.

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

Кроме процессоров с многопоточностью в настоящее время применяются процессоры, 
имеющие на одном кристалле четыре, восемь и более полноценных процессоров, или 
ядер

. Например, четырехъядерные процессоры (рис. 1.8) фактически имеют в своем 

составе четыре мини-чипа, каждый из которых представляет собой независимый про-
цессор. (Кэши мы рассмотрим чуть позже.) Некоторые процессоры, например Intel 
Xeon Phi и Tilera TilePro, могут похвастаться более чем 60 ядрами на одном кристалле. 
Несомненно, для использования такого многоядерного процессора потребуется много-
процессорная операционная система.


background image

1.3. Обзор аппаратного обеспечения компьютера   

47

Рис. 1.8. Четырехъядерный процессор: а — с общей кэш-памятью второго уровня (L2); 

б — с отдельными блоками кэш-памяти L2

Кстати, с точки зрения абсолютных чисел нет ничего лучше, чем современные графи-
ческие процессоры (Graphics Processing Unit, GPU). На их кристаллах содержатся 
тысячи крохотных ядер. Они очень хорошо подходят для множества небольших про-
изводимых параллельно вычислений, таких как визуализация многоугольников в гра-
фических приложениях. Но для выполнения последовательных задач они не годятся. 
К тому же их трудно программировать. Хотя графические процессоры могут найти 
применение и для операционных систем (например, при кодировании или обработке 
сетевого трафика), не похоже, что на них могла бы запускаться основная часть самой 
операционной системы.

1.3.3. Память

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

Рис. 1.9. Типичная иерархия памяти. Приведенные значения весьма приблизительны


background image

48  

 Глава 1. Введение 

Верхний уровень состоит из внутренних регистров процессора. Они выполнены по 
той же технологии, что и сам процессор, и поэтому не уступают ему в быстродействии. 
Следовательно, к ним нет и задержек доступа. Внутренние регистры обычно предо-
ставляют возможность для хранения 32 × 32 бит для 32-разрядного процессора или 
64 × 64 бит — для 64-разрядного. В обоих случаях этот объем не превышает 1 Кбайт. 
Программы могут сами управлять регистрами (то есть решать, что в них хранить), без 
вмешательства аппаратуры.

Затем следует кэш-память, которая управляется главным образом аппаратурой. Опе-
ративная память разделяется на кэш-строки, обычно по 64 байт, с адресами от 0 до 
63 в кэш-строке 0, адресами от 64 до 127 в кэш-строке 1 и т. д. Наиболее интенсивно 
используемые кэш-строки оперативной памяти сохраняются в высокоскоростной кэш-
памяти, находящейся внутри процессора или очень близко к нему. Когда программе 
нужно считать слово из памяти, аппаратура кэша проверяет, нет ли нужной строки 
в кэш-памяти. Если строка в ней имеется, то происходит результативное обращение 
к кэш-памяти (cache hit — кэш-попадание), запрос удовлетворяется за счет кэш-памяти 
без отправки запроса по шине к оперативной памяти. Обычно результативное обраще-
ние к кэшу занимает по времени два такта. Отсутствие слова в кэш-памяти вынуждает 
обращаться к оперативной памяти, что приводит к существенной потере времени. 
Кэш-память из-за своей высокой стоимости ограничена в объеме. Некоторые маши-
ны имеют два или даже три уровня кэша, причем каждый из последующих медленнее 
и объемнее предыдущего.

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

/home/ast/projects/minix3/src/kernel/clock.c 

в дисковый адрес, по 

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

В любой системе кэширования довольно скоро возникает ряд вопросов.

1.  Когда помещать в кэш новый элемент?

2.  В какую область кэша помещать новый элемент?

3.  Какую запись удалять из кэша, когда необходимо получить в нем свободное про-

странство?

4.  Куда именно в памяти большей емкости помещать только что «выселенный» 

элемент?

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


background image

1.3. Обзор аппаратного обеспечения компьютера   

49

ссылка. Например, при наличии 4096 кэш-строк по 64 байта и 32-разрядных адресов 
биты с 6-го по 17-й могли бы использоваться для определения кэш-строки, а биты с 0-го 
по 5-й — для определения байта в кэш-строке. В этом случае элемент, подлежащий 
удалению, совпадает с тем элементом, в который попадают новые данные, но в других 
системах такой порядок может и не соблюдаться. Наконец, когда кэш-строка перепи-
сывается в оперативную память (если она была изменена в процессе кэширования), 
место в памяти, в которое ее нужно переписать, однозначно определяется адресом, 
фигурирующим в запросе.

Применение кэширования оказалось настолько удачным решением, что многие со-
временные процессоры имеют сразу два уровня кэш-памяти. Первый уровень, или 
кэш L1

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

команды в процессорный механизм исполнения команд. У многих процессоров есть 
и второй кэш L1 для тех слов данных, которые используются особенно интенсивно. 
Обычно каждый из кэшей L1 имеет объем 16 Кбайт. Вдобавок к этому кэшу процессо-
ры часто оснащаются вторым уровнем кэш-памяти, который называется кэш L2 и со-
держит несколько мегабайт недавно использованных слов памяти. Различия между 
кэш-памятью L1 и L2 заключаются во временной диаграмме. Доступ к кэшу первого 
уровня осуществляется без задержек, а доступ к кэшу второго уровня требует задержки 
в один или два такта.

При разработке многоядерных процессоров конструкторам приходится решать, куда 
поместить кэш-память. На рис. 1.8, а показан один кэш L2, совместно использующийся 
всеми ядрами. Такой подход применяется в многоядерных процессорах корпорации 
Intel. Для сравнения на рис. 1.8, б каждое ядро имеет собственную кэш-память L2. 
Именно такой подход применяет компания AMD. Каждый из подходов имеет свои 
аргументы «за» и «против». Например, общая кэш-память L2 корпорации Intel требует 
использования более сложного кэш-контроллера, а избранный AMD путь усложняет 
поддержание согласованного состояния кэш-памяти L2 разных ядер.

Следующей в иерархии, изображенной на рис. 1.9, идет оперативная память. Это глав-
ная рабочая область системы памяти машины. Оперативную память часто называют 
оперативным запоминающим устройством (ОЗУ), или памятью с произвольным до-
ступом (Random Access Memory (RAM)). Ветераны порой называют ее core memory — 
памятью на магнитных сердечниках, поскольку в 1950–1960-е годы в оперативной па-
мяти использовались крошечные намагничиваемые ферритовые сердечники. Прошли 
десятилетия, но название сохраняется. В настоящее время блоки памяти имеют объем 
от сотен мегабайт до нескольких гигабайт, и этот объем стремительно растет. Все за-
просы процессора, которые не могут быть удовлетворены кэш-памятью, направляются 
к оперативной памяти.

Дополнительно к оперативной памяти многие компьютеры оснащены небольшой по 
объему неизменяемой памятью с произвольным доступом — постоянным запоминаю-
щим устройством (ПЗУ), оно же память, предназначенная только для чтения (Read 
Only Memory (ROM)). В отличие от ОЗУ она не утрачивает своего содержимого при 
отключении питания, то есть является энергонезависимой. ПЗУ программируется на 
предприятии-изготовителе и впоследствии не подлежит изменению. Эта разновид-
ность памяти характеризуется высоким быстродействием и дешевизной. На некото-
рых компьютерах в ПЗУ размещается начальный загрузчик, используемый для их 
запуска. Такой же памятью, предназначенной для осуществления низкоуровневого 
управления устройством, оснащаются некоторые контроллеры ввода-вывода.


background image

50  

 Глава 1. Введение 

Существуют также другие разновидности энергонезависимой памяти, которые в от-
личие от ПЗУ могут стираться и перезаписываться, — электрически стираемые про-
граммируемые постоянные запоминающие устройства (ЭСППЗУ), они же EEPROM 
(Electrically Erasable PROM), и флеш-память. Однако запись в них занимает на не-
сколько порядков больше времени, чем запись в ОЗУ, поэтому они используются для 
тех же целей, что и ПЗУ. При этом они обладают еще одним дополнительным свой-
ством — возможностью исправлять ошибки в содержащихся в них программах путем 
перезаписи занимаемых ими участков памяти.

Флеш-память также обычно используется как носитель информации в портативных 
электронных устройствах. Если упомянуть лишь два ее применения, то она служит 
«пленкой» в цифровых фотоаппаратах и «диском» в переносных музыкальных пле-
ерах. По быстродействию флеш-память занимает промежуточное положение между 
ОЗУ и диском. Также, в отличие от дисковой памяти, если флеш-память стирается или 
перезаписывается слишком часто, она приходит в негодность.

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

1.3.4. Диски

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

Жесткий диск состоит из одной или нескольких металлических пластин, вращающихся 
со скоростью 5400, 7200, 10 800 и более оборотов в минуту. Механический привод по-
ворачивается на определенный угол над пластинами, подобно звукоснимателю старого 
проигрывателя виниловых пластинок на 33 оборота в минуту. Информация записыва-
ется на диск в виде последовательности концентрических окружностей. В каждой за-
данной позиции привода каждая из головок может считывать кольцеобразный участок, 
называемый дорожкой. Из совокупности всех дорожек в заданной позиции привода 
составляется цилиндр.

Каждая дорожка поделена на определенное количество секторов, обычно по 512 байт 
на сектор. На современных дисках внешние цилиндры содержат больше секторов, чем 
внутренние. Перемещение привода с одного цилиндра на другой занимает около 1 мс.  
Перемещение к произвольно выбранному цилиндру обычно занимает от 5 до 10 мс 
в зависимости от конкретного накопителя. Когда привод расположен над нужной