Некоммерческое акционерное общество

Алматинский университет энергетики и связи

Кафедра инженерной  кибернетики

 

                                                                           

 

ОПЕРАЦИОННЫЕ СИСТЕМЫ

 

Методические указания к выполнению лабораторных работ для студентов

специальности  5B070200 – Автоматизация и управление

 

 

Алматы 2011 

СОСТАВИТЕЛИ: Сябина Н.В., Ешпанова М.Д. Методические указания к выполнению лабораторных работ по дисциплине «Операционные системы» для студентов специальности 5B070200 - «Автоматизация и управление». – Алматы: АУЭС, 200939 с.  

 

Настоящие методические указания по дисциплине «Операционные системы» включают 8 лабораторных работ и разработаны в помощь студентам, изучающим операционные системы, с целью выработки практических навыков работы в операционных системах MS DOS, MS WINDOWS. В каждой лабораторной работе предлагаются варианты заданий, методы и примеры решения задач, а также контрольные вопросы.

Методические указания предназначены для студентов специальности 5В070200 – «Автоматизация и управление».

         Ил. 2, табл. 6, библиогр. –  14  назв.

  

Рецензент: канд. техн. наук, проф. Ибраева Л.К.

  

Печатается по плану издания некоммерческого акционерного общества «Алматинский институт энергетики и связи» на 2009 г.

 

© НАО «Алматинский университет энергетики и связи», 2011 г.


Содержание 

1 Лабораторная работа. Операционная система Windows. Режим командной строки     4

2 Лабораторная работа. Операционная система Windows. Основы разработки командных (пакетных) файлов                                                                                               8

3 Лабораторная работа. Вычислительные процессы и ресурсы. Компоненты вычислительного процесса                                                                                 14

4 Лабораторная работа. Ресурсы и их распределение между процессами        18

5 Лабораторная работа. Взаимные блокировки потоков и их обнаружение     21

6 Лабораторная работа. Способы распределения процессорного времени в операционных системах                                                                                                              25

7 Лабораторная работа. Исследование возможностей операционной системы при работе с памятью                                                                                                               29

8 Лабораторная работа. Исследование механизмов работы с памятью            33

Список литературы                                                                                             39

 


1 Лабораторная работа. Операционная система Windows. Режим командной строки

 

Цель работы: получить навыки работы в режиме командной строки операционной системы Windows; изучить состав внутренних команд и их функциональные возможности.

 

1.1      Общие сведения

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

а) Пуск – команда Выполнить – в поле ввода набрать cmd (команда Windows, сокращение от слова commander);

б) ПускПрограммыСтандартныеКомандная строка.

Отключение режима обеспечивается набором в строке приглашения команды exit и ее выполнения при нажатии клавиши Enter.

 

1.1.1 Состав внутренних команд Windows

В состав внутренних команд в системе Windows  входит примерно семьдесят команд (в системах Unix – более трехсот). Весь перечень этих команд можно просмотреть, если в командной строке выполнить команду help. Для ознакомления с каждым элементом перечня следует использовать сложную команду, состоящую из конвейера двух команд  help | more.

Так как список команд достаточно обширный, то обычно их рассматривают, разбив на группы:

1) команды справочной системы;

2) команды файловой системы;

3) команды управления работой ОС;

4) команды пакетных (командных) файлов.

 

1.1.2  Команды справочной системы.

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

а) help – для получения справки по всем командам;

б) help имя_команды  или имя_команды / ? - для получения справки по указанной команде.

 

1.1.3 Команды файловой системы.

К основным командам файловой системы относятся следующие:

а) сd, chdir -  смена текущей папки или диска;

б) chkdsk  - проверка диска и вывод статистики;

в) cls  - очистка экрана;

г) copy – копирование одного или нескольких файлов в другое место;

д) del – удаление одного или нескольких файлов;

е) dir – вывод списка файлов и подпапок из указанной папки;

ж) md, mkdir – создание новой папки;

з) move – перемещение одного или нескольких файлов из одной папки в другую;

и) rd, rmdir – удаление папки;

к) ren – переименование файлов, папок;

л) tree – графическое отображение структуры папок заданного диска или заданной папки;

м) type – вывод на экран содержимого текстовых файлов.

Если есть длинные последовательности вводимых команд, всегда имеется возможность повторить или отредактировать команду. Для этого следует выбрать команду из журнала (истории). Клавиша управления курсором вверх выводит предыдущую команду, вправо-влево позволяет редактировать команду.

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

Знак < означает, что данные вводятся из файла, а символы > и >> - выводятся в файл.

Команда dir > asem.txt обозначает, что содержимое текущего каталога выводится в файл asem.txt.

Команда color позволяет выбирать и устанавливать цвета текста и фона для текстовых окон. Цвета текста и фона выбираются из 16 цветов, и назначаются двумя 16-ричными цифрами.

Команда prompt  обеспечивает настройку вида приглашения по желанию пользователя. Команда может иметь множество параметров. Стандартным видом приглашения является prompt $p$g, что обозначает вывод в приглашении имени текущего каталога и знака >.

 

1.1.4 Команды управления работой операционной системы.

За командой, набираемой в командной строке, следуют ключи – указания, модифицирующие поведение команды. Квадратные скобки [ ] в пояснениях обозначают, что эта информация не является обязательной при наборе команды. Кроме ключей могут следовать аргументы – названия объектов, над которыми должна быть выполнена команда. Очень часто аргументами служат имена файлов и каталогов. Ввод команды заканчивается нажатием клавиши  Enter.

 

1.1.5 Команды пакетных (командных) файлов.

Командный файл – это группа последовательных команд настройки компьютера на определенный режим или выполнение определенных операций.

Командный файл создается по обычным правилам, но расширением должно быть только одно сочетание - bat  (сокращение от batch – пачка).

Выполнение командного файла может быть прекращено командами Ctrl+Break или Ctrl+C.

Командный файл выполняется командным процессором строка за строкой.

Из командного файла можно вызвать другой командный файл командой Call (с возвратом) или обычной командой вызова (без возврата).

Перед выполнением очередной строки командного файла ее значение выводится на экран. Вывод любой строки командного файла на экран подавляется, если строка начинается с символа @.

Для построения командных файлов используются специальные внутренние команды операционной системы (см. таблицу 1.1), а также внешние find, sort, mode, more.

 

Таблица 1.1 - Команды командных (пакетных) файлов

Команда

Значение

call

Вызов одного пакетного файла из другого

echo

Вывод сообщений и переключение режима отображения команд на экране

exit

Завершение программы cmd.exe (интерпретатора командных строк)

for

Запуск указанной команды для каждого из файлов в наборе

goto

Передача управления в отмеченную строку пакетного файла

if

Оператор условного выполнения команд в пакетном файле

pause

Приостановка выполнения пакетного файла и вывод сообщения

rem

Помещение комментариев в пакетные файлы

set local

Начало локальных изменений среды для пакетного файла

shift

Изменение содержимого (сдвиг) подставляемых параметров для пакетного файла

 

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

Команда set предназначена для вывода, создания и удаления переменных среды интерпретатора команд. Команда имеет формат:

set [переменная=[строка]]

Эта команда формирует переменную окружения в резервируемой памяти операционной системы, доступной для команд ОС. Имя переменной не должно совпадать с ключевыми резервируемыми словами.  Команда set без параметра выводит содержимое всех используемых ос переменных окружения, а команда set имя = (без значения) удаляет соответствующую строку окружения.

Команда set /a  переменная = выражение позволяет  обрабатывать арифметические и алгебраические выражения, заданные в правой части выражения.

Ключ /P позволяет установить значение переменной для входной строки, введенной пользователем. 

Команда promptString показывает указанное приглашение перед чтением введенной строки. Приглашение promptString может быть пустым.

Для обращения к переменным окружения их имена следует заключать в знаки %. Формальные параметры, включаемые в строки командного файла, имеют вид %1, и так далее до %9. Фактические значения вводятся в строке вызова командного файла.

 

1.2 Задания к лабораторной работе

1.2.1 Используя справочную систему Windows, выполните следующие действия:

- определите текущую дату;

- установите новую дату,  соответствующую дате Вашего дня рождения;

- при выходе из режима командной строки установите текущую дату;

- включите в строку приглашения сообщение  - приветствие пользователю;

- при выходе установите стандартный вид приглашения;

- установите различные сочетания цветов текста и фона.

 

1.2.2 Используя команды файловой системы Windows, выполните следующие действия:

- создать дочерний каталог для текущего каталога;

- используя команду dir, убедитесь в создании подкаталога;

- сделайте дочерний каталог текущим;

- выполните команду dir и объясните появившиеся сообщения;

- выйдите в корневой каталог;

- вернитесь в исходный каталог;

- создайте текстовый файл с некоторым фрагментом текста;

- выполните команду find/;

- создайте несколько текстовых файлов с наличием в них одни и тех же элементов текста;

- организуйте поиск элементов текста в группе файлов, используя шаблоны имен файлов (например,*.txt).

 

1.2.3 Используя справочную систему Windows, изучите функциональные возможности команды attrib и выполните следующие действия:

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

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

 

1.2.4 Выполните реализацию задач из п.1.2.2 в любой из известных Вам сред визуального или объектно-ориентированного программирования (Delphi, C++Builder, VisualC++ и т.д.).

 

1.3 Требования к отчету

Отчет по работе выполняется на бумажном носителе и должен содержать:

- задание к работе;

- описание порядка выполнения действий;

- листинги программ с комментариями;

- снимки экрана с результатами работы;

- выводы по каждому заданию.

 

1.4 Контрольные вопросы

1.4.1 Каким образом осуществляется включение и отключение режима командной строки?

1.4.2  На какие группы можно разделить внутренние команды Windows?

1.4.3 Назовите способы  получения справки по командам Windows.

1.4.4 Какие команды относятся к командам файловой системы?

1.4.5  С помощью какой команды выполняется настройка вида приглашения по желанию пользователя?

1.4.6 Каким образом можно перенаправить ввод или вывод результатов?

1.4.7 Какие команды относятся к командам управления работой Windows?

1.4.8 Что представляет собой командный файл?

1.4.9 Какая команда позволяет работать с переменными среды интерпретатора команд?

1.4.10 Каковы особенности использования команды set?

 

 

2 Лабораторная работа. Операционная система Windows. Основы разработки командных (пакетных) файлов

 

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

 

2.1            Общие сведения

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

 

2.1.1 Команда echo осуществляет вывод сообщений и переключение режима отображения команд на экране. Общий вид команды:

ECHO [ON | OFF]

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

echo off – запрет вывода на экран;

echo on – разрешение вывода на экран;

echo (без параметров) – запрос состояния эха (on или off) для определения текущего значения этой команды;

echo + текстовое сообщение – вывод текстового сообщения на экран;

echo %имя переменной окружения% - вывод текущего значения переменной окружения.

 

2.1.2 Для приостановки выполнения командного файла используется команда pause.  При этом на экран выводится сообщение:

 Для продолжения нажмите любую клавишу ...

Команду полезно использовать, когда на экране дисплея выводится большое количество информации порциями по страницам, чтобы можно было прочитать и затем перейти к следующему формату. Также ее можно использовать для управления работой командного файла. Если в ответ на команду pause нажать Ctrl+C, то появляется вопрос:

Завершить выполнение задания?

Выбор Y – останавливает выполнение командного файла, а N - обеспечивает продолжение его выполнения.

 

2.1.3 Команда find позволяет осуществить поиск слова/фразы в указанном файле. С помощью параметров, перечень которых легко найти, используя справочную систему, можно получить различные варианты поиска. На примере команды find рассмотрим использование формальных и замещаемых параметров в командах.

Пример 1.

Создадим текстовый файл tt1.txt:

what country are you from?

         what is you name?

Создадим командный файл cf1.bat:

find /%1 "%2" %3

В созданном командном файле содержатся следующие замещаемые параметры: %1 – запрашивает режим поиска; %2 – определяет запрос строки символов для поиска; %3 – запрашивает имя файла, в котором будет отыскиваться слово «what».

Запуск можно выполнить следующей строкой:

C:\DOCUME~1\bista\0016~1\ooo> cf1.bat n what tt1.txt

C:\DOCUME~1\bista\0016~1\ooo> find /n "what" tt1.txt

При этом на экран будет выведен следующий результат поиска:

---------- TT1.TXT

[2]    what country are you from?

[3]    what is you name?

Другой вариант поиска можно осуществить с помощью следующей строки:

C:\DOCUME~1\bista\0016~1\ooo>cf1.bat c what tt1.txt

C:\DOCUME~1\bista\0016~1\ooo>find /c "what" tt1.txt

В качестве результата на экране появится запись о количестве найденных в файле слов:

---------- TT1.TXT: 2

 

2.1.4 Команда goto – позволяет изменить привычную последовательность команд выполнения операторов командного файла. Когда командный процессор встречает строку с оператором goto, то он просматривает все строки файла и отыскивает соответствующую метку–строку с двоеточием. Идентификатор метки может иметь до восьми символов. Команда может использоваться самостоятельно или совместно с оператором if.

 

2.1.5 Команда if – организует разветвление при выполнении командного файла, т.е. реализует условное выполнение команд. Ее формат:

if условие команда

В качестве условия обычно используются:

а) проверка наличия файла. В этом случае в качестве условия записывается фраза:

exist диск:\путь\имя файла.расширение

б) проверка идентичности  двух символьных строк. Условие задается в виде:

str1==str2

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

echo off

set /p  s=str

set /p s1=str

if  %s%= =%s1% goto m1

echo all right

:m1

begin

set /a n=2

echo on

echo %n%

         end

Используя not, можно проверить противоположное условие.

Пример 3. Командный файл  i2.bat проверяет, есть ли в текущем каталоге файл aaa.txt.

if exist aaa.txt goto m1

echo aaa.txt no exist

go end

:m1

type aaa.txt

:end

 

С использованием отрицания:

if not exist aaa.txt goto err1

type aaa.txt

goto end

:err1

echo it is bad

:end

Пример 4. Командный файл i5any.bat отыскивает и просматривает любой файл.

echo off

cls

if /%1==/ goto r1

if not exist %1 goto r2

type %1|more

goto end

:r1

echo there_is_ not_ name_ of file_ %1

goto end

:r2

echo there_is_ not_ this_file_ %1

goto end

:end

Вызов файла: i5any.bat aaa.txt

 

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

а) для строк командных файлов:

for %% переменная in (набор) do команда

б) для режима командной строки:

for % переменная in (набор) do команда

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

диск:\путь\имя_файла.расширение

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

диск:\путь\*.расширение

 

2.2 Задания к лабораторной работе

2.2.1 В командной строке набрать и выполнить команду echo off. Обратить внимание на изменения в командной строке.

 

2.2.2 Набрать и выполнить команду dir.  Обратить внимание, что в строке приглашения остается только мигающий курсор, а само действие команды не блокируется.

 

2.2.3 Восстановить приглашение с помощью команды echo on.

 

2.2.4 Создать текстовый файл t1.bat со следующим содержанием:

echo off

cls

echo we are students of AIPET!

echo:

echo Hello!

а) выполнить его, вызвав t1.bat. Объяснить появление фрагментов данных на экране;

б) заменить команду echo off на echo on. Снова вызвать файл t1.bat. Объяснить появление фрагментов данных на экране.

 

2.2.5 Создать командный файл t2.bat со следующим содержанием:

echo off

rem it is first comment

cls

rem it is second comment

echo good morning!

rem it is third comment

echo:

echo Hello!

rem it is last comment

а) выполнить файл;

б) заменить echo off на echo on и снова выполнить файл;

в) сравнить результаты и объяснить различия в выводимой информации на экране дисплея.

 

2.2.6Создать командный файл f1.bat, который выводит содержимое некоторого текстового файла. Создать командный файл f2.bat, который вызывает командный файл f1.bat. Используя echo, вывести файлы в разных режимах. Используя @,  сделать так, чтобы команды пакетного файла не выводились.

 

2.2.7Создать командный файл, который после вывода некоторых сообщений делал бы паузу, а затем бы выводил следующую фразу.

 

2.2.8Создать командный файл, который можно прервать, когда необходимо.

 

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

 

2.2.10     Создать переменную окружения, которая имеет значение “aipet”.

 

2.2.11     Создать командный файл, который в случае совпадения двух строковых переменных присвоил бы целой переменной значение 2, в противном случае вывел бы строку – “no equal”.

 

2.2.12     Создать командный файл, который проверяет, есть ли в текущем каталоге заданный файл (использовать формальные параметры).

 

2.2.13     Создать каталог. В созданном каталоге сформировать несколько текстовых файлов с разным содержанием. В режиме командной строки выполнить команду вывода на экран содержимого этих файлов. Создать командный файл для вывода файлов на экран.

 

2.3 Требования к отчету

Отчет по работе выполняется на бумажном носителе и должен содержать:

- задание к работе;

- описание способов решения задач;

- листинги программ с комментариями;

- снимки экрана с результатами работы;

- выводы по каждому заданию.

 

2.4 Контрольные вопросы

2.4.1 Каковы особенности использования команды echo?

2.4.2 С какой целью применяется команда pause?

2.4.3 Каковы особенности использования команды find?

2.4.4 Что может использоваться в качестве условия при реализации команды if?

2.4.5 Как выполнить проверку идентичности двух символьных строк?

2.4.6 Какая команда позволяет изменить привычную последовательность команд выполнения операторов командного файла?

2.4.7 Допустимо ли совместное использование команд if и goto?

2.4.8 Какой формат команды for используется для строк командных файлов?

2.4.9 Как создать переменную окружения?

2.4.10 Какое условие используется для проверки наличия файла?

  

3 Лабораторная работа. Вычислительные процессы и ресурсы. Компоненты вычислительного процесса

 

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

 

3.1 Общие сведения

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

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

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

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

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

Для запуска Диспетчера задач и просмотра компонентов вычислительного процесса выполнить следующие действия:

а) щелкнуть правой кнопкой мыши на панели задач и выбрать строку Диспетчер задач или нажать ПускВыполнить – набрать в поле ввода taskmgr;

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

в) просмотр процессов осуществляется переходом на вкладку Процессы. Таблица процессов включает в себя все процессы, запущенные в собственном адресном пространстве, в том числе все приложения и системные сервисы. Обратите внимание на процесс Бездействие системы – фиктивный процесс, занимающий процессор при простое системы;

г) для просмотра 16-разрядных процессов в меню Параметры выбрать команду Отображать 16-разрядные задачи;

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

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

а) перейти на вкладку Быстродействие. Верхние два окна показывают интегральную загрузку процессора и хронологию загрузки. Нижние два окна – те же показатели, но по использованию памяти;

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

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

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

а) в окне Диспетчера задач представлены  процессы, зарегистрированные в Windows;

б) не включены драйверы устройств, некоторые системные службы;

в) требования к памяти отражают текущее состояние процесса;

г) в списке отражены объемы памяти, занятые приложениями в текущий момент;

д) нет возможности отследить изменения, поскольку не выводятся временные характеристики.

Для детального исследования вычислительного процесса предусмотрены следующие средства:

- Системный монитор и Оповещения;

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

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

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

 

3.2 Задания к лабораторной работе

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

а) на вкладке Процессы посмотреть число потоков и другие характеристики процесса;

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

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

 

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

 

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

 

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

 

3.3 Требования к отчету

Отчет по работе выполняется на бумажном носителе и должен содержать:

- задание к работе;

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

- снимки экрана с результатами работы;

- выводы по каждому заданию.

 

3.4 Контрольные вопросы

3.4.1 Что представляет собой вычислительный процесс?

3.4.2 Приведите примеры вычислительных процессов.

3.4.3 С какой целью было введено понятие «поток выполнения»?

3.4.4 Какие виды ресурсов существуют?

3.4.5 Приведите примеры разделяемых и неделимых ресурсов.

3.4.6 Перечислите компоненты вычислительного процесса.

3.4.7  Какие средства системы позволяют получить информацию о компонентах процесса?

3.4.8  Для чего служит Диспетчер задач?

3.4.9 Какие Вы знаете служебные программы, которые позволяют сделать работу операционной системы более эффективной?

3.4.10  Какие сведения можно получить, обратившись к Журналам производительности?


4 Лабораторная работа. Ресурсы и их распределение между процессами.

 

Цель работы: получить практические навыки распределения ресурсов вычислительной системы между процессами.

 

4.1 Общие сведения

К основным видам ресурсов вычислительной системы относятся:

а) сам процессор, точнее — процессорное время;

б) память;

в) внешние устройства;

г) программные модули;

д) информационные ресурсы.

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

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

- ресурс свободен и в системе нет запросов от задач более высокого приоритета к этому же ресурсу;

- текущий запрос и ранее выданные запросы допускают совместное использование ресурсов;

- ресурс используется задачей низшего приоритета и может быть временно отобран (разделяемый ресурс).

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

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

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

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

 

4.2 Задания к лабораторной работе

4.2.1 В системе имеются 5 процессов (A, B, C, D, E) и 4 ресурса (p1, p2, p3, p4), которые можно предоставить этим процессам. Текущее распределение ресурсов и максимальное их количество, необходимое процессам, приведено в таблице 4.1. Необходимо заполнить столбцы «Требуется» и «Доступно». Определить, безопасно ли немедленно удовлетворение запроса (0,1,0,0) процесса С.

Таблица 4.1 – Распределение ресурсов и их количество

Процесс

Предоставлено р1, р2, р3, р4

Максимальные требования

Требуется

р1, р2, р3, р4

Доступно

р1, р2, р3, р4

А

0 0 1 2

0 0 1 2

 

2 1 0 0

B

2 0 0 0

2 7 5 0

 

 

С

0 0 3 4

6 6 5 6

 

 

D

2 3 5 4

4 3 5 6

 

 

Е

0 3 3 2

0 6 5 2

 

 

 

4.2.2 Имеются 4 процесса (A, B, C, D) и 3 ресурса. Также известны матрица распределенных ресурсов и матрица требований (см. таблицы 4.2, 4.3). Вектор существующих ресурсов  Е=(9,3,6). Определить оптимальный вариант распределения существующих ресурсов.

 

Таблица 4.2 -  Матрица распределенных ресурсов

процесс

ресурс 1

ресурс 2

ресурс 3

А

1

0

0

B

6

1

2

С

2

1

1

D

0

0

2

 

Таблица 4.3 - Матрица требований

процесс

ресурс 1

ресурс 2

ресурс 3

А

3

2

2

B

6

1

3

С

3

1

4

D

4

2

2

4.2.3 В системе существует только один ресурс каждого типа. Система состоит из 6 процессов – A, B, C, D, E, F  и пяти ресурсов -  R, S, T, V, U. В некоторый момент времени система соответствует следующему списку:

Процесс А занимает ресурс S и хочет получить ресурс U;

Процесс В ничего не использует, но хочет получить ресурс R;

Процесс С ничего не использует, но хочет получить ресурс V;

Процесс D занимает ресурс U и хочет получить ресурсы R и T;

Процесс Е занимает ресурс Т и хочет получить ресурс V;

Процесс F  занимает ресурс R и хочет получить ресурс  T.

Возможно ли немедленное удовлетворение всех запросов? В какой последовательности следует удовлетворять запросы процессов для завершения их выполнения?

 

4.2.4 Выполнить задания 4.2.1 - 4.2.3, организовав пользовательский интерфейс, используя графические возможности  языка программирования.

 

4.3 Требования к отчету

Отчет по работе выполняется на бумажном носителе и должен содержать:

- задание к работе;

- описание тех или иных действий, выполненных для получения результата;

- листинги программ с комментариями;

- снимки экрана с результатами работы;

- выводы по каждому заданию.

 

4.4 Контрольные вопросы

4.4.1 Что понимают под термином «ресурс»?

4.4.2 Какие способы разделения ресурсов существуют?

4.4.3 Какие ресурсы можно отнести к важнейшим?

4.4.4 Какие типы программных модулей различают? Возможно ли их разделение?

4.4.5 Какие устройства можно отнести к устройствам с прямым или последовательным доступом?

4.4.6 Что относится к информационным ресурсам?

4.4.7  Какова общая схема выделения ресурсов?

4.4.8  При каких условиях процессу может быть выделен ресурс?

4.4.9  В каких случаях ресурс принудительно отбирается у процесса? 

4.4.10  Как приоритет процесса может влиять на выделение ресурса?


5 Лабораторная работа. Взаимные блокировки потоков и их обнаружение

 

Цель работы: получить практические навыки обнаружения взаимоблокировок потоков.

 

5.1 Общие сведения

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

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

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

Пусть имеется множество процессов Р={Р1, Р2, …, Рn} и множество ресурсов Е={Е1, Е2, …, Еm}, где n и m - количество процессов и ресурсов соответственно. В любой момент времени некоторые ресурсы могут быть заняты и, соответственно, недоступны.

Пусть вектор А=(А1, А2, …, Аm) – вектор доступных ресурсов. Причем выполняется соотношение Аj<=Еj, где j=1, 2, …, m.

Кроме того, рассматриваются две матрицы:

1) С={сij}, i=1, 2, …n; j=1,2,...,m – матрица текущего распределения ресурсов, где сij – количество ресурсов j-того класса, которые занимает процесс Pi;

2) R={rij}, i=1,2,...n; j=1,2,...,m – матрица требуемых (запрашиваемых)  ресурсов, где rij – количество ресурсов j–того класса, которые хочет получить процесс  Pi.

Справедливо m соотношений по ресурсам:

, где j=1,2,...,m.                                                      (5.1)

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

Алгоритм обнаружения тупиков состоит из следующих шагов:

1)       ищется процесс Pi, для которого i-строка матрицы R меньше вектора A, то есть  Ri<=A, или rij<Aj, где j=1, 2, ..., m;

2)       если такой процесс найден, это значит, что он может завершиться  и освободить занятые ресурсы. Найденный процесс отмечается, i–я строка матрицы C прибавляется к вектору A, то есть Aj=Aj+cij, где j=1,2,...m, и осуществляется возвращение к шагу 1;

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

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

 

5.2 Задания к лабораторной работе

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

Пусть система состоит из семи процессов – A, B, C, D, E, F, G  и шести ресурсов - R, S, T, V, W, U. В некоторый момент времени система соответствует следующему списку:

а) процесс А занимает ресурс R и хочет получить ресурс S;

б) процесс В ничего не использует, но хочет получить ресурс Т;

в) процесс С ничего не использует, но хочет получить ресурс S;

г) процесс D занимает ресурс U и хочет получить ресурсы S и T;

д) процесс Е занимает ресурс Т и хочет получить ресурс V;

е) процесс F  занимает ресурс W и хочет получить ресурс  S;

ж) процесс G  занимает ресурс V и хочет получить ресурс U.

Требуется:

1) определить заблокирована ли эта система и если да, то, какие процессы в этом участвуют;

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

3) распределить ресурсы по процессам в соответствии с приведенным списком;

4) построить граф ресурсов и процессов, позволяющий установить процессы, которые попали в тупиковую ситуацию.

 

5.2.2 В системе есть 5 процессов (A, B, C, D, E) и 4 ресурса (p1, p2, p3, p4), которые можно предоставить процессам. Текущее распределение ресурсов и максимальное их количество, необходимое процессам, приводится в таблице 5.1. Заполнить столбцы «требуется» и «доступно». Определить оптимальный вариант распределения существующих ресурсов.  Возможно ли возникновение в системе тупиковой ситуации?

 

Таблица 5.1 – Распределение ресурсов и их количество

процесс

Предоставлено

р1, р2, р3, р4

Максимальные требования

Требуется

р1, р2, р3, р4

Доступно

р1, р2, р3, р4

А

0 0 1 3

1 0 1 5

 

1 1 0 2

В

1 3 0 0

2 6 5 0

 

 

С

0 0 3 1

2 6 5 6

 

 

D

2 3 4 1

4 3 5 6

 

 

Е

0 3 3 1

0 5 5 1

 

 

 

5.2.3 Требуется сравнить считывание файла через однопоточный и многопоточный файловые серверы. Получение запроса, его диспетчеризация и обработка занимают 15 миллисекунд при условии наличия данных в блочном кэше. В каждом третьем случае требуется обращение к диску, занимающее 75 миллисекунд, в течение которых поток находится в состоянии ожидания. Сколько запросов в секунду обработает однопоточный сервер? А многопоточный?

 

5.2.4 Запуска ожидают пять задач. Предполагаемое время их выполнения составляет 9, 6, 3, 5 и х мс. В каком порядке их следует запустить, что минимизировать среднее время отклика? (Ответ должен зависеть от х).

 

5.2.5 В гибкую систему реального времени поступают четыре периодических сигнала в периодами 50, 100, 200 и 250 мс. На обработку каждого сигнала требуется 35, 20, 10 и х мс времени центрального процессора. Требуется определить максимальное значение х, при котором система остается поддающейся планированию.

 

5.2.6 Пользовательский процесс формирует строку из 70 символов для вывода на принтер, затрачивая на это 5 мс. Объем буфера равен одной строке. Страница текста содержит 50 строк. Принтер способен печатать 10 страниц в минуту. Будет ли приостанавливаться пользовательский процесс? Если да, то насколько? Улучшит ли ситуацию двойная буферизация?

 

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

 

5.2.8 Известно, что программа А выполняется в монопольном режиме за 10 минут, а программа В – за 20 минут, то есть при последовательном выполнении они требуют 30 мин. Если Т – время выполнения обеих этих задач в режиме мультипрограммирования, то какое из неравенств справедливо? Поясните ответ схемой.

а) Т < 10;

б) 10<T<20;

в) 20<T<30;

г) T>30.

 

5.3 Требования к отчету

Отчет по работе выполняется на бумажном носителе и должен содержать:

- задание к работе;

- описание тех или иных действий, выполненных для получения результата;

- листинги программ с комментариями;

- снимки экрана с результатами работы;

- выводы по каждому заданию.

 

5.4 Контрольные вопросы

5.4.1 Что такое «поток»?

5.4.2 В чем разница между потоком и процессом?

5.4.3 В каких случаях возникает взаимоблокировка?

5.4.4 На чем основан алгоритм обнаружения взаимоблокировок?

5.4.5 Какие виды планировщиков Вам известны?

5.4.6 Какие состояния возможны для активных процессов?

5.4.7 Приведите пример пассивных процессов?

5.4.8 Что понимается под мультипрограммированием?

5.4.9 Что понимается под планированием вычислительных процессов?

5.4.10 Что определяет стратегия планирования?

 

 

6 Лабораторная работа. Способы распределения процессорного времени в операционных системах

 

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

 

6.1 Общие сведения

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

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

К наиболее часто используемым дисциплины диспетчеризации относятся следующие:

а) FCFS (First Come First Served — первым пришел, первым обслужен), согласно которой задачи обслуживаются «в порядке очереди», то есть в порядке их появления. Задачи, которые были заблокированы в процессе работы, после перехода в состояние готовности вновь ставятся в эту очередь готовности. Эта дисциплина обслуживания не требует внешнего вмешательства в ход вычислений, при ней не происходит перераспределения процессорного времени;

б) SJN (Shortest Job Next — следующим выполняется самое короткое задание) требует, чтобы для каждого задания была известна оценка в потребностях машинного времени. Дисциплина обслуживания SJN предполагает, что имеется только одна очередь заданий, готовых к выполнению. Задания, которые в процессе своего исполнения были временно заблокированы, вновь попадали в конец очереди готовых к выполнению наравне с вновь поступающими;

в) SRT (Shortest Remaining Time) — следующим будет выполняться задание, которому осталось меньше всего выполняться на процессоре;

г) RR (карусельная, Round Robin) - одна из самых распространенных дисциплин предполагает, что каждая задача получает процессорное время порциями или квантами времени (time slice) q. После окончания кванта времени q задача снимается с процессора, и он передается следующей задаче. Снятая задача ставится в конец очереди задач, готовых к выполнению. Для оптимальной работы системы необходимо правильно выбрать закон, по которому кванты времени выделяются задачам.

Различают невытесняющую (кооперативную) многозадачность (дисциплины FCFS, SJN, SRT) и вытесняющую многозадачность (RR и другие, созданные на ее основе).

С целью исследования принципов работы рассмотренных дисциплин диспетчеризации на кафедре «Инженерная кибернетика» был разработан программный комплекс «Эмуляция работы дисциплин диспетчеризации».

Окно программной системы для удобства и эффективности работы разбито на несколько функциональных зон (см. рисунок 6.1).

Верхняя левая область – область отображения загруженных процессов из операционной системы и их параметров. Количество данных процессов зависит от количества реальных процессов, запущенных на реальной машине, на которой установлена настоящая программа. Первый список собственно сами процессы. Второй список – общее время выполнения процесса, устанавливается один раз при загрузке процесса. Третий список – оставшееся время выполнения процесса после блокировки. Четвертый список – разрешение блокировки (если блокировка разрешена, то в поле устанавливается «1», иначе «0»). Пятый список – время блокировки. Шестой список – бит завершения процесса (устанавливается «1», если процесс полностью завершился). Все значения списков, кроме первого и второго, изменяются в процессе эмуляции в зависимости от хода выполнения процесса. 

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

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

Нижняя правая область – область отображения маршрута процесса. В зависимости от выбранной дисциплины диспетчеризации строится шаблон всех возможных маршрутов процесса (линии черного цвета). В момент загрузки зеленым цветом рисуется маршрут задачи от очереди до процессора, а красным дальнейший маршрут после выгрузки. Тем самым есть возможность наглядно просмотреть все действия, которые происходят с задачей в процессе эмуляции.

 

123.jpg

Рисунок 6.1 – Функциональные зоны главного окна

 

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

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

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

а) запустить приложение dispatcher.exe;

б) в главном меню во вкладке «Файл» нажать кнопку «Загрузить» после чего сгенерируется список процессов и их параметров, с помощью которых будет производиться эмуляция;

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

г) нажать кнопку «Запустить» во вкладке «Файл».

После выполнения вышеперечисленных действий запустится процесс эмуляции. Во время выполнения программы в ее рабочем окне отображается информация о ходе выполнения эмуляции. Функционально окно можно разделить на четыре части:

1) область отображения списка используемых процессов и их параметры, необходимые для системы;

2) область построения зависимостей выполнения процессов;

3) область отображения эмуляции процессора и очередей выполняемых процессов;

4) графическое отображение маршрутов процессов в ходе эмуляции.

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

а) нажать кнопку «Остановить» во вкладке «Файл» для остановки процесса эмуляции;

б) нажать кнопку «Сброс» во вкладке «Файл»;

в) выполнить действия для запуска выполнения программы.

 

6.2 Задания к лабораторной работе

6.2.1 Запустить программный комплекс «Эмуляция работы дисциплин диспетчеризации» и с его помощью:

- провести серии экспериментов по определению оптимальных параметров для отдельных дисциплин (частоты выполнения заблокированного процесса для FCFS, оптимального значения кванта времени для RR);

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

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

 

6.2.2 Три задачи А, В, С поступают в компьютерный центр практически одновременно. Ожидается, что время  их выполнения составит 1, 2, 4 мин. Требуется определить среднее время выполнения задач, считая, что время переключения между процессами (время смены контекста) – 2 мс, а время кванта процессора – 20 мс. Планирование циклическое (RR) - каждой задаче достается  справедливая доля процессорного времени.

 

6.2.3 Четыре пакетных задачи A, B, C, D поступают в двухпроцессорный компьютер практически одновременно. Ожидаемое время их выполнения составляет 7, 4, 6 и 2 мин. Установленные приоритеты составляют 3, 2, 1 и 4, причем 4 – высший приоритет. Определить среднее оборотное время для алгоритма «первым пришел – первый обслужен», запущенная задача работает до конца. Время, которое теряется на переключение между процессами, не учитывать.

 

6.3 Требования к отчету

Отчет по работе выполняется на бумажном носителе и должен содержать:

- задание к работе;

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

- снимки экрана с результатами работы;

- выводы по каждому заданию.

6.4 Контрольные вопросы

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

6.4.2 В каких операционных системах используется дисциплина FCFS?

6.4.3 Какими достоинствами обладают рассмотренные основные дисциплины обслуживания?

6.4.4 Какие недостатки невытесняющих дисциплин устранены с помощью дисциплины RR?

6.4.5 Какое влияние на результат использования RR оказывает учет приоритетов?

6.4.6 Что представляет собой частота выполнения заблокированного процесса?

6.4.7 Приведите пример использования дисциплин диспетчеризации в ОС реального времени.

6.4.8 Приведите схемы функционирования дисциплин SJN и SRT.

6.4.9 Как изменится схема функционирования FCFS при использовании одной очереди вместо двух?

6.4.10 Какие стратегии обслуживания используются в Unix-системах? 

 

7 Лабораторная работа. Исследование возможностей операционной системы при работе с памятью

 

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

 

7.1 Общие сведения

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

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

Внешняя память тоже является ресурсом, который часто необходим для выполне­ния вычислений. Когда говорят о внешней памяти (например, памяти на магнит­ных дисках), то собственно память и доступ к ней считаются разными видами ресурса. Каждый из этих ресурсов может предоставляться независимо от другого. Но для полноценной работы с внешней памятью необходимо иметь оба этих ре­сурса. Собственно внешняя память может разделяться и одновременно, а вот дос­туп к ней всегда разделяется попеременно.

Информацию о параметрах разных видов памяти в ОС MS Windows можно получить с помощью Диспетчера задач.

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

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

а) Всего – это общий объем виртуальной памяти, используемой как приложениями, так и ОС;

б) Предел – объем доступной виртуальной памяти;

в) Пик – наибольший объем памяти, использованный в течение сессии с момента последней загрузки;

2) в разделе Физическая память содержатся параметры, несущие информацию о текущем состоянии физической памяти машины, которая не имеет отношения к файлу подкачки:

а) параметр Всего – это объем памяти, обнаруженный ОС на компьютере;

б) Доступно – отражает память, доступную для использования процессами. Эта величина не включает в себя память, доступную приложениям за счет файла подкачки. Каждое приложение требует определенный  объем физической памяти и не может использовать только ресурсы файла подкачки;

в) системный кэш  - объем физической памяти, доступный кэш-памяти системы и оставленный ОС после удовлетворения своих потребностей;

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

         а) Всего – объем виртуальной памяти, необходимый ОС;

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

в) Невыгружаемая – объем физической памяти, потребляемой ОС.

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

- в окне Диспетчера задач представлены  процессы, зарегистрированные в Windows, не включены драйверы устройств, некоторые системные службы;

- требования к памяти отражают текущее состояние процесса (объемы памяти, занимаемые приложениями в текущий момент);

- поскольку не выводятся временные характеристики, то нет возможности отследить ее изменения.

Утилита TaskList доставляет более обширную информацию по сравнению с Диспетчером задач. Запускается утилита из окна командной строки.

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

- полный объем установленной в компьютере физической памяти;

- общий объем виртуальной памяти и доступной (свободной) в данный момент времени виртуальной памяти;

- размещение и объем файла подкачки.

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

Изменение размера файла подкачки. Файл подкачки – это область жесткого диска, используемая Windows для хранения данных оперативной памяти. Он создает иллюзию, что система располагает большим объемом оперативной памяти, чем это есть на самом деле. По умолчанию файл подкачки удаляется системой после каждого сеанса работы и создается в процессе загрузки ОС. Размер файла подкачки постоянно меняется по мере выполнения приложений и контролируется ОС. Для самостоятельной установки размера файла подкачки нужно выполнить следующую последовательность действий:

а) щелкнуть правой кнопкой мыши по значку Мой компьютер и выбрать в контекстном меню строку Свойства;

б) перейти на вкладку Дополнительно и нажать кнопку Параметры в рамке Быстродействие;

в) в появившемся окне Параметры быстродействия нажать кнопку Изменить.

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

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

 

7.2 Задания к лабораторной работе

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

 

7.2.2 Компьютер имеет 32-разрядное адресное пространство и страницы размером 8 кбайт. Таблица страниц целиком поддерживается аппаратно, на запись в ней отводится одно 32-разрядное слово. При запуске процесса таблица страниц копируется из памяти в аппаратуру, одно слово требует 10 тс. Какая доля времени процессора жертвуется на загрузку таблицы страниц, если  каждый процесс работает в течение 100 мс (включая время загрузки таблицы страниц)?

 

7.2.3 Используя командную строку, получить отчеты о распределении памяти в системе с помощью команды mem. Указанная команда предназначена для вывода информации о распределении оперативной памяти между загруженными программами. Выполнение команды без параметров  выводит информацию об объемах свободной и занятой памяти. Ключ /program выводит информацию обо всех загруженных в память программах, включая системные программы. При ключе /debug в отчет включаются данные о внутренних системных драйверах. Просмотреть и проанализировать отчеты о распределении памяти всеми указанными способами.

 

7.3 Требования к отчету

Отчет по работе выполняется на бумажном носителе и должен содержать:

- задание к работе;

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

- снимки экрана с результатами работы;

- выводы по каждому заданию.  

 

7.4 Контрольные вопросы

7.4.1 Какие способы распределения памяти используются в современных операционных системах?

7.4.2 Какие способы разделения используются при разделении оперативной памяти?

7.4.3 Какие способы разделения используются при разделении внешней памяти?

7.4.4 Что характерно для методов неразрывного распределения памяти?

7.4.5 Чем характеризуются методы непрерывного распределения и распределения с перекрытием?

7.4.6 Что характерно для методов разрывного распределения памяти?

7.4.7 Какую информацию можно получить с помощью Сведений о системе?

7.4.8 С какой целью используется файл подкачки?

7.4.9 Какую информацию о памяти позволяет получить утилита TaskList?

7.4.10 Как осуществляется изменение размера файла подкачки? 

 

8 Лабораторная работа. Исследование механизмов работы с памятью

 

Цель работы: приобрести практические навыки использования.

 

8.1 Общие сведения

ОС Windows может реализовать следующие механизмы работы с памятью:

1) виртуальную память для работы с большими массивами объектов или структур;

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

3) кучи – для работы с множеством малых объектов.

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

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

1)   для загрузки и выполнения exe- и dll-файлов;

2)   для получения доступа к файлу данных, размещенных на диске;

3)   для разделения данных между несколькими процессами, выполняемыми на одной машине.

В процессе загрузки и выполнения ехе–файла используется функция CreateProcess и выполняются следующие действия:

а) отыскивается ехе-файл, указанный в вызове функции, если файл не найден, новый процесс не создается, а функция возвращает значение false;

б) если файл найден, создается новый объект ядра «процесс»;

в) создается адресное пространство процесса;

г) резервируется такой регион адресного пространства, чтобы в него поместился данный ехе-файл. Желательное расположение этого региона указывается внутри самого ехе-файла. По умолчанию, базовый адрес ехе-файла 0х00400000;

д) система отмечает, что физическая память, связанная с зарезервированным регионом – ехе-файл на диске, а не страничный файл.

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

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

Для С++-программ существуют два основных способа хранения информации в основной памяти:

1) использование переменных. Область памяти, предоставляемая переменным, закрепляется за ними во время компиляции и  не может быть изменена при выполнении программы;

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

Система динамического распределения памяти – это средство получения программой некоторой области памяти во время ее выполнения.

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

 

высокая область адресов

Стек

 

Куча

 

Глобальные данные

нижняя область адресов

Код программы

 

Рисунок 8.1 – Размещение разделов в областях памяти

 

Язык С++ содержит операторы, которые служат для выделения и освобождения памяти.

Оператор new, позволяющий динамически выделить область памяти, имеет вид:

переменная-указатель = new тип переменной;

Оператор delete, который освобождает ранее выделенную динамическую память, имеет вид:

delete переменная-указатель;

Пример 8.1 – Использование операторов new и delete в программах.

#include<iostream.h>

void main()

{int *p;

p=new int;                           //выделение памяти

*p=55;                          //в выделенную область помещается значение 55

cout<<*p<<endl;       //значение выводится на экран

delete p;}                           //освобождение памяти

 

Пример 8.2 – Пример инициализации выделенной памяти.

#include<iostream.h>

void main()

{int *p;

p=new int(345);        //инициализация памяти

cout<<*p<<endl;

delete p;}

 

Для выделения памяти для одномерного массива используется операция:

переменная-указатель = new тип [размер];

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

delete  переменная-указатель;

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

Пример 8.3 – Пример использования динамической памяти при работе с одномерным массивом.

#include<iostream.h>

void main()

{int *p; int i;

p=new int [10];                          //выделение памяти для массива

  из 10 элементов

for(i=0;i<10;i++)

p[i]=10+i;                          //заполнение массива

for(i=0;i<10;i++)

cout<<p[i]<<"  ";             //вывод массива на экран

cout<<endl;

delete p; }                         //освобождение памяти

 

Существует несколько способов создания динамического массива. Наиболее универсальный способ – когда обе размерности массива задаются на этапе выполнения программы.

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

#include<iostream.h>

void main()

{int nrow, ncol, i,j;

cout<<"enter count rows and columns"<<endl;

cin>>nrow>>ncol;

int**a=new int *[nrow];

for(i=0;i<nrow;i++)

a[i]=new int[ncol];

for(i=0;i<nrow;i++)

for(j=0;j<ncol;j++)

cin>>a[i][j];

for(i=0;i<nrow;i++)

{for(j=0;j<ncol;j++)

cout<<a[i][j]<<" ";

cout<<endl;}

cout<<endl;}

 

8.2 Задания к лабораторной работе

8.2.1 Создать две самостоятельные программы (на языке С++) для расчета значений функций y=sinx и y=cosx в интервале от 0 до 3,14. Создать третью программу, которая бы вызывала одну из программ.

Рекомендация к выполнению. Если необходимо выполнить программу и загрузить из нее другие программы, то используются функции exec из библиотеки с заголовочным файлом  <process.h>.

 

8.2.2 Создать одномерный динамический массив, ввести элементы массива и отсортировать его.

 

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

 

8.2.4 Сведения о ресурсах памяти и ее текущем состоянии можно получить с помощью функции:

GlobalMemorystatus (var meminfo: TmemoryStatus)

где meminfo – переменная структурного типа.

Поля структуры и их назначение приведены в таблице 8.1. На форму следует поместить компонент memo и вывести показатели с указанием имени ресурса. Определить указанные объемы в каждый момент времени. Построить график изменения памяти.

 

Таблица 8.1 – Поля структуры

Поле

Назначение

dwLength

Размер структуры. Это поле должно быть заполнено до вызова функции GlobalMemorystatus

dwMemoryLoad

Процент занятой в данный момент памяти

(от 0 до 100)

dwTotalPhys

Объем физической памяти в байтах

dwAvialPhys

Свободный в настоящее время объем физической памяти в байтах

dwTotalPageFile

Объем файла подкачки в байтах

dwAvialPageFile

Свободный в настоящее время объем файла подкачки

dwTotalVirtual

Объем текущего адресного пространства в байтах

dwAvialVirtual

Свободный объем текущего адресного пространства в байтах

 

8.3 Требования к отчету

Отчет по работе выполняется на бумажном носителе и должен содержать:

- задание к работе;

- описание действий, выполненных для получения результата;

- листинги программ с комментариями;

- снимки экрана с результатами работы;

- выводы по каждому заданию.

 

8.4 Контрольные вопросы

8.4.1 Какие механизмы работы с памятью реализует ОС Windows?

8.4.2 С какой целью используется виртуальная память?

8.4.3 В чем особенность использования проецируемых файлов?

8.4.4 Какая функция используется в процессе загрузки и выполнения ехе–файла?

8.4.5 Какие действия выполняются в результате использования функции CreateProcess?

8.4.6 Что представляет собой куча?

8.4.7 Какие способы хранения информации в основной памяти существуют в С++?

8.4.8 Какие операторы С++ служат для выделения и освобождения памяти? Приведите примеры использования.

8.4.9  Как выделяется память под динамический массив? Приведите примеры.

8.4.10  Какую информацию можно получить с помощью функции GlobalMemorystatus?

 

Список литературы 

1    Бэкон Д. Операционные системы. – СПб., 2004.

2    Гордеев В.А. Операционные системы. – СПб., 2007.

3    Дейтель М.Х. Операционные системы. Основы и принципы. – М., 2006.

4    Илюшечкин В.М. Операционные системы. - М., 2009.

5    Иртегов Д.В. Введение в операционные системы. - СПб., 2008.

6    Карпов В.Е. Основы операционных систем. - М., 2005.

7    Колесниченко Д. Секреты реестра Windows ХР/Vista. - СПб., 2008.

8    Коньков К.А. Устройство и функционирование ОС Windows. - М., 2008.

9    Назаров С.В. Операционные среды, системы и оболочки. Основы структурной и функциональной организации. – М., 2007.

10  Олифер В.Г. Сетевые операционные системы. - СПб., 2008.

11  Таненбаум Э. Современные операционные системы. – СПб., 2005.

12  Цилькер Б.Я. Организация ЭВМ и систем. - СПб., 2007.

13 Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. – СПб., 2002.

14 Финогенов К.Г. Самоучитель по системным функциям MS-DOS. - М., 2001.