Файл: Функции операционных систем персональных компьютеров.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.03.2023

Просмотров: 366

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

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

Существует 2 типа многозадачности [1]:

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

Свойства многозадачной среды

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

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

  • Каждая задача имеет свой приоритет, в соответствии с которым она получает процессорное время и память.
  • Система организует очереди задач таким образом, чтобы все задачи получали ресурсы в зависимости от приоритетов и стратегии системы.
  • Система организует обработку прерываний, с помощью которой задачи можно активировать, деактивировать и удалять.
  • В конце временного интервала ядро ​​временно переводит задачу из состояния выполнения в состояние готовности, передавая ресурсы другим задачам. В случае нехватки памяти страницы невыполненных задач могут быть выгружены на диск (подкачка), а затем через некоторое время система может быть восстановлена ​​в памяти.
  • Система защищает адресное пространство задачи от несанкционированного вмешательства в другие задачи.
  • Система защищает адресное пространство своего ядра от несанкционированного вмешательства в задачи [3,5,7]
  • Система распознает сбои и зависания отдельных задач и завершает их.
  • Система разрешает конфликты доступа к ресурсам и устройствам, избегая тупиковых ситуаций полного зависания от ожидания заблокированных ресурсов.
  • Система гарантирует, что каждая задача будет активирована рано или поздно.
  • Система обрабатывает запросы в реальном времени.
  • Система обеспечивает коммуникацию между процессами
  • Типы псевдопараллельной многозадачности:

Невытесняющая многозадачность

Тип многозадачности, при котором операционная система одновременно загружает в память два или более приложений, но время процессора предоставляется только основному приложению. Чтобы запустить фоновое приложение, оно должно быть активировано. Такая многозадачность может быть реализована не только в операционной системе, но и с помощью программ переключения задач. DESQview, который работал под DOS и был впервые выпущен в 1985 году, известен в этой категории.

Совместная или совместная многозадачность [9]

Тип многозадачности, при котором следующая задача выполняется только после того, как текущая задача явно заявляет о своей готовности предоставить процессорное время другим задачам. В качестве особого случая такое объявление подразумевается при попытке захвата уже занятого объекта мьютекса (ядро Linux), а также в ожидании следующего сообщения от подсистемы пользовательского интерфейса (версии Windows до 3.x включительно, а также 16-битные приложения в Windows 9x).

Совместную многозадачность можно назвать многозадачной «второй стадией», потому что она использует более сложные методы, чем простое переключение задач, реализованное многими известными программами (например, DOS Shell из MS-DOS 5.0, при простом переключении активная программа получает все процессорное время и фоновые приложения полностью заморожены Благодаря совместной многозадачности приложение может фактически захватывать столько процессорного времени, сколько сочтет необходимым. Все приложения периодически делят процессорное время. Передача управления следующей задаче.

Преимущества совместной многозадачности: нет необходимости защищать все общие структуры данных с помощью таких объектов, как критические секции и мьютексы, что упрощает программирование, особенно перенос кода из однозадачных сред в многозадачные. [10]

Недостатки: невозможность работы всех приложений в случае ошибки в одном из них, что приводит к отсутствию вызова операции «отказаться от процессорного времени». Чрезвычайно сложная реализация многозадачной архитектуры ввода-вывода в ядре ОС, которая позволяет процессору выполнять одну задачу, в то время как другая задача инициирует операцию ввода-вывода и ожидает ее завершения.

Реализовано в операционных системах, таких как:


  • В пользовательском режиме версии ОС Windows до 3.x включительно.
  • Версии Mac OS до Mac OS X внутри ядер многих UNIX-подобных операционных систем, таких как FreeBSD.
  • Линукс давно.

Приоритетная или приоритетная многозадачность (в режиме реального времени)

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

Преимущества: возможность полной реализации многозадачного ввода-вывода в ядре ОС, когда ожидание завершения ввода-вывода одной программой позволяет процессору одновременно выполнять другую программу. Сильное повышение надежности системы в целом в сочетании с использованием защиты памяти - идеал в форме «ни одна программа пользовательского режима не может нарушить работу ОС в целом» становится достижимым, по крайней мере теоретически, это не может быть достигнуто даже теоретически без упреждающей многозадачности. Возможность полноценного использования многопроцессорных и многоядерных систем. [11]

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

Реализовано в операционных системах, таких как:

  • Vms
  • Linux

в пользовательском режиме (и часто в режиме ядра) всех UNIX-подобных операционных систем, включая версии Mac OS X, iOS; ОС Symbian

в режиме ядра Windows 3. x - только при работе на процессоре 386 или более поздней «задачами» являются только все приложения Windows, объединенные и каждая отдельная виртуальная машина DOS, между приложениями Windows не использовалась вытесняющая многозадачность


Windows 95/98 / ME - без полной защиты памяти, которая была причиной крайне низкого уровня, на том же уровне, что и версии MS-DOS, Windows 3.x и Mac OS до X - надежность этих ОС [4]

Windows NT / 2000 / XP / Vista / 7 как в режиме ядра, так и в режиме пользователя.

AmigaOS - все версии до версии 4.0 без полной защиты памяти, что на практике для системных программ практически не влияло на надежность

из-за высокой стандартизации, прозрачности API и SDK. Железо-ориентированные программы Amiga, напротив, не отличались надежностью.[6]

Структура операционной системы

Современные операционные системы работают в основном в защищенном режиме. Впервые защищенный режим появился в микропроцессоре Intel i80286. Этот режим позволяет в полной мере использовать все возможности, предоставляемые микропроцессором.

Процессы и темы

Основными элементами современной многозадачной ОС являются процессы и потоки. Основная задача операционной системы - работа с этими элементами. [12]

Процесс - это выполнение пассивных инструкций компьютерной программы на процессоре компьютера. Стандарт определений ISO 9000: 2000 определяет процесс как набор взаимосвязанных и взаимодействующих действий, которые преобразуют входящие данные в исходящие.

Сама компьютерная программа представляет собой только пассивный набор инструкций, а процесс - это непосредственное выполнение этих инструкций. [15]

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

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

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


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

5.1 Отличие потоков выполнения от процессов

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

  • процессы, как правило, независимы, тогда как потоки выполнения существуют как составные элементы процессов;
  • процессы несут значительно больше информации о состоянии, тогда как несколько потоков выполнения внутри процесса совместно используют информацию о состоянии, а также память и другие вычислительные ресурсы;
  • процессы имеют отдельные адресные пространства, тогда как потоки выполнения совместно используют их адресное пространство;
  • процессы взаимодействуют только через предоставляемые системой механизмы связей между процессами;[1,3]
  • переключение контекста между потоками выполнения в одном процессе, как правило, быстрее, чем переключение контекста между процессами;

5.2 Управление памятью

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

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

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