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




МИНОБРНАУКИ РОССИИ

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

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

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

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

 

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

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

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

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

Методические указания к практическим занятиям

 

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

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

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

 

Москва 2013 г.


 

Введение.. 5

1. Структура и механизмы ОС.. 5

1.1. Цель практического занятия. 5

1.2. План занятия. 5

1.3. Используемые технологии.. 5

1.4. Примеры для анализа.. 5

1.5. Вопросы и литература.. 6

2. Организация многопрограммной работы: процессы и потоки.. 6

2.1. Цель практического занятия. 6

2.2. План занятия. 7

2.3. Используемые технологии.. 7

2.4. Содержательная часть занятия. 7

2.5. Вопросы и литература.. 11

3. Управление данными в ОС.. 12

3.1. Цель практического занятия. 12

3.2. План занятия. 12

3.3. Используемые технологии.. 12

3.4. Примеры для анализа.. 12

3.5. Вопросы и литература.. 14

4. Файловая система.. 15

4.1. Цель практического занятия. 15

4.2. План занятия. 15

4.3. Используемые технологии.. 15

4.4. Примеры для анализа.. 15

4.5. Вопросы и литература.. 18

5. Основы проектирование данных. Отношения.. 19

5.1. Цель практического занятия. 19

5.2. План занятия. 19

5.3. Используемые технологии.. 19

5.4. Примеры для анализа.. 19

..................................................................................................................... 21

........................................................................................................................................................................................................................ 22

.......................................................................................................................................................................................................................... 22

5.5. Вопросы и литература.. 22

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

6.1. Цель практического занятия. 23

6.2. План занятия. 23

6.3. Используемые технологии.. 23

6.4. Примеры для анализа.. 23

6.5. Вопросы и литература.. 28

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

7.1. Цель практического занятия. 28

7.2. План занятия. 28

7.3. Используемые технологии.. 29

7.4. Примеры для анализа.. 29

7.5. Вопросы и литература.. 33

8. Работа с данными. Язык баз данных.. 33

8.1. Цель практического занятия. 33

8.2. План занятия. 34

8.3. Используемые технологии.. 34

8.4. Примеры для анализа.. 34

8.5. Вопросы и литература.. 38

9. Язык баз данных.. 38

9.1. Цель практического занятия. 38

9.2. План занятия. 38

9.3. Используемые технологии.. 38

9.4. Варианты задач. 38

9.5. Вопросы и литература.. 41

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

10.1. Цель практического занятия. 42

10.2. План занятия. 42

10.3. Используемые технологии.. 42

10.4. Примеры для анализа.. 42

10.5. Вопросы и литература.. 46

 

 


Введение

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

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

· конкретизацию вопросов, в обобщенной форме рассматриваемых в лекционном курсе, и показ соответствующих функций ОС и СУБД, предназначенных для поддержки этих вопросов; в

· решение конкретных задач для содействия выполнению лабораторных работ.

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

1. Структура и механизмы ОС

1.1. Цель практического занятия

Данное занятие проводится интерактивно на основе самостоятельно проработанных и представленных материалов по построению ОС.

Целью практического занятия является более подробное ознакомление с многоуровневым построением ОС. Более конкретно внимание уделяется ядру ОС.

1.2. План занятия

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

· Ядро и вспомогательные модули ОС;

· Многоуровневое построение ядра;

· Системные вызовы;

· Механизмы планирования;

· Диспетчеризация процессов;

· Организация очередей процессов.

1.3. Используемые технологии

Для лучшего усвоения материала желательно проведение занятия с использованием компьютера.

1.4. Примеры для анализа

В качестве отправной точки анализа и обсуждения используется пример архитектуры UNIX:

Ядро и вспомогательные службы в UNIX

1.5. Вопросы и литература

1. Какие стратегии планирования применяются в системах с разделением времени?

2. Что такое «кольцевая очередь»?

3. Различаются ли понятия «время ожидания» и «время отклика»?

4. Когда процесс переводится в очередь готовых к исполнению процессов?

5. Какие виды планировщиков процессов существуют?

6. Какие требования предъявляют к алгоритмам планирования?

7. В чем заключается идея организации э кзоядра?

8. Чем привилегированный режим ОС отличается от пользовательского?

9. Что означает системный вызов?

10. Зачем нужен API?

Литература

Учебник / Учебное пособие Раздел Страницы
Таненбаум Э. Современные операционные системы. 3-е изд. - СПб.: Питер, 2010. - 1120 е.: ил. 2.4.1-2.4.4,2.4.6 1.6.1, 1.6.4, 1.7.1-1.7.6 80-86, 90-100 181-200, 201-203 187-191, 216-234

2. Организация многопрограммной работы: процессы и потоки

2.1. Цель практического занятия

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

2.2. План занятия

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

· функции ОС по управлению процессами (process) на примере Win32 API;

· другие структурные единицы (thread, fiber, job), которым может выделяться время процессора;

· функции ОС по управлению потоками (thread) на примере Win32 API.

2.3. Используемые технологии

Для лучшего усвоения материала желательно проведение занятия с использованием компьютера.

2.4. Содержательная часть занятия

Процессы создаются:

· При инициализации системы;

· При выполнении работающим процессом системного вызова, предназначенного для создания процесса;

· По запросу пользователя на создание нового процесса.

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

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

· обычного выхода (добровольно);

· выхода при возникновении ошибки (добровольно);

· возникновения фатальной ошибки (принудительно);

· уничтожения другим процессом (принудительно).

Поведением процесса на протяжение его цикла жизни от момента его создания до завершения можно управлять и можно получать доступ к атрибутам процесса с целью задания значения атрибута или его получения.

Доступ к функциональности ОС возможен с помощью интерфейса прикладного программирования, или API. Такой интерфейс определяет набор функций, которые можно использовать в прикладном программировании, устанавливается разработчиком ОС и зависит от архитектуры процессора (ов). Например, для семейства ОС Windows корпорации Microsoft существуют Win32 API и Win64 API.

Для более полного представления «управления процессами» и возможностей программиста по действию объектом «процесс» ниже приведены некоторые функции Win32 API, предназначенные для управления процессами.

Функция Описание
CreateProcess Создает новый процесс и его первичный поток
CreateProcessAsUser Создает новый процесс и его первичный поток. Новый процесс работает в контексте безопасности указанного пользователя
CreateProcessWithLogonW Создает новый процесс и его первичный поток. Новый процесс затем исполняет указанный исполнимый файл в контексте безопасности указанного мандата (пользователь, домен и пароль).
ExitProcess Завершает процесс и все его потоки
GetCurrentProcess Извлекает псевдо дескриптор для текущего процесса
GetCurrentProcessId Извлекает идентификатор процесса для вызывающего процесса
GetCurrentProcessorNumber Возвращает номер процессора, на котором исполнялся текущий поток
GetExitCodeProcess Извлекает состояние завершения указанного процесса
GetGuiResources Извлекает счетчик дескрипторов объектов для ресурсов GUI (графического интерфейса пользователя), находящихся в распоряжении текущего процесса
GetLogicalProcessorInformation Извлекает информацию о логических процессорах и связанных аппаратных средствах
GetPriorityClass Извлекает класс приоритета для указанного процесса
GetProcessAffinityMask Извлекает маску схожести процесса для указанного процесса и системную маску схожести для системы
GetProcessHandleCount Извлекает число открытых дескрипторов, которые принадлежат указанному процессу
GetProcessId Извлекает ИД_процесса для указанного процесса
GetProcessIdOfThread Извлекает ИД_процесса для процесса, связанного с указанным потоком
GetProcessIoCounters Извлекает учетную информацию для всех операций ввода / вывода, выполненных указанным процессом
GetProcessShutdownParameters Извлекает параметры завершения работы для текущего вызывающего процесса
GetProcessTimes Извлекает информацию временной диаграммы (тактирования) для указанного процесса.
GetProcessVersion Извлекает номера старшей и младшей версии системы, на которой ожидается работа указанного процесса
GetProcessWorkingSetSize Извлекает минимальные и максимальные размеры рабочего набора указанного процесса
GetStartupInfo Извлекает содержимое STARTUPINFO
OpenProcess Открывает существующий объект процесса
SetEnvironmentVariable Устанавливает для текущего процесса значение переменной окружения (содержащей информацию о среде исполнения программы, например путь к рабочему каталогу на диске, опции приложения и т.д.)
SetPriorityClass Устанавливает класс приоритета для указанного процесса
SetProcessAffinityMask Устанавливает маску схожести процессора для потоков указанного процесса
SetProcessShutdownParameters Устанавливает параметры завершения работы для текущего вызывающего процесса
TerminateProcess Завершить указанный процесс и все его потоки

 

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

Функция Описание
CreateRemoteThread Создает поток, который работает в виртуальном адресном пространстве другого процесса
CreateThread Создает поток для исполнения внутри виртуального адресного пространства вызывающего процесса
ExitThread Завершает поток
GetCurrentThread Извлекает псевдо дескриптор для текущего потока
GetCurrentThreadId Извлекает идентификатор потока вызывающего процесса
GetExitCodeThread Извлекает состояние завершения указанного потока
GetThreadId Извлекает идентификатор потока для указанного потока
GetThreadPriority Извлекает значение приоритета значение для указанного потока
OpenThread Открывает существующий объект «поток »
ResumeThread Уменьшает счетчик приостановок для потока
SetThreadIdealProcessor Задает предпочтительный процессор для потока
SetThreadPriority Устанавливает значение приоритета для указанного потока
Sleep Приостанавливает выполнение текущего потока на указанный промежуток времени
SleepEx Приостанавливает текущий поток до тех пор, пока не выполнится указанное условие
SuspendThread Приостанавливает указанный поток
SwitchToThread Побуждает вызывающий процесс уступить исполнение другому потоку, который готов к работе на текущем процессоре
TerminateThread Завершить поток
ThreadProc Зависящая от конкретного приложения функция, использующаяся как начальный адрес для потока

 

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

Fiber («нить») - единица исполнения, которую «вручную » может планировать приложение. Нить работает в контексте потоков, которые могут осуществлять их планирование. Каждый поток может осуществлять планирование множества нитей. Планирование нити осуществляется переключением на другую нить. За синхронизацию отвечает приложение.

#include <windows.h>

#include <stdio.h>

 

void main(VOID)

{

STARTUPINFO si;

PROCESS_INFORMATION pi;

 

ZeroMemory(&si, sizeof(si)); //инициализация структуры STARTUPINFO

si.cb = sizeof(si);

ZeroMemory(&pi, sizeof(pi)); // инициализация PROCESS_INFORMATION

 

// Создать дочерний процесс с параметрами:

if(!CreateProcess(NULL, // без имени модуля (use command line).

TEXT("MyChildProcess"), // командная строка

NULL, // handle процесса не наследуется not inheritable.

NULL, // handle потока не наследуется

FALSE, // установка наследования handle в FALSE

0, // нет флагов создания

NULL, // использовать блок окружения родителя

NULL, // использовать директорий родителя

&si, // указатель на структуру STARTUPINFO

&pi) // указатель на структуру PROCESS_INFORMATION)

 

{

printf("Ошибка при создании файла (%d).\n", GetLastError());

return; //возврат из main

}

 

// Ожидать выхода из дочернего процесса

WaitForSingleObject(pi.hProcess, INFINITE);

 

// Закрыть дескрипторы процесса и потока

CloseHandle(pi.hProcess);

CloseHandle(pi.hThread);

}

 

2.5. Вопросы и литература

1. Чем различаются вызовы post и send?

2. Какие объекты синхронизации. ОС существуют?

3. Что такое монопольный доступ?

4. Что означает конкуренция за доступ?

5. В чем состоит различие кэш а и буфера?

6. Зачем используется буферизация?

7. Чем процесс отличается от потока?

8. Зачем используется контекст процесса?

9. Постоянен ли приоритет потока?

10. Каково назначение примитива signal?

Литература

Учебник / Учебное пособие Раздел Страницы
Таненбаум Э. Современные операционные системы. 3-е изд. - СПб.: Питер, 2010. - 1120 е.: ил. 2.3.1-2.3.5 150-164

3. Управление данными в ОС

3.1. Цель практического занятия

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

3.2. План занятия

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

· Распределение памяти фиксированными разделами;

· Распределение памяти разделами переменной величины;

· Распределение памяти перемещаемыми разделами;

· Распределение страницами;

· Фрагментация памяти;

· «кучи» (heap).

3.3. Используемые технологии

Для лучшего усвоения материала желательно проведение занятия с использованием компьютера.

3.4. Примеры для анализа

Функциями ОС по управлению основной памятью являются:

· отображение адресов пространства символических имен программы на языке высокого уровня на пространство виртуальных и физических адресов;

· сборка исполнимых программных модулей, загрузка исполнимых модулей в память и настройка адресов на конкретную область физической памяти;

· выделение памяти процессам и освобождение памяти при завершении процессов;

· отслеживание свободной и занятой памяти и сборка «мусора».

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

Иллюстрация распределения памяти динамическими разделами

При таком распределении памяти ОС осуществляет:

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

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

· загрузку задачи в выделенный ей раздел и корректировку таблиц свободных и занятых областей,

· после завершения задачи - корректировку таблиц свободных и занятых областей.

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

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

Иллюстрация распределения памяти перемещаемыми разделами

Процедура сжатия и приводит к более эффективному использованию памяти, но может потребовать значительного времени.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: