Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzamen02.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
15 Mб
Скачать

ОС

БД

ТРПС

УХВВИ

ЭВМ

СЕТИ

ОС

1) Операционная система (ОС) – совокупность системного программного обеспечения, обеспечивающего управление аппаратными устройствами вычислительной системы (ВС), работу с файлами, ввод и вывод данных, а также выполнение сервисных программ и программ пользователя. При включении ВС ОС загружается в ее основную память (ОП) раньше всех остальных программ и предоставляет сервис для их работы. Основными функциями ОС являются: 1. Загрузка приложений в ОП и их выполнение.2. Управление виртуальной памятью. 3. Управление процессами и потоками.4. Управление доступом к данным на энергонезависимых носителях информации, таких как жесткий диск, компакт-диск и т. д. 5. Стандартизованный доступ к внешним устройствам. 6. Организация и поддержка пользовательского интерфейса. 7. Реализация сетевых операций. 8. Защита программ и данных от злонамеренных действий пользователей или приложений. 9. Разграничение прав доступа и организация многопользовательского режима работы. В составе любой ОС различают супервизор, сервисы (по другому – службы) и приложения пользователя, рис. 1.1. Супервизор и сервисы ОС образуют ее ядро.

Супервизор – центральная часть ОС, обеспечивающая приложениям координированный д оступ к ресурсам ВС, таким как процессор, ОП и внешнее устройства. Сервисы (или службы) ОС реализуют те или иные действия, запрашиваемые приложениями пользователя, напрмер, доступ к файловой системе, прием или передача пакетов данных и т. д. Обращение с сервисам ОС реализуется посредством интерфейса системных вызовов – механизма, реализущего безопасный переход от уровня приложений пользователя на уровень ядра ОС и наоброт.

КЛАССИФИКАЦИЯ ОС ОС могут различаться особенностями реализации внутренних алгоритмов управления основными ресурсами ВС, особенностями использованных методов проектирования, типами используемых аппаратных платформ, областями применения и многими другими свойствами. Ниже приведена классификация ОС по нескольким наиболее основным признакам. По числу одновременно выполняемых задач ОС могут быть разделены на два класса: однозадачные ОС (MS-DOS), многозадачные ОС (UNIX, Windows). Многозадачные ОС подразделяются в свою очередь на три типа: ОС пакетной обработки (OC EC), ОС разделения времени (UNIX, VMS), ОС реального времени (QNX, RT/11). ОС пакетной обработки предназначались для решения задач в основном вычислительного характера, не требующих быстрого получения результатов. Главной целью и критерием эффективности ОС пакетной обработки является максимальная пропускная способность, т. е. решение максимального числа задач в единицу времени. Взаимодействие пользователя с ВС, на которой установлена ОС пакетной обработки, сводится к тому, что он приносит задание, отдает его диспетчеру-оператору, а в конце дня после выполнения всего пакета заданий получает результат. Очевидно, что такой порядок снижает эффективность работы пользователя. ОС разделения времени призваны исправить основной недостаток ОС пакетной обработки – изоляцию пользователя (программиста) от процесса выполнения его задач. Каждому пользователю ОС разделения времени предоставляется терминал, с которого он может вести диалог со своей программой. Критерием эффективности ОС разделения времени является не максимальная пропускная способность, а удобство и эффективность работы пользователя. ОС реального времени применяются для управления различными техническими объектами, такими, например, как станок, спутник, научная экспериментальная установка, технологический процесс и т.п. Критерием эффективности для ОС реального времени является их способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата (управляющего воздействия). Это время называется временем реакции системы, а соответствующее свойство системы – реактивностью. Некоторые ОС могут совмещать в себе свойства систем разных типов, например, часть задач может выполняться в режиме пакетной обработки, а 10 часть – в режиме реального времени или в режиме разделения времени. В таких случаях режим пакетной обработки часто называют фоновым режмом. По способу организации многозадачного режима ОС делятся на: ОС с невытесняющей многозадачностью (NetWare, Windows 3.x, MacOS), ОС с вытесняющей многозадачностью (Windows 95, UNIX), ОС с приоритетной многозадачностью (Windows NT). По числу одновременно работающих пользователей ОС делятся на: однопользовательские ОС (MS-DOS), многопользовательские ОС (UNIX, Windows). По типу аппаратуры различают ОС персональных компьютеров, миникомпьютеров, мейнфреймов, кластеров и сетей ЭВМ. Персональные компьютеры (ПК) – результат эволюции миникомпьютеров при переходе элементной базы ВС с малой и средней степенью интеграции на большие и сверхбольшие интегральные схемы. ПК, благодаря своей низкой стоимости, очень быстро завоевали хорошие позиции на компьютерном рынке и создали предпосылки для разработки новых программных средств, ориентированных на конечного пользователя. Это прежде всего – "дружественные пользовательские интерфейсы", а также проблемноориентированные среды и инструментальные средства для автоматизации разработки прикладного программного обеспечения. В миникомпьютерах или рабочих станциях среднего и высокого класса высокое быстродействие сочетается с большим объемом ОП и внешней памяти, высокопроизводительными внутренними магистралями, высококачественной и быстродействующей графической подсистемой и разнообразными устройствами ввода/вывода. Мейнфрейм – это синоним понятия "большая универсальная ЭВМ". Мейнфреймы и до сегодняшнего дня остаются наиболее мощными (не считая суперкомпьютеров) ВС общего назначения, обеспечивающими непрерывный круглосуточный режим эксплуатации. Ядро ОС мейнфрейма эмулирует набор виртуальных машин, на каждой из которых реализована однопользовательская ОС. В архитектурном плане мейнфреймы представляют собой многопроцессорные системы, содержащие один или несколько центральных и периферийных процессоров с общей памятью, связанных между собой высокоскоростными магистралями передачи данных. В ОС мейнфреймов поддерживаются разные типы логической организации файлов. Кластер – слабо связанная совокупность нескольких ВС, работающих совместно для выполнения общих приложений, и представляющихся пользователю единой системой. Наряду со специальной аппаратурой для функционирования кластерных систем необходима и программная поддержка со стороны ОС, которая сводится в основном к синхронизации доступа к разделяемым ресурсам, обнаружению отказов и динамической реконфигурации системы.

2) ТИПЫ АРХИТЕКТУР ЯДРА ОС В настоящее время различают следующие типы архитектур ядра ОС –монолитное ядро,модульное ядро, микроядро, экзоядро, наноядро и гибридное ядро. Монолитное ядро – старейший способ организации ОС. Все компоненты монолитного ядра являются составными частями одной программы. Они используют общие структуры данных и взаимодействуют друг с другом путем непосредственного вызова процедур, рис. 1.2.

Во многих ОС с монолитным ядром сборка ядра (его компиляция) осуществляется о тдельно для каждой ВС, на которую устанавливается такая ОС. При этом можно выбрать список оборудования и программных протоколов, поддержка которых будет включена в ядро. Так как ядро является единой программой, перекомпиляция – это единственный способ добавить в него новые компоненты или исключить неиспользуемые. Преимуществом монолитного ядра является высокая производительность ОС за счет отсутствия переключений между супервизором и сервисами. Недостатком монолитных ядер является необходимость их перекомпиляции при изменении состава аппаратной платформы ВС. Примером ОС с монолитным ядром является Linux. Модульное ядро – современная, усовершенствованная архитектура монолитного ядра. В отличие от “классических” монолитных ядер, считающихся ныне устаревшими, модульные ядра, как правило, не требуют полной перекомпиляции при изменении состава аппаратной платформы ВС. Вместо этого модульные ядра предоставляют некоторый механизм подгрузки модулей ядра, поддерживающих то или иное аппаратное обеспечение. Подгрузка модулей может быть как динамической (выполняемой без перезагрузки ОС), так и статической (выполняемой при перезагрузке последней). Все модули ядра работают в его адресном пространстве и могут пользоваться всеми функциями, предоставляемыми ядром. Модульные ядра удобнее для разработки, чем традиционные монолитные ядра, не поддерживающие динамическую загрузку модулей, поскольку от разработчика не требуется многократная полная перекомпиляция ядра при работе над какой-либо его подсистемой или сервисом. Выявление, локализация, отладка и устранение ошибок при тестировании также облегчаются. Примером ОС с модульным ядром является BSD (FreeBSD, NetBSD, OpenBSD). Микроядро предоставляет только элементарные функции управления процессами и ресурсами ВС. Большая часть работы ОС осуществляется с помощью ее сервисов, работающих на уровне пользователя, рис. 1.3. Сервисы ОС могут взаимодействовать и друг с другом посредством передачи сообщений через микроядро, рис. 1.4. к файловому сервису ОС с микроядерной архитектурой Преимуществом микроядра является устойчивость к сбоям оборудования ВС и ошибкам в компонентах ОС. Кроме того, микроядро обладает высокой степенью модульности, что существенно упрощает добавление в него новых компонентов. В микроядерной ОС можно, не прерывая ее работы, загружать и выгружать новые компоненты, реализующие те или иные службы, файловые системы и т. д. Существенно упрощается процесс отладки компонентов ядра, так как новая версия того или иного ее компонента может загружаться без перезапуска всей ОС. Недостатком микроядра является снижение производительности ОС за счет многократных переключений с уровня пользователя на уровень ядра ОС и наоборот. Примерами ОС с микроядерной архитектурой являются MacOS, Minix и GNU Hurd. Экзоядро – архитектура ядра ОС, предоставляющая лишь функции для взаимодействия между процессами и безопасного выделения и освобождения ресурсов ВС. Архитектура экзоядра являются дальнейшим развитием и усовершенствованием микроядерной архитектуры. В отличие от ОС на основе микроядра, ОС, базирующиеся на экзоядре, обеспечивают гораздо большую эффективность за счет отсутствия необходимости в переключении между режимами пользователя и ядра при каждом обращении к оборудованию. Примером ОС с экзоядром является VM/370. Наноядро – архитектура ядра ОС, выполняющая лишь одну задачу – обработку аппаратных прерываний, генерируемых аппаратным обеспечением ВС. После обработки прерываний от аппаратуры наноядро, в свою очередь, посылает информацию о результатах обработки (например, полученные с клавиатуры символы) вышележащему программному обеспечению при помощи того же механизма прерываний. Примером ОС с наноядром является KeyKOS.Гибридные ядра – это модифицированные микроядра, позволяющие дляускорения работы запускать “несущественные” части ОС в пространстве егоядра. Примером ОС с гибридным ядром являются Windows NT, Windows XP Windows Vista, а также NetWare .

3) СЕГМЕНТНОЕ РАСПРЕДЕЛЕНИЕ ВИРТУАЛЬНОЙ ПАМЯТИ При рассмотрении простого сегментного распределения ВП было отмечено, что при загрузке всех сегментов процесса в ОП создается таблица сегментов, которая также загружается в ОП. В каждой записи таблицы сегментов указан начальный адрес соответствующего сегмента в ОП и его размер. Такая же таблица сегментов используется и при сегментном распределении ВП. Записи таблицы сегментов в этом случае усложняются, рис. 2.21. сегментном распределении ВП Поскольку в ОП могут находится не все сегменты процесса, в каждой записи требуется наличие бита присутствия, указывающего, располагается ли данный сегмент в ОП. Если сегмент расположен в ОП, то запись включает его начальный адрес и длину. Еще один бит, необходимый при сегментном распределении ВП – бит модификации, указывающий, было ли изменено содержимое сегмента со времени его последней загрузки в ОП. Если изменений не было, то при выгрузке сегмента нет необходимости в его записи на ВЗУ. Могут присутствовать и другие управляющие биты, например, для организации защиты или совместного использования ОП на уровне сегментов. Основной механизм чтения байта или слова из ОП включает преобразование виртуального, или логического, адреса, состоящего из номера сегмента и смещения, в физический адрес с использованием таблицы сегментов. Поскольку таблица сегментов имеет переменную длину, зависящую от размера процесса, сохранить ее в регистрах процессора невозможно. Для хранения таблицы сегментов используется ОП. Когда запускается процесс, в специальном регистре процессора сохраняется начальный адрес его таблицы сегментов. Номер сегмента из виртуального адреса используется в качестве индекса таблицы, позволяющего определить начальный адрес сегмента. Для получения физического адреса к начальному адресу сегмента добавляется смещение из виртуального адреса. На рис. 2.22 показана реализация этого механизма. Для работы алгоритма LRU используются два информативных бита дескриптора сегмента – бит присутствия сегмента в оперативной памяти P (от англ. present – присутствие), и бит обращения к сегменту A (от англ. access – доступ, обращение). Бит присутствия устанавливается в 1 при перемещении сегмента из ВЗУ в оперативную память. Для сегментов, находящихся на ВЗУ, значение этого бита равно 0. Если к сегменту было реализовано обращение для чтения или записи, то бит обращения к нему, по аналогии с битом присутствия, устанавливается в 1, в противном случае значение этого бита остаётся равным 0. Бит A позволяет ассоциировать с каждым сегментом приблизительное время его последнего использования, поскольку устанавливается операционной системой в 1 всякий раз, когда она загружает в сегментный регистр селектор его дескриптора. Через регулярные и достаточно малые интервалы времени операционная система сканирует дескрипторы всех сегментов и сбрасывает их биты А в 0. Если же во время сканирования обнаруживаются дескрипторы с битами А = 1, то к ним после последнего сканирования были реализованы обращения из процессов или потоков. Для таких сегментов операционная система производит инкремент программного счётчика времени их последнего использования, а для остальных – декремент. Когда возникает необходимость выбора сегмента для перемещения на ВЗУ, им будет сегмент с наименьшим значением этого счётчика. На рис. 5 рассмотрена работа трёх процессов или потоков, реализующих обращение к виртуальной памяти сегментированного типа. На 1-м этапе работы этого алгоритма биты А всех сегментов, к которым реализуется обращение, устанавливаются в 1. Сканирование этих битов операционной системой на 2-м этапе приводит к увеличению на единицу счётчика времени их последнего использования (на рис. значение этого счётчика для каждого из сегментов указано в скобках) и определению сегмента с наименьшим значением этого счетчика. И, наконец, на 3-м этапе счетчики обращений всех сегментов сбрасываются в 0.

4) Основной единицей управления виртуальной памятью страничного типа является страница, т.е. фрагмент памяти, характеризующийся базовым адресом и, в отличие от сегмента, фиксированным размером. Размер страницы достаточно мал и не превышает нескольких Кбайт. Особенностью организации виртуальной памяти страничного типа является использование большего числа системных таблиц по сравнению с её сегментированным типом. Каждый из процессов или потоков работает с определённым множеством страниц. В связи с тем, что число таких страниц может быть достаточно большим, их дескрипторы (или описатели) помещаются в страничные таблицы. Размер страничной таблицы не может превышать одной страницы – этим и определяется её название. Все принадлежащие процессу или потоку страничные таблицы также имеют свои дескрипторы. Дескрипторы всех страничных таблиц процесса или потока объединяются в каталог страничных таблиц. Процесс или поток может иметь только один каталог страничных таблиц, базовый адрес которого наряду с базовым адресом LDT является важнейшей системной информацией этого процесса или потока. Особенности организации страничного типа виртуальной памяти приведены на рис. 6.

Все страницы и страничные таблицы имеют свои дескрипторы, содержащие информацию об их базовых адресах, а также информативные биты, определяющие состояние и допустимые над страницами и страничными таблицами операции. Формат дескриптора и страницы и страничной таблицы в наиболее общем виде приведён на рис. 7.

Логический адрес страницы представляет собой двойное слово, состоящее из 3-х полей

Для процессоров Intel старшие 10 разрядов логического адреса (с номерами 22-31) представляют собой индекс дескриптора страничной таблицы в каталоге страничных таблиц. Средние 10 разрядов (с номерами 12-21) являются индексом дескриптора страницы в страничной таблице. И, наконец, младшие 12 разрядов (с номерами 0-11) логического адреса определяют смещение данных в странице, к которой реализуется обращение из процесса или потока. Последовательность преобразования логического адреса в физический заключается в выполнении следующих этапов: 1. из логического адреса выделяется поле, содержащее индекс страничной таблицы в каталоге страничных таблиц процесса или потока; 2. значение этого поля умножается на 4 – размер дескриптора страничной таблицы в байтах – и прибавляется к базовому адресу каталога страничных таблиц (содержимое программно недоступного регистра); 3. по полученному адресу считывается дескриптор страничной таблицы и из него выделяется её базовый адрес; 4. из логического адреса выделяется поле, индексирующее дескриптор страницы в каталоге страничных таблиц, умножается на 4 и прибавляется к полученному на предыдущем шаге базовому адресу страничной таблицы; 5. из страничной таблицы считывается дескриптор страницы, из него выделяется её базовый адрес и к нему добавляется определяемое младшими 12-ю разрядами смещение адресуемых в ней данных

Работа оптимального алгоритма заключается в выборе для замещения той страницы, обращение к которой будет осуществлено через наибольший промежуток времени по сравнению со всеми остальными страницами. Реализовать такой алгоритм невозможно, поскольку для этого операционной системе потребуется знать номера всех страниц, к которым будет обращаться процесс или поток.

Работа алгоритма FIFO (от англ. First In First Out – первым вошел, первым вышел) заключается в замещении той страницы, которая находилась в оперативной памяти дольше всех. Этот алгоритм рассматривает страницы процесса или потока в виде кольцевого буфера. С этим буфером ассоциирован указатель, который последовательно проходит по всем страницам процесса или потока и указывает на ту страницу, которая будет замещена на новую. FIFO – один из простейших в реализации алгоритмов замещения страниц.

Алгоритм LRU замещает в оперативной памяти ту страницу, к которой дольше всего не было обращений. Работа этого алгоритма полностью аналогична работе алгоритма LRU для сегментированного типа виртуальной памяти. Эффективность этого алгоритма близка к эффективности оптимального алгоритма, однако его реализация достаточно сложна.

Для работы алгоритма NFU (от англ. Not Frequently Used – редко используемая страница) требуются программные счётчики, по одному на каждую страницу. Значения этих счётчиков при старте нового процесса или потока (или при переключении на готовый к выполнению процесс или поток) сбрасываются в 0. При загрузке страницы в оперативную память её бит обращения А устанавливается в 1. Через равные и достаточно малые интервалы времени операционная система сканирует все страницы в оперативной памяти и у каждой страницы с установленным битом обращения увеличивает на единицу значение счётчика, а бит обращения сбрасывает. Замещению подлежит страница с наименьшим значением счётчика, поскольку к ней реже всего реализовывались обращения. Главный недостаток алгоритма NFU заключается в том, что страница, к которой очень часто обращались в течение некоторого времени, а потом обращаться перестали, всё равно не будет удалена из памяти, потому что её счётчик содержит большую величину.

В часовом алгоритме все страницы, располагающиеся в оперативной памяти, рассматриваются в виде кольцевого буфера, по которому последовательно проходит указатель. Когда наступает время замещения страницы, указатель должен найти страницу, бит обращения которой равен 0. При этом если в процессе поиска встречается страница с битом обращения равным 1, он сбрасывается в 0 и такая страница не замещается. Первая же встреченная страница с нулевым битом обращения выбирается для замещения. Если все кадры имеют бит обращения, равный 1, указатель совершает полный круг и возвращается к начальному положению, заменяя первую страницу в этом кадре

5) Процессом в наиболее общем смысле называется совокупность запросов на потребление ресурсов вычислительной системы – центрального процессора, памяти и внешних устройств. В наиболее общем случае процесс может находиться в одном из 3-х состояний – выполняется на процессоре, готов к выполнению и блокирован, т.е. находиться в состоянии ожидания некоторого события, по наличию которого он снова может выполняться на процессоре,

Состояния процесса и переходы между ними (примитив ЖДАТЬ() предназначен для синхронизации работы ескольких процессов) Относительно независимые фрагменты программного кода процесса могут быть описаны на этапе его разработки как потоки. Каждый процесс работает в своём собственном логическом адресном пространстве. Все потоки работают в логическом адресном пространстве процесса и разделяют его глобальные переменные, открытые файлы и синхронизирующие объекты операционной системы. Управление процессами и потоками в однопроцессорной вычислительной системе заключается: 1. в организации их псевдопараллельной работы; 2. планировании и диспетчеризации; 3. организации взаимодействия между ними; 4. и, наконец, в выявлении и устранении взаимоблокировок. Основные принципы организации псевдопараллельной работы процессов Для организации псевдопараллельной работы с каждым из процессов или потоков (далее по тексту просто процессом) ассоциируется сегмент памяти, основное назначение которого заключается в сохранении информации, необходимой для возобновления его работы в дальнейшем. Эта информация называется контекстом процесса, а сегмент памяти, в котором она сохраняется, называется сегментом состояния задачи TSS (от англ. Task State Segment – сегмент состояния задачи). Формат TSS в наиболее общем виде приведён на рис.16. Когда работа процесса A прерывается готовым к выполнению процессом Б, то процесс А сохраняет свой контекст в своём TSS, а процесс Б загружает свой контекст из своего. Процесс Б может в свою очередь быть прерван процессом В и т.д., рис. 17. Селектор TSS работающего в данный момент процесса помещается в программно недоступный регистр задачи центрального процессора. Последовательность прерванных процессов, с целью возобновления их работы в дальнейшем, объединяется в односвязный список – селектор TSS прерванного процесса помещается в поле обратной связи TSS работающего в данный момент процесса, рис. 18.

Переключение с одного процесса на другой (или вызов процесса) заключается в использовании команды безусловного перехода или команды вызова процедуры (для процессоров Intel – jmp и call соответственно) с логическим адресом, селектор которого индексирует дескриптор TSS нового процесса, рис. 19.

Ещё одним способом переключения на новый процесс (как правило, более привилегированный) является использование в этих командах логического адреса шлюза задачи. Формат дескриптора шлюза задачи в наиболее общем виде приведён на рис. 20.

6) Планирование процессов заключается в особенностях предоставления центрального процессора следующему готовому к выполнению процессу. Существует невытесняющее и вытесняющее планирование. При невытесняющем планировании процесс выполняется до тех пор, пока он по собственной инициативе не отдаст управление другому процессу. При вытесняющем планировании выбор готового к выполнению процесса осуществляет операционная система. При таком типе планирования каждому процессу поочерёдно предоставляется ограниченный период процессорного времени, называемый квантом. По завершении кванта одного процесса, операционная система предоставляет квант следующему. Величина кванта может быть фиксированной и переменной. Диспетчеризация процессов заключается в выборе на выполнение одного из нескольких готовых к выполнению процессов. Для всех типов планирования процессов существуют следующие базовые алгоритмами их диспетчеризации: 1. алгоритм FCFS; 2. алгоритм RR; 3. алгоритм SJF(SJN); 4. алгоритм HRRN. Алгоритм FCFS (от англ. First Come First Served – первым пришёл, первым обслуживается) организует из готовых к выполнению процессов очередь, организованную по принципу FIFO. Когда процесс переходит в состояние готовности, он помещается в конец этой очереди. Выбор процесса для выполнения осуществляется из её начала. Алгоритм диспетчеризации FCFS реализуется только для невытесняющего типа планирования. Пример работы этого алгоритма приведён на рис. 21. На этом рис. рассмотрен случай, при котором первым в очереди FIFO располагается процесс A, требующий 5 квантов, вторым – процесс B, требующий 7 квантов, и, наконец, последним – процесс С, требующий 3 кванта.

Алгоритм RR (от амер. Round Robin – карусель) является модификацией алгоритма FCFS для вытесняющего типа планирования. Всё множество готовых к выполнению процессов помещается в кольцевой буфер. Работу этого алгоритма удобнее всего представить в виде карусели, которая по истечению определённого кванта поворачивается и следующий готовый к выполнению процесс получает в своё распоряжение центральный процессор. Пример работы этого алгоритма приведён на рис. 22. В рассмотренном на этом рис. случае всем процессам выделяется по 1 кванту.

Алгоритм SJF (от англ. Shortest Job First – самый короткий процесс выполняется в первую очередь) выбирает на выполнение процесс, который меньше всего будет занимать центральный процессор. Другое название этого алгоритма диспетчеризации – SJN (от англ. Shortest Job Next – следующим выполняется самый короткий процесс) Все процессы с приблизительно равным процессорным временем организуются в очереди. Для выбора из очереди готового к выполнению процесса используется алгоритм FCFS. Алгоритм диспетчеризации SJF реализуется только для невытесняющего типа планирования. Пример работы этого алгоритма приведён на рис. 23. Для работы алгоритма HRRN (от англ. Highest Response Ratio Next – наибольшее значение соотношения, определяющего использование процессорного времени) вводятся две величины: wi – суммарное время, в течение которого i-й процесс ожидал центральный процессор и si – суммарное время, в течение которого i-й процесс занимал центральный процессор.

В соответствие с этим алгоритмом на выполнение выбирается тот процесс, для которого соотношение вида (si+wi)/si максимально. Иными словами, на выполнение в первую очередь выбирается процесс, который либо дольше других находился в состоянии ожидания центрального процессора либо занимал его меньше других. Алгоритм диспетчеризации HRRN реализуется для всех типов планирования. Пример работы этого алгоритма приведён на рис. 24. В рассмотренном на этом рис. случае процессу A выделяется 2 кванта, а процессам B и C – по 1.

Следует отметить, что все описанные выше алгоритмы диспетчеризации процессов могут учитывать и их приоритеты. В этом случае процессы с разными уровнями приоритета помещаются в разные очереди и первым на выполнение выбирается процесс из очереди с наибольшим приоритетом.

7) Взаимоблокировка процессов объясняется ограниченностью ресурсов вычислительной системы. На рис. 26 изображены два процесса, каждому из которых для начала работы (или для её возобновления) необходимо одновременно владеть и 1-м и 2-м ресурсами. Однако 1-м ресурсом владеет процесс Б, а 2-м – процесс А. Процесс А находится в состоянии бесконечного ожидания 1-го ресурса, а процесс Б находится в состоянии бесконечного ожидания 2-го ресурса, вследствие чего оба процесса блокируют друг друга или, иными словами, находятся в состоянии взаимоблокировки.

Наличие взаимоблокировок может быть с достаточно большой долей вероятности выявлено операционной системой. В базовом алгоритме выявления взаимоблокировок процессов используются матрица запрашиваемых процессами ресурсов А, матрица уже выделенных им ресурсов В и вектор доступных ресурсов, описывающий общее число свободных ресурсов i-го типа. Работа алгоритма заключается в “отметке” незаблокированных процессов. Изначально предполагается, что все процессы являются незаблокированными. После этого выполняются следующие действия: 1. Помечаются все процессы, у которых строки в матрице выделенных ресурсов состоят из одних нулей, поскольку процесс, не удерживающий ресурсы, не может находиться в состоянии взаимоблокировки. 2. Вводится временный вектор W и инициализируется значениями вектора доступных ресурсов. 3. Находится индекс i, такой, что i-я строка матрицы А не превышает W, т.е. для всех 1  k m выполняется соотношение вида A W ik k  . Если такой строки нет, алгоритм прекращает свою работу. 4. Если такая строка существует, то помечается процесс i и соответствующая строка матрицы выделенных ресурсов прибавляется к W. Далее возвращаемся к шагу 3. Взаимоблокировка существует тогда и только тогда, когда после выполнения алгоритма некоторые процессы остаются непомеченные. Каждый непомеченный процесс заблокирован. Данный алгоритм не гарантирует предотвращения взаимоблокировок, поскольку их возникновение зависит от порядка удовлетворения запросов процессов. Все, что делает данный алгоритм, – это определяет, имеется ли взаимоблокировка в настоящий момент или нет. На рис. 27 приведён пример обнаружения взаимоблокировки у 4-х процессов.

Каждый из этих процессов может запрашивать любой из 5 типов ресурсов вычислительной системы. Ниже приводится последовательность действий, определяемая базовым алгоритмом выявления взаимоблокировок: 1. Помечаем 4-й процесс или поток, поскольку он не требует никаких ресурсов для своей работы. 2. Вводим временный вектор W = (0 0 0 0 1). 3. Запрос 3-го процесса или потока не превышает W, помечаем его и устанавливаем W=W + (0 0 0 1 0) = (0 0 0 1 1). 4. Других непомеченных процессов, строки матрицы A которых не превышают W, нет. Алгоритм прекращает свою работу. Взаимоблокированными являются 1-й и 2-й процессы. Запуск нового процесса осуществляется операционной системой только в том случае, если могут быть удовлетворены максимальные требования всех текущих процессов к наличию свободных ресурсов плюс требования запускаемого процесса. Если взаимоблокировка процессов всё-таки возникает, то для её устранения может быть использовано следующее: 1. Прекращение работы всех процессов – в настоящее время самый распространённый способ. 2. Возвращение каждого из заблокированных процессов в некоторую ранее определенную точку и их перезапуск. 3. Последовательное прекращение выполнения заблокированных процессов до тех пор, пока взаимоблокировка не прекратится. 4. И, наконец, последовательное перераспределение ресурсы до тех пор, пока взаимоблокировка не прекратится.

8) Файловой системой называется часть операционной системы, основное назначение которой заключается в организации работы с логически связанными данными – файлами, расположенными на внешних запоминающих устройствах (ВЗУ). Запись и считывание файла из ВЗУ осуществляется блоками (секторами, кластерами, экстентами) фиксированного размера, тип организации связи между которыми и определяет основные особенности организации файловых систем. Существуют 4 типа организации связи между файловыми блоками: 1. непрерывное размещение блоков; 2. связанная последовательность блоков; 3. связанная последовательность номеров (индексов) блоков; 4. перечисление номеров (индексов) блоков. Непрерывное размещение – простейший тип организации связи, при котором файловые блоки образуют сплошной участок памяти на ВЗУ, рис. 28.

Достоинством этого типа связи является его простота, а недостатком – неизбежное возникновение фрагментации ВЗУ, и как следствие, его неэффективное использование. При связанной последовательности блоков файла в начало каждого из них помещается указатель на следующий блок, рис. 29.

Достоинством этого типа организации связи является отсутствие фрагментации ВЗУ, а недостатком – относительная сложность реализации доступа к произвольно заданному месту файла – для того, чтобы прочитать его блок с номером N, необходимо последовательно прочитать N-1 блоков с целью определения указателя на следующий. При использовании связанного списка индексов с каждым блоком файла ассоциируется его индекс, рис. 30.

Индексы располагаются в отдельной области ВЗУ. Между номерами индексов и номерами блоков существует однозначное соответствие. Если некоторый блок распределен файлу, то соответствующий ему индекс содержит номер следующего блока, принадлежащему данному файлу. Достоинством этого типа организации связи между блоками файла является сокращение времени выполнения файловых операций за счёт работы только с его индексами (максимальный размер индекса, как правило, не превышает нескольких байт) и отсутствие фрагментации ВЗУ. Последним типом организации связи между блоками файла является перечисление номеров его блоков. Единственным отличием этого типа организации от 1-го является распределение блоков файла в произвольном, а не в последовательном порядке.

9) Основные особенности организации файловой системы NTFS В файловой системе NTFS (от англ. Windows NT File System – файловая система Windows NT) для организации записи и считывания файла используется перечисление индексов его блоков. Раздел диска, занимаемой файловой системой NTFS, состоит из главной таблицы файлов – MFT (от англ. Master File Table), области её роста и копии первых 3-х записей. Всё остальное пространство ВЗУ занимают блоки файловых данных, рис. 36. MFT поделена на записи фиксированного размера. Каждая запись соответствует какой-либо информации о файле.

Первые 11 записей MFT являются служебными и называются метафайлами. В следующей таблице приведены имена всех метафайлов NTFS.

Вторая копия первых 3-х метафайлов, с целью повышения надёжности работы всей файловой системы, размещается ровно посередине NTFS. Весь логический диск с NTFS, в том числе и вся её служебная информация, состоит из кластеров – аналогов файловых блоков, непрерывная последовательность которых, называемая отрезком или экстентом, является основной единицей распределения пространства ВЗУ под файловые данные. Порядковый номер кластера в NTFS называется его логическим номером – LCN (от англ. Logical Cluster Number). Если файл занимает несколько кластеров экстента, последовательно располагающихся друг за другом, то порядковый номер любого из этих кластеров называется его виртуальным номером – VCN (от англ. Virtual Cluster Number). Таким образом, часть файла, помещённая в некоторый экстент NTFS, описывается тройкой – LCNi, VCNi и ki, где ki – число кластеров файла в i-м экстенте. Все файлы в NTFS идентифицируются номером, который определятся позицией соответствующей ему записи в MFT. Такая запись MFT называется главной файловой записью. Если размер файла достаточно мал и не превышает 2К, он может быть целиком помещён в главную файловую запись MFT, рис. 37.

Стандартная информация о файле – время его создания и последней модификации, имя файла, его данные и дескриптор безопасности, определяющий допустимые над файлом операции, называются его атрибутами, размер которых в байтах прописывается в метафайле с именем $AttrDef. Большие и сверхбольшие файлы не помещаются в одну запись MFT, поэтому они состоят из резидентной и, в наиболее общем случае, нескольких нерезидентных частей. Резидентная часть помещается в записи MFT, а нерезидентные – в экстентах NTFS, рис. 38. Если файл настолько велик, что адреса его нерезидентных частей не помещаются в одну запись MFT, то они могут быть помещены в другие её записи. При этом номера этих записей помещаются в основную файловую запись в MFT, рис. 39. В NTFS могут быть записаны обычные файлы и каталоги, предназначенные для создания иерархической файловой структуры на ВЗУ. Каталоги, как и обычные файлы, могут быть небольшими, большими и очень большими. Способы их размещения полностью совпадают со способами размещения обычных файлов аналогичных размеров. Записями в каталогах NTFS являются пары – имя файла и номер его главной записи в MFT. Все файлы в резидентных частях каталогов NTFS отсортированы, как правило, в алфавитном порядке и представляют собой узлы двоичного дерева. Аналогичными узлами двоичного дерева в нерезидентных частях каталога являются их последние файлы. Поиск файла в резидентной части каталога осуществляется в результате сравнения его имени с именем текущего узла двоичного дерева. Поиск файла в нерезидентных частях каталога осуществляется их последовательного перебора. Например, для нахождения файла с именем s.cpp в резидентной части каталога, приведённой на рис. 40, осуществляется следующая последовательность действий: 1. имя искомого файла s.cpp сравнивается с первым файлом каталога a.txt; 2. поскольку выполняется соотношение s.cpp>a.txt, то поиск файла s.cpp продолжается со второй половины этого каталога – от df.cs до xyz.dll; 3. s.cpp>df.cs, следовательно, дальнейший поиск файла s.cpp осуществляется от xyy.pro до xyz.dll; 4. возвращаемся на один шаг назад, поскольку s.cpp<xyy.pro и производим поиск файла с именем s.cpp от df.cs; 5. и, наконец, на 4-м сравнении находим файл с именем s.cpp.

Для больших каталогов поиск имени файла с использованием двоичного дерева позволяет существенно сократить время этого процесса. Ниже приведена последовательность записи файла в NTFS по его полному имени – c:/mywork/mydoc/document.txt. 1. Просматривается содержимое метафайла с именем $., из которого считывается номер записи MFT, содержащий файлы каталога mywork (или номера записей – если корневой каталог имеет большой размер). 2. Из каталога mywork считывается номер записи MFT, содержащий либо файлы каталога mydoc либо – если каталог большой – адреса экстентов. 3. Если файл имеет небольшой размер, то его содержимое помещается в запись MFT, в противном случае – в свободные экстенты NTFS. 4. В резидентную часть каталога mydoc или в один из его экстентов помещается запись с именем файла и номером его главной записи в MFT. При чтении этого файла выполняется следующая последовательность действий – из каталога mydoc считывается номер его главной записи в MFT, из которой в свою очередь выделяется резидентная часть файла или адреса экстентов его нерезидентной (нерезидентных) частей. При удалении файла удаляются все его записи из MFT и соответствующая запись в резидентной или нерезидентной части каталога mydoc.

10) В процессе работы ВС информация каким-либо образом переходит от источника (например, файла или области оперативной памяти) к получателю (например, другому файлу). Для безопасности передаваемой информации может быть использована та или иная криптосистема. Различают следующие виды угроз безопасности ВС, нарушающих нормальную передачу информации. 1. Подделка. Несанкционированные пользователи или процессы помещает в систему поддельные объекты, рис. 5.5. Целью этой атаки является нарушение аутентичности. В качестве примеров можно привести помещение в сеть поддельных сообщений или добавление записей в файл

2. Прерывание. Компоненты ВС выходят из строя, становятся недоступными или непригодными, рис. 5.6. Это угроза, целью которой является нарушение доступности.

3. Перехват. Это угроза, целью которой является нарушение конфиденциальности, в результате чего доступ к ВС получают несанкционированные пользователи или процессы, рис. 5.7. В качестве примеров можно привести перехват передаваемых по сети сообщений или незаконное копирование файлов или программ.

4. Изменение. Несанкционированные пользователи или процессы не только получает доступ к ВС, но и вмешивается в работу ее компонентов, рис. 5.8. Целью этой атаки является нарушение целостности. В качестве примеров можно привести замену значений в файле данных, изменение процесса таким образом, что он будет работать по-другому, а также изменение содержимого передаваемых по сети сообщений. Приведенные выше виды угроз безопасности ВС, могут быть реализованы на уровне аппаратной платформы и программного обеспечения. Основная угроза, связанная с аппаратной платформой ВС, заключается в ее относительной доступности и как следствие легкости случайного или преднамеренного вывода из строя или кражи. Угроза на уровне программного обеспечения связана с наличием вредоносных программ, т.е. программ, основное назначение которых заключается в нанесении вреда ВС или в несанкционированном использовании ее ресурсов. Различают следующие виды вредоносных программ Вредоносные программы делятся на два категории – использующие программу-носитель и не использующие таковую. К первой категории в основном относятся программы, которые не могут выполняться независимо от носителя. Ко второй категории относятся отдельные независимые программы, которые могут выполняться самостоятельно. Зловредные программы разделяются и на такие, которые не воспроизводят себя, и такие, которые делают это. К первому виду относятся фрагменты программ, которые должны активизироваться во время определенных действий программы-носителя. Ко второму виду относятся либо фрагменты программ (вирусы), либо независимые программы (черви), способные при запуске создавать одну или несколько копий самих себя; эти копии позже активизируются в этой же или в какой-то другой ВС. Логические бомбы или троянские кони также могут быть составной частью вирусов или червей. Троянский конь – это полезная или кажущаяся таковой программа или процедура, в которой спрятан код, способный в случае срабатывания выполнить некоторые нежелательные действия. Троянские кони могут использоваться для выполнения тех функций, которые несанкционированный пользователь не мог бы выполнить непосредственно. Например, некий пользователь-злоумышленник хочет получить доступ к файлам другого пользователя. Для этого он может написать программу, которая при запуске изменяла бы права доступа к файлам вызвавшего ее пользователя так, чтобы эти файлы могли прочитать все другие пользователи. Затем, поместив эту программу в общий каталог и присвоив ей имя, похожее на имя какой-нибудь полезной утилиты, автор программы мог бы добиться того, чтобы интересующий его пользователь запустил ее. Примером маскирующей программы может быть программа, которая якобы выводит листинг файлов пользователя в нужном формате. После того как ничего не подозревающий пользователь запустит программу, ее автор сможет получить доступ к информации, которая находится в файлах этого пользователя. Вирус – это программа, которая может "заражать" другие программы, изменяя их. К изменениям относится и копирование программы-вируса в программу, которая затем может заразить другие программы. Попав в ВС, типичный вирус временно перехватывает некоторые функции ОС. Затем при любом контакте зараженной ВС с незараженной программой в нее внедряется копия этого вируса. Таким образом, ничего не подозревающие пользователи могут передавать заражение от одной ВС к другой в процессе переписывания программ или их передачи по сети. Сетевая среда, предоставляющая возможность получать доступ к приложениям и системным сервисам, которые находятся на других ВС создает идеальные условия для распространения вирусов. В настоящее время различают следующие типы вирусов. Вирус-паразит. Традиционная и наиболее распространенная форма вируса. Вирус-паразит прикрепляется к исполняемым файлам и размножается в процессе работы зараженной программы, отыскивая и заражая другие исполняемые файлы. Резидентный вирус. Проникает в ОП вместе с резидентной программой и заражает все запускаемые программы. Вирус в загрузочном секторе. Этот тип вирусов заражает главную загрузочную запись диска, а затем распространяется при условии, что ВС загружается с этого диска. Вирус невидимка (стелс). Разновидность вируса, специально разработанная таким образом, чтобы скрываться от антивирусных программ. Вирус-невидимка использует сжатие, при котором зараженная программа имеет точно такой же размер, как и ее незараженная версия. Возможно также применение намного более сложных методов. Например, вирус может поместить в программы, выполняющие ввод-вывод на диск, фрагмент кода, работающего на перехват. Тогда при попытке прочитать с помощью этой программы подозрительную часть диска вирус представит первоначальную, незараженную программу. Таким образом, термин невидимка скорее применим не к самому вирусу, а к используемой вирусом технологии. Полиморфный вирус. Вирус, который может видоизменяться при каждом новом заражении, в связи с чем, выявить такой вирус с использованием некоторой последовательности байтов его кода (сигнатуры) невозможно. Полиморфный вирус в процессе размножения создает свои копии, которые функционально эквивалентны, но заметно отличаются битовыми комбинациями. Как и в случае с вирусом-невидимкой, цель данного подхода состоит в том, чтобы сбить с толку программы, ведущие поиск вирусов. При этом каждая копия вируса будет отличаться от предыдущей. Чтобы этого достичь, вирус может случайным образом помещать в свои копии избыточные инструкции или изменять порядок независимых инструкций. Более эффективный подход состоит в использовании шифрования. Часть вируса, которую обычно называют мутационным устройством, создает случайный ключ шифрования, с помощью которого кодируется остальная часть вируса; ключ при этом сохраняется в вирусе. Когда вызывается зараженная программа, вирус дешифруется с помощью хранящегося в нем ключа. При размножении выбирается другой случайный ключ. Макровирус. Вирус, заражающий документы, созданные в Microsoft Office. Макровирусы используют возможность применения макросов в офисных приложениях. Макрос является исполняемой программой, вставленной в электронный документ. Обычно пользователи применяют макросы для автоматизации повторяющихся задач и сохранения времени, которое пришлось бы затратить на ввод текста и команд. Возможность создания макровируса определяется наличием самозапускающихся макросов, т.е. таких макросов, которые вызываются сами по себе, без каких-либо явных действий со стороны пользователя. Обычно запуск таких макросов происходит при открытии файла, его закрытии или при запуске приложения. Макрос в процессе работы может копировать себя в другие документы, удалять файлы, а также причинять другой вред пользователям системы. Черви – программы, которые используют сетевые соединения, чтобы переходить из одной ВС в другую. Однажды активизировавшись в системе, сетевой червь может вести себя как вирус, порождать троянских коней или выполнять любые другие нежелательные действия. Для самовоспроизведения сетевой червь использует некоторое транспортное средство. В качестве примеров можно привести следующие. Электронная почта. Червь рассылает свою копию другим системам по электронной почте. Удаленный запуск программ. Червь запускает свою копию на другой ВС. Зомби – это программа, которая скрытно соединяется с другой подключенной в Internet ВС, а затем использует ее для выполнения нежелательных действий, усложняя тем самым отслеживание пути к ее создателю. Зомби используются в основном при атаках с целью отказа в обслуживании, которые обычно направлены против выбранных в качестве мишени Web-узлов. Зомби распространяются на сотни ВС, принадлежащих ничего не подозревающим третьим лицам, а затем используются для поражения выбранного в качестве мишени Web-узла при помощи огромного увеличения трафика.

БД

11. Понятие базы данных. Типы баз данных.

Объект – это поименованный предмет, обладающий интересующими нас свойствами.

База данных (БД) – это структурированные зна-ния (информация) об объектах.

База данных помогает систематизировать и хранить информацию из опреде-ленной предметной области, облегчает доступ к данным, поиск и предоставление необходимых сведений. Система управления базами данных (СУБД) – комплекс языковых, программных и технических средств, предназначен-ных для организации взаимодействия пользователя и БД. Эти системы не привязы-ваются к решению конкретных проблем. В них автоматизированы стандартные про-цедуры, необходимые для работы с базами данных, а т.к. время не стоит на месте, то в каждой новой версии или новом варианте СУБД реализовано все большее количество подобных процедур.

Группу связанных между собой элементов данных называют обычно записью. Известны три основных типа организации данных и связей между ними: иерархический (в виде дерева), сетевой и реляционный.

Иерархическая БД

В иерархической БД существует упорядоченность элементов в записи, один элемент считается главным, остальные — подчиненными. Данные в записи упорядочены в определенную последовательность, как ступеньки лестницы, и поиск данных может осуществляться лишь последовательным "спуском" со ступеньки на ступеньку. Поиск какого-либо элемента данных в такой системе может оказаться довольно трудоемким из-за необходимости последовательно проходить несколько предшествующих иерархических уровней. Иерархическую БД образует каталог файлов, хранимых на диске; дерево каталогов, доступное для просмотра в Norton Соmmander, — наглядная демонстрация структуры такой БД и поиска в ней нужного элемента (при работе в операционной системе МS-DOS). Такой же базой данных является родовое генеалогическое дерево.

Рисунок 1. Иерархическая модель базы данных

Сетевая БД

Эта база данных отличается большей гибкостью, так как в ней существует возможность устанавливать дополнительно к вертикальным иерархическим связям горизонтальные связи. Это облегчает процесс поиска требуемых элементов данных, так как уже не требует обязательного прохождения всех предшествующих ступеней.

Рисунок 2. Сетевая модель базы данных

Реляционная БД

Наиболее распространенным способом организации данных является третий, к которому можно свести как иерархический, так и сетевой — реляционный (англ. relation — отношение, связь). В реляционной БД под записью понимается строка прямоугольнойтаблицы. Элементы записи образуют столбцы этой таблицы (поля). Все элементы в столбце имеют одинаковый тип (числовой, символьный), а каждый столбец — неповторяющееся имя. Одинаковые строки в таблице отсутствуют. Преимущество таких БД—наглядность и понятность организации данных, скорость поиска нужной информации. Примером реляционной БД служит таблица на странице классного журнала, в которой записью является строка с данными о конкретном ученике, а имена полей (столбцов) указывают, какие данные о каждом ученике должны быть записаны в ячейках таблицы.

12. Логическое проектирование базы данных.

13. Атрибуты сущностей базы данных. Первичный и внешний ключи.

14. Нормализация реляционных отношений.

15. Язык SQL. Основные операции и типы данных.

SQL (structured query language — «язык структурированных запросов») — язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.

SQL является прежде всего информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных. SQL можно назвать языком программирования, при этом он не является тьюринг-полным, но вместе с тем стандарт языка спецификацией SQL/PSM предусматривает возможность его процедурных расширений.

Изначально SQL был основным способом работы пользователя с базой данных и позволял выполнять следующий набор операций:

создание в базе данных новой таблицы;

добавление в таблицу новых записей;

изменение записей;

удаление записей;

выборка записей из одной или нескольких таблиц (в соответствии с заданным условием);

изменение структур таблиц.

Со временем SQL усложнился — обогатился новыми конструкциями, обеспечил возможность описания и управления новыми хранимыми объектами (например, индексы, представления, триггеры и хранимые процедуры) — и стал приобретать черты, свойственные языкам программирования.

При всех своих изменениях SQL остаётся единственным механизмом связи между прикладным программным обеспечением и базой данных. В то же время современные СУБД, а также информационные системы, использующие СУБД, предоставляют пользователю развитые средства визуального построения запросов.

Каждое предложение SQL — это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе. В соответствии с тем, какие изменения происходят в базе данных, различают следующие типы запросов:

запросы на создание или изменение в базе данных новых или существующих объектов (при этом в запросе описывается тип и структура создаваемого или изменяемого объекта);

запросы на получение данных;

запросы на добавление новых данных (записей);

запросы на удаление данных;

обращения к СУБД.

Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы — это операции над таблицами. В соответствии с этим, запросы делятся на:

запросы, оперирующие самими таблицами (создание и изменение таблиц);

запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей.

Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с указанием

типа хранимых в каждом поле значений;

связей между таблицами (задание первичных и внешних ключей);

информации, необходимой для построения индексов.

Запросы первого типа в свою очередь делятся на запросы, предназначенные для создания в базе данных новых таблиц, и на запросы, предназначенные для изменения уже существующих таблиц. Запросы второго типа оперируют со строками, и их можно разделить на запросы следующего вида:

вставка новой строки;

изменение значений полей строки или набора строк;

удаление строки или набора строк.

Самый главный вид запроса — это запрос, возвращающий (пользователю) некоторый набор строк, с которым можно осуществить одну из трёх операций:

просмотреть полученный набор;

изменить все записи набора;

удалить все записи набора.

Таким образом, использование SQL сводится, по сути, к формированию всевозможных выборок строк и совершению операций над всеми записями, входящими в набор.

Описание

Язык SQL представляет собой совокупность

операторов

инструкций

вычисляемых функций

Операторы

Согласно общепринятому стилю программирования, операторы (и другие зарезервированные слова) в SQL обычно рекомендуется писать прописными буквами.[6]

Операторы SQL делятся на:

операторы определения данных (Data Definition Language, DDL):

CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.),

ALTER изменяет объект,

DROP удаляет объект;

операторы манипуляции данными (Data Manipulation Language, DML):

SELECT выбирает данные, удовлетворяющие заданным условиям,

INSERT добавляет новые данные,

UPDATE изменяет существующие данные,

DELETE удаляет данные;

операторы определения доступа к данным (Data Control Language, DCL):

GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом,

REVOKE отзывает ранее выданные разрешения,

DENY задает запрет, имеющий приоритет над разрешением;

операторы управления транзакциями (Transaction Control Language, TCL):

COMMIT применяет транзакцию,

ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,

SAVEPOINT делит транзакцию на более мелкие участки.

16. Язык SQL. Реализация выборки данных.

17. Язык SQL. Реализация изменения данных.

18. Язык SQL. Реализация вставки и удаления данных.

19. Язык SQL. Назначение и типы триггеров

20. Язык SQL. Назначение и создание

УХВВИ

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]