Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Билет 15
Внешние запоминающие устройства
Внешние запоминающие устройства. Эти устройства обеспечивают хранение больших массивов информации. Они относительно недороги, но обладают значительно меньшим быстродействием, чем устройства внутренней памяти ЭВМ. Наиболее широкое распространение получили ВЗУ на магнитных носителях (лентах и дисках).
ВЗУ предназначены для длительного хранения больших объемов данных после снятия питания.
Три составляющих:
1) Большие объемы данных
2) Длительное хранение информации
3) Энергонезависимость
Винчестер, или накопитель на жестких магнитных дисках, используется для длительного хранения больших объемов информации, которая сохраняется при выключении питания. Конструктивно винчестер это прямоугольная коробочка, внутри которой постоянно вращаются на большой скорости алюминиевые или стеклянные диски с нанесенным на их поверхность магнитным слоем. Чтение и запись данных производится с помощью магнитных головок, которые парят на расстоянии долей микрона от поверхности магнитных дисков. Так как винчестер является, механическим устройством, то время доступа к информации на нем почти в тысячу раз больше, чем к ОЗУ. Емкость современных винчестеров превышает 100 Гбайт.
Стабилизируется угловая скорость, перемещение головок тангенсальное.
Гибкие магнитные диски предназначены для архивирования данных или переноса информации с компьютера на компьютер. Наиболее старым видом являются 3- и 5-дюймовые магнитные диски, которые могут хранить 1,44 и 1,2 Мбайт (другие варианты встречаются крайне редко). Усовершенствованные варианты гибких магнитных дисков могут иметь емкость 100 и 250 Мбайт (например, накопители Zip и Jazz). Так как гибкие магнитные диски для считывания и записи информации требуют непосредственного контакта магнитной головки с поверхностью диска, то у них самое малое время доступа из всех применяемых сегодня накопителей информации.
Принцип работы:
На поверхность диска наносятся ферромагнитные материалы (составы) магнитотвердые материалы, т.е. материалы, которые способны сохранить поляризацию магнитных полей после снятия магнитного поля.
Вся поверхность диска покрыта «магнитными доменами».
При считывании в головке наводится магнитный поток, который, проходя через катушку, вырабатывает ЭДС (напряжение). Это напряжение далее преобразуется в логические единицы. ЭДС наибольшего уровня наводится в моменты изменения направления поляризации.
Типы дисков:
- компакт-диски
- диски однократной записи
- blue-ray диски
Компакт-диски
Технология изготовления таких дисков нанесения последовательных слоев на основу (подложку). Основа пластиковый диск, на который далее наносится блестящий материал (алюминиевая фольга). После этого методом шелкографии производится закраска отдельных точек (пит). После этого информационный слой накрывается защитным. Это диски ПЗУ, изготавливающиеся на предприятии.
Накопители на жестких магнитных дисках ("винчестер") содержат несколько дисков, объединенных в пакет. Чаще всего такой пакет включает 4-6 дисков диаметром 5,25 или (в портативных ПЭВМ) 3 дюйма. НЖМД является несменяемым, располагается внутри системного блока.
В НЖМД магнитные головки, объединенные в блок, перемещаются одновременно в радиальном направлении по отношению к дискам. Дорожки с одинаковыми номерами на разных поверхностях дисков образуют цилиндр. Цилиндр имеет тот же номер, что и объединенные им дорожки. Любой диск имеет физический и логический формат. Физический формат диска определяет размер сектора (в байтах), число секторов на дорожке (или - для жестких дисков -в цилиндре), число дорожек (цилиндров) и число сторон.
В отличие от гибких дисков, физический и логический форматы которых устанавливаются в процессе форматирования дискеты, жесткие диски поступают к потребителю с определенным физическим форматом. Логическая структура жесткого диска устанавливается пользователем, причем это должно быть сделано до применения этого диска операционной системой. Установка логической структуры диска выполняется в два этапа. Сначала жесткий диск разбивается на части, каждая из которых может использоваться своей операционной системой. Далее каждую из этих частей необходимо отформатировать в соответствии с требованиями той операционной системы, для которой она предназначена.
Наиболее часто применяются форматы данных, соответствующие фиксированным числам секторов на одной дорожке, например, форматы с 17 или 32 секторами на дорожке. При этом емкость информации в одном секторе колеблется от 512 до 1024 байт.
Для организации хранения и учета данных на диске можно использовать различные схемы, каждая из которых имеет свои достоинства и недостатки с точки зрения эффективности использования пространства памяти диска, скорости доступа, безопасности и качества хранения данных.
В настоящее время наиболее распространены НЖМД емкостью от 80 до 2400 Мбайт. Вместе с тем нередкими стали конфигурации ПЭВМ, включающие НЖМД типа "винчестер" емкостью в 500 Мбайт и даже в 1 Гбайт.
Важным параметром для пользователя является время доступа, характеризующее скорость чтения и записи информации на диски. Для наиболее распространенных НЖМД оно колеблется от 14 до 70 мкс. Реальная скорость работы НЖМД в большой степени зависит от типа используемой программы. Так, обработка больших массивов информации, требующая многократного поиска одиночных сведений, может неожиданно для пользователя занять весьма значительное время. Еще более продолжительной может оказаться обработка сложных изображений.
Расширение внешней памяти достигается подключением к системному блоку стриммера. Стриммер - это устройство для быстрой перезаписи данных с жесткого диска на магнитную ленту. Обычно емкость стриммера колеблется от 80 до 525 Мбайт.
Биполярный транзистор в схемотехнических приложениях представляют как четырехполюсник и рассчитывают его параметры для такой схемы. Для транзистора как четырехполюсника характерны два значения тока I1 и I2 и два значения напряжения U1 и U2 (рис. 5.23).
Рис. 5.23. Схема четырехполюсника
В зависимости от того, какие из этих параметров выбраны в качестве входных, а какие в качестве выходных, можно построить три системы формальных параметров транзистора как четырехполюсника. Это системы z-параметров, y-параметров и h-параметров. Рассмотрим их более подробно, используя линейное приближение.
Система z-параметров
Зададим в качестве входных параметров биполярного транзистора как четырехполюсника токи I1 и I2, а напряжения U1 и U2 будем определять как функции этих токов. Тогда связь напряжений и токов в линейном приближении будет иметь вид:
Коэффициенты zik в этих уравнениях определяются следующим образом:
- определяются как входное и выходное сопротивления.
- сопротивления обратной и прямой передач.
Измерения z-параметров осуществляются в режиме холостого хода на входе (I1 = 0) и выходе (I2 = 0). Реализовать режим разомкнутого входа I1 = 0 для биполярного транзистора достаточно просто (сопротивление эмиттерного перехода составляет всего десятки Ом и поэтому размыкающее сопротивление в цепи эмиттера в несколько кОм уже позволяет считать I1 = 0). Реализовать режим разомкнутого выхода I2 = 0 для биполярного транзистора сложно (сопротивление коллекторного перехода равняется десяткам МОм и размыкающее сопротивление в цепи коллектора в силу этого должно быть порядка ГОм).
Система y-параметров
Зададим в качестве входных параметров биполярного транзистора как четырехполюсника напряжения U1 и U2, а токи I1 и I2 будем определять как функции этих напряжений. Тогда связь токов и напряжений в линейном приближении будет иметь вид:
Коэффициенты в уравнениях имеют размерность проводимости и определяются следующим образом:
- входная и выходная проводимости.
- проводимости обратной и прямой передач.
Измерение y-параметров происходит в режиме короткого замыкания на входе (U1 = 0) и выходе (U2 = 0). Реализовать режим короткого замыкания на входе (U1 = 0) для биполярного транзистора достаточно сложно (сопротивление эмиттерного перехода составляет всего десятки Ом и поэтому замыкающее сопротивление в цепи эмиттера должно составлять доли Ома, что достаточно сложно). Реализовать режим короткого замыкания на выходе U2 = 0 для биполярного транзистора просто (сопротивление коллекторного перехода равняется десяткам МОм и замыкающие сопротивления в цепи коллектора могут быть даже сотни Ом).
Система h-параметров
Система h-параметров используется как комбинированная система из двух предыдущих, причем из соображений удобства измерения параметров биполярного транзистора выбирается режим короткого замыкания на выходе (U2 = 0) и режим холостого хода на входе (I1 = 0). Поэтому для системы h-параметров в качестве входных параметров задаются ток I1 и напряжение U2, а в качестве выходных параметров рассчитываются ток I2 и напряжение U1, при этом система, описывающая связь входных I1, U2 и выходных I2, U1 параметров, выглядит следующим образом:
Значения коэффициентов в уравнении для h-параметров имеют следующий вид:
- входное сопротивление при коротком замыкании на выходе;
- выходная проводимость при холостом ходе во входной цепи;
- коэффициент обратной связи при холостом ходе во входной цепи;
- коэффициент передачи тока при коротком замыкании на выходе.
Эквивалентная схема четырехполюсника с h-параметрами приведена на рисунке 5.24а, б. Из этой схемы легко увидеть, что режим короткого замыкания на выходе или холостого хода на входе позволяет измерить тот или иной h-параметр.
Рис. 5.24. Эквивалентная схема четырехполюсника:
а) биполярный транзистор в схеме с общей базой; б) биполярный транзистор в схеме с общим эмиттером
Рассмотрим связь h-параметров биполярного транзистора в схеме с общей базой с дифференциальными параметрами. Для этого воспользуемся эквивалентной схемой биполярного транзистора на низких частотах, показанной на рисунке 5.24а, а также выражениями для вольт-амперных характеристик транзистора в активном режиме. Получаем:
Для биполярного транзистора в схеме с общим эмиттером (рис. 5.24б) выражения, описывающие связь h-параметров с дифференциальными параметрами, будут иметь следующий вид:
Для различных схем включения биполярного транзистора (схема с общей базой, общим эмиттером и общим коллектором) h-параметры связаны друг с другом. В таблице 2 приведены эти связи, позволяющие рассчитывать h-параметры для схемы включения с общей базой, если известны эти параметры для схемы с общим эмиттером.
Таблица 2. Связи между h параметрами
Дифференциальные параметры биполярных транзисторов зависят от режимов их работы. Для схемы с общим эмиттером наибольшее влияние испытывает коэффициент усиления эмиттерного тока h21э в зависимости от тока эмиттера. На рисунке 5.25 приведена эта зависимость для транзисторов КТ215 различных типономиналов. В области малых токов (микромощный режим) коэффициент усиления уменьшается вследствие влияния рекомбинационной компоненты в эмиттерном переходе, а в области больших токов (режим высокого уровня инжекции) - коэффициент усиления уменьшается вследствие уменьшения коэффициента диффузии.
В основе организации таблиц с хеш-адресацией лежит процедура хеширования. Хеширование преобразование символьного имени идентификатора в числовой индекс элемента таблицы с помощью простых арифметических и логических операций. Конкретный способ хеширования задает хеш-функция., аргументом которой является символьная величина, т.е. имя идентификатора, а значение числовой индекс элемента таблицы.
Простейший вариант таблицы с хеш-адресацией может служить использованием кода внутреннего представления 1-го символа имени. В этом случае: ABD-01000001ый соответствует предствавлению символа «А».Схематично такой способ адресации можно представить след-м образом:
С помощью хеш-функции каждое имя само указывает свое место в таблице. До тех пор, пока для двух различных имен результаты хеширования отличаются, время поиска элемента в таблице равно времени вычисления хеш-функции.
Хеш-функция задает отображение множества имен на множество индексов элементов таблицы и в идеале должна давать различные значения для двух любых отличающихся имен. Но это невозможно, т.к. любой язык допускает бесконечное количество имен, а объем таблицы ограничен. Т.о. всегда возможен конфликт при попытке записи двух отличающихся имен в одну ячейку таблицы. Такой конфликт называется коллизией и возникает, когда для отличающихся имен значения хеш-функции совпадают. Коллизии можно разрешить 2 методами:
- рехеширование и
- методом цепочек.
Т.о. результат хеширования имени, записанного в таблицу, определяет начальный индекс, начиная с которого в таблице производится поиск этого имени.
«Хорошая» хеш-функция распределяет вычисляемые индексы элементов в таблице равномерно по всей таблице, чтобы уменьшить количество возникающих коллизий.
Код 1-го символа имени не дает хороших результатов т.к. все имена, начинающиеся на одну букву, ссылаются на 1 и тот же элемент таблицы. Лучший результат дает использование в качестве хеш-функции кода последнего символа имени.
В трансляторах хеш-функция является более сложной и зависит как от кодов внутреннего представления символов имени, так и от его длины.
Обобщенный алгоритм вычисления хеш-функции включает 2 шага:
Выполняется, если исходное имя s имеет длину более 1 машинного слова.
1 шаг: из исходного имени s формируется код s длиной в одно машинное слово. Этот код получается суммированием всех слов исходного имени сложением или сложением по модулю 2. (В случае сложения, вместо s выбираются младшие разряды результата).
2 шаг: s используется для вычисления хеш-функции. Возможны варианты:
- N=2^K Если размер таблицы определяется степенью двойки, то s* s и к средних битов результата выбирается в качестве значений хеш-функции.
- N=2^K , s делится на группы разрядов длиной к, эти разряды «+» или складываются по модулю 2 и результат используется в качестве хеш-функции.
Триггеры являются одной из разновидностей хранимых процедур. Их исполнение происходит при выполнении для таблицы какого-либо оператора языка манипулирования данными (DML). Триггеры используются для проверки целостности данных, а также для отката транзакций.
Триггер это откомпилированная SQL-процедура, исполнение которой обусловлено наступлением определенных событий внутри реляционной базы данных. Применение триггеров большей частью весьма удобно для пользователей базы данных. И все же их использование часто связано с дополнительными затратами ресурсов на операции ввода/вывода. В том случае, когда тех же результатов (с гораздо меньшими непроизводительными затратами ресурсов) можно добиться с помощью хранимых процедур или прикладных программ, применение триггеров нецелесообразно.
Триггер представляет собой специальный тип хранимых процедур, запускаемых сервером автоматически при попытке изменения данных в таблицах, с которыми триггеры связаны. Каждый триггер привязывается к конкретной таблице. Все производимые им модификации данных рассматриваются как одна транзакция. В случае обнаружения ошибки или нарушения целостности данных происходит откат этой транзакции. Тем самым внесение изменений запрещается. Отменяются также все изменения, уже сделанные триггером.
Триггер представляет собой весьма полезное и в то же время опасное средство. Так, при неправильной логике его работы можно легко уничтожить целую базу данных, поэтому триггеры необходимо очень тщательно отлаживать.
Основной формат команды CREATE TRIGGER показан ниже:
<Определение_триггера>::=
CREATE TRIGGER имя_триггера
BEFORE | AFTER <триггерное_событие>
ON <имя_таблицы>
[REFERENCING
<список_старых_или_новых_псевдонимов>]
[FOR EACH { ROW | STATEMENT}]
[WHEN(условие_триггера)]
<тело_триггера>
триггерные события состоят из вставки, удаления и обновления строк в таблице. В последнем случае для триггерного события можно указать конкретные имена столбцов таблицы. Время запуска триггера определяется с помощью ключевых слов BEFORE (триггер запускается до выполнения связанных с ним событий) или AFTER (после их выполнения).
Выполняемые триггером действия задаются для каждой строки (FOR EACH ROW), охваченной данным событием, или только один раз для каждого события (FOR EACH STATEMENT).
Обозначение <список_старых_или_новых_псевдонимов> относится к таким компонентам, как старая или новая строка (OLD / NEW) либо старая или новая таблица (OLD TABLE / NEW TABLE). Ясно, что старые значения не применимы для событий вставки, а новые для событий удаления.
Неправильно написанные триггеры могут привести к серьезным проблемам, таким, например, как появление «мертвых» блокировок. Триггеры способны длительное время блокировать множество ресурсов, поэтому следует обратить особое внимание на сведение к минимуму конфликтов доступа.
Реализация триггеров в среде MS SQL Server
В реализации СУБД MS SQL Server используется следующий оператор создания или изменения триггера:
<Определение_триггера>::=
{CREATE | ALTER} TRIGGER имя_триггера
ON {имя_таблицы | имя_просмотра }
[WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF }
{ [ DELETE] [,] [ INSERT] [,] [ UPDATE] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
sql_оператор[...n]
} |
{ {FOR | AFTER | INSTEAD OF } { [INSERT] [,]
[UPDATE] }
[ WITH APPEND]
[ NOT FOR REPLICATION]
AS
{ IF UPDATE(имя_столбца)
[ {AND | OR} UPDATE(имя_столбца)] [...n]
|
IF (COLUMNS_UPDATES(){оператор_бит_обработки}
бит_маска_изменения)
{оператор_бит_сравнения }бит_маска [...n]}
sql_оператор [...n]
}
}
Триггер может быть создан только в текущей базе данных, но допускается обращение внутри триггера к другим базам данных, в том числе и расположенным на удаленном сервере.
Рассмотрим назначение аргументов из команды CREATE | ALTER TRIGGER.
Имя триггера должно быть уникальным в пределах базы данных. Дополнительно можно указать имя владельца.
При указании аргумента WITH ENCRYPTION сервер выполняет шифрование кода триггера, чтобы никто, включая администратора, не мог получить к нему доступ и прочитать его. Шифрование часто используется для скрытия авторских алгоритмов обработки данных, являющихся интеллектуальной собственностью программиста или коммерческой тайной.
Типы триггеров
В SQL Server существует два параметра, определяющих поведение триггеров:
AFTER. Триггер выполняется после успешного выполнения вызвавших его команд. Если же команды по какой-либо причине не могут быть успешно завершены, триггер не выполняется. Следует отметить, что изменения данных в результате выполнения запроса пользователя и выполнение триггера осуществляется в теле одной транзакции: если произойдет откат триггера, то будут отклонены и пользовательские изменения. Можно определить несколько AFTER-триггеров для каждой операции (INSERT, UPDATE, DELETE). Если для таблицы предусмотрено выполнение нескольких AFTER-триггеров, то с помощью системной хранимой процедуры sp_settriggerorder можно указать, какой из них будет выполняться первым, а какой последним. По умолчанию в SQL Server все триггеры являются AFTER-триггерами.
INSTEAD OF. Триггер вызывается вместо выполнения команд. В отличие от AFTER-триггера INSTEAD OF-триггер может быть определен как для таблицы, так и для просмотра. Для каждой операции INSERT, UPDATE, DELETE можно определить только один INSTEAD OF-триггер.
Триггеры различают по типу команд, на которые они реагируют.
Существует три типа триггеров:
INSERT TRIGGER запускаются при попытке вставки данных с помощью команды INSERT.
UPDATE TRIGGER запускаются при попытке изменения данных с помощью команды UPDATE.
DELETE TRIGGER запускаются при попытке удаления данных с помощью команды DELETE.
Конструкции [ DELETE] [,] [ INSERT] [,] [ UPDATE] и FOR | AFTER | INSTEAD OF } { [INSERT] [,] [UPDATE] определяют, на какую команду будет реагировать триггер. При его создании должна быть указана хотя бы одна команда. Допускается создание триггера, реагирующего на две или на все три команды.
Аргумент WITH APPEND позволяет создавать несколько триггеров каждого типа.
При создании триггера с аргументом NOT FOR REPLICATION запрещается его запуск во время выполнения модификации таблиц механизмами репликации.
Конструкция AS sql_оператор[...n] определяет набор SQL- операторов и команд, которые будут выполнены при запуске триггера.
Программирование триггера
При выполнении команд добавления, изменения и удаления записей сервер создает две специальные таблицы: inserted и deleted. В них содержатся списки строк, которые будут вставлены или удалены по завершении транзакции. Структура таблиц inserted и deleted идентична структуре таблиц, для которой определяется триггер. Для каждого триггера создается свой комплект таблиц inserted и deleted, поэтому никакой другой триггер не сможет получить к ним доступ. В зависимости от типа операции, вызвавшей выполнение триггера, содержимое таблиц inserted и deleted может быть разным:
команда INSERT в таблице inserted содержатся все строки, которые пользователь пытается вставить в таблицу; в таблице deleted не будет ни одной строки; после завершения триггера все строки из таблицы inserted переместятся в исходную таблицу;
команда DELETE в таблице deleted будут содержаться все строки, которые пользователь попытается удалить; триггер может проверить каждую строку и определить, разрешено ли ее удаление; в таблице inserted не окажется ни одной строки;
команда UPDATE при ее выполнении в таблице deleted находятся старые значения строк, которые будут удалены при успешном завершении триггера. Новые значения строк содержатся в таблице inserted. Эти строки добавятся в исходную таблицу после успешного выполнения триггера.
Для получения информации о количестве строк, которое будет изменено при успешном завершении триггера, можно использовать функцию @@ROWCOUNT; она возвращает количество строк, обработанных последней командой. Следует подчеркнуть, что триггер запускается не при попытке изменить конкретную строку, а в момент выполнения команды изменения. Одна такая команда воздействует на множество строк, поэтому триггер должен обрабатывать все эти строки.
Если триггер обнаружил, что из 100 вставляемых, изменяемых или удаляемых строк только одна не удовлетворяет тем или иным условиям, то никакая строка не будет вставлена, изменена или удалена. Такое поведение обусловлено требованиями транзакции должны быть выполнены либо все модификации, либо ни одной.
Триггер выполняется как неявно определенная транзакция, поэтому внутри триггера допускается применение команд управления транзакциями. В частности, при обнаружении нарушения ограничений целостности для прерывания выполнения триггера и отмены всех изменений, которые пытался выполнить пользователь, необходимо использовать команду ROLLBACK TRANSACTION.
Для получения списка столбцов, измененных при выполнении команд INSERT или UPDATE, вызвавших выполнение триггера, можно использовать функцию COLUMNS_UPDATED(). Она возвращает двоичное число, каждый бит которого, начиная с младшего, соответствует одному столбцу таблицы (в порядке следования столбцов при создании таблицы). Если бит установлен в значение «1», то соответствующий столбец был изменен. Кроме того, факт изменения столбца определяет и функция UPDATE (имя_столбца).
Для удаления триггера используется команда
DROP TRIGGER {имя_триггера} [,...n]