Автор работы: Пользователь скрыл имя, 16 Декабря 2012 в 12:09, курс лекций
Программное и аппаратное обеспечение в компьютере работают в неразрывной связи и в непрерывном взаимодействии. Между программами, как и между физическими узлами и блоками существует взаимосвязь – многие программы работают, опираясь на другие программы более низкого уровня. Уровни программного обеспечения (ПО) представляют собой пирамидальную конструкцию. Каждый следующий уровень опирается на программное обеспечение предшествующих уровней (рис.1).
Каждая 32-разрядная программа
Рис. 3. Модель памяти ОС Windows 95/98
Системный код размещается выше границы 2 Гб. Здесь размещаются системные библиотеки DLL (dynamic link library – динамически загружаемый библиотечный модуль), используемые несколькими программами. В микропроцессорах i80x86 имеется четыре уровня защиты (кольца с номерами от 0 до 3). В наиболее привилегированном кольце с номером 0 находится ядро ОС, модули файловой системы, подсистема управления виртуальными машинами, виртуальные драйверы.
Здесь тоже используется плоская модель памяти. В отличии от Windows 95/98 в гораздо большей степени используется ряд серьезных аппаратных средств защиты, имеющихся в микропроцессоре, а также применено принципиально другое логическое распределение адресного пространства. Все системные программные модули и остальные программные модули самой ОС, выступающие как серверные процессы по отношению к прикладным программам (клиентам), находятся в своих собственных виртуальных адресных пространствах и доступ к ним со стороны прикладных программ невозможен. Логическое распределение адресных пространств приведено на рис.4.
Прикладным программам выделяется 2 Гб локального (собственного) пространства от 64 Кб до 2 Гб (первые 64 Кб полностью недоступны). Они изолированы друг от друга, хотя могут общаться через буфер обмена c помощью механизмов DDE – Dynamic Data Exchange (динамический обмен данными) и OLE – Object Linking and Embedding (связь и внедрение объектов).
Между отметками 2 и 4 Гб находятся ядро ОС, планировщик потоков и диспетчер виртуальной памяти VMM (Virtual Memory Manager – выделение памяти, резервирование, освобождение, подкачка).
Рис. 4. Модель распределения виртуальной памяти в Windows NT
Вся виртуальная память в Windows NT подразделяется на классы:
Управление вводом/выводом в операционных системах
Ввод/вывод считается
одной из самых сложных областей
проектирования ОС из-за огромного
числа устройств в/в
Имеется два основных режима ввода-вывода:
Рассмотрим рис.1.
Рис. 1. Управление вводом/выводом
Центральный процессор посылает устройству управления команду выполнить некоторое действие устройству в/в. УУ исполняет команду, транслируя полученный сигналы в сигналы, понятные устройству в/в. Но быстродействие устройства в/в намного меньше быстродействия ЦП. Поэтому сигнал готовности от УУ устройства в/в центральному процессору о том, что операция в/в выполнена и можно подавать новую, приходится ожидать долго. До тех пор, пока сигнал готовности не появится, драйвер внешних устройств ничего не делает, при этом нерационально используется время ЦП. Гораздо более выгодно, подав команду на в/в, на время забыть об устройстве в/в и перейти на выполнение другой команды, а сигнал готовности рассматривать как запрос на прерывание от устройства в/в.
Устройства с последовательным доступом (например, принтер) не допускают совместного использования. Для организации использования многими параллельно выполняющимися задачами устройств в/в, которые не могут быть разделяемыми, вводится понятие виртуальных устройств (SPOOLing – имитация работы с устройством в режиме «он-лайн»). Спулинг создает видимость параллельного разделения устройств в/в с последовательным доступом. Например, вычислительному процессу предоставляется виртуальный принтер, т.е. поток выводимых данных направляется в специальный файл на диске, а затем, когда принтер освободится, выводится содержимое этого спул-файла.
Основные системные таблицы ввода-вывода
Каждая ОС имеет, по-крайней мере, три системных таблицы:
Теперь еще раз, с учетом изложенных принципов и таблиц, рассмотрим процесс управления вводом/выводом (см. рис. 2).
Рис. 2. Процесс управления вводом/выводом
От прикладной программы на супервизор программ поступает запрос на операцию в/в. Он проверяет системный вызов и в случае ошибки возвращает задаче соответствующее сообщение. Если запрос корректен, то он перенаправляется в супервизор ввода/вывода. Последний по логическому имени с помощью таблицы DRT находит соответствующий элемент UCB в таблице оборудования. Если устройство уже занято, то описатель задачи помещается в список задач, ожидающих настоящее устройство. Если же устройство свободно, то супервизор ввода/вывода определяет из UCB тип устройства и при необходимости запускает препроцессор, позволяющий получить последовательность управляющих кодов и данных, которую сможет понять и отработать устройство. Затем управление передается соответствующему драйверу на секцию запуска. Драйвер инициализирует операцию управления, обнуляет счетчик тайм-аута и возвращает управление диспетчеру задач с тем, чтобы он поставил на процессор готовую к исполнению задачу. Система работает своим чередом, но когда устройство в/в отработает посланную ему команду, оно выставляет сигнал запроса на прерывания, по которому через таблицу прерываний управление передается на секцию продолжения. Получив новую команду, устройство вновь начинает ее обрабатывать, а управление процессором опять передается диспетчеру задач, и процессор продолжает полезную работу. Таким образом, получается параллельная обработка задач, на фоне которой процессор осуществляет управление операциями ввода/вывода.
Если имеются специальные аппаратные средства для управления в/в, снимающие эту работу с центрального процессора (каналы прямого доступа к памяти), то в функции ЦП будут по-прежнему все рассмотренные выше шаги, за исключением последнего – непосредственного управления операциями в/в. В случае использования каналов прямого доступа к памяти последние используют канальные программы и разгружают ЦП, избавляя его от непосредственного обмена данными между памятью и внешними устройствами.
Задача, выдавшая запрос на операцию в/в, переводится супервизором в состояние ожидания завершения заказанной операции. Когда супервизор получает от секции завершения сообщение о том, что операция завершилась, он переводит задачу в состояние готовности к выполнению, и она продолжает свою работу. Эта ситуация соответствует синхронному в/в. Он является стандартным для большинства ОС.
Чтобы увеличить скорость выполнения приложений, в мультипрограммных ОС при необходимости используют асинхронный в/в. Простейшим вариантом асинхронного в/в является буферизированный вывод данных на внешнее устройство, при котором данные из приложений передаются не непосредственно на устройство в/в, а в специальный системный буфер. В этом случае логически операция вывода для приложения считается выполненной сразу же, и задача может не ожидать окончания действительного процесса передачи данных на устройство.
Средняя скорость работы процессора с оперативной памятью на 2-3 порядка выше, чем средняя скорость передачи данных на магнитных дисках в оперативную память. Чтобы сгладить такое сильное несоответствие в производительности основных подсистем, используется буферирование и/или кэширование данных. Простейшим вариантом ускорения дисковых операций чтения данных можно считать использование двойного буферирования. Его суть заключается в том, что пока в один буфер заносятся данные с магнитного диска, из второго буфера, ранее считанные данные могут быть прочитаны и переданы запросившей их задаче. Аналогичный процесс происходит и при записи данных. Буферирование используется во всех ОС, но помимо буферирования применяется и кэширование. Кэширование исключительно полезно, когда программа неоднократно читает с диска одни и те же данные. После того как они будут помешены в кэш, обращений к диску больше не потребуется и скорость работы программы значительно возрастет.
Файловая система
Файловая система – это набор спецификаций и соответствующее им программное обеспечение, которые отвечают за создание, уничтожение, организацию, чтение, запись, модификацию и перемещение файловой информации, а также за управление доступом к файлам и за управление ресурсами, которые используются файлами.
Все современные ОС имеют соответствующие системы управления файлами. Система управления файлами является основной (самой видимой) подсистемой в современных ОС, с ее помощью:
В некоторых ОС может быть несколько систем управления файлами, что обеспечивает им возможность работать с несколькими файловыми системами.
Чтобы загрузить с диска саму ОС, а затем с ее помощью организовать работу систему управления файлами, были приняты специальные системные соглашения о структуре диска.
Информация на дисках размещается и передается блоками. Каждый такой блок называется сектором, сектора расположены на концентрических дорожках поверхности диска. Каждая дорожка (track) образуется при вращении диска под зафиксированной в определенном положении головкой чтения/записи. Накопитель на жестких дисках (винчестер – 1973 г.) содержит несколько дисков (часто два или три).
Группы дорожек (треков) одного радиуса, расположенных на поверхностях дисков, образуют цилиндры. Современные диски имеют по несколько десятков тысяч таких цилиндров. 3.5” дискета имеет 80 цилиндров (две рабочие поверхности, 18 секторов на каждой дорожке, каждый сектор 512 байт – 2х80х18х512 = 1 474 560 байт = 1.44 Мбайт).
Каждый сектор состоит из поля данных и поля служебной информации. Размер сектора устанавливается контроллером или драйвером. В большинстве
современных ОС сектор имеет размер 512 байт. Физически адрес сектора на диске определяется триадой [c-h-s], где c – номер цилиндра (дорожки на поверхности диска, cylinder), h – номер рабочей поверхности диска (магнитной головки, head), а s – номер сектора на дорожке (sector).
Информация о работе Программное обеспечение вычислительной системы