- •Лихачёв д.С.
- •1 Понятие операционной системы. Классификация операционных систем
- •2 Сетевые операционные системы
- •3 Назначение и основные функции операционных систем. Требования к современным операционным системам.
- •4 Назначение и основные функции операционных систем. Функции операционных систем по управлению ресурсами компьютера.
- •5 Функции операционных систем по управлению ресурсами компьютера. Управление процессами.
- •6 Функции операционных систем по управлению ресурсами компьютера. Управление памятью.
- •7 Функции операционных систем по управлению ресурсами компьютера. Управление файлами и внешними устройствами. Поддержка пользовательского интерфейса.
- •8 Функции операционных систем по управлению ресурсами компьютера. Защита данных и поддержка администрирования. Поддержка интерфейса прикладного программирования.
- •9 Обобщённая структура операционной системы.
- •10 Архитектура операционных систем на основе монолитного ядра.
- •11 Особенности работы ядра в привилегированном режиме.
- •12 Многослойная структура операционной системы.
- •13 Микроядерная архитектура.
- •14 Подсистема операционной системы управления памятью. Понятие виртуальной памяти.
- •15 Методы распределения памяти. Распределение памяти фиксированными разделами.
- •16 Методы распределения памяти. Распределение памяти динамическими разделами.
- •17 Методы распределения памяти. Распределение памяти перемещаемыми разделами.
- •18 Методы распределения памяти. Страничное распределение.
- •19 Методы распределения памяти. Сегментное распределение.
- •20 Методы распределения памяти. Странично-сегментное распределение. Свопинг.
- •21 Многозадачность. Особенности реализации многозадачности в системах пакетной обработки.
- •22 Многозадачность. Особенности реализации многозадачности в системах разделения времени.
- •23 Понятие процесса. Подсистема операционной системы управления процессами. Состояния процесса. Контекст и дескриптор процесса.
- •24 Совместное использование объектов ядра несколькими процессами. Наследование описателя объекта.
- •25 Совместное использование объектов ядра несколькими процессами. Именованные объекты
- •26 Совместное использование объектов ядра несколькими процессами. Дублирование описателей объектов
- •27Планирование и диспетчеризация потоков.
- •28 Вытесняющие и невытесняющие алгоритмы планирования.
- •29 Алгоритмы планирования, основанные на приоритетах.
- •30 Алгоритмы планирования, основанные на квантовании.
- •31 Принципы работы с потоками вWindows. Распределение процессорного времени между потоками
- •32 Приостановка и возобновление потоков/процессов
- •33 Потоки вWindows. Приоритеты потоков и процессов
- •34 Задача синхронизации потоков
- •35 Синхронизация потоков с объектами ядра. Функции ожидания объектов ядра
- •36 Мьютексы. Создание, открытие, освобождение и удаление мьютекса. Отказ от мьютекса
- •37 Семафоры. Создание, открытие, освобождение и удаление семафора
- •38 Понятие сетевой операционной системы. Компьютерная сеть
- •39 Типичная структура сетевых операционных систем.
- •40 Сетевые службы и сетевые ресурсы
- •41 Архитектура взаимодействия типа клиент – сервер.
- •42 Многоуровневая структура коммуникаций. Эталонная модель взаимодействия открытых систем osi. Принцип пакетной передачи данных.
- •43 Технологии, используемые для построения компьютерных сетей.
- •44 Стек протоколов tcp/ip. Ip-адресация.
- •45 Понятие программной модели ia-32. Регистры общего назначения. Сегментные регистры.
- •46 Понятие программной модели ia-32. Регистры состояния и управления.
- •47 Режимы работы микропроцессора
- •48 Понятие оперативной памяти. Формирование адреса в процессорах с архитектурой ia-32.
- •49 Режимы адресации для процессоров с архитектурой ia-32. Работа с массивами на ассемблере.
- •50 Понятие модульного программирования. Понятие подпрограммы. Ассемблерные процедуры и функции.
- •51 Способы передачи аргументов в процедуру.
- •52 Программная модель математического сопроцессора.
- •2. Три служебных регистра:
33 Потоки вWindows. Приоритеты потоков и процессов
Понятие приоритета потока.
Поток получает доступ к процессору на 20 мс, после чего планировщик переключает процессор на выполнение другого потока. Так происходит, только если у всех потоков один приоритет, но на самом деле в системе существуют потоки с разными приоритетами, а это меняет порядок распределения процессорного времени.
Каждому потоку присваивается уровень приоритета – от 0 (самый низкий) до 31 (самый высокий). Решая, какому потоку выделить процессорное время, система сначала рассматривает только потоки с приоритетом 31 и подключает их к процессору по принципу карусели. Пока в системе имеются планируемые потоки с приоритетом 31, ни один поток с более низким приоритетом процессорного времени не получает. Такая ситуация называется «голоданием* (starvation). Она наблюдается, когда потоки с более высоким приоритетом так интенсивно используют процессорное время, что остальные практически не работают. Вероятность этой ситуации намного ниже в многопроцессорных системах, где потоки с приоритетами 31 и 30 могут выполняться одновременно. Система всегда старается, чтобы процессоры были загружены работой, и они простаивают только в отсутствие планируемых потоков.
Потоки с более высоким приоритетом всегда вытесняют потоки с более низким приоритетом независимо от того, исполняются последние или нет. Допустим, процессор исполняет поток с приоритетом 5, и тут система обнаруживает, что поток с более высоким приоритетом готов к выполнению. Система остановит поток с более низким приоритетом – даже если не истек отведенный ему квант процессорного времени – и подключит к процессору поток с более высоким приоритетом.
При загрузке системы создается особый поток – поток обнуления страниц (zero page thread), которому присваивается нулевой уровень приоритета. Ни один поток, кроме этого, не может иметь нулевой уровень приоритета. Он обнуляет свободные страницы в оперативной памяти при отсутствии других потоков, требующих внимания со стороны системы.
Классы приоритета процессов.
Windows поддерживает шесть классов приоритета:
idle(простаивающий),
belownormal (ниже обычного),
normal(обычный),
abovenormal (выше обычного),
high(высокий),
realtime(реального времени).
Самый распространенный класс приоритета – normal, его использует 99% приложений.
Real-lime.Потоки в этом процессе обязаны немедленно реагировать на события, обеспечивая выполнение критических по времени задач. Такие потоки вытесняют даже компоненты операционной системы.
High.Потоки в этом процессе тоже должны немедленно реагировать на события, обеспечивая выполнение критических по времени задач.
Above normal. Класс приоритета, промежуточный между normal и high. Это новый класс, введенный в Windows 2000.
Normal.Потоки в этом процессе не предъявляют особых требований к выделению им процессорного времени.
Below normal.Класс приоритета, промежуточный между normal и idle. Это новый класс, введенный в Windows 2000.
Idle.Потоки в этом процессе выполняются, когда система не занята другой работой. Этот класс приоритета обычно используется для утилит, работающих в фоновом режиме, экранных заставок и приложений, собирающих статистическую информацию.
Относительный приоритет потока.
Могут быть следующие относительные приоритеты потока.
Time-critical.Поток выполняется с приоритетом 31 в классе real-time и с приоритетом 15 в других классах.
Highest.Поток выполняется с приоритетом на два уровня выше обычною для данного класса.
Above normal.Поток выполняется с приоритетом на один уровень выше обычного для данного класса.
Normal.Поток выполняется с обычным приоритетом процесса для данного класса.
Below normal.Поток выполняется с приоритетом на один уровень ниже обычного для данного класса.
Lowest.Поток выполняется с приоритетом на два уровня ниже обычного для данного класса
Idle.Поток выполняется с приоритетом 16 в классе real-time и с приоритетом 1 в других классах
Таким образом, можно изменять относительные приоритеты потоков в пределах процесса. Уровень приоритета формируется самой системой, исходя из класса приоритета процесса и относительного приоритета потока.
В системе предусмотрена возможность изменения класса приоритета самим выполняемым процессом – вызовом функции SetPriorityClass:
BOOL SetPriontyClass( HANDLE hProcess, DWORD fdwPriority);
Эта функция меняет класс приоритета процесса, определяемого описателем hProcess, в соответствии со значением параметраfdwPriority.
Динамическое изменение уровня приоритета потока.
Уровень приоритета, получаемый комбинацией относительного приоритета потока и класса приоритета процесса, которому принадлежит данный поток, называют базовым уровнем приоритета потока. Иногда система изменяет уровень приоритета потока. Обычно это происходит в ответ на некоторые события, связанные с вводом выводом (например, на появление оконных сообщений или чтение с диска).
Система повышает приоритет только тех потоков, базовый уровень которых находится в пределах 1-15 Именно поэтому данный диапазон называется «областью динамического приоритета» (dynamic priority range). Система не допускает динамического повышения приоритета потока до уровней реального времени (более 15) Поскольку потоки с такими уровнями обслуживают системные функции, это ограничение не дает приложению нарушить работу операционной системы.
Для отключения механизма динамического изменения приоритета есть две функции:
BOOL SetProcessPriorityBoost( HANDLE hProcess, BOOL DisablePriontyBoost);
BOOL SetThreadPriorityBoost( HANDLE hThread, BOOL DisablePriorityBoost);
SetProcessPriorityBoostзаставляет систему включить или отключить изменение приоритетов всех потоков в указанном процессе, aSetThreadPriorityBoostдействует применительно к отдельным потокам. Эти функции имеют свои аналоги, позволяющие определять, разрешено или запрещено изменение приоритетов:
BOOL GetProcessPriorityBoost( HANDLE hProcess,
PBOOL pDisablePriorityBoost);
BOOL GeLThreadPriorityBoost( HANDLE hThread,
PBOOL pDisablePriorityBoost);
Каждой из этих двух функций передаётся описатель нужного процесса или потока и адрес переменной чипа BOOL, в которой и возвращается результат.