Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


НАЗНАЧЕНИЕ СИСТЕМНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (СПО)



 

СПО предназначено для разработки различных программ и для поддержки работы всего программного обеспечения.

 

ОС и языки программирования

 

СПО делится на два основных класса:

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; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.027 с.)
Главная | Случайная страница | Обратная связь