Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
Операционные системы_лекции.doc
Скачиваний:
15
Добавлен:
28.09.2019
Размер:
1.71 Mб
Скачать
Появление
в архитектуре вычислительных систем
контроллеров внешних устройств создало
возможность разгрузки центрального
процессора от операций ввода-вывода. В
операционных системах ранних поколений
на время операций ввода-вывода центральный
процессор стал простаивать, что было
непростительной расточительностью для
дорогого устройства. Схема такой работы
показана на рис. 1.7,а. Процесс развернут
во времени t, серыми
прямоугольниками показана работа
центрального процессора, белыми –
работа устройства ввода (или вывода).
Буквами А и Б обозначены задачи. Как
видно из рис. 1.7,а время ТИ выполнения
обеих задач равно сумме длительностей
задач, причём в течение длительных
отрезков времени процессор будет
простаивать.
Мультипрограммным
режимом называется такой режим работы
операционной системы, в котором
одновременно выполняется
две и более
задачи, а процессор переключается с
решения
одной задачи на решения
других на время совершения
операций,
не требующих его участия
а)
б)
Рис. 1.7. Монопрограммный (а) и мультипрограммный
(б) режимы работы
На
рис. 1.7,б показана работа операционной
системы в мультипрограммном режиме.
В этом режиме на время операций
ввода-вывода процессор переключается
с решения одной задачи на решение другой.
В результате время выполнения задач
несколько увеличивается, но общее время
ТИ выполнения обеих задач уменьшается,
т.е. производительность вычислительной
системы увеличивается. Мультипрограммирование
является синонимом слова «многопроцессность».
При этом подразумевается обособление
процессов друг от друга посредством
выделения индивидуальных виртуальных
адресных пространств в памяти и назначения
других ресурсов.
Развитие
устройств ввода-вывода привело к
появлению терминалов – комбинаций
мониторов и клавиатур. Программное
обеспечение немедленно отреагировало
на эту ситуацию появлением диалогового
режима работы. Операционные системы
стали поддерживать этот режим и появились
системы с разделением времени, в которых
каждому процессу отводился квант
времени, по истечении которого
вычислительная система переключалась
на выполнение следующего процесса.
Поскольку
процессы могли содержать разные задачи,
то появился многозадачный режим, а т.к.
задачи могут принадлежать разным
пользователям, то появился и
многопользовательский режим. В
мультизадачном режиме в противовес
мультипрограммному режиму обеспечивается
взаимодействие между вычислениями. Для
подчёркивания этой разницы были введены
термины «легковесные процессы»
(thin), они же потоки
выполнения, нити и треды (threads).
Легковесными они называются потому,
что процессору не требуется для их
реализации организовывать полноценную
виртуальную машину. Единственно, что
имеют легковесные процессы своего, это
процессорное время, всё остальное у
связанных легковесных процессов общее.
Наличие легковесных процессов позволило
организовать много поточное выполнение
задач.
Контрольные
вопросы:
-
Перечислите
основные функции операционной системы? -
Что
такое привилегированные и непривилегированные
команды? -
Что
такое модули операционной системы? -
Что
такое ядро операционной системы? -
Что
такое монолитное ядро? -
Нарисуйте
и поясните структуру слоёной операционной
системы? -
Что
такое супервизор? -
Что
такое микроядерная операционная
система? -
Что
такое BIOS, где она находится
при старте вычислительной машины и где
помещается во время её работы? -
Что
такое переносимый и непереносимый
модуль операционной системы? -
Что
такое системный запрос? -
Что
такое интерфейс прикладного
программирования? -
Что
такое операционная среда? -
В
чём причина отказа работы программы
пользователя при запуске её в другой
операционной системе? -
Как
обеспечить переносимость программ из
одной операционной системы в другую? -
Что
такое очередь, и как она работает? -
Как
происходит адресация в стеке? -
Что
такое стек, и как он работает? -
Можно
ли прочитать данные, записанные в стек,
после их считывания? -
Что
такое машинная команда? Какова её
структура (формат)? -
Что
такое адресация? Какие существуют
способы адресации? -
Что
такое непосредственная адресация? -
Что
такое прямая адресация? -
Что
такое регистровая адресация? -
Что
такое косвенная адресация? -
Каким
образом процессор распознаёт способ
адресации операндов в машинной команде? -
Что
такое прерывание? -
Что
такое состояние процесса вычислений?
Где оно хранится? -
Что
такое контекст программы? -
Что
такое дескриптор программы, и какова
его структура? -
Нарисуйте
и поясните схему обслуживания прерывания
в простых системах? -
Нарисуйте
и поясните схему обслуживания прерывания
в сложных системах? -
Чем
отличаются схемы обслуживания прерывания
в простых и сложных системах? -
Какова
структура программы, обслуживающей
прерывание? -
Что
такое синхронные (внутренние), асинхронные
(внешние) и программные (события)
прерывания? -
Перечислите
источники внешних прерываний. -
Перечислите
источники внутренних прерываний. -
Что
такое маскирование прерываний? -
Как
решается вопрос о порядке обслуживания
одновременно возникших запросов на
прерывания? -
Что
такое приоритет прерываний? Как можно
изменить приоритет? -
Что
такое режим прерываний? Как он
устанавливается? -
Что
такое дисциплина обслуживания прерывания?
Для чего необходимо это понятие? -
Перечислите
и поясните основные дисциплины
обслуживания прерываний. -
Что
такое дисциплина обслуживания прерываний
с относительными приоритетами? -
Что
такое дисциплина обслуживания прерываний
с абсолютным приоритетом? -
Что
такое дисциплина обслуживания прерываний
LCFS (FIFO)? -
Расположите
в порядке возрастания приоритета
источники прерываний: системный таймер,
внешние устройства, средства контроля
процессора и программные прерывания. -
Расположите
в порядке возрастания приоритета
источники прерываний: сетевое
оборудование, терминалы, магнитные
диски. -
Что
такое процесс? Приведите примеры. -
Дайте
современное определение понятия
«Задача». -
Что
такое ресурс? Приведите примеры ресурсов. -
Что
такое дескриптор процесса, и какова
его структура? -
Нарисуйте
и поясните диаграмму состояния процесса. -
Что
такое делимые и неделимые ресурсы?
Приведите примеры. -
Опишите
три ситуации выделения ресурса задаче. -
Что
такое одновременное и параллельное
(попеременное) разделение ресурсов?
Приведите примеры. -
В
чём особенность оперативной памяти
как разделяемого ресурса? -
Как
разделяется внешняя память? В чём
особенность разделения памяти как
ресурса? -
Как
решается вопрос разделения ресурсов
с последовательным доступом? -
Опишите
классификацию программных модулей как
разделяемых и неразделяемых ресурсов. -
Что
такое однократно используемые программные
модули? Могут ли они быть разделяемыми
ресурсами? Почему? -
Что
такое непривилегированные программные
модули? Могут ли они быть разделяемыми
ресурсами? Почему? -
Что
такое привилегированные программные
модули? Могут ли они быть разделяемыми
ресурсами? -
Почему
привилегированные программные модули
могут быть разделяемыми ресурсами? -
Что
такое реентабельные программные модули?
Могут ли они быть разделяемыми ресурсами? -
Почему
реентабельные модули могут быть
разделяемыми ресурсами? -
Что
такое повторно входимые программные
модули? Могут ли они быть разделяемыми
ресурсами? Почему? -
Что
такое мультипрограммный режим работы
операционной системы? Поясните временной
диаграммой. -
Почему
в мультипрограммном режиме
производительность вычислительной
системы увеличивается? Поясните
временной диаграммой. -
Верно
ли утверждение «Т.к. в мультипрограммном
режиме производительность вычислительной
машины выше, то и время выполнения
отдельных процессов в этом режиме
меньше, чем в однопрограммном»? -
Что
такое мультизадачный режим работы
операционной системы? -
Что
такое легковесные процессы? -
Что
такое потоки выполнения? -
Что
такое нити? -
Что
такое треды? -
Что
такое разделение времени?
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Процесс
— это выполнение отдельной программы с ее данными на последовательном
процессоре.
Задача
— это совокупность программ, модулей и данных, требующих ресурсов выч.машины
для своей реализации. Это единица работы, для выполнения которой
предоставляется ЦП.
ресурс – всякий объект, который может
распределяться внутри системы с течением времени. Ресурсы м.б. разделяемыми,
когда несколько процессов используют их одновременно, а м.б. неделимыми. Изначально ресурсами считались: процессорное
время, память, каналы вв-выв и перефирийные устройства. В настоящее время
относят также програмные компоненты (библиотеки, информационные каналы,
компоненты ОС – описатели (handle) и объекты,
которые они описывают – таймеры, сигналы, семафоры).
Мультизадачность:
Мультизадачный
режим позволяет переключить ЦП на выполнение другой задачи, пока первая ожидает
завершения операции I/O, за счёт чего повышается быстродействие по
сравнению с однозадачной, выполняющей аналогичные действия. В мультизадачном
режиме работы повышается пропускная способность системы
На
рисунке 2 процесса обращаются к одному и тому же ресурсу. Это становится
возможным благодаря концепции виртуальных ресурсов. Данная концепция позволяет
унифицировать разработку процессов и повысить эффективность использования
ресурсов.
Суть
концепции: ОС использует все реальные ресурсы компьютера и на их основе создаёт
новый виртуальный компьютер с заранее определёнными характеристиками, при этом
каждый виртуальный ресурс моделируется с учётом его специфики. Виртуальный
процессор моделируется на реальном CPU gen`v выделения
квантов времени. Виртуальная память моделируется реальным ОЗУ на основе
динамического преобразования адресов. Устройства ввода-вывода используются
параллельно. В результате на базе одного ПК реализуется несколько виртуальных
ВС.
Для
ОС win м.б. организована ВС как для программ,
разработанных для самой ОС win, так и для программ, разработанных, например,
в MS—DOS. Однако,
поскольку реально требуется гораздо памяти, то реальному компьютеру хватает
имеющейся в наличии ОП + файл подкачки на диске.
Для
каждого процесса создаётся собственная виртуальная ВС. В рамках концепции
виртуальных ресурсов можно пойти дальше и для каждой виртуальной ВС создать
несколько виртуальных процессоров, каждый из которых будет выполнять свою
собственную задачу. Выполнение такой задачи виртуальным процессом называют thread — «нить»
(у каждой виртуальной ВС виртуальные процессы – нити).
Если
ПК располагает 2-мя реальными процессорами, то две нити могут выполняться параллельно.
Если процессор один, то параллельное исполнение эмулируется с помощью
разделения времени.
Поскольку
все нити одного процесса выполняются в рамках этого процесса (в рамках 1-й
виртуальной ВС), то они разделяют одно и то же адресное пространство, т.е.
имеют одни и те же глобальные переменные, общие виртуальные устройства,
файловые дескрипторы. Это с одной стороны создаёт удобство при написании
программы, а с другой требует от программиста особых навыков при написании
программ. Кроме того, различные процессы т.ж. могут взаимодействовать между
собой посредством механизмов межпроцессорного взаимодействия.
Параллельное
программирование – программирование параллельных процессов и нитей. Создавать
программы надо так, чтобы они использовали min
вычислительных ресурсов.
Контекст нити.
Что
различно у двух нитей, выполняющихся в рамках одной виртуальной ВС:
Регистры
процессора, включая программный счетчик, стек, нити-потомки, текущее состояние
– всё это контекст нити ( Для
организации ||-но выполняющихся процессов и нитей нужна аппаратная поддержка —
у Intel есть начиная с 80386).
Содержание
- Многозадачность в операционных системах, виды многозадачности
- По типу наименьшего элемента управляемого кода
- Процессная многозадачность.
- Поточная многозадачность.
- По способу организации времени выполнения каждого процесса
- Параллельная многозадачность
- Типы псевдопараллельной многозадачности
- Многозадачность в операционной системе Windows
- Многозадачная ОС
Многозадачность в операционных системах, виды многозадачности
Многозада́чность — свойство ОС или среды выполнения обеспечивать возможность параллельной обработки нескольких процессов. Иными словами, многозадачность — способ выполнения нескольких задач в один период времени. При этом задачи делят между собой общие ресурсы (resources sharing), помимо этого осуществляется планирование (scheduling). [1]
Система называется однозадачной,если она не обладает свойством многозадачности, т.е. задачи в ней выполняются последовательно. DOS — однозадачная ОС.
Многозадачность имеет место при наличии нескольких потоков исполнения.
Поток исполнения — набор последовательных инструкций, выполняемых процессором во время работы программы. На одном процессорном ядре одновременно выполняется лишь один поток исполнения, который называется активным. Процесс выбора активного исполнительного потока носит название планирование.
По типу наименьшего элемента управляемого кода
Процессная многозадачность.
Здесь программа — наименьший элемент управляемого кода, которым может управлять планировщик операционной системы. Известна большинству пользователей (одновременная работа в текстовом редакторе и прослушивание музыки). Многозадачная система позволяет двум или более программам выполняться одновременно.
Поточная многозадачность.
Многопоточность — специализированная форма многозадачности. Наименьший элемент управляемого кода — поток. Многопотоковая (multi-threaded) система предоставляет возможность одновременного выполнения одной программой 2 и более задач
По способу организации времени выполнения каждого процесса
Параллельная многозадачность
Параллельная многозадачность, когда каждая задача исполняется в своём аппаратном микропроцессорном ядре действительно одновременно друг с другом. Реализация данного типа многозадачности требует больших материальных вложений. Альтернативой параллельной многозадачности является применение псевдопараллельной многозадачности или совокупности параллельной и псевдопараллельной многозадачности при наличии нескольких процессорных ядер.
Типы псевдопараллельной многозадачности
Невытесняющая многозадачность. Существенным ограничением такого подхода является то, что время, затрачиваемое программой на обработку сообщения может быть очень большим, а управление операционной системе передается только после обработки сообщения.
Совместная или кооперативная многозадачность. ОС передает управление от одного приложения другому не в любой момент времени, а только когда текущее приложение отдает управление системе, получил, как было упомянуто, название кооперативной многозадачности
Вытесняющая, или приоритетная, многозадачность (режим реального времени)
С Windows 95 ОС действительно контролирует и управляет процессами, потоками и их переключением. Способность ОС прервать выполняемый поток практически в любой момент времени и передать управление другому ожидающему потоку определяется термином preemptive multitasking — преимущественная, или вытесняющая, многозадачность.
Многозадачность в операционной системе Windows
ТЕОРЕТИЧЕСКОЕ ОПИСАНИЕ
Многозадачность
Под многозадачностью понимается организация одновременного выполнения нескольких прикладных программ с помощью разделения между ними процессорного времени. Таким образом, можно говорить о переключении задач, которое происходит незаметно для пользователя и самих программ. Следует иметь в виду, что одновременное выполнение нескольких машинных команд на одном процессоре невозможно. Операционная система сама выделяет каждой задаче требуемые ресурсы и корректно решает проблемы распределения контроля над ними. Такими ресурсами могут быть оперативная память, внешние устройства и т. п. Быстрота, с которой процессор переключается с выполнения одной задачи на другую, создает впечатление одновременного их выполнения.
Распределение процессорного времени между несколькими задачами реализуется специальной компонентой операционной системы, называемой планировщиком. При каждой смене задачи планировщик должен сохранить статус (состояние) прерванной задачи, загрузить в процессор статус новой задачи и передать ей управление в той точке, где она была прервана в предыдущий раз. Статус задачи определяется содержимым счетчика команд, регистров общего назначения и т. п., и обычно сохраняется в специальной структуре данных, называемой управляющим блоком процесса, или РСВ (Process Control Block).
В принципе существуют два основных метода позволяющие организовать переключение задач в рамках какой — либо операционной системы:
- Переключение по событию
- Переключение по времени
Переключение по событию
Переключение задач по событию показано на рис 1.
В этом режиме операционная система не определяет самостоятельно момент смены текущей задачи. Он может быть указан активной задачей, «добровольно» приостанавливающей свое выполнение с помощью специального обращения к операционной системе. Кроме того, задача прерывается, если она обращается к функциям операционной системы, например, с запросом на ввод/вывод. Поскольку на время выполнения запроса к операционной системе задача ожидает результата затребованной операции, она переходит в режим ожидания, и операционная система может передать управление процессором другой задаче, которая на данный момент готова к выполнению. Этот метод требует организации системы приоритетов, позволяющей избежать ситуации, когда какая – либо программа, не осуществляющая обращений к функциям операционной системы, будет выполняться, фактически, в монопольном режиме. Поэтому самые высокие приоритеты назначаются задачам с большим количеством обращений к функциям операционной системы.
Переключение по времени
Переключение задач по времени показано на рис 2.
Рис 2. Переключение задач по времени.
Этот метод основан на использовании внешнего сигнала, поступающего на процессор через равные интервалы времени. Обычно используется аппаратное прерывание от внешнего таймера. Когда возникает такое прерывание, операционная система прекращает выполнение активной в данный момент задачи и сохраняет ее состояние. Планировщик анализирует затем список ожидающих задач и передает управление процессором выбранной задаче. Таким образом, метод основан на разделении, что позволяет выделить каждой задаче заранее определенный интервал времени.
Многозадачность в операционной системе Windows
В операционной системе Windows реализован метод разделения времени в сочетании с системой приоритетов. На практике переключение задач происходит в одном из следующих случаев:
1. Прерывание от таймера. Это означает, что время, предоставленное активной задаче, истекло. Планировщик прекращает ее выполнение и передает управление задаче с наибольшим приоритетом. Такое переключение происходит наиболее часто.
2. Текущая задача запрашивает операцию ввода/вывода. Поскольку задача должна ожидать окончания этой операции, планировщик приостанавливает ее выполнение и активизирует задачу с наибольшим приоритетом.
3. Активная задача освобождает ресурс, который ожидала задача с большим приоритетом. Планировщик приостанавливает выполнение текущей задачи в пользу другой, более приоритетной.
4. Внешнее, т. е., аппаратное прерывание сигнализирует о завершении операции ввода/вывода на периферийное устройство, которое ожидалось другой, более приоритетной задачей. Последняя начинает выполняться вместо текущей задачи.
В Windows каждая запущенная 32- х битовая программа называется процессом. Процесс в основном имеет дело с распределением ресурсов системы. Исполняемый код для системы является другим объектом, называемым нитью, или потоком управления (thread). Когда запускается новый процесс, ему автоматически придается одна нить. Нити (потоки) используются операционной системой Windows для диспетчеризации времени процессора. Диспетчеризация — это метод выделения времени каждой из нитей (не процессов, поскольку процесс может иметь несколько нитей). Операционная система рассматривает все готовые к запуску потоки и выбирает для выполнения один из них. Диспетчер также определяет квант времени, предоставляемый для выполнения каждому из потоков.
Из вышеизложенного следует, что механизм процессов и потоков позволяет программному обеспечению, работающему под управлением Windows, реализовать внутри программную многозадачную работу. Такая возможность является большим достоинством этой операционной системы. Например, в электронных таблицах нужно пересчитывать данные при изменении пользователем содержимого ячеек. Пересчет сложной таблицы может занять несколько секунд, но тщательно продуманная программа не должна тратить время на эту операцию после каждого изменения. Вместо этого можно выделить функциональный блок повторных расчетов в отдельный поток с более низким (чем у первичного) приоритетом. Таким образом, пока пользователь набирает данные, исполняется первичный поток, т. е., система не выделяет времени потоку, занимающемуся пересчетом. В случае возникновения паузы в процессе ввода система приостановит выполнение первичного потока и отдаст процессор в распоряжение потока, занимающегося пересчетом. При возобновлении ввода данных первичный поток (более приоритетный) вытеснит поток, занимающийся расчетами. Создание дополнительного потока в данном случае сделает всю программу более реактивной на действия пользователя.
ОПИСАНИЕ ЛАБОРАТОРНОЙ РАБОТЫ
В данной лабораторной работе изучаются методы создания и запуска процессов и потоков в рамках операционной системы Windows.
Многозадачная ОС
Многозадачные операционные системы
Почти все современные операционные системы (Windows 95, Windows NT, Windows 2000, Unix) поддерживают преимущественную многозадачность Этот термин, который часто переводят как вытесняющая многозадачность, означает, что процесс или, точнее, его поток, который в данный момент активен, имеет преимущество перед другими конкурирующими потоками с одинаковым приоритетом. Системы Windows 3.1 и Macintosh поддерживают кооперативную многозадачность в которой все управление отдано системе. В такой системе легче программировать, но она менее эффективна.
Основным признаком многозадачной ОС является способность совмещать выполнение нескольких прикладных программ. Большое значение при этом имеет способ совмещения, то есть на каком уровне или как конкретно реализовано совмещение. Если однопроцессорная, но многозадачная, система выделяет каждой прикладной программе определенный квант времени спустя который она переключается на выполнение следующей программы, то это система с разделением времени Системы с разделением времени появились в начале 60-х. Они управлялись main /rame-компьютерами, обслуживающими многочисленные удаленные терминалы. В качестве терминалов сначала использовались обычные телетайпы, которые умели только вводить или выводить информацию. Благодаря огромной разнице в скорости работы таких устройств, как телетайп и процессор, системы с разделением времени успевали переключаться между многими терминалами и вводить или выводить информацию так, что каждому пользователю казалось, что он единолично управляет удаленным процессором. Затем появились персональные компьютеры, которые стали использоваться в качестве удаленных терминалов. В связи с этим для операционной системы главного процессора (например, IBM-370) отпала необходимость заниматься посимвольным вводом-выводом. Теперь акцент в разработке операционных систем был перенесен на управление выполняемыми программными модулями, принадлежащими разным пользователям и одновременно находящимися в памяти главного компьютера. Появились такие понятия, как очередь заданий •— очередь на обслуживание каким-либо устройством: принтером, плоттером, накопителем на магнитном носителе, приоритет задания, ожидаемое время завершения задания и т. д.
В настоящее время, когда каждый пользователь имеет достаточно мощный персональный компьютер, акценты в развитии ОС снова изменились. Теперь большое значение приобретает развитие сетевых, многозадачных ОС. В сущности, теперь пользователь имеет возможность установить на отдельном персональном компьютере многозадачную ОС и разрабатывать приложения, совмещающие вы-полнение нескольких процессов. Каждый процесс, в свою очередь, может состоять из нескольких потоков, выполняемых в адресном пространстве процесса.
Первые операционные системы, реализованные на персональных компьютерах, сильно уступали в концептуальном плане и по своим реальным возможностям системам с разделением времени, давно реализованным в mainframe- компьютерах. В Win 16, например, тоже существует понятие многозадачности. Реализовано оно следующим образом: обработав очередное сообщение, приложение передает управление операционной системе, которая может передать управление другому приложению. Такой вид многозадачности, при котором операционная система передает управление от одного приложения другому не в любой момент времени, а только когда текущее приложение отдает управление системе, получил, как было упомянуто, название кооперативной многозадачности (cooperative multi-tasking).
Если при таком подходе обработка сообщения затягивается, то пользователь увидит реакцию системы только после завершения обработки текущим приложением • текущего сообщения. Обычно при выполнении длительных операций программист изменяет форму курсора (песочные часы), вызвав API-функцию BeginWaitCursor. Иногда, если это предусмотрел разработчик программы, в таких случаях застрявшее приложение даже вызывает функцию PeekMessage, сообщая системе, что она может обработать очередное сообщение, а текущее приложение способно и подождать. Но главная неприятность при таком подходе заключается в том, что в случае бесконечного цикла, вызванного ошибкой в программе, ОС не имеет шансов получить управление и также зависнет. Пользователю придется перезагружать систему.
В Windows начиная с Windows 95 реализован принципиально другой вид многозадачности, в котором операционная система действительно контролирует и управляет процессами, потоками и их переключением. Способность операционной системы прервать выполняемый поток практически в любой момент времени и передать управление другому ожидающему потоку определяется термином preemptive multitasking — преимущественная, или вытесняющая, многозадачность. Реализация ее выглядит так: все существующие в данный момент потоки, часть из которых может принадлежать одному и тому же процессу, претендуют на процессорное время и, с точки зрения пользователя должны выполняться одновременно. Для создания этой иллюзии система через определенные промежутки времени забирает управление, анализирует свою очередь сообщений, распределяет сообщения по другим очередям в пространстве процессов и, если считает нужным, переключает потоки (рис. 12.5).
Реализация вытесняющей многозадачности в Windows 2000 дает не только возможность плавного переключения задач, но и устойчивость среды к зависаниям, так как ни одно приложение не может получить неограниченные права на процессорное время и другие ресурсы. Так система создает эффект одновременного выполнения нескольких приложений. Если компьютер имеет несколько процессоров, то системы Windows NT/2000 могут действительно совмещать выполнение нескольких приложений. Если процессор один, то совмещение остается иллюзией. Когда заканчивается квант времени, отведенный текущей программе, система ее прерывает, сохраняет контекст и отдает управление другой программе, которая ждет своей очереди. Величина кванта времени (time slice)зависит от ОС и типа процессора, в Windows NT она в среднем равна 20 мс. Следует отметить, что добиться действительно одновременного выполнения потоков можно только на машине с несколькими процессорами и только под управлением Windows NT/2000, ядра которых поддерживают распределение потоков между процессорами и процессорного времени между потоками на каждом процессоре. Windows 95 работает только с одним процессором. Даже если у компьютера несколько процессоров, под управлением Windows 95 задействован лишь один из них, а остальные простаивают.
Многозада́чность — свойство ОС или среды выполнения обеспечивать возможность параллельной обработки нескольких процессов. Иными словами, многозадачность — способ выполнения нескольких задач в один период времени. При этом задачи делят между собой общие ресурсы (resources sharing), помимо этого осуществляется планирование (scheduling).[1]
Система называется однозадачной,если она не обладает свойством многозадачности, т.е. задачи в ней выполняются последовательно. DOS — однозадачная ОС.
Многозадачность имеет место при наличии нескольких потоков исполнения.
Поток исполнения — набор последовательных инструкций, выполняемых процессором во время работы программы. На одном процессорном ядре одновременно выполняется лишь один поток исполнения, который называется активным. Процесс выбора активного исполнительного потока носит название планирование.
По типу наименьшего элемента управляемого кода
Процессная многозадачность.
Здесь программа — наименьший элемент управляемого кода, которым может управлять планировщик операционной системы. Известна большинству пользователей (одновременная работа в текстовом редакторе и прослушивание музыки). Многозадачная система позволяет двум или более программам выполняться одновременно.
Поточная многозадачность.
Многопоточность — специализированная форма многозадачности. Наименьший элемент управляемого кода — поток. Многопотоковая (multi-threaded) система предоставляет возможность одновременного выполнения одной программой 2 и более задач
По способу организации времени выполнения каждого процесса
Параллельная многозадачность
Параллельная многозадачность, когда каждая задача исполняется в своём аппаратном микропроцессорном ядре действительно одновременно друг с другом. Реализация данного типа многозадачности требует больших материальных вложений. Альтернативой параллельной многозадачности является применение псевдопараллельной многозадачности или совокупности параллельной и псевдопараллельной многозадачности при наличии нескольких процессорных ядер.
Типы псевдопараллельной многозадачности
Невытесняющая многозадачность. Существенным ограничением такого подхода является то, что время, затрачиваемое программой на обработку сообщения может быть очень большим, а управление операционной системе передается только после обработки сообщения.
Совместная или кооперативная многозадачность. ОС передает управление от одного приложения другому не в любой момент времени, а только когда текущее приложение отдает управление системе, получил, как было упомянуто, название кооперативной многозадачности
Вытесняющая, или приоритетная, многозадачность (режим реального времени)
С Windows 95 ОС действительно контролирует и управляет процессами, потоками и их переключением. Способность ОС прервать выполняемый поток практически в любой момент времени и передать управление другому ожидающему потоку определяется термином preemptive multitasking — преимущественная, или вытесняющая, многозадачность.
Многозадачность — обычная черта компьютерных операционных систем. Это позволяет более эффективно использовать компьютерное оборудование; если программа ожидает какого-либо внешнего события, такого как ввод пользователя или передача ввода / вывода с периферийным устройством для завершения, центральный процессор все еще может использоваться с другой программой.
Что такое многозадачность и ее виды?
Есть два основных типа многозадачности: упреждающий и кооперативный. … При вытеснительной многозадачности операционная система распределяет фрагменты времени ЦП для каждой программы. В совместной многозадачности каждая программа может управлять процессором столько, сколько ей нужно.
Что такое многозадачная операционная система Краткий ответ?
Многозадачность в операционной системе — это позволяя пользователю выполнять более одной компьютерной задачи (например, работу прикладной программы) одновременно. Операционная система может отслеживать, где вы находитесь в этих задачах, и переходить от одной к другой без потери информации.
Что также известно как многозадачная операционная система?
2) Кооперативная многозадачная ОС: также известна как ОС без вытеснения. В этой ОС процессы вытесняются через фиксированный интервал времени. Процесс может произвольно управлять ЦП или, когда ЦП простаивает, позволяет одновременно запускать несколько приложений.
Что вы имеете в виду под многозадачной операционной системой класса 9?
Ответ: Многозадачная операционная система. В ОС, которая позволяет одновременно выполнять несколько задач известна как многозадачная ОС. В этом типе ОС несколько приложений могут одновременно загружаться и использоваться в памяти. В то время как процессор обрабатывает только одно приложение в определенное время.
Какие два типа многозадачности?
Операционные системы ПК используют два основных типа многозадачности: кооперативный и упреждающий.
Какой пример многозадачности?
Многозадачность — это когда один человек выполняет несколько задач одновременно. Примеры включают жевать жвачку во время прогулки, отправлять электронные письма во время встречии разговаривает по телефону во время просмотра телевизора. Исследования показывают, что у многозадачности есть как преимущества, так и недостатки.
Почему Windows 10 называется многозадачной ОС?
Как многозадачная система MS Windows позволяет нескольким программам находиться в памяти и работать в любой момент времени.. Каждая программа имеет собственное окно на экране дисплея. … Это позволило выполнять многозадачность и упростить обмен данными. Windows 3.1 также может запускать несколько приложений DOS в отдельных окнах.
Что такое многопользовательская операционная система?
Многопользовательская операционная система компьютерная операционная система, которая позволяет нескольким пользователям получать доступ к одной системе с одной операционной системой на ней. … Различные пользователи получают доступ к машине под управлением ОС через сетевые терминалы. ОС может обрабатывать запросы от пользователей по очереди между подключенными пользователями.
Многозада́чность (англ. multitasking) — свойство операционной системы или среды программирования обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких процессов. Истинная многозадачность операционной системы возможна только в распределённых вычислительных системах.
Существует 2 типа многозадачности[1]:
- Процессная многозадачность (основанная на процессах — одновременно выполняющихся программах). Здесь программа — наименьший элемент кода, которым может управлять планировщик операционной системы. Более известна большинству пользователей (работа в текстовом редакторе и прослушивание музыки).
- Поточная многозадачность (основанная на потоках). Наименьший элемент управляемого кода — поток (одна программа может выполнять 2 и более задачи одновременно).
Многопоточность — специализированная форма многозадачности[1].
Содержание
- 1 Свойства многозадачной среды
- 2 Трудности реализации многозадачной среды
- 3 История многозадачных операционных систем
- 4 Типы псевдопараллельной многозадачности
- 4.1 Невытесняющая многозадачность
- 4.2 Совместная или кооперативная многозадачность
- 4.3 Вытесняющая или приоритетная многозадачность (режим реального времени)
- 5 Проблемные ситуации в многозадачных системах
- 5.1 Голодание (starvation)
- 5.2 Гонка (race condition)
- 5.3 Инверсия приоритета
- 6 Ссылки
- 7 Примечания
Свойства многозадачной среды
Примитивные многозадачные среды обеспечивают чистое «разделение ресурсов», когда за каждой задачей закрепляется определённый участок памяти, и задача активизируется в строго определённые интервалы времени.
Более развитые многозадачные системы проводят распределение ресурсов динамически, когда задача стартует в памяти или покидает память в зависимости от её приоритета и от стратегии системы. Такая многозадачная среда обладает следующими особенностями:
- Каждая задача имеет свой приоритет, в соответствии с которым получает процессорное время и память
- Система организует очереди задач так, чтобы все задачи получили ресурсы, в зависимости от приоритетов и стратегии системы
- Система организует обработку прерываний, по которым задачи могут активироваться, деактивироваться и удаляться
- По окончании положенного кванта времени ядро временно переводит задачу из состояния выполнения в состояние готовности, отдавая ресурсы другим задачам. При нехватке памяти страницы невыполняющихся задач могут быть вытеснены на диск (своппинг), а потом через определённое системой время, восстанавливаться в памяти
- Система обеспечивает защиту адресного пространства задачи от несанкционированного вмешательства других задач
- Система обеспечивает защиту адресного пространства своего ядра от несанкционированного вмешательства задач
- Система распознаёт сбои и зависания отдельных задач и прекращает их
- Система решает конфликты доступа к ресурсам и устройствам, не допуская тупиковых ситуаций общего зависания от ожидания заблокированных ресурсов
- Система гарантирует каждой задаче, что рано или поздно она будет активирована
- Система обрабатывает запросы реального времени
- Система обеспечивает коммуникацию между процессами
Трудности реализации многозадачной среды
Основной трудностью реализации многозадачной среды является её надёжность, выраженная в защите памяти, обработке сбоев и прерываний, предохранении от зависаний и тупиковых ситуаций.
Кроме надёжности, многозадачная среда должна быть эффективной. Затраты ресурсов на её поддержание не должны: мешать процессам проходить, замедлять их работу, резко ограничивать память.
История многозадачных операционных систем
Поначалу реализация многозадачных операционных систем представляла собой серьёзную техническую трудность, отчего внедрение многозадачных систем затягивалось, а пользователи долгое время после внедрения предпочитали однозадачные.
В дальнейшем, после появления нескольких удачных решений, многозадачные среды стали совершенствоваться, и в настоящее время употребляются повсеместно.
Впервые многозадачность операционной системы была реализована в ходе разработки операционной системы Multics (1964 год). Одной из первых многозадачных систем была OS/360 (1966[2]), используемая для компьютеров фирмы IBM и их советских аналогов ЕС ЭВМ. Разработки системы были сильно затянуты, и на начальное время фирма IBM выдвинула однозадачный DOS, чтобы удовлетворить заказчиков до полной сдачи OS/360 в эксплуатацию. Система подвергалась критике по причине малой надёжности и трудности эксплуатации.
В 1969 году на основе Multics была разработана система UNIX с достаточно аккуратным алгоритмическим решением проблемы многозадачности. В настоящее время на базе UNIX созданы десятки операционных систем.
На компьютерах PDP-11 и их советских аналогах СМ-4 использовалась многозадачная система RSX-11 (советский аналог — ОСРВ СМ ЭВМ), и система распределения времени TSX-PLUS, обеспечивающая ограниченные возможности многозадачности и многопользовательский режим разделения времени, эмулируя для каждого пользователя однозадачную RT-11 (советский аналог — РАФОС). Последнее решение было весьма популярно из-за низкой эффективности и надёжности полноценной многозадачной системы.
Аккуратным решением оказалась операционная система VMS, разработанная первоначально для компьютеров VAX (советский аналог — СМ-1700) как развитие RSX-11.
Первый в мире мультимедийный персональный компьютер Amiga 1000 (1984 год) изначально проектировался с расчётом на полную аппаратную поддержку вытесняющей многозадачности реального времени в ОС AmigaOS. В данном случае разработка аппаратной и программной части велась параллельно, это привело к тому, что по показателю квантования планировщика многозадачности (1/50 секунды на переключение контекста) AmigaOS долгое время оставалась непревзойдённой на персональных компьютерах.
Многозадачность обеспечивала также фирма Microsoft в операционных системах Windows. При этом Microsoft выбрала две линии разработок — на базе приобретённой ею Windows 0.9[источник не указан 1301 день], которая после долгой доработки системы, изначально обладавшей кооперативной многозадачностью, аналогичной Mac OS, вылилась в линейку Windows 3.x, и на основе идей, заложенных в VMS, которые привели к созданию операционных систем Windows NT. Использование опыта VMS обеспечило системам существенно более высокую производительность и надёжность. По времени переключения контекста многозадачности (квантование) только эти операционные системы могут быть сравнимы с AmigaOS и UNIX (а также его потомками, такими, как ядро Linux).
Интересно, что многозадачность может быть реализована не только в операционной, но и языковой среде. Например, спецификации языков программирования Modula-2 и Ada требуют поддержки многозадачности вне привязки к какой-либо операционной системе. В результате, популярная в первой половине 1990-х годов реализация языка программирования TopSpeed Модула-2 от JPI/Clarion позволяла организовывать различные типы многозадачности (кооперативную и вытесняющую — см. ниже) для потоков одной программы в рамках такой принципиально однозадачной операционной системы, как MS-DOS. Это осуществлялось путём включения в модуль программы компактного планировщика задач, содержащего обработчик таймерных прерываний [3]. Языки программирования, обладающие таким свойством, иногда называют языками реального времени[4].
Типы псевдопараллельной многозадачности
Невытесняющая многозадачность
Тип многозадачности, при котором операционная система одновременно загружает в память два или более приложений, но процессорное время предоставляется только основному приложению. Для выполнения фонового приложения оно должно быть активизировано. Подобная многозадачность может быть реализована не только в операционной системе, но и с помощью программ-переключателей задач. В этой категории известна программа DESQview, работавшая под DOS и выпущенная первый раз в 1985 году.
Совместная или кооперативная многозадачность
Тип многозадачности, при котором следующая задача выполняется только после того, как текущая задача явно объявит себя готовой отдать процессорное время другим задачам. Как частный случай, такое объявление подразумевается при попытке захвата уже занятого объекта mutex (ядро Linux), а также при ожидании поступления следующего сообщения от подсистемы пользовательского интерфейса (Windows версий до 3.x включительно, а также 16-битные приложения в Windows 9x).
Кооперативную многозадачность можно назвать многозадачностью «второй ступени» поскольку она использует более передовые методы, чем простое переключение задач, реализованное многими известными программами (например, DOS Shell из MS-DOS 5.0 при простом переключении активная программа получает все процессорное время, а фоновые приложения полностью замораживаются. При кооперативной многозадачности приложение может захватить фактически столько процессорного времени, сколько оно считает нужным. Все приложения делят процессорное время, периодически передавая управление следующей задаче.
Преимущества кооперативной многозадачности: отсутствие необходимости защищать все разделяемые структуры данных объектами типа критических секций и mutex’ов, что упрощает программирование, особенно перенос кода из однозадачных сред в многозадачные.
Недостатки: неспособность всех приложений работать в случае ошибки в одном из них, приводящей к отсутствию вызова операции «отдать процессорное время». Крайне затрудненная возможность реализации многозадачной архитектуры ввода-вывода в ядре ОС, позволяющей процессору исполнять одну задачу в то время, как другая задача инициировала операцию ввода-вывода и ждет её завершения.
Реализована в пользовательском режиме ОС Windows версий до 3.х включительно, Mac OS версий до Mac OS X, а также внутри ядер многих UNIX-подобных ОС, таких, как FreeBSD, а в течение долгого времени — и Linux.
Вытесняющая или приоритетная многозадачность (режим реального времени)
Вид многозадачности, в котором операционная система сама передает управление от одной выполняемой программы другой в случае завершения операций ввода-вывода, возникновения событий в аппаратуре компьютера, истечения таймеров и квантов времени, или же поступлений тех или иных сигналов от одной программы к другой. В этом виде многозадачности процессор может быть переключен с исполнения одной программы на исполнение другой без всякого пожелания первой программы и буквально между любыми двумя инструкциями в её коде. Распределение процессорного времени осуществляется планировщиком процессов. К тому же каждой задаче может быть назначен пользователем или самой операционной системой определенный приоритет, что обеспечивает гибкое управление распределением процессорного времени между задачами (например, можно снизить приоритет ресурсоёмкой программе, снизив тем самым скорость её работы, но повысив производительность фоновых процессов). Этот вид многозадачности обеспечивает более быстрый отклик на действия пользователя.
Преимущества: возможность полной реализации многозадачного ввода-вывода в ядре ОС, когда ожидание завершения ввода-вывода одной программой позволяет процессору тем временем исполнять другую программу. Сильное повышение надежности системы в целом, в сочетании с использованием защиты памяти — идеал в виде «ни одна программа пользовательского режима не может нарушить работу ОС в целом» становится достижимым хотя бы теоретически, вне вытесняющей многозадачности он не достижим даже в теории. Возможность полного использования многопроцессорных и многоядерных систем.
Недостатки: необходимость особой дисциплины при написании кода, особые требования к его реентрантности, к защите всех разделяемых и глобальных данных объектами типа критических секций и mutex’ов.
Реализована в таких ОС, как:
- VMS
- Linux
- в пользовательском режиме (а часто и в режиме ядра) всех UNIX-подобных ОС, включая версии Mac OS X, iOS; Symbian OS
- в режиме ядра ОС Windows 3.x — только при исполнении на процессоре 386 или старше, «задачами» являются только все Windows-приложения вместе взятые и каждая отдельная виртуальная машина ДОС, между приложениями Windows вытесняющая многозадачность не использовалась
- Windows 95/98/ME — без полноценной защиты памяти, что служило причиной крайне низкой, на одном уровне с MS-DOS, Windows 3.x и Mac OS версий до X — надежности этих ОС
- Windows NT/2000/XP/Vista/7 и в режиме ядра, и в пользовательском режиме.
- AmigaOS — все версии, до версии 4.0 без полноценной защиты памяти, что на практике для системных программ почти не сказывалось на надёжности из-за высокой стандартизированности, прозрачных API и SDK. Программы ориентированные на «железо» Амиги, наоборот не отличались надёжностью.
Проблемные ситуации в многозадачных системах
Голодание (starvation)
Задержка времени от пробуждения потока до его вызова на процессор, в течение которой он находится в списке потоков, готовых к исполнению. Возникает по причине присутствия потоков с большими или равными приоритетами, которые исполняются все это время.
Негативный эффект заключается в том, что возникает задержка времени от пробуждения потока до исполнения им следующей важной операции, что задерживает исполнение этой операции, а следом за ней и работу многих других компонентов.
Голодание создаёт узкое место в системе и не дает выжать из неё максимальную производительность, ограничиваемую только аппаратно обусловленными узкими местами.
Любое голодание вне 100 % загрузки процессора может быть устранено повышением приоритета голодающей нити, возможно — временным.
Как правило, для предотвращения голодания ОС автоматически вызывает на исполнение готовые к нему низкоприоритетные потоки даже при наличии высокоприоритетных, при условии, что поток не исполнялся в течение долгого времени (~10 секунд). Визуально эта картина хорошо знакома большинству пользователей Windows — если в одной из программ поток зациклился до бесконечности, то переднее окно работает нормально несмотря на это — потоку, связанному с передним окном, Windows повышает приоритет. Остальные же окна перерисовываются с большими задержками, по порции в секунду, ибо их отрисовка в данной ситуации работает только за счет механизма предотвращения голодания (иначе бы голодала вечно).
Гонка (race condition)
Недетерминированный порядок исполнения двух путей кода, работающих с одними и теми же данными и исполняемыми в двух различных нитях. Приводит к зависимости порядка и правильности исполнения от случайных факторов.
Устраняется добавлением необходимых блокировок и примитивов синхронизации. Обычно является легко устраняемым дефектом (забытая блокировка).
Инверсия приоритета
Поток L имеет низкий приоритет, поток M — средний, поток H — высокий. Поток L захватывает mutex, и, выполняясь с удержанием mutex’а, преемптивно прерывается потоком M, который пробудился по какой-то причине, и имеет более высокий приоритет. Поток H пытается захватить mutex.
В полученной ситуации поток H ожидает завершения текущей работы потоком M, ибо, пока поток M исполняется, низкоприоритетный поток L не получает управления и не может освободить mutex.
Устраняется повышением приоритета всех нитей, захватывающих данный mutex, до одного и того же высокого значения на период удержания mutexa. Некоторые реализации mutex’ов делают это автоматически.
Ссылки
- Аппаратная поддержка мультипрограммирования на примере процессора Pentium
Примечания
- ↑ 1 2 [Герберт Шилдт «Полный справочник по Java», 7-е издание.:Пер. с англ.-М.:ООО «И. Д. Вильямс», 2007, стр. 253—254]
- ↑ Mealy G. H., Witt B. I., Clark W. A. The functional structure of OS/360. IBM Systems Journal, 5, № 1, 1966
- ↑ Белецкий Я. ТопСпид: Расширенная версия языка Модула-2 для персональных компьютеров IBM. — М.: «Машиностроение», 1993
- ↑ Янг С. Алгоритмические языки реального времени
Аспекты операционных систем (история • список) | |
---|---|
Ядро | Гибридное • Микро • Модульное • Монолитное • Нано • Экзо • Драйвер • Пространство пользователя • Область пользователя |
Управление процессами | Режимы (супервизора • реальный • защищённый) • Прерывание • Кольца защиты • Переключение контекста • Многозадачность (вытесняющая • кооперативная • мультипрограммирование) • Процесс • Управление процессом • Планировщик задач • Многопоточность |
Управление памятью | Защита памяти • Сегментная адресация памяти • Страничная память • Менеджер виртуальной памяти • Ошибка сегментации • Общая ошибка защиты |
Прочее | Загрузчик ОС • API • VFS • Компьютерная сеть • GUI • Слой аппаратных абстракций (HAL) |
Многозадачность в операционной системе Windows
ТЕОРЕТИЧЕСКОЕ ОПИСАНИЕ
Многозадачность
Под многозадачностью понимается организация одновременного выполнения нескольких прикладных программ с помощью разделения между ними процессорного времени. Таким образом, можно говорить о переключении задач, которое происходит незаметно для пользователя и самих программ. Следует иметь в виду, что одновременное выполнение нескольких машинных команд на одном процессоре невозможно. Операционная система сама выделяет каждой задаче требуемые ресурсы и корректно решает проблемы распределения контроля над ними. Такими ресурсами могут быть оперативная память, внешние устройства и т. п. Быстрота, с которой процессор переключается с выполнения одной задачи на другую, создает впечатление одновременного их выполнения.
Распределение процессорного времени между несколькими задачами реализуется специальной компонентой операционной системы, называемой планировщиком. При каждой смене задачи планировщик должен сохранить статус (состояние) прерванной задачи, загрузить в процессор статус новой задачи и передать ей управление в той точке, где она была прервана в предыдущий раз. Статус задачи определяется содержимым счетчика команд, регистров общего назначения и т. п., и обычно сохраняется в специальной структуре данных, называемой управляющим блоком процесса, или РСВ (Process Control Block).
В принципе существуют два основных метода позволяющие организовать переключение задач в рамках какой — либо операционной системы:
- Переключение по событию
- Переключение по времени
Переключение по событию
Переключение задач по событию показано на рис 1.
В этом режиме операционная система не определяет самостоятельно момент смены текущей задачи. Он может быть указан активной задачей, «добровольно» приостанавливающей свое выполнение с помощью специального обращения к операционной системе. Кроме того, задача прерывается, если она обращается к функциям операционной системы, например, с запросом на ввод/вывод. Поскольку на время выполнения запроса к операционной системе задача ожидает результата затребованной операции, она переходит в режим ожидания, и операционная система может передать управление процессором другой задаче, которая на данный момент готова к выполнению. Этот метод требует организации системы приоритетов, позволяющей избежать ситуации, когда какая – либо программа, не осуществляющая обращений к функциям операционной системы, будет выполняться, фактически, в монопольном режиме. Поэтому самые высокие приоритеты назначаются задачам с большим количеством обращений к функциям операционной системы.
Переключение по времени
Переключение задач по времени показано на рис 2.
Рис 2. Переключение задач по времени.
Этот метод основан на использовании внешнего сигнала, поступающего на процессор через равные интервалы времени. Обычно используется аппаратное прерывание от внешнего таймера. Когда возникает такое прерывание, операционная система прекращает выполнение активной в данный момент задачи и сохраняет ее состояние. Планировщик анализирует затем список ожидающих задач и передает управление процессором выбранной задаче. Таким образом, метод основан на разделении, что позволяет выделить каждой задаче заранее определенный интервал времени.
Многозадачность в операционной системе Windows
В операционной системе Windows реализован метод разделения времени в сочетании с системой приоритетов. На практике переключение задач происходит в одном из следующих случаев:
1. Прерывание от таймера. Это означает, что время, предоставленное активной задаче, истекло. Планировщик прекращает ее выполнение и передает управление задаче с наибольшим приоритетом. Такое переключение происходит наиболее часто.
2. Текущая задача запрашивает операцию ввода/вывода. Поскольку задача должна ожидать окончания этой операции, планировщик приостанавливает ее выполнение и активизирует задачу с наибольшим приоритетом.
3. Активная задача освобождает ресурс, который ожидала задача с большим приоритетом. Планировщик приостанавливает выполнение текущей задачи в пользу другой, более приоритетной.
4. Внешнее, т. е., аппаратное прерывание сигнализирует о завершении операции ввода/вывода на периферийное устройство, которое ожидалось другой, более приоритетной задачей. Последняя начинает выполняться вместо текущей задачи.
В Windows каждая запущенная 32- х битовая программа называется процессом. Процесс в основном имеет дело с распределением ресурсов системы. Исполняемый код для системы является другим объектом, называемым нитью, или потоком управления (thread). Когда запускается новый процесс, ему автоматически придается одна нить. Нити (потоки) используются операционной системой Windows для диспетчеризации времени процессора. Диспетчеризация — это метод выделения времени каждой из нитей (не процессов, поскольку процесс может иметь несколько нитей). Операционная система рассматривает все готовые к запуску потоки и выбирает для выполнения один из них. Диспетчер также определяет квант времени, предоставляемый для выполнения каждому из потоков.
Из вышеизложенного следует, что механизм процессов и потоков позволяет программному обеспечению, работающему под управлением Windows, реализовать внутри программную многозадачную работу. Такая возможность является большим достоинством этой операционной системы. Например, в электронных таблицах нужно пересчитывать данные при изменении пользователем содержимого ячеек. Пересчет сложной таблицы может занять несколько секунд, но тщательно продуманная программа не должна тратить время на эту операцию после каждого изменения. Вместо этого можно выделить функциональный блок повторных расчетов в отдельный поток с более низким (чем у первичного) приоритетом. Таким образом, пока пользователь набирает данные, исполняется первичный поток, т. е., система не выделяет времени потоку, занимающемуся пересчетом. В случае возникновения паузы в процессе ввода система приостановит выполнение первичного потока и отдаст процессор в распоряжение потока, занимающегося пересчетом. При возобновлении ввода данных первичный поток (более приоритетный) вытеснит поток, занимающийся расчетами. Создание дополнительного потока в данном случае сделает всю программу более реактивной на действия пользователя.
ОПИСАНИЕ ЛАБОРАТОРНОЙ РАБОТЫ
В данной лабораторной работе изучаются методы создания и запуска процессов и потоков в рамках операционной системы Windows.
Источник
Многозадачность Windows 10 — настройка прикрепления окон открытых приложений
Главная / Рабочий стол / Многозадачность Windows 10 — настройка прикрепления окон открытых приложений
Многозадачность Windows 10 — это относительно новый раздел в «Параметрах» операционной системы. Он содержит полезные настройки автоматического упорядочивания открытых окон приложений на Рабочем столе.
При перетаскивании пользователем любого открытого окна в угол или сторону экрана, автоматически сработает функция прикрепления. Она изменит его размер и заполнит свободное пространство другими окнами, если одновременно открыто несколько.
Перетаскивать можно не только способом удерживания зажатой левую кнопку мыши на строке заголовка, но и горячими клавишами с клавиатуры. Найдите клавишу Win (в некоторых случаях может иметь логотип ОС Windows) и скомбинируйте её со стрелками вправо или влево.
Такая работа функции «Snap Assist» знакома нам с момента выхода ОС Windows 7. Тогда она имела название «Aero Snap». Сейчас она значительно улучшена и переименована.
Некоторым пользователям нравится её использовать, другим нет. Независимо от ваших предпочтений, вы должны владеть информацией о том, как отключить Snap Assist в том случае, когда отсутствует необходимость в её функционировании.
МНОГОЗАДАЧНОСТЬ WINDOWS 10
Следующие шаги вам необходимо предпринять для настройки или деактивации прикрепления с упорядочиванием окон открытых приложений. Не волнуйтесь, вы всегда сможете вернуть всё в исходное состояние!
Нажмите сочетание клавиш Win + I на клавиатуре для быстрого доступа или откройте «Параметры» системы в меню кнопки «Пуск». В открывшемся окне выберите категорию «Система» и перейдите в раздел «Многозадачность».
Справа вы увидите подраздел «Прикрепление», где сможете отключить различные аспекты функции привязки. Если вы хотите отключить Snap Assist, снимите отметку с опции «При прикреплении окна показывать, что можно прикрепить рядом с ним».
Вот и все. Если вы обнаружите, что работать без этой функции неудобно, вернитесь к этим же настройкам многозадачности и активируйте их снова.
Мы всегда рады оказать вам посильную помощь в решении различных проблем, связанных с работой компьютера или операционной системы. Взаимодействие осуществляется через форму комментариев или e-mail.
Источник
М Многозадачность
Когда в начале 60-х годов прошлого века создали первую операционную систему IBM, пользователей поразила возможность компьютера выполнять несколько функций одновременно. То есть процессор легко переключался с одной задачи на другую, постепенно доводя их все до логического завершения. Впечатлившись таким эффектом, мультизадачность попробовали перенести в сферу человеческой деятельности. Тогда показалось, что умение выполнять несколько дел одновременно – это очень полезный навык, овладев которым можно кратно повысить эффективность в работе при этом сэкономив уйму времени. Так ли это на самом деле? Давайте разбираться.
Что такое многозадачность?
Начнем с определения. Многозадачность – это возможность, умение, навык выполнять несколько процессов одновременно, переключаясь с одной задачи на другую. Изначально термин применялся сугубо в среде программирования, но постепенно перекочевал в производство и в сферу человеческой деятельности.
Скорей всего вы не раз слышали о выдающихся способностях Цезаря делать одновременно два и больше дел. Воодушевившись таким «подвигом», вы «задвинули» усердие в выполнении одного дела на дальнюю полку и попробовали переключаться с одной задачи на другую, потом на третью и так далее. Всего по чуть-чуть и что в итоге?
А на выходе вы получили несколько начатых задач и ни одной завершенной. Вдобавок ко всему вы совершенно запутались, какое дело выполнить в первую очередь, а какое отложить напоследок. И, главное, вы потратили время и ресурсы мозга впустую. Мотивация на нуле, ком незавершенных задач вырос до небес. В итоге минусовая эффективность и стрессовая ситуация. Приехали.
Умение работать в режиме многозадачности – это не такой уж полезный и ценный навык, как кажется на первый взгляд. Исследования показывают, что мультизадачность вредит трудоспособности человека. Мы не роботы к счастью, поэтому продуктивность работы во многом зависит от умения концентрироваться на выполнении одной задачи. Цепочку дел мы выполняем последовательно, завершая одно и приступая к другому. По мере достижения целей растет мотивация и желание добиваться больших успехов, экономится время. Казалось бы, схватившись за два дела сразу, время на выполнение задач должно сократиться наполовину. Но в действительности потребуется вдвое больше усилий и при этом шансы на успешное завершение сократятся.
Например, вам нужно расставить 10 тарелок на столе, полить цветы на подоконнике в 10 вазах и разослать 10 пригласительных SMS. Попробуем включить режим многозадачности – это, значит, делаем все сразу, перепрыгивая с одной задачи на другую. Поставили 3 тарелки, побежали поливать 3 цветочные вазы, а потом или одновременно с поливом отправили 3 SMS. Вернулись к тарелкам, следом вазы и опять сообщения. И так по кругу. Простые задачки, но, выполняя их все сразу, вы устанете сильнее и потратите времени больше. При этом на середине всего действа включатся побочные эффекты многозадачности: вместо того чтобы отправить SMS, вы, зачем-то польете телефон водой или выставите тарелку на подоконник, а не на стол.
А теперь сделайте те же простые задачи последовательно: сначала тарелки, потом поливка и в завершении отправка сообщений. Вы удивитесь – и дела идут быстрее и мозг цел!
Усложним нагрузку, а точнее сделаем приближенной к реальности. Например, вы пишите отчет или презентацию и одновременно проверяете новые сообщения в одноклассниках или ВК, отвечаете на смс или просьбы коллег помочь по «неотложному» делу. В 99% случаев, работая в режиме такой многозадачности, вы заметите, что время утекло непонятно куда, рабочий настрой улетучился, а основной работы сделано всего 10-15%. Шокирующий вывод: чем больше вы отвлекаетесь, тем сложнее сосредоточиться на работе. Гаджеты, аккаунты в соцсетях, email-почта и другое – это пожиратели времени и усилий, которые вы могли бы с куда большей пользой потратить на полезное дело.
Мы сильно преувеличиваем важность коммуникации – эта мысль кажется такой несовременной в нашу эпоху. Но, если вы планируете завершить задачу максимально эффективно и быстро, то отключите все раздражители. Это поможет сосредоточиться на задаче.
Как работать в таком режиме?
Режим многозадачности в работе – это сочетание следующих качеств: аналитическое мышление, системный подход, высокая организованность. Требования не самые простые, но чтобы их выработать, рекомендуем придерживаться следующих рекомендаций:
- Планируйте дела на день, неделю, месяц вперед. Бывает полезно даже прописать задачи на 1-2 часа, чтобы четко и вовремя их выполнить. Однако не составляйте нереальный план – это один из «хитрых» способов прокрастинации. Список дел должен мотивировать на достижение конкретных задач, промежуточные цели должны быть осуществимы за 1-2 итерации, мозг не должен быть забит лишней информацией. Ещё одно преимущество реального плана в том, что вам проще будет мотивировать себя на выполнение простой задачи.
- Распределите задачи по важности. Самые важные дела начинайте с утра. Помните принцип 20 на 80? Сначала делайте то, что приближает к поставленной цели. Думайте как стратег. Используйте уже проверенные методики Брайана Трейси «АБВГД», Дуайта Эйзенхауэра «Матрица» и, например, почитайте об эффекте Блюмы Зейгарник.
- Зациклите работу. Что значит многозадачность в «правильном» понимании этого термина? У вас может быть несколько дел, которые нужно выполнить за конкретный период времени. Если вы наброситесь на всё сразу, то не достигнете желаемого. Вдобавок получите стресс и депрессию. Чтобы решать эффективно, сосредотачивайтесь на каждой задаче. Например, возьмите на вооружение простой метод Франческо Чирилло, который называется «работать помидорами». То есть вы знаете, что можете продуктивно работать над задачей 45 минут, но потом вам требуется 10-15 отдыха. Возьмите таймер и поставьте период в три четверти часа. В это время полностью погрузитесь в выполнение дела. Как услышите сигнал – отдыхайте. Выпейте кофе, пообщайтесь в соцсетях, проверьте почту. Словом делайте то, что нравится. Отдохнув, снова заводите таймер и делайте работу. Давать отдых мозгу после режима концентрации полезно – это повышает эффективность в последующие отрезки времени.
- Не отвлекайтесь во время работы. Отключите в период концентрации над задачей все отвлекающие факторы – соцсети, оповещения на телефоне и электронной почте. Все это – пожиратели времени. Отведите определенные часы для проверки почты, просмотра аккаунтов и прочего. Не нужно каждые 10 минут листать ленту соцсетей в поиске новых сообщений.
- Разводите похожие виды деятельности и проекты на разное время. Наш мозг любит все упрощать и многие одинаковые дела сваливать в одну кучу. Именно поэтому, мы, находясь в здравом уме и светлой памяти, ставим электрический чайник на газовую печку, наносим на кожу зубную пасту вместо крема и делаем другие глупости. Например, вы можете довольно продуктивно соединить два дела: совершать покупки в мегамаркете и решать деловые вопросы по телефону. Эти действия из разных сфер, поэтому мозг видит различия и не смешивает все в одну кучу.
- Включайте музыку во время работы. Как ни странно, но звуки помогают лучше сосредоточиться и заряжают энергией. Конечно, музыка должна быть в тему – не напрягать, не отвлекать внимание на себя.
- Фиксируйте результаты. То есть переносите выполненные задачи в папку «завершенные» — это дисциплинирует мозг. Вы видите, что сделали за час, день, неделю, месяц и сколько осталось до финиша.
- Подключайте «напоминалки». Гаджеты могут стать вашими помощники в личной эффективности. Планируйте, на какое время поставить ту или иную задачу и, главное, выполняйте свой план.
- Старайтесь действовать последовательно, то есть делайте задачи одну за другой. Конечно, бывает необходимым выполнить сразу два дела за раз, но все хорошо в меру. Подходите к трате своих умственных ресурсов с позиции экономии: если не нужно напрягаться и включать режим многозадачности, то и не стоит этого делать.
- Отдыхайте разнообразно. Продуктивность в работе напрямую связана с качеством отдыха. Можно «пахать» 12 часов, приходить домой и падать без сил на кровать. А завтра снова на работу. Такой режим подходит для роботов, но у человека сильно творческое начало и продуктивность работы зависит от того, как он отдыхает после неё. Например, можно пролежать выходной на диване, уставившись в телевизор, или сходить в театр, музей, съездить с друзьями на пикник.
Многозадачность – это капризное и довольно сложное свойство психики человека. Если мы не сможем его обуздать, чтобы использовать себе во благо, то оно оседлает нас и выжмет все соки. Помните об этом!
Плюсы и минусы
Рассмотрим преимущества мультизадачности:
- При надлежащем планировании действительно можно эффективно решать несколько задач одновременно. То есть, выполняя дела, вы должны четко понимать, каких результатов должны достичь.
- Многозадачность помогает развить пластичность мышления и способность удержать в поле внимания несколько задач. Это неплохой тренажер для мозга.
- Способность делать несколько дел одновременно и делать это хорошо, помогает быстро реагировать на форс-мажорные обстоятельства, улучшает стратегическое мышление и видение ситуации. В некоторых нишах действительно полезно сразу охватить несколько направлений одновременно, проанализировать их перспективность и только потом принимать решения по каждому из них.
- Поверхностная обработка информации. Когда много всего, то мозг скользит по верхушках, не вникая в суть процессов. Такой человек берет общее изо всех сфер, но ни в одной не является профи.
- Высока вероятность ошибок. При недостаточной концентрации на задаче или при эффекте переноса данных с одной задачи на другую, неизменно совершаются ошибки. Внимание у многостаночника рассеивается, и это сильно вредит результату.
- Повышается утомляемость. Попытки ухватиться за всё сразу требует больших затрат энергии как физической, так и умственной. Человек быстрее устает, а продуктивность стремится к нулю.
- Растут горы неоконченных дел. Лихо начать 10-20 дел одновременно никто не запрещает, но не стоит ждать такого же быстрого их завершения. Из 10 начатых дел к финишной черте доводят 1-2 задачи, при этом сорвав все сроки и потратив в разы больше усилий. А что с остальными? Они лежат и ждут своей участи – годами, десятилетиями.
Последствия многозадачности бывают крайне неприятными. Увеличивается когнитивная нагрузка, то есть приходится тратить больше умственных ресурсов на обработку потока информации. Снижается продуктивность работы, многостаночники зачастую неправильно оценивают свои возможности и недооценивают силу отвлекающих факторов. Снижается способность к концентрации внимания на задаче, многозадачность не ценится в среде высоких технологий, научных исследований и других сферах со сложными алгоритмами работы.
Многозадачность приводит к выгоранию. Люди, практикующие такой подход, нарушают естественные механизмы мотивации и вознаграждения, которые имеются в нашем мозге. Нейробиология доказала, что снижение плотности серого вещества в передней поясной коре головного мозга из-за стресса приводит к потере радости от мыслительных усилий.
Совмещение дел может быть опасным для жизни и здоровья. Например, вы находитесь за рулем автомобиля и пытаетесь одновременно вести переговоры с партнером. Вероятность аварии возрастает в разы.
Резюме
Мы узнали, что такое многозадачность. Изучили, как работать в таком режиме, какие есть плюсы и минусы выполнения нескольких дел одновременно. Мультизадачность можно использовать для тренировки пластичности мозга, однако в рабочей среде полезнее развивать навык последовательного выполнения дел. Тише едешь – дальше будешь!
Источник