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

Минобрнауки россии

федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Московский государственный технологический университет «СТАНКИН»

(ФГБОУ ВПО МГТУ «СТАНКИН»)

Факультет «Информационные технологии и системы управления»

Кафедра «Компьютерные системы управления

Емельянова Е.А.

Операционные системы и базы данных

Курс лекций

по дисциплине «Операционные системы и базы данных»

для студентов МГТУ «СТАНКИН», обучающихся по направлению

220700. 68 Автоматизация технологических процессов и производств

Москва 2013 г.

Содержание

Раздел 1. Основы построения ОС и СУБД 3

Тема 1: Архитектура, аппаратное и программное обеспечение вычислительной системы 3

Лекция №1. Основные понятия и абстракции ОС 3

Тема 2. Структура и механизмы ОС 14

Лекция №2. Структура и механизмы ОС 14

Тема 3. Организация многопрограммной работы. Процессы и потоки 24

Лекция №3. Организация многопрограммной работы 24

Тема 4 . Управление данными в ОС. Файловая система 29

Лекция №4. Управление данными в ОС 29

Тема 5. Управление данными в СУБД. Концепции и архитектура СУБД. Представление пользователя Организация баз данных 42

Лекция №5. Концепции и архитектура СУБД 42

Тема 6. Проектирование данных. Отношения 51

Лекция №6. Отношения. Нормальные формы 51

Раздел 2. Основы разработки, реализации и организации функционирования ОС и СУБД 57

Тема 1. Синхронизация процессов и доступа к ресурсам. Транзакции в ОС и СУБД 57

Лекция №1. Синхронизация процессов и доступа к ресурсам 57

Тема 2. Структуры хранения и доступа к данным. Индексы 66

Лекция №2. Структуры хранения на примере SQL Server 66

Тема 3. Информационно-логическое моделирование в разработке баз данных 70

Лекция №3. Моделирование предметной области 70

Тема 4. Работа с данными. Язык баз данных 75

Лекция №4. Основные понятия языка баз данных на примере SQL 75

Лекция №5. Запросы к базе данных 79

Тема 5. Защита и безопасность при доступе данным в многопользовательской среде 84

Лекция №6. Защита и безопасность данных 84

Раздел 1. Основы построения ОС и СУБД

Тема 1: Архитектура, аппаратное и программное обеспечение вычислительной системы

Лекция №1. Основные понятия и абстракции ОС

Лекция является вводной и в ней рассматриваются вопросы архитектур компьютера, формулируются требования к ОС, вводятся основные понятия и абстракции операционной системы.

Более конкретно рассматриваются следующие вопросы:

  • Фоннеймановская архитектура ЭВМ. Принцип хранимой в памяти программы.

  • Процедура выполнения команд.

  • Компоненты компьютера.

  • Устройства ввода-вывода и организация памяти.

  • Виды архитектур современных вычислительных систем.

Фоннеймановская структура ЭВМ. Принцип хранимой в памяти программы

Предложенная Von Neumann архитектура ЭВМ основывается на концепции хранимой программы и последовательных вычислениях. В ней определены следующие основные устройства: арифметико-логическое устройство (АЛУ), память (ЗУ), управляющее устройство (УУ), устройство ввода данных в машину, устройство вывода из нее результатов расчета и устройство взаимодействия с пользователем для приема управляющих команд.

Арифметико-логическое устройство (АЛУ) осуществляет арифметические и логические преобразования над поступающими в него машинными словами, т. е. кодами определенной длины.

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

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

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

Поскольку команды представляются в форме чисел, то над командами также могут выполняться операции (“модификация команд”).

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

В настоящее время известна и используется гарвардская архитектура (Harvard architecture), отличающаяся раздельной памятью программ и данных для конвейерной обработки, а также раздельными шины адреса и данных для доступа к ним. Команда и операнд могут считываться одновременно за один машинный такт, что уменьшает число тактов, требуемых для выполнения машинной команды), чем отличается от фон-неймановской архитектуры. Развитие этого направления представляет модифицированная гарвардская архитектура (modified Harvard architecture), в которой применяются три банка памяти, со своими собственными наборами шин.

В этой связи представляет интерес обратиться к отечественным разработкам в области построения программного обеспечения (ПО) архитектурных решений, например, к разработанным в ИТМиВТ системам Эльбрус-1 (1978) и Эльбрус-2 (1984), реализованным с использованием языка программирования высокого уровня Эль-76, а не традиционного ассемблера. Эль-76 отличался динамическим связыванием типов, которое поддержано на аппаратном уровне. Эль-76 являлся одновременно языком прикладного программирования, управления заданиями, системного программирования. Эль-76 перед исполнением переводился в байткод. Этот байткод "на лету" аппаратно транслировался в машинные команды. Возглавлявший проект 32-разрядного микропроцессора Эль-90 Владимир Пентковский затем являлся главным архитектором Pentium III (1993). В Эль-90 сочетались концепция RISC и архитектура Эльбрус-2. Основные характеристики Эль-90, которые также иллюстрируют основную терминологию определения архитектуры вычислительной системы:

  • выдача до трех команд за такт;

  • 32-разрядная архитектура;

  • упрощенный набор команд, большинство команд исполняются за один такт;

  • аппаратная поддержка языков программирования высокого уровня;

  • исполнение по предположению;

  • изменение порядкаисполнения команд ;

  • предсказание ветвлений;

  • переименование регистров;

  • раздельные кэши команд и данныхпо 32KB;

  • конвейеризованное устройство вещественной арифметики;

  • поддержка многоуровневой иерархии памяти, кэш первого и второго уровня;

  • поддержка мультипроцессорности (до 10 процессоров);

  • поддержка отладки, мониторинг производительности;

  • режим "сверхнадежных вычислений", в котором несколько процессоров независимо производят вычисления и сравнивают результаты, а если результаты расходятся, считают заново.

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

Центральный процессор, ЦП (CPU) - компонент компьютера, непосредственно исполняющий машинные команды, соответствующие его набору команд. Содержит регистровый файл (register file) , устройство управления (control unit) , устройство управления памятью (MMU) , арифметико-логическое устройство (ALU) и другие блоки.

ALU (Arithmetic-Logic Unit) - арифметико-логическое устройство, компонент процессора, выполняющий набор его арифметических и логических команд, а также команды сдвигов. Команды арифметики с плавающей запятой выполняются блоком арифметики с плавающей запятой (FPU) , управление памятью и взаимодействие с внешними устройствами осуществляется блоком MMU.

Набор команд (instruction set) - совокупность всех машинных команд, которые может исполнять данный процессор. Типичный набор состоит из арифметических и логических команд, команд пересылки данных, команд переходов и ввода-вывода. Набор команд - составная часть архитектуры процессора и может рассматриваться в качестве интерфейса между программным и аппаратным обеспечением. Существуют RISC- , CISC- и VLIW –архитектуры.

RISC-архитектура - архитектура процессоров, построенная на основе сокращённого набора команд. Характеризуется наличием команд фиксированной длины, большого количества регистров, операций типа регистр-регистр, а также отсутствием косвенной адресации.

CISC (Complex Instruction Set Computer) - процессор со сложным набором команд, традиционной архитектуры процессоров с широким набором различных машинных команд переменной длины и различным временем их исполнения.

VLIW (Very Long Instruction Word) – архитектура процессора с командными словами очень большой длины, в такой команде объединено несколько обычных команд, которые выполняются одновременно (параллельно) разными функциональными блоками процессора для повышения его быстродействия. Рост производительности достигается за счет того, что процессору не нужно тратить время на организацию параллелизма на уровне команд (ILP, Instruction Level Parallelism). Группирование параллельно исполняемых операций выполняет компилятор.

EPIC (Explicitly Parallel Instruction Computing) - вычисления с явно заданным параллелизмом команд. В этой технологии компилятор явным образом говорит процессору, какие команды можно исполнять параллельно, а какие зависят от других команд

ILP - параллелизм на уровне машинных команд, означает способность процессора исполнять несколько машинных команд одновременно в рамках одного программного потока (Thread).

Hyper-Threading (HT) – гиперпотоковость, название технологии, реализованной в процессоре Pentium 4. Она использует возможности незадействованных регистров и блоков процессора, позволяя ему работать до 30% производительнее. Благодаря этому настольный ПК может выполнять два разных приложения одновременно или одно приложение, но быстрее, чем однопроцессорная система.

Parallel processing - параллельная обработка. Способ выполнения задачи на многопроцессорном компьютере, когда отдельные её блоки (процессы) распределяются по всем доступным процессорам

Parallel computer - параллельный компьютер. Вычислительная система с распараллеливанием выполнения операций на множестве арифметических и логических блоков (процессоров). Различают системы с общей и распределённой оперативной памятью, многопроцессорные и многокомпьютерные системы.

Symmetric multiprocessing (SMP) - симметричная многопроцессорная система. Сильносвязанная система, используемая для параллельных вычислений, в которой однотипные процессорные элементы управляются единой операционной системой, причем каждый процессор имеет одинаковый доступ к устройствам ввода-вывода и все процессоры делят общее пространство памяти. Задачи (потоки) распределяются между разными процессорами. Так как все процессоры рассматриваются как эквивалентные, то новая задача поступает на процессор с наименьшей рабочей загрузкой на момент диспетчеризации задач. Процессоры взаимодействуют друг с другом по так называемой шине межсоединения

NUMA (Non-Uniform Memory Architecture [Access]) - архитектура неоднородного доступа к памяти, архитектура NUMA. Это архитектура с распределённой разделяемой памятью многопроцессорной системы, в которой время доступа в память зависит от её расположения (доступ процессора к локальному ОЗУ быстрее, чем к нелокальному). Для этого процессоры организуются в небольшие группы (кластеры), каждая из которых имеет собственный общий пул ОЗУ. Позволяет значительно увеличить число процессоров в SMP–системе.

Локальная память (local memory) - в многопроцессорных системах (например, в кластерах) относится к конкретному процессору (обычно расположена на одной с ним плате).

MPP (Massively Parallel Processing) - вычисления с массовым параллелизмом. Это архитектура многопроцессорной системы, в которой каждый из процессоров имеет собственное ОЗУ и копию ОС, приложения и обрабатывает данные независимо (SMP) от других процессоров.

SSP (Small-Scale Parallel system) - вычислительная система с ограниченным параллелизмом в работе.

Процедура выполнения команд

В наборе команд выделяют четыре основные группы команд:

  • основные (арифметические, логические и пересылочные операции);

  • передачи управления ;

  • ввода-вывода ;

  • системные (устанавливающие состояние процессора, маску прерывания, слово состояния программы и др.) .

Выполняемые в АЛУ операции делятся на следующие группы:

  • операции двоичной арифметики для чисел с фиксированной точкой;

  • операции двоичной (или шестнадцатеричной) арифметики для чисел с плавающей точкой;

  • операции десятичной арифметики;

  • операции индексной арифметики (при модификации адресов команд);

  • операции специальной арифметики;

  • операции над логическими кодами (логические операции);

  • операции над алфавитно-цифровыми полями.

Организация памяти

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

По способу организации доступа различают устройства памяти:

  • с непосредственным (произвольным) доступом (ОЗУ) ;

  • с прямым (циклическим) доступом (дисковые ЗУ);

  • с последовательным доступом (ЗУ на магнитных лентах).

К способам организации адресации информации в памяти относятся:

  • адресная, в которой поиск осуществляется по адресуячейки;

  • ассоциативная, в которой поиск производится по содержимомупараллельно,

  • стековая организации - запись/выборка производится по дисциплине “последний пришел - первым обслужен” (LIFO).

Программное обеспечение вычислительной системы

Вычислительную систему образуют аппаратные средства ЭВМ и система ее программного обеспечения. Система программного ЭВМ - комплекс программных средств, в котором выделяют операционную систему, комплект программ технического обслуживания и пакеты прикладных программ. Первые два класса ПО принято также называть системным программным обеспечением.

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

Архитектуры вычислительной машины охватывает комплекс аспектов ее построения, существенных в первую очередь для прикладного или системного программирования, а не деталей технического исполнения.

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

Система прерывания программ

Организация многопрограммной работы требует наличия возможности приостановки и возобновления исполнения программы. Такую возможность обеспечивает система прерывания программ. Основными функциями системы прерывания программ являются:

  • запоминаниесостоянияпрерываемойпрограммы и осуществлениепереходакпрерывающейпрограмме;

  • восстановлениесостояния прерванной программы и переход к ней.

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

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

Запросы на прерывания могут поступать от исполняемой прикладной программы, системной управляющей программы или из внешней среды.

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

Понятие операционной системы. Основные функции ОС.

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

С точки зрении пользователя ОС должна:

  • обеспечивать загрузку пользовательских программ в оперативную память и их исполнение;

  • обеспечивать работу с устройствами долговременной памяти, такими как магнитные диски, ленты, оптические диски и т.д.;

  • предоставлять доступ к различным устройствам ввода/вывода, таким как терминалы, модемы, печатающие устройства;

  • предоставлять пользовательский интерфейс.

Более конкретно к функциям ОС относятся:

  • организация одновременного исполнения нескольких задач пользователя;

  • предоставление ресурсов системы для исполнения пользовательских и системных программ;

  • организация взаимодействия и обмена данными между задачами/программами;

  • ввод/вывод данных, обмен данными с внешними устройствами;

  • организация межмашинного взаимодействия;

  • обеспечение безопасности данных и программ, защита от несанкционированного доступа и восстановление после сбойных ситуаций.

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

Операционная среда может включать в себя несколько интерфейсов: пользовательские и программные.

Понятия вычислительного процесса и ресурса

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

Ресурсы системы физически ограничены конкретным составом ее технических средств и подлежат распределению между исполняемыми программами и управлению в соответствии с их функциональностью.

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

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

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

Диаграмма состояний процесса

Для системных управляющих процессов в некоторых операционных системах ресурсы распределяются изначально и однозначно, т.е. более распределению не подлежат. Прочие процессы конкурируют между собой за предоставление им ресурсов. Термин задача обычно используется по отношению к процессам пользователей и к системным обрабатывающим процессам. Однако это так не во всех ОС. Например, в так называемых «микроядерных» ОС (например, в ОС реального времени QNX фирмы Quantum Software systems) большинство управляющих программных модулей самой ОС и даже драйверы имеют статус высокоприоритетных процессов, для выполнения которых необходимо выделять соответствующие, ресурсы. Аналогично и в UNIX-системах выполнение системных программных модулей имеет статус системных процессов, которые получают ресурсы для своего исполнения.

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

выполнения - все затребованные процессом ресурсы выделены;

готовности к выполнению - если ему предоставят ресурсы, то процесс может переходить в состояние выполнение;

блокирования или ожидания - ожидание наступления некоторого события в системе, например, завершения операции ввода/вывода.

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

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

В общем случае дескриптор процесса содержит следующую информацию:

  • идентификатор процесса (PID, process identificator);

  • тип (или класс) процесса, который определяет правила предоставления ресурсов;

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

  • переменную состояния процесса;

  • защищенную область памяти (или адрес области), в которой хранятся текущие значения регистров процессора при прерывании (контекст процесса);

  • о ресурсах, которыми процесс владеет и/или имеет право пользоваться (указатели на открытые файлы, информация о незавершенных операциях ввода/вывода и т. п.);

  • адреса для взаимодействия с другими процессами;

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

В некоторых операционных системах количество описателей определяется жестко и заранее на этапе генерации варианта операционной системы или в конфигурационном файле,

Процесс из состояния бездействия может перейти в состояние готовности в следующих случаях:

  • по команде оператора/пользователя (имеет место в тех диалоговых операционных системах, где программа может иметь статус задачи);

  • при выборе из очереди планировщиком (характерно для операционных систем, работающих в пакетном режиме);

  • по вызову из другой задачи (посредством обращения к супервизору один процесс может создать, инициировать, приостановить, остановить, уничтожить другой процесс);

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

  • при наступлении запланированного времени запуска программы.

Последние два способа запуска задачи, при которых процесс из состояния бездействия переходит в состояние готовности, характерны для операционных систем реального времени.

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

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

  • ОС переводит процесс в состояние готовности к исполнению в связи с появлением более приоритетной задачи или в связи с окончанием выделенного ему кванта времени;

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

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

Граф переходов состояний процесса

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

Основная литература

Учебник / Учебное пособие

Раздел

Страницы

Таненбаум Э. Современные операционные системы. 3-е изд. - СПб.: Питер, 2010. - 1120 е.: ил.

1.1, 1.2,1.3.1-1.3.4, 1.5.1-1.5.4, 1.6.1, 1.6.5, 2.1.1-2.1.6

21-38,39-48, 63-70, 78-82, 87-89, 112-120

Дополнительная литература

Учебник / Учебное пособие

Раздел

Страницы

1. Джеффри Рихтер. Windows для профессионалов (программирование в Win32 API для Windows NT 3.5 и Windows95)/Пер. с англ. - М.: Издательский отдел «Русская Редакция» 1995. - 720 с.: ил.

Глава 2, Главы 4, 6

7-40, 75-97, 135-156,

2. Робачевский А.М. Операционная система UNIX, СПб.: BHV – Санкт-Петербург, 1997. - 528 с., ил.

Глава 1, 3

38-42, 187-191, 206-234

Соседние файлы в предмете Операционные системы