Файл: Функции операционных систем персональных компьютеров (История операционных систем).pdf
Добавлен: 05.04.2023
Просмотров: 90
Скачиваний: 2
В сравнении с методом распределения памяти фиксированными разделами данный метод обладает гораздо большей гибкостью, но у него имеется серьезный недостаток — фрагментация памяти. Фрагментация — это наличие большого количества несмежных участков свободной памяти маленького размера. Настолько маленького что ни одна из поступивших на выполнение программ не может поместится в одном из этих участков, хотя суммарный объем фрагментов может составить значительный объем, превышающий требуемый.
Один из способов борьбы с фрагментацией это перемещение всех занятых участков в сторону старших или младших адресов, чтобы вся свободная память образовывала единую свободную область. В таком случае ОС, помимо других функций, выполняемых при распределении памяти, должна еще периодически копировать содержимое разделов из одного места в памяти в другое, корректируя таблицы свободных и занятых областей. Эта процедура называется «сжатием». Сжатие может выполняться или при каждом завершении задачи или только тогда, когда для поступившей задачи нет свободного раздела достаточного объема. Не смотря на то что процедура сжатия приводит к более эффективному использованию памяти, она может потребовать значительного времени, что часто превышает преимущества данного метода.
Еще один метод распределения памяти называется страничным распределением. Он заключается в следующем: основная память разбивается на части одинакового и фиксированного для данной системы размера, называемые страницами. Размер страницы выбирается равным степени двойки. Каждый процесс распределен на некоторое количество страниц. Процесс загружается путем загрузки всех его страниц в доступные, но не обязательно последовательные страницы памяти. Для каждой задачи ОС составляет таблицу страниц, содержащую записи обо всех страницах процесса.
Из достоинств данного метода можно выделить возможность работы с виртуальной памятью большого объема и то что он позволяет успешно бороться с фрагментацией физической памяти. Из недостатков относительная сложность реализации.
2.4. Внешние устройства
Одной из важнейших функций операционной системы является управление внешними устройствами ввода-вывода компьютера. ОС должна давать этим устройствам команды, перехватывать прерывания и обрабатывать ошибки. Так же операционной системой должен быть обеспечен простой и удобный интерфейс между устройствами и остальной частью системы. Для достижения независимости от применяемых устройств и их взаимозаменяемости интерфейс должен быть одинаковым для всех устройств, на сколько это возможно. Существенной частью операционной системы является программное обеспечение ввода-вывода.
Каждая операционная система имеет свою подсистему ввода-вывода для управления внешними устройствами. Некоторые программы ввода-вывода являются независимыми от устройств, то есть их можно применить ко многим устройствам ввода-вывода. Другие программы, в которые входят драйверы устройств, предназначены для определенных внешних устройств.
Внешние устройства можно разделить на две категории: блочные устройства и символьные устройства. Блочные устройства — это устройства, хранящие информацию в виде блоков фиксированного размера, у каждого блока есть свой адрес. Важным свойством блочного устройства является то что каждый его блок может быть прочитан независимо от остальных блоков. Символьные внешние устройства принимают или передают поток символов, которые не имеют какой-либо блочной структуры. Как пример символьных устройств можно рассматривать принтеры, сетевые интерфейсы, компьютерные мыши.
Устройства ввода-вывода, как правило, состоят из механической части и электронной. Электронный компонент устройства называется контроллером или адаптером. В персональных компьютерах они зачатую представляются в виде печатной платы, вставляемой в слот расширения. Механический компонент находится в самом устройстве.
Работа контроллера обычно заключается в конвертировании последовательного потока битов в блок байтов и выполнении коррекции ошибок, если это необходимо. Обычно байтовый блок собирается бит за битом в буфере контроллера. Затем проверяется контрольная сумма блока, и, если она совпадает с указанной в заголовке сектора, блок объявляется считаным без ошибок, после чего он копируется в оперативную память.
У каждого устройства есть несколько регистров, с помощью которых с ним может общается центральный процессор. При помощи записи в эти регистры операционная система указывает устройству предоставить данные, принять данные, включится или выключится и т.п. читая из этих регистров, операционная система может узнать состояние устройства, например, готово ли оно к приему новой команды и т.д.
У большинства устройств, помимо управляющих регистров, имеется буфер данных, из которого операционная система может читать данные, а также писать данные в него. К примеру, для отображения пикселей на экране данные обычно помещаются в видеопамять, являющуюся, по сути, буфером данных, доступным операционной системе и другим программам для чтения и записи.
Существует два способа реализации доступа к управляющим регистрам и буферам данных внешних устройств. Первый вариант заключается в том, что каждому управляющему регистру назначается номер порта вывода. При помощи специальной команды процессора центральный процессор может прочитать управляющий регистр устройства из порта в регистр процессора. Аналогично с помощью другой команды центральны процессор может записать содержимое своего регистра в управляющий регистр устройства через порт. При такой схеме адресное пространство оперативной памяти и устройств ввода не пересекается.
Второй подход состоит в отображении всех управляющих регистров внешних устройств на адресное пространство памяти. Каждому управляющему регистру назначается уникальный адрес в памяти. Такая система называется отображаемым на адресное пространство памяти вводом-выводом. Обычно для регистров внешних устройств выделятся старшие адреса адресного пространства.
Так же существуют различные гибридные схемы, с отображаемыми на адресное пространство памяти буферами данных и отдельными портами ввода-вывода. Эта схема довольно широко применяется в современных компьютерах, в которых помимо портов ввода-вывода, адресное пространство оперативной памяти зарезервировано под буфер данных устройств ввода-вывода.
Важнейшая концепция программного обеспечения ввода-вывода известна как независимость от устройств. Это означает возможность написания программ, получающих доступ к любому внешнему устройству, без предварительного указания конкретного устройства. Например, программа читающая данные из входного файла, должна одинаково работать с файлом на дискете, жестком диске или компакт диске, при этом не должны требоваться какие-либо изменения в программе.
Тесно связан с концепцией независимости от устройства принцип однообразности именования. Имя файла или устройства должно быть просто текстовой строкой или целым числом и никоим образом не зависеть от физического устройства. Другой важной составляющей программного обеспечения ввода-вывода является обработка ошибок. Ошибки должны обрабатываться как можно ближе к аппаратуре. Если контроллер обнаружил ошибку чтения, он должен попытаться, если возможно, сам исправить эту ошибку. Если контроллер не может это сделать, тогда ошибку должен обработать драйвер устройства.
Существенная часть операционной системы занимается вводом-выводом. Операция ввода-вывода может выполняться тремя способами.
Во-первых, при помощи программного ввода-вывода, при котором центральный процессор вводит или выводит каждый байт или слово, находясь в цикле ожидания готовности внешнего устройства. Программный ввод-вывод достаточно легко реализуется, но у него есть серьезный недостаток, заключающийся в том, что центральный процессор занимается на все время операции ввода-вывода и большую часть времени он проведет в ожидании. Это является не эффективным способом использования процессорного времени.
Второй способ представляет собой управляемый прерываниями ввод-вывод, при котором центральный процессор начинает передачу ввода-вывода для символа или слова, после чего переключается на другой процесс, прока прерывание от устройства не сообщит ему об окончании операции ввода-вывода. Это прерывание вызывает остановку текущего процесса и сохранение его состояния. Затем запускается процедура обработки прерывания. После обработки прерывания обработчик прерывания предпримет все меры для разблокировки процесса пользователя.
Третий способ заключается в использовании прямого доступа к памяти при котором отдельная микросхема управляет переносом целого блока данных, и инициирует прерывание только после того как закончится операция переноса блока. Фактически, этот метод почти не отличается от программного ввода-вывода, с единственным отличием, что всю работы выполняет контролер прямого доступа к памяти вместо центрального процессора. Однако контроллер прямого доступа к памяти обычно медленнее центрального процессора. Если контроллер прямого доступа к памяти не может поддерживать полную скорость ввода или вывода с внешнего устройства, или у центрального процессора нет других задач во время ожидания прерывания от контроллера прямого доступа к памяти, тогда предпочтительнее будут либо программный способ ввода-вывода, либо способ управляемы прерываниями.
2.5. Пользовательский интерфейс
Для обеспечения взаимодействия пользователя с операционной системой и программами необходим интерфейс. Интерфейс — это способ общения пользователя с персональным компьютером, пользователя с прикладными программами и программ между собой. Интерфейс необходим для удобства управление программным обеспечением компьютера. Интерфейсы могут быть однозадачными и многозадачными, однопользовательскими и многопользовательскими. Между собой интерфейсы отличаются по удобству управления программным обеспечением. Существуют универсальные интерфейсы, допускающие все способы запуска программ.
Интерфейсы различаются по способу взаимодействия с пользователем. Выделяют командный (текстовый) интерфейс и графический интерфейс.
Всякая операционная система имеет командный интерфейс, так называемая командная строка. Это приглашение оболочки обозначающее готовность принимать пользовательские команды.
Взаимодействие с системой через командную строку осуществлялось вводом в неё команд от пользователя системе. Операционная система преобразовывает такие команды в операции, которые выполняются компьютером. После выполнения введённой команды, пользователь получает ответ от системы это либо результат выполнения команды, либо сообщение об ошибке выполнения, либо очередное приглашение на ввод, обозначающее, что команда выполнена и можно вводить следующую команду.
Другим способом взаимодействия пользователя с операционной системой является графический интерфейс пользователя (GUI – Graphics User Interface), так же иногда обозначаемый аббревиатурой — WIMP (Windows, Menu, Pointing Device).
WIMP является отличным примером пользовательского интерфейса, обладающего концептуальной целостностью, достигаемой принятием знакомой модели — метафоры рабочего стола. Из принятой метафоры следует что действия выполняемый пользователем в графическом интерфейсе являются точными аналогиями действий пользователя за «обычным» рабочим столом. Пиктограммы и вложенные папки являются хорошим представлением документов на столе, как и мусорная корзина. Понятия вырезания, копирования и вставки очень хорошо подражают тому как пользователь работает с документами за столом. Графический интерфейс включает в себя следующие понятия — рабочий стол, окна, пиктограммы, элементы графического интерфейса, указывающее устройство.
Принцип работы в графическом интерфейсе можно описать следующим образом: после запуска программа обычно создает окно, с которым она ассоциируется и работает. Работая с окном и находящимся в нем объектами, пользователь посредством операционной системы отправляет программе сообщения, активизирующие необходимые пользователю функции программы. Во время работы, при необходимости, программа так же может создавать другие окна и получать от них сообщения.
Окна представляют собой прямоугольные участки экрана, используемы для отображения данных программы. Пиктограммами называются небольшие символы ли изображения, на которых можно щелкнуть мышью, для вызова какого-либо действия. Меню представляются списками действий, одно из которых может быть выбрано. Указывающее устройство — это манипулятор, используемый для перемещения курсора по экрану и выбора элементов.
Графический интерфейс делает процесс работы с компьютером более естественным и ясным. Значительную роль в этом играет мышь как основной инструмент управления машиной. Во многих случаях для выполнения некоторых, порой достаточно сложных, действий достаточно просто «перетащить и положить» пиктограмму или другой объект с помощью компьютерной мыши.
Основным элементом графического интерфейса является виджет (widget). Виджет — это заготовка части пользовательского интерфейса (кнопка, пункт меню, пиктограмма и т.д.) с параметрами, привязываемая к окну.
2.6. Файловая система
Всем компьютерным приложениям необходимо хранить и получать информацию. Во время работы процесс может хранить ограниченное количество данных в собственном адресном пространстве. Некоторым приложениям этого вполне достаточно, другим одного лишь адресного пространства не хватает. Помимо того, после окончания работы программы информация, находящаяся в его адресном пространстве, теряется. Для большинства приложения критично хранить эту информацию на протяжении длительного времени. Так же, часто возникает потребность нескольким процессам одновременно получить доступ в одним и тем же данным.