Материал: OS_REDACTED_БИЛЕТЫ

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
  1. Проведите обзор аппаратного обеспечения пк

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

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

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

Верхний уровень состоит из внутренних регистров процессора, они не уступают ЦП в быстродействии

Затем следует кэш-память, которая управляется главным образом аппаратурой. Оперативная память разделяется на кэш-строки, обычно по 64 байт, с адресами от 0 до 63 в кэш-строке 0, адресами от 64 до 127 в кэш-строке 1 и т. д.

Следующей в иерархии идет оперативная память. Это главная рабочая область системы памяти машины. ОП часто называют оперативным запоминающим устройством (ОЗУ), или памятью с произвольным доступом (Random Access Memory (RAM)).

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

Изначально в памяти присутствует только процесс A. Затем создаются или появляются в памяти путем свопинга с диска процессы B и C. На рис. г процесс A за счет свопинга выгружается на диск. Затем появляется процесс D и выгружается из памяти процесс B. И наконец, снова появляется в памяти процесс A. Поскольку теперь процесс A находится в другом месте, содержащиеся в нем адреса должны быть перестроены либо программным путем, при загрузке в процессе свопинга, либо (скорее всего) аппаратным путем в процессе выполнения программы. Когда в результате свопинга в памяти создаются несколько свободных областей, их можно объединить в одну большую за счет перемещения при первой же возможности всех процессов в нижние адреса. Эта технология известна как уплотнение памяти.

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

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

При использовании битовых матриц память делится на единичные блоки размером от нескольких слов до нескольких килобайт. С каждым единичным блоком соотносится один бит в битовой матрице, который содержит 0, если единичный блок свободен, и 1, если он занят (или наоборот).

Важным вопросом является размер единичного блока памяти. Чем меньше блок, тем больше битовая матрица. Но даже с таким небольшим единичным блоком памяти, размер которого равен 4 байта, для 32 бит памяти понадобится 1 бит матрицы. Память, состоящая из 32n бит, будет использовать n бит матрицы, таким образом, битовая матрица займет лишь 1/32 памяти. Если выбран более объемный единичный блок памяти, битовая матрица будет меньше, но тогда в последнем блоке процесса, если он не будет в точности кратен размеру единичного блока, будет впустую теряться довольно существенный объем памяти.

+: простой способ отслеживания слов памяти в фиксированном объеме памяти, поскольку ее размер зависит только от размера памяти и размера единичного блока памяти.

-: поиск в битовой матрице последовательности заданной длины — довольно медленная операция (поскольку последовательность может пересекать границы слов в матрице).

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

Свопинг в предыдущем билете. Если память распределяется в динамическом режиме, то управлять этим должна операционная система. В общих чертах, существуют два способа отслеживания использования памяти: битовые матрицы и списки свободного пространства.

Другим способом отслеживания памяти является ведение связанных списков распределенных и свободных сегментов памяти, где сегмент либо содержит процесс, либо является пустым пространством между двумя процессами. Участок памяти, изображенный на рис. 3.6, а, представлен на рис. 3.6, в, как связанный список сегментов. Каждая запись в списке хранит обозначение, содержит сегмент «дыру» — hole (H) или процесс — process (P), адрес, с которого сегмент начинается, его длину и указатель на следующую запись. В этом примере список сегментов составлен отсортированным по адресам. Преимущество такой сортировки заключается в том, что при завершении процесса или его свопинге на диск упрощается обновление списка. У завершившегося процесса есть, как правило, два соседа (за исключением тех случаев, когда он находился в верхних или нижних адресах памяти). Этими соседями могут быть либо процессы, либо пустые пространства, из чего можно составить четыре комбинации.

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

Когда процессы и пустые пространства содержатся в списке отсортированными по адресам, то для выделения памяти создаваемому процессу (или существующему процессу, загружаемому в результате свопинга с диска) могут быть использованы несколько алгоритмов. Предположим, что диспетчер памяти знает, сколько памяти нужно выделить.

1. «Первое подходящее». Диспетчер памяти сканирует список сегментов до тех пор, пока не найдет пустое пространство подходящего размера. Затем пустое пространство разбивается на две части: одна для процесса и одна для неиспользуемой памяти, за исключением того статистически маловероятного случая, когда процесс в точности помещается в пустое пространство.

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

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

Флеш-память также обычно используется как носитель информации в портативных электронных устройствах.

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

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

Порой речь заходит о таких дисках, которые на самом деле дисками не являются, например о твердотельных накопителях — SSD (Solid State Disks). У них нет движущихся частей, дисковых пластин, а данные хранятся во флеш-памяти. Они напоминают диски только тем, что содержат большой объем данных, который при отключении питания не теряется.

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

              2. Шины. У системы х86 имеется множество шин (например, шина кэш-памяти, шина памяти, а также шины PCIe, PCI, USB, SATA и DMI), каждая из которых имеет свою скорость передачи данных и свое предназначение. Операционная система для осуществления функций настройки и управления должна знать обо всех этих шинах. Основной шиной является PCI (интерфейс периферийных устройств). Шина PCIe была придумана Intel в качестве преемницы. когда данные для передачи имеются сразу у нескольких устройств, для определения устройства, которому будет позволено использовать шину, требуется арбитр.

Шина USB (универсальная последовательная шина) была разработана для подключения к компьютеру всех низкоскоростных устройств ввода-вывода вроде клавиатуры и мыши.

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

              1. Загрузка компьютера. В кратком изложении загрузка компьютера происходит следующим образом. У каждого персонального компьютера есть материнская плата (которую теперь в США в результате распространения политкорректности на компьютерную индустрию называют родительской платой). На материнской плате находится программа, которая называется базовой системой ввода-вывода — BIOS (Basic Input Output System). BIOS содержит низкоуровневое программное обеспечение ввода-вывода, включая процедуры считывания состояния клавиатуры, вывода информации на экран и осуществления, ко всему прочему, дискового ввода-вывода. В наши дни эта программа хранится в энергонезависимой флеш-памяти с произвольным доступом, которая может быть обновлена операционной системой в случае обнаружения в BIOS различных ошибок.

  1. Дайте определение состязательной ситуации, критической области. Поясните механизм работы барьеров и обмена сообщениями

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

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

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

Необходимо соблюдение четырех условий:

1. Два процесса не могут одновременно находиться в своих критических областях.

2. Не должны выстраиваться никакие предположения по поводу скорости или количества центральных процессоров.

3. Никакие процессы, выполняемые за пределами своих КО, не могут блокироваться любым другим процессом.

4. Процессы не должны находиться в вечном ожидании входа в свои КО.

Барьеры и порядок выполнения. Некоторые приложения разбиты на фазы и следуют правилу, согласно которому ни один из процессов не может перейти к следующей фазе, пока все процессы не будут готовы перейти к следующей фазе. Добиться выполнения этого правила можно с помощью барьеров, поставленных в конце каждой фазы. Когда процесс достигает барьера, он блокируется до тех пор, пока этого барьера не достигнут все остальные процессы. Это позволяет синхронизировать группы процессов.

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

Источник: https://studfile.net/preview/16555633/