Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
НАЗНАЧЕНИЕ СИСТЕМНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (СПО)
СПО предназначено для разработки различных программ и для поддержки работы всего программного обеспечения.
ОС и языки программирования
СПО делится на два основных класса: 1. операционные системы; 2. языки программирования.
ОС называется программный продукт, позволяющий использовать прикладное программное обеспечение. ОС делится: 1. по числу пользователей: на однопользовательские и многопользовательские; 2. по интерфейсу: графические и текстовые; 3. по количеству одновременно решаемых задач: однозадачные и мультизадачные.
Языки программирования делятся: на языки высокого уровня и низкого уровня; процедурные, функциональные и логические языки программирования. Процедурные языки наиболее распространенные и наиболее используемые для системного обеспечения. Логические языки программирования в отличие от процедурных используются для создания систем искусственного интеллекта. Главной особенностью данной группы языков является возможность определения собственных операций над собственными типами данных. Как известно, в процедурных языках, можно только определить собственный тип данных. Функциональные языки работают с различными функциональными данными. Главный используемый тип данных в них списки. Основной особенностью данной группы языков является широкое использование рекурсии и переопределение текста программы в процессе ее выполнения. То есть исходный текст программы может быть интерпретирован как некоторый список данных.
Краткие характеристики языков: 1. Pascal, Delphi – для обучения программированию и разработки ОС; 2. C – язык системного программирования; 3. Basic – для простейшего программирования; 4. Assembler – для различных СПО, в настоящее время используется только для написания модулей, связи с нестандартными устройствами, для увеличения скорости обмена информации и уменьшения программного кода; 5. Lisp – язык функционального программирования, предназначенный для разработки систем искусственного интеллекта, но в настоящее время наиболее часто используется в САПР; 6. Пролог, Рефал – логические языки, которые последние десять - пятнадцать лет не использовались, но в настоящее время снова развиваются.
ОБСЛУЖИВАНИЕ ВВОДА-ВЫВОДА Организация ввода-вывода Операцией ввода-вывода называют передачу информации между процессором или памятью компьютера и любыми другими устройствами, которые по причине конструктивного отделения от процессора принято называть периферийными. К ним прежде всего относятся: – внешние запоминающие устройства (жесткие, гибкие, лазерно-оптические диски и др.); – устройства ввода информации (клавиатура, сканер, мышь, модем и др.); – устройства вывода информации (монитор, принтер, графопостроитель и др.) Передачей информации управляет ЦП. В простейшем случае специальная инструкция процессора позволяет передавать информацию между ПУ и регистром процессора, который в таком случае оказывается занятым в течение всей передачи. Забота об эффективном использовании процессора привела к автономии ПУ, которым стали передаваться функции управления, а за процессором сохранялась инициатива запуска и контроля операций. Организация ввода-вывода |
В настоящее время наиболее распространена схема организации ввода-вывода, изображенная на рисунке.
Контроллер представляет собой устройство управления, приспособленное к заданному типу внешних устройств, например, контроллер жестких или гибких дисков. Главный интерес здесь заключается в том, чтобы разделить контроллер и устройство и связать устройства одного типа с одним единственным контроллером. В этом случае передача информации в каждый момент времени осуществляется только с одним устройством. На других устройствах в это время можно одновременно выполнять лишь те действия, которые не связаны с непосредственной передачей информации. В связи с этим мы можем наблюдать заметное замедление при обмене двух устройств, обслуживаемых одним контроллером. Попробуйте скопировать содержимое 5,25’-дискеты на 3,5’-дискету, которые подключены к единственному контроллеру гибких дисков. Чтобы избежать подобных неприятностей при работе с двумя жесткими дисками, их рекомендуют подключать по одному к контроллеру жестких дисков (их, как правило, бывает два). Разделение функций между контроллером и ПУ зависит от типа ПУ. Как правило, логические функции (соединение и синхронизация операций, передача сигналов об окончании работы) предоставляются контроллеру, а физические (передача) – устройству.
Совокупность контроллер – ПУ определяет интерфейс группы устройств. В системе невозможно обслуживание ПУ, которое подключено к контроллеру с отличным от предусмотренного для него интерфейса.
Способы управления ПУ
Понятие драйвера ПУ
Элементарное функционирование ПУ происходит под управлением программы, которая называется его драйвером. Драйвер выполняет следующие функции:
– принимает запросы на обращение к ПУ;
– преобразует запросы в команды управления устройством с учетом всех деталей его конструкции;
– обрабатывает передаваемые ПУ прерывания;
– обнаруживает и обрабатывает случаи ошибок.
Для пользователя драйвер является невидимым, потому что пользователь получает доступ к вводу-выводу с помощью услуг более высокого уровня, которые реализуются непосредственно ОС. Следовательно, драйвер является промежуточным звеном между обращающимися к ПУ программами и самим ПУ.
Драйвера одного и того же устройства для разных ОС различны.
Синхронный ввод-вывод
При синхронном вводе-выводе отсутствует параллелизм между обработкой и передачей информации. Процессор занят в течение всего времени передачи. Хорошим примером может быть печать документов на принтере под управлением ОС с синхронным вводом-выводом. После отправки документа на печать пользователь вынужден ждать окончания обработки своего задания – заниматься во время печати полезной работой он не может.
Синхронный ввод-вывод был стандартным для большинства ОС (например, для MS-DOS), которые работали на компьютерах с низкой производительностью процессора, для которых актуальность параллельной обработки была невелика. Увеличить производительность системы с такой организацией можно достаточно простым способом – снабдить ПУ собственным буфером памяти, в котором могут размещаться данные для вывода или ввода. Например, принтер HP LJ4P оснащен собственной памятью в объеме 2МБ. Передав необходимые для печати данные в эту память, пользовательская программа может продолжать свою работу.
Синхронный ввод и вывод информации можно осуществить использую предопределенные массивы Port и PortW.
Port [<Addr>]- осуществляет связь с портом. Порт имеет абсолютно точный адрес, состоящий из трех шестнадцатеричных цифр. Портом называется специальный адрес, по которому хранится, как правило регистр (входной / выходной) периферийного устройства.
Некоторые порты устроены более сложным образом. В некоторых случаях при обращении к порту происходит обращение к процессору периферийного устройства, который уже интерпретирует данные на выходе для обращения к соответствующему регистру.
Массив Port употребляется для написания системных программ без обращения к драйверам ОС.
a:=Port[$367];
Port W [...]- обращение к порту с помощью слова.
Необходимо абсолютно точно знать конструкцию порта. Если порт длиной 1 байт, а происходит обращение как к 2-х байтному, то за одно обращение происходит связь с 2-м портам, при этом адрес второго отличается на 1 от адреса, заданного в PortW.
При работе с портами, в прочем, как и со всеми регистрами, следует помнить одно правило – после изменения содержимого порта, информация должна быть в нем восстановлена.
Пример. Пусть по адресу $246 находится регистр устанавливающий периферийное устройство в готовность к передаче данного, если у него установить 3 бит. По адресу $247 находится порт данных, в который нужно передать байт информации, хранящийся в переменной DAT.
Var Dat,Port_dat:byte;
…………….
Begin
……..
Port_dat:=Port[$246];
Port[$246]:=Port_dat or 8;
Port[$247]:=Dat;
Port[$246]:=Port_dat;
……..
end.
Обратите внимание! Установка бита в порте $246 осуществляется через операцию логического сложения, что изменяет содержимое других битов порта.
По алгоритму обмена информации порты делятся на три группы:
1. Непосредственные порты обмена информацией. Как правило регистры управляющие работой периферийного устройства;
2. Совмещенные порты индексный и порт данных. Объединяют несколько одинаковых по функциональному назначению регистров. В индексный порт заносится индекс порт, после чего из порта данных производится обмен информацией.
3. Объединенный индексно данный порт. Аналогичен предыдущей группе портов, но адрес индексного порта и порта данных совпадает. Наиболее сложный алгоритм обращения к такому порту будет если передается не одно данное, а целая последовательность информации. В этом случае данные следует посылать в порт с определенной временной задержкой.
Пример работы с портами будет рассмотрен в курсе «Компьютерная графика» в разделе «Непосредственное программирование видеоадаптера»/1/.
Асинхронный ввод-вывод
Современные процессоры являются невероятно быстрыми по сравнению с теми, которые использовались в прошлом. Они гораздо быстрее большинства ПУ. Пока устройство обрабатывает один запрос, процессор может выполнить тысячи строк кода. В идеале у приложения должна быть возможность использовать процессор, пока устройство пересылает или принимает данные. Такой способ, при котором обработка и передача информации ведутся параллельно называют асинхронным вводом-выводом.
Асинхронный ввод-вывод имеет важное преимущество перед синхронным – возможность повышения скорости работы приложений. Пока устройство занято пересылкой данных, приложение продолжает выполнять другую работу. Кто не выполнял так называемую фоновую печать документов в Word из под Windows? Но в обмен на достоинства асинхронный ввод-вывод требует большего объема программирования, а следовательно кода и занимаемой ОС памяти.
Буферный ввод-вывод
Т.к. скорости работы процессора и ПУ сильно различаются, то для повышения производительности вычислительной системы применяют буферизацию ввода-вывода. Для этого выделяют специальную зону в памяти – буфер для улучшения взаимодействия ПУ с программами пользователей. Отделяя работу процессора от работы периферии, надеются уменьшить время его пребывания в неактивном состоянии. Программы пользователей и ПУ передают информацию в буфер или из него. Чем больше размер буфера, тем эффективнее отделение процессора от периферии. Стремление не занимать слишком много под памяти привело к размещению буферов либо на диске (спулинг или свопинг), либо в виртуальной памяти.
Общие принципы обслуживания буферного ввода-вывода описываются следующими спецификациями:
– при обмене с ПУ используются записи фиксированного размера;
– размер буфера фиксирован и может вместить целое количество записей;
– для программы пользователя обмен с буфером имитируется ОС как обмен с ПУ, следовательно, должен сохраняться порядок передачи информации на хранение и изъятие между буфером и ПУ и ни одна запись не должна потеряться;
– бесполезное ожидание для процессора и ПУ сведено к минимуму за счет того, что устройство ввода-вывода постоянно готовы к работе.
Буферный обмен данными может быть как синхронным, так и асинхронным.
Последнее изменение этой страницы: 2019-04-19; Просмотров: 212; Нарушение авторского права страницы