Успешно изучив материал, вы будете знать:
что такое процесс;
что такое поток;
что такое устройства ввода-вывода;
что такое прерывание;
что такое виртуальная память.
После изучения данной темы Вы будете уметь:
определять тип устройства ввода-вывода;
различать процессы и потоки;
определять допустимый объем виртуальной памяти.
После изучения материала Вы будете обладать навыками:
классификации устройств ввода-вывода по различным критериям;
диагностики компонентов аппаратных платформ на предмет выявления и устранения конфликтов.
Одним из важнейших понятий операционных систем является понятие процесса.
Процесс — программа, которая в данный момент выполняется вычислительной машиной.
Каждому процессу выделяется отдельный, изолированный от других, сегмент памяти, который называется адресным пространством процесса. В адресном пространстве процесса, кроме самого процесса, также хранятся входные и выходные данные процесса. В многозадачной операционной системе все процессы выполняются по очереди таким образом, что в каждый момент времени выполняется только один процесс. Для обеспечения корректной работы процессов необходимо отслеживать состояние каждого процесса, чтобы возобновлять его выполнение с того момента, где в последний раз процесс был остановлен.
Кроме состояния процесса необходимо также отслеживать информацию об используемых им ресурсах. Вся информация о процессах хранится в таблице процессов — массиве структур данных, записями которого является информация по каждому процессу, запущенному в системе. Таблица процессов представляется обычно в виде дерева, потому что большинство процессов, выполняемых на машине, способно порождать дочерние процессы для решения вспомогательных задач, и для каждого процесса необходимо учитывать не только его собственное состояние, но и состояние всех связанных с ним процессов. Каждому процессу назначается два идентификатора, первый из которых указывает на сам процесс, а второй — на процесс, его породивший. Традиционно при загрузке операционной системы запускается некий базовый процесс, который порождает все прочие процессы — как системные, так и пользовательские. Этот процесс реализует главную функцию операционной системы — контроль вычислительных ресурсов. В современных версиях Windows этот процесс называется «System Idle». В UNIX-подобных ОС первый запускаемый процесс называется «init».
Задача планирования процессов заключается в отслеживании их состояния и использования ими вычислительных ресурсов. Как уже упоминалось в теме 1, вычислительный ресурс в каждый конкретный момент времени может быть задействован только одним процессом. Если несколько процессов должны использовать один и тот же ресурс, то они используют его по очереди. Очередность использования определяется приоритетом процесса. Чем выше приоритет процесса, тем чаще он будет получать доступ к требуемым ресурсам.
Каждый процесс представлен как минимум одним потоком.
Поток — последовательность исполняемых команд.
В рамках одного и того же процесса может выполняться несколько разных потоков. Использование нескольких потоков позволяет сократить время исполнения программы. Такой подход удобен, если этапы решения задачи, для которой создавалась программа, можно выполнять параллельно. Потоки обладают некоторыми свойствами процессов. В отличие от процессов, потоки существуют в одном и том же адресном пространстве и могут одновременно работать с выделенными процессу ресурсами.
Устройства ввода-вывода делятся на две категории — блочные и символьные.
Блочные устройства — оперируют блоками данных, размер которых варьируется в зависимости от устройства. Каждый блок в блочном устройстве имеет собственный адрес. Примером блочного устройства может служить любой накопитель. Одним из наиболее важных свойств блочного устройства является возможность независимого доступа к блокам данных.
Символьные устройства — оперируют потоками данных, не имеющими структуры или адреса. Большинство устройств являются символьными.
Устройство ввода-вывода обычно состоит из двух частей — само устройство и его контроллер. Контроллер осуществляет управление работой устройства на физическом уровне. Контроллер выполняется в виде набора микросхем и либо совмещен с устройством, либо установлен на системной плате. Если контроллер установлен на системной плате, то обычно он позволяет работать с двумя и более устройствами данного типа. Примером такого контроллера может служить контроллер накопителей на жестких магнитных дисках, который позволяет работать одновременно с двумя НЖМД. Задачей контроллера является преобразование потока битов в блок байтов. Считываемые биты накапливаются в памяти контроллера, которая называется буфером данных, и затем в виде блоков байтов передаются в оперативную память. Каждый контроллер, помимо буфера, имеет также несколько регистров, посредством которых процессор может управлять работой контроллера.
Существует два альтернативных способа управления контроллерами устройств.
Первый способ заключается в том, что каждому регистру назначается уникальный номер порта ввода-вывода. При таком способе адресное пространство оперативной памяти не пересекается с адресным пространством устройств ввода-вывода.
Второй способ заключается в выделении каждому регистру отдельного сегмента оперативной памяти. Преимущество второго способа в том, что для программирования работы устройств не нужно прибегать к машинным языкам, а также в том, что при таком подходе для защиты от несанкционированного доступа к устройствам достаточно исключить часть адресного пространства устройств ввода-вывода из блока адресов памяти, доступных пользователям. Недостаток этого подхода в том, что для его реализации необходимо использование более сложной аппаратуры. Повышение сложности аппаратуры обуславливается тем фактором, что некоторые приемы, используемые для ускорения работы с памятью, могут привести к катастрофическим последствиям при использовании их с устройствами ввода-вывода.
Для ускорения обмена данными между процессором и устройствами используется механизм прямого доступа к памяти (DMA). Контроллер DMA обеспечивает чтение данных с устройства в память и запись данных из памяти на устройство. В общих чертах механизм DMA работает следующим образом: когда процессу требуется прочитать или записать данные на устройство ввода-вывода, процессор программирует контроллер DMA на выполнение необходимой операции, сообщая ему, с каким устройством необходимо выполнить требуемую операцию и по какому адресу в памяти размещаются данные. До тех пор пока контроллер выполняет операцию, процессор может выполнять другие процессы. Когда контроллер DMA завершает порученную ему задачу, он посылает процессору сигнал о том, что операция завершена, после чего процессор приостанавливает выполнение текущей задачи и начинает выполнять тот процесс, который затребовал ввод-вывод данных.
Прерывание — это сигнал процессору о том, что ему необходимо прервать выполнение текущего процесса и вызвать обработчик прерывания.
Обработчик прерывания — это программа, которую процессор должен выполнить при возникновении прерывания. Обработчик прерывания является частью драйвера устройства. Драйвер устройства
обеспечивает взаимодействие устройства с операционной системой. В состав операционной системы включен набор стандартных драйверов для поддержки различного оборудования, которое может быть подключено к компьютеру. Если подключаемое устройство обладает какими-либо функциями, которые недоступны операционной системе при использовании стандартного драйвера для данного типа оборудования, то такое устройство, как правило, снабжено собственным драйвером, который устанавливается при первом использовании устройства.
Виртуальная память (swap) — такой метод работы с памятью, когда в оперативной памяти хранятся только те части программы, которые используются в конкретный момент времени.
Все прочие части программы, равно как и данные, хранятся на диске. Этот способ организации памяти позволяет выполнять программы, чей суммарный объем вместе с данными может превышать объем доступной физической памяти. Большинство систем виртуальной памяти используют механизм страничной организации памяти. Вся доступная память разбивается на страничные блоки фиксированного объема. Место для хранения страниц на жестких дисках должно быть выделено заранее. Временное хранение страниц виртуальной памяти обеспечивает специальный файл, размещающийся на одном или нескольких дисках компьютера, — файл подкачки
. При обращении к какой-либо ячейке памяти запрос сначала передается диспетчеру памяти, который преобразовывает виртуальный адрес в реальный и передает полученный адрес на шину, который затем обрабатывается надлежащим образом. Объем виртуальной памяти регулируется пользователем.
Основные выводы
Процесс — это программа, выполняемая на процессоре, плюс обрабатываемые данные.
Каждый процесс состоит как минимум из одного потока.
Задача, решаемая многопоточным процессом, решается быстрее, чем однопоточным.
Устройства ввода-вывода бывают символьные и блочные. Блочное устройство позволяет работать одновременно с несколькими блоками данных.
Для работы с устройствами ввода-вывода используются механизм прямого доступа к памяти и прерывания.
Драйвер устройства необходим операционной системе для того, чтобы осуществлять взаимодействие с данным видом устройств.
Механизм виртуальной памяти позволяет выполнять программы, которые требуют больше физической памяти, чем есть на компьютере.
Контрольные вопросы
Верно ли утверждение, что процессы, в отличие от потоков, выполняются в од-ном и том же адресном пространстве?
В чем разница между процессом и потоком?
Каков принцип работы блочного устройства ввода-вывода?
Каков принцип работы символьного устройства ввода-вывода?
В чем заключается задача контроллера устройства?
Почему механизм прямого доступа к памяти повышает производительность компьютера?
Является ли обработчик прерывания частью драйвера устройства?
Каким образом можно выполнить программу, размер которой превышает объем доступной физической памяти?
Задания для самостоятельной работы
Выполните задания к теме 2 в тетради-практикуме.