Операционные системы
Методические указания
к практическим занятиям
для студентов 2-го курса специальности
230400 «Информационные системы и технологии»
Воронеж 2014
УДК 004.451(07)
ББК 32.973.018.2я7
Составители
Д.К. Проскурин, К.А. Маковий
Операционные системы: метод. указания к практическим занятиям по дисц. «Операционные системы» для студ. 2-го курса спец. 230400 / Воронежский ГАСУ; сост.: Д.К. Проскурин, К.А. Маковий. – Воронеж, 2014. – 30 с.
Содержат описание порядка выполнения практических заданий по курсу «Операционные системы». Приведен в достаточном объеме теоретический материал, а также подробные рекомендации к выполнению практических заданий.
Предназначены для студентов второго курса специальности 230400 «Информационные системы и технологии».
Ил.1. Табл.5. Библиогр.: 4 назв.
УДК 004.451(07)
ББК 32.973.018.2я7
Печатается по решению научно-методического совета
Воронежского ГАСУ
Рецензент – С.А. Баркалов, проф., зав. кафедрой управления строительством Воронежского ГАСУ
Введение
Целью практических занятий по курсу «Операционные системы» является получение практических навыков администрирования операционной системы (ОС) Windows 7, глубокое понимание механизмов работы ОС и освоение методов мониторинга ресурсов ОС.
Каждое из практических занятий данного курса посвящено важному аспекту работы операционной системы – управлению планирования процессорного времени, управления памятью, системе ввода-вывода, безопасности операционной системы, сетевым средствам и возможностям ОС. Особое внимание уделяется мониторингу счетчиков производительности и средствам диагностики неисправностей, а также создания отказоустойчивых конфигураций.
Особое внимание уделено возможностям и средствам администрирования и управления операционной системой, а также тонкой настройке параметров ОС. В качестве источника дополнительных утилит используются пакеты Windows Support Tools, Windows Resource Kit, Sysinternals, позволяющие расширить возможности стандартных встроенных в ОС инструментов.
Курсивом выделены вопросы, требующие письменного ответа на поставленный вопрос. Ответы на эти вопросы Вы должны выяснить в ходе выполнения практических заданий.
Практическое занятие №1
Наблюдение и управление распределением процессорного времени
в OC Windows 7
Цель работы: изучить основные средства управления процессами и нитями в ОС Windows 7. Oзнакомиться с механизмом распределения процессорного времени.
Краткие теоретические сведения
Под операционной системой (ОС) понимают комплекс управляющих и обрабатывающих программ, который, с одной стороны, выступает как интерфейс между аппаратурой компьютера и пользователем с его задачами, а с другой – предназначен для наиболее эффективного использования ресурсов вычислительной системы и организации надежных вычислений.
В общем случае ресурсом называется всякий объект, который может распределяться внутри системы.
Одной из функций ОС является распределение процессоров, памяти, устройств и данных между процессами, конкурирующими за эти ресурсы. ОС должна управлять всеми ресурсами вычислительной машины таким образом, чтобы обеспечить максимальную эффективность ее функционирования.
Программа представляет собой статический набор команд.
Процесс – контейнер для набора ресурсов, используемых нитями, которые выполняют экземпляр программы.
Каждый процесс в Windows XP включает следующее:
· Закрытое виртуальное адресное пространство – диапазон адресов виртуальной памяти, которым может пользоваться процесс;
· Исполняемую программу – начальный код и данные, размещаемые в виртуальном адресном пространстве процесса;
· Уникальный идентификатор процесса
· Список описателей системных ресурсов, доступных всем нитям данного процесса (например, файлов)
· Маркер доступа (access token), содержащий права на доступ к этому объекту
· Минимум одну нить.
Нить – часть процесса, получающая процессорное время для выполнения. Содержит следующие наиболее важные элементы:
· Содержимое набора регистров процессора, отражающих состояние процессора
· Два стека, одно из которых используется в режиме ядра, другоей – в режиме пользователя.
· Т.н. локальную память нити, т.е. область памяти, доступной только этой нити.
· Уникальный идентификатор нити. ID нитей и процессов генерируются из единого пространства имен и никогда не перекрываются.
Контекстом нити называют переменные регистры, стеки и локальные области памяти.
Одним из ресурсов ОС является процессорное время – время, в течение которого процессор занимается выполнением кода данной нити. Концепция вытесняющей многозадачности, реализованная в Windows 7, предусматривает назначение процессам и нитям приоритетов для распределения процессорного времени. Приоритеты нитей определяют порядок, в котором они планируются для выполнения процессором. Приоритет нити устанавливается исходя из класса приоритета его родительского процесса. Существует шесть классов приоритета процесса:
· Idle (Низкий) – обычно используется заставками и прочими процессами, периодически обновляющими экранное изображение, среднее значение 4;
· Below Normal (Ниже среднего) – среднее значение 6;
· Normal (Средний) – устанавливается для процесса по умолчанию, среднее значение 8;
· Above Normal (Выше среднего) – среднее значение 10
· High (Высокий) – процессам, имеющим приоритет класса High (Высокий), выделяется наибольшее количество времени процессора б среднее значение 13;
· Real Time (Реального времени) – используется многими системными процессами режима ядра, такими, как процессы управления вводом с клавиатуры и мыши и другими операциями устройств, среднее значение 24.
Приоритет нити изменяется в рамках базового класса приоритета процесса и может принимать следующие значения:
· Time_critical– критический.
· Highest – высший,
· Above_normal – выше среднего,
· Normal – средний,
· Below_normal – ниже среднего,
· Lowest – низший,
· Idle– приоритет простоя.
Класс приоритета каждого процесса определяет некий диапазон значений приоритета (от1 до 31, где 1 – самый низкий приоритет, а 31 – самый высокий), и из этого диапазона назначаются приоритеты нитям данного процесса. (Приоритет 0 резервируется для нужд системы). Если используется класс Real Time (приоритеты 16 – 31), приоритет нити нельзя изменить во время его выполнения. Если выполняется хотя бы одна нить с приоритетом 31, другие нити выполняться не могут.
Нити, использующие другие классы приоритетов, допускают корректировку, т. е. приоритет такой нити можно изменять во время выполнения. Для нити класса Normal или High (приоритеты 1–15), приоритет можно повышать или понижать на 1 или 2, но он не может стать меньше исходного, базового приоритета, определенного программным способом. Если базовый приоритет корректируется с целью оптимизации планирования, итоговое значение называется динамическим приоритетом нити.
Каждая нить выполняется непрерывно в течение определенного промежутка времени, называемого квантом, по истечении которого система проверяет, нет ли готовой к выполнению нити такого же приоритета. Если во время выполнения нити в течение кванта времени приходит в готовность какая-то нить более высокого приоритета, выполнение первой нити прерывается и начинает выполняться та, что имеет более высокий приоритет.
В данной работе программа cpustres.exe используется для изучения механизма приоритетов в ОС Windows 7. Ее интерфейс позволяет изменять количество и приоритет нитей, порождаемых запуском этой программы.
Практические задания
Задание 1. Изучение работы с нитями на примере программы CPU Stress.
Запустите VMWare Player, выберите образ ОС Windows 7. Путь к образу ОС задайте согласно указаниям преподавателя.
1. Нажать Пуск| Выполнить| Обзор. Указать путь к программе cpustres.exe.
2. Нажать Пуск| Выполнить| Обзор. Указать путь к программе procexp.exe.
3. Выберите в окне Process окна программы Process Explorer процесс под названием cpustres.exe. Нажмите правую кнопку мыши и в выпадающем меню выберите Properties, затем, вкладку Threads. В окне приложения CPU Stress последовательно изменяйте количество нитей от 0 до 4, ставя галочки в поле Active соответствующей нити и нажимая после каждого изменения кнопку Refresh в левой части окна Process Viewer. Наблюдайте изменение количества нитей в окне Threads.
4. В нижнем правом углу вкладки Threads найдите значение параметра Dynamic Priority (Динамический приоритет). Для того чтобы определить динамический приоритет конкретной нити, щелкните мышкой по данной нити.
5. В окне программы CPU Stress запустите нить 1 (Thread 1), установив галочку в поле Active; задайте в поле Thread Priority (Приоритет нити) значение Normal. Установите класс приоритета процесса (Process Priority Class) в значение Normal. Запишите значение Dynamic Priority (Динамический приоритет).
6. Изменяйте класс приоритета процесса (Process Priority Class) от Low до High и приоритет нити 1 (Thread 1) от Lowest до Highest и записывайте значения динамического приоритета(Dynamic Priority). По результатам заполните табл. 1:
Таблица 1
Thread Priority Lowest | Thread Priority Below Normal | Thread Priority Normal | Thread Priority Above Normal | Thread Priority Highest | |
Process Priority Idle | |||||
Process Priority Normal | |||||
Process Priority High |
· Какое максимальное количество нитей может работать в процессе, который создает приложение CPU Stress?
· Равнозначны ли понятия: приоритет процесса и приоритет нити?
· Как изменяется динамический приоритет нити при изменении приоритета процесса?
Задание 2. Знакомство с работой диспетчера задач
Диспетчер задач – это утилита Windows XP, позволяющая получить информацию об исполняемых процессах Windows XP. Он позволяет:
· Отображать перечень работающих приложений и процессов.
· Отображать базовые параметры процессов: занимаемое процессорное время, используемая память, базовый приоритет и количество нитей.
· Отображать графики и текущие значения загрузки памяти и процессора.
Диспетчер задач можно запустить тремя способами:
· Нажав клавиши Ctrl+Shift+Esc
· Щелкнув панель задач правой кнопкой мыши, выбрать в меню Диспетчер задач
· Нажав клавиши Ctrl+Alt+Delete, щелкнуть кнопку Диспетчер задач
1. Запустите Диспетчер задач. На вкладке Процессы найдите процесс cpustres.exe. В окне приложения CPU Stress изменяйте количество активных нитей от 0 до 4. Как при этом изменяется загрузка процессора этим процессом?
2. Изменяя степень активности отдельных нитей, выясните, как это влияет на загрузку процессора?
Задание 3. Наблюдение за активностью процессов с помощью утилиты Performance Monitor (Системный монитор).
1. Запустите программу CPU Stress с двумя активными нитями.
2. Нажмите Пуск| Панель управления| Администрирование| Системный монитор.
3. Добавьте счетчики:
Объект Процессор| счетчик: % загруженности процессора.
Объект Поток| счетчик: % загруженности процессора| Вхождения: cpustress/1.
Объект Поток| счетчик: % загруженности процессора| Вхождения: cpustress/2
4. Установите для обеих нитей Activity Low. Установите для первой нити приоритет Highest, для второй Below_normal. Отличается ли % загрузки процессора для этих двух нитей?
5. Измените у обеих нитей Activity на Busy. Установите для первой нити приоритет Highest, для второй Below_Normal. Отличается ли % загрузки процессора для этих двух нитей?
· Изменилось ли распределение процессорного времени между нитями? Опишите, каким образом.
Когда у процессора имеются свободные ресурсы, повышение приоритета одной нити мало влияет на то, сколько времени выделяется каждой из соперничающих нитей. Однако когда процессор загружен, повышение приоритета одной из нитей приводит к тому, что нить с более высоким приоритетом завладевает большей частью процессорного времени.
Контрольные вопросы
1. Какие средства для контроля процессов и нитей Вы знаете? Опишите особенности каждого из перечисленных средств.
2. Перечислите базовые классы приоритета процесса. Какие процессы имеют базовый класс приоритета, соответствующий каждому из этих классов? Каков базовый класс приоритета процесса по умолчанию в Windows 7?
3. Как вы понимаете понятие динамического приоритета нити? Как изменяется приоритет нити относительно приоритета процесса?
4. В чем принципиальное отличие планирования процессов и нитей в ОС Windows 7 и Windows 2003 Server? Как влияет настройка Windows 7 на планирование процессов и нитей? Какие стратегии используются для оптимизации распределения приоритетов?
5. Изобразите схематично ситуацию: у процесса А приоритет Normal, а приоритет нити C – High, а у процесса B приоритет процесса High, а приоритет нити D – Normal. У какой из нитей C или D динамический приоритет будет выше и почему?
6. Почему в 3 задании при изменении активности нитей появляется различие процента загруженности процессора выполнением кода каждой из нитей.
7. Как степень общей загрузки процессора влияет на распределение процессорного времени между нитями с разным динамическим приоритетом?
8. Каким образом можно изменять приоритет нити в ОС Windows 7 у уже запущенного процесса и при запуске процесса?
9. Какие факторы влияют на распределение процессорного времени?