Главная страница
Навигация по странице:

  • 1.2.2 Структура хранилища

  • ОПРЕДЕЛЕНИЯ И ОБОЗНАЧЕНИЯ ХРАНЕНИЯ

  • 1.2.3 Структура ввода / вывода

  • 1.3 Архитектура компьютерной системы

  • 1.3.1. Однопроцессорные системы

  • 1.3.2 Многопроцессорные системы

  • Глава 1. Введение. Концепция операционных систем


    Скачать 0.54 Mb.
    НазваниеКонцепция операционных систем
    Анкорdmaster
    Дата13.10.2022
    Размер0.54 Mb.
    Формат файлаdocx
    Имя файлаГлава 1. Введение.docx
    ТипДокументы
    #731212
    страница3 из 7
    1   2   3   4   5   6   7

    Рисунок 1.5 Таблица векторов событий процессора Intel.

    Механизм прерываний также реализует систему уровней приоритета прерываний. Они позволяют ЦПУ откладывать обработку прерываний с низким приоритетом без маскирования всех прерываний и позволяют прерыванию с высоким приоритетом предупреждать выполнение прерывания с низким приоритетом. Таким образом, прерывания используются во всех современных операционных системах для обработки синхронных событий (и для других целей, которые будут проходить через текст).

    Контроллеры устройств и аппаратные сбои вызывают прерывания. Чтобы в первую очередь выполнить самую неотложную работу, современные компьютеры используют систему приоритетов прерываний. Поскольку прерывания используются так интенсивно для обработки, чувствительной ко времени, эффективная обработка прерываний необходима для хорошей производительности системы.

    1.2.2 Структура хранилища CPU может загружать инструкции только из памяти, поэтому любые программы должны быть сначала загружены в память для запуска. Компьютеры общего назначения запускают большинство своих программ из перезаписываемой памяти, называемой основной памятью (также называемой оперативной памятью или ОЗУ). Основная память обычно реализуется в полупроводниковой технологии, называемой динамической оперативной памятью (DRAM). Компьютеры используют и другие формы памяти. Например, первая программа, запускаемая при включении компьютера, - это программа начальной загрузки, которая затем загружает операционную систему. Поскольку оперативная память нестабильна - теряет свой контент, когда питание отключается или иным образом теряется - мы не можем доверять ей, чтобы она удерживала программу начальной загрузки. Вместо этого для этой и некоторых других целей компьютер использует электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ) и другие формы фирменного хранения - хранилище, которое редко записывается и является энергонезависимым.

    Большинство процессоров имеют две строки запроса прерывания. Одним из них является немаскируемое прерывание, которое зарезервировано для таких событий, как неисправимые ошибки памяти. Вторая строка прерывания маскируется: она может быть отключена ЦПУ до выполнения критических последовательностей команд, которые не должны прерываться. Маскируемое прерывание используется контроллерами устройств для запроса обслуживания. Напомним, что целью механизма исправленных прерываний является необходимость в едином обработчике прерываний для поиска всех возможных источников прерываний, чтобы определить, какой из них нуждается в обслуживании. Однако на практике компьютеры имеют больше устройств (и, следовательно, обработчиков прерываний), чем элементов адреса в векторе прерываний. Распространенным способом решения этой проблемы является использование цепочки прерываний, в которой каждый элемент в векторе прерываний указывает на заголовок списка обработчиков прерываний. Когда возникает прерывание, обработчики в соответствующем списке вызываются один за другим, пока не будет найден один, который сможет обслуживать запрос. Эта структура является компромиссом между издержками огромной таблицы прерываний и эффективностью диспетчеризации одного обработчика прерываний.

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

    ОПРЕДЕЛЕНИЯ И ОБОЗНАЧЕНИЯ ХРАНЕНИЯ

    Основной единицей хранения компьютера является бит. Бит может содержать одно из двух значений, 0 и 1. Все остальное хранилище на компьютере является базой для софтбитов коллекции. Учитывая наличие достаточно большого количества битов, неудивительно, сколько всего компьютер может представлять: цифры, буквы, изображения, фильмы, звуки, документы и программы и многое другое. Байт составляет 8 бит, и на большинстве компьютеров это наименьший удобный кусок памяти. Например, на большинстве компьютеров нет инструкции по перемещению битов, но есть инструкция по перемещению байта. Менее распространенным термином является слово, которое является родной единицей данных компьютерной архитектуры. Слово состоит из одного или нескольких байтов. Например, компьютер, имеющий 64-битные регистры и 64-битную адресацию памяти, обычно имеет 64-битные (8-байтовые) слова. Компьютер выполняет много операций в своем собственном размере слова, а не в байтах одновременно. Компьютерное хранилище, наряду с большей пропускной способностью компьютера, обычно измеряется и обрабатывается в байтах и ​​наборах байтов, килобайты, или KB, составляет 1024 байта; мегабайт, или МБ, составляет 10242 байта; гигабайт, или ГБ, равен 1 0243 байта, а терабайт, или ТБ, равен 1 0244 байта; и петабайт, или PB, составляет 1,0245 байтов. Производители компьютеров часто округляют эти цифры и говорят, что мегабайт составляет 1 миллион байтов, а гигабайт - 1 миллиард байтов. Сетевые измерения являются исключением из этого общего правила; они даны в битах (потому что сети перемещают данные по битам за раз).

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

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

    2. Главная память, как упоминалось выше, поток данных является летучей - он ​​теряет свое содержание, когда питание отключено или иным образом потеряно. Таким образом, большинство компьютерных систем предоставляют вторичное хранилище как расширение основной памяти. Основным требованием для второго хранилища данных является возможность постоянного хранения больших объемов данных. Наиболее распространенными устройствами вторичного хранения являются жесткие диски (hard-disk drives HDD) и устройства энергонезависимой памяти (nonvolatile memory - NVM), которые обеспечивают хранение как программ, так и данных. Большинство программ (системы и приложения) хранятся во вторичном хранилище, пока они не загружены в память. Многие программы используют вторичное хранилище как в качестве источника, так и места назначения их обработки. Вторичное хранилище также намного медленнее, чем основная память. Следовательно, правильное управление вторичным хранилищем имеет центральное значение для компьютерной системы, как мы обсуждаем в главе 11. Однако в более широком смысле структура хранилища, которую мы описали, - состоящая из регистров, основной памяти и вторичного хранилища - это только одна из многих возможных конструкций систем хранения. Другие возможные компоненты включают в себя кэш-память, CD-ROM или Blu-Ray, магнитные ленты и так далее. Те, которые являются достаточно медленными и достаточно большими, чтобы использовать их только для специальных целей - например, для хранения резервных копий материалов, хранящихся на других устройствах, - называются третичным хранилищем. Каждая система хранения обеспечивает основные функции хранения данных и их хранения до тех пор, пока они не будут получены позднее. Основные их отличия состоят в вариативности системы от скорости, размера и изменчивости. Широкое разнообразие систем хранения может быть организовано по иерархии (рисунок 1.6) в зависимости от емкости хранилища и времени доступа. Как правило, существует компромисс между размером и скоростью, когда память меньше и быстрее, ближе к процессору. Как показано на рисунке, помимо различий в скорости и емкости, различные системы хранения являются либо энергозависимыми, либо энергонезависимыми. Энергозависимое хранилище, как упоминалось ранее, теряет свое содержимое при отключении питания устройства, поэтому данные должны быть записаны в энергонезависимое хранилище для безопасного хранения. Четыре верхних уровня памяти на рисунке построены с использованием полупроводниковой памяти, которая состоит из электронных схем на основе полупроводников. Устройства NVM на четвертом уровне имеют несколько вариантов, но в целом они работают быстрее, чем жесткие диски. Наиболее распространенными для устройств mofNVM являются флэш-память, которая популярна в мобильных устройствах, таких как смартфоны и планшеты. Флэш-память все чаще используется для долговременного хранения на ноутбуках, настольных компьютерах и серверах. Поскольку хранилище играет важную роль в структуре операционной системы, мы будем часто ссылаться на него в тексте. В общем, мы будем использовать следующую терминологию:

    Энергозависимое хранилище будет упоминаться просто как память. Если нам нужно выделить определенный тип устройства хранения (например, регистр), мы сделаем это явно.

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

    • Механический. Несколько примеров такой системы хранения - это жесткие диски, оптические диски, голографическая память и магнитная лента. Если нам нужно выделить конкретный тип механического запоминающего устройства (например, магнитную ленту), мы сделаем это явно.

    • Электротехника. Несколько примеров таких систем хранения: флэш-память, FRAM, NRAM и SSD. Накопитель электроэнергии будет называться NVM.

    Если нам нужно выделить конкретный тип устройства хранения электроэнергии (например, SSD), мы сделаем это явно. Механическое хранилище, как правило, больше и дешевле на каждый байт, чем электрическое хранилище. И наоборот, электрическое хранилище обычно дороже, меньше и быстрее, чем механическое хранилище.

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

    1.2.3 Структура ввода / вывода Большая часть кода операционной системы предназначена для управления вводом / выводом, как из-за его важности для надежности и производительности системы, так и из-за различной природы устройств. Напомним в начале этого раздела, что универсальная компьютерная система состоит из нескольких устройств, каждое из которых обменивается данными через общую шину. Форма ввода-вывода на основе прерываний, описанная в разделе 1.2.1, подходит для перемещения небольших объемов данных, но может привести к высоким издержкам при использовании для перемещения больших объемов данных, таких как ввод-вывод NVS. Для решения этой проблемы используется прямой доступ к памяти (direct memory access - DMA). После настройки буферов, указателей и счетчиков для устройства ввода / вывода контроллер устройства передает весь блок данных непосредственно на устройство или из него и в основную память без вмешательства ЦП. Только один сгенерированный прерыватель блокирует, чтобы сказать, что устройство, которое работает, завершило свою работу, а не установка только одного прерывания, сгенерированное для низкоскоростных устройств. Пока контроллер устройства выполняет эти операции, ЦПУ доступен для выполнения другой работы. Некоторые высокопроизводительные системы используют коммутатор, а не архитектуру шины. В этих системах несколько компонентов могут взаимодействовать с другими компонентами одновременно, а не конкурировать за циклы на общей шине. В этом случае DMA даже более эффективен. Рисунок 1.7 показывает взаимодействие всех компонентов компьютерной системы.

    1.3 Архитектура компьютерной системы

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

    1.3.1. Однопроцессорные системы Много лет назад в большинстве компьютерных систем использовался один процессор, содержащий один процессор с одним ядром обработки. Ядро - это компонент, который выполняет инструкции и регистрирует для локального сохранения данных. Один из основных компонентов ЦПУ, с его ядром, способен выполнять набор команд общего назначения, включая инструкции из процессов. Эти системы также имеют другие специальные процессы. Они могут быть в форме специфичных для устройства процессоров, таких как дисковые, клавиатурные и графические контроллеры. Все эти специализированные процессоры выполняют ограниченный набор команд и не запускают процессы. Иногда ими управляет операционная система, в которой операционная система отправляет информацию о своей следующей задаче и контролирует их состояние. Например, микропроцессор дискового контроллера получает последовательность запросов от основного ядра ЦП и реализует свою собственную очередь диска и алгоритм планирования. Такое расположение освобождает основной ЦП от накладных расходов по расписанию. ПК содержат микропроцессор в клавиатуре для преобразования нажатий клавиш в коды для отправки в ЦП. В других системах или обстоятельствах процессоры специального назначения представляют собой компоненты нижнего уровня, встроенные в аппаратные средства. Операционная система не может обмениваться данными с этими процессорами, они работают автономно. Использование микропроцессоров специального назначения является обычным делом и не включает в себя однопроцессорные системы для многопроцессорных систем.

    1.3.2 Многопроцессорные системы На современных компьютерах, от мобильных устройств до серверов, многопроцессорные системы в настоящее время доминируют в вычислительной среде. Традиционно такие системы имеют два (или более) процессора, каждый с одноядерным процессором. Процессоры разделяют компьютерную шину, а иногда и часы, память и периферийные устройства. Основным преимуществом многопроцессорных систем является повышенная пропускная способность. То есть, увеличивая количество процессоров, мы ожидаем, что получим больше работы за меньшее время. Тем не менее, коэффициент ускорения для N процессоров не равен N, он меньше N, так как несколько процессоров работают совместно, поэтому определенное количество процессоров приходится на обеспечение правильной работе всех частей компьютера. Эти издержки плюс конкуренция за общие ресурсы снижают ожидаемую прибыль от дополнительных процессоров. В наиболее распространенных многопроцессорных системах используется симметричная многопроцессорная обработка (symmetric multiprocessing - SMP), в которой каждый одноранговый процессор выполняет все задачи, включая функции операционной системы и пользовательские процессы. Рисунок 1.8 иллюстрирует типичную архитектуру SMP с двумя процессорами, каждый из которых имеет свой собственный процессор. Обратите внимание, что каждый процессор ЦП имеет свой собственный набор регистров, а также частный или локальный кэш. Однако все процессоры разделяют физическую память по системной шине. Преимущество этой модели заключается в том, что многие процессы могут выполняться одновременно - N процессов могут работать, если имеется N процессоров - без значительного снижения производительности. Однако, поскольку процессоры разделены, один может бездействовать, а другой будет перегружен, что приводит к неэффективности. Этой неэффективности можно избежать, если процессоры совместно используют определенные структуры данных. Многопроцессорная система этой формы позволит процессам и ресурсам, таким как память, динамически распределяться между различными процессорами, и может снизить дисперсию рабочей нагрузки между процессорами. Такая система должна быть написана тщательно, как мы увидим в главе 5 и главе 6. Определение многопроцессорной системы развивалось с течением времени и теперь включает в себя многоядерные системы, в состав которых входит несколько вычислительных ядер по одной и той же микросхеме. Многоядерные системы могут быть более эффективными, чем несколько чипов с одноядерными процессорами, потому что обмен данными внутри кристалла происходит быстрее, чем обмен между кристаллами.


    1   2   3   4   5   6   7


    написать администратору сайта