Файл: Функции операционных систем персональных компьютеров (Операционные системы, их назначение и структура).pdf

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

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 30.06.2023

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

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

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

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

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

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

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

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

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

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


2.4. Ввод и вывод информации

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

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

Важным свойством блочного устройства является то, что оно способно читать или записывать каждый блок независимо от всех других блоков. Среди наиболее распространенных блочных устройств жесткие диски, приводы Blu-ray-дисков и флэш-накопители USB.

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

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

Устройства ввода-вывода зачастую состоят из механической и электронной составляющих. Зачастую эти две составляющие удается разделить, чтобы получить модульную конструкцию и придать устройству более общий вид. Электронный компонент называется контроллером устройства, или адаптером. На персональных компьютерах он часто присутствует в виде микросхемы на системной плате или печатной платы, вставляемой в слот расширения (PCIe).

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


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

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

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

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

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


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

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

Именно драйвер определяет последовательность команд в зависимости от того, что должно быть сделано.

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

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

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

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


Теперь приступим к изучению некоторых реальных устройств ввода-вывода. Начнем с дисков, в принципе несложных, но очень важных устройств.

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

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

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

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

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

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

Рассмотрим программное обеспечение вывода. Сначала разберемся с простым выводом в текстовое окно, которое обычно предпочитают использовать программисты. Затем рассмотрим графический интерфейс пользователя, предпочитаемый другими пользователями.

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