Что такое режим многозадачности в windows

Applies ToWindows 11 Windows 10

Поддержка Windows 10 прекратится в октябре 2025 г.

После 14 октября 2025 г. корпорация Майкрософт больше не будет предоставлять бесплатные обновления программного обеспечения из Центра обновления Windows, техническую помощь и исправления безопасности для Windows 10. Ваш компьютер по-прежнему будет работать, но мы рекомендуем перейти на Windows 11.

Подробнее

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

Ниже приведены main функций Windows, которые можно использовать для многозадаки:

  • Прикрепление

  • Переключение задач с помощью ALT+TAB

  • «Представление задач»

  • Несколько рабочих столов

Прикрепление

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

Вы можете привязать окно к одной стороне экрана, перетащив его к краю экрана или нажав клавиши Клавиша Windows​​​​​​​  + СТРЕЛКА .

Например, Клавиша Windows​​​​​​​  + СТРЕЛКА ВЛЕВО прикрепит окно к левой половине экрана, а Клавиша Windows​​​​​​​  + СТРЕЛКА ВПРАВО — к правой половине.

Снимок экрана: окно, прикрепленное к боковой части экрана.

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

Snap имеет много интересных функций. Дополнительные сведения об этом см. в статье Привязка к Windows.​​​​​​​

Переключение задач с помощью ALT+TAB

Сочетание клавиш ALT + TAB позволяет быстро переключаться между открытыми приложениями на текущем рабочем столе.

Чтобы использовать эту функцию, нажмите клавиши ALT + TAB на клавиатуре, а затем отпустите клавишу TAB. Откроется окно с эскизами всех открытых в настоящее время приложений. Удерживая нажатой клавишу ALT , вы можете нажать клавишу TAB , чтобы циклически перемещаться по приложениям. При каждом нажатии клавиши TAB выбранный фрагмент перемещается в следующее приложение.

После освобождения клавиши ALT выбранное приложение перейдет на передний план.

Снимок экрана: переключение задач в Windows с alt+TAB.

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

Вы можете выбрать поведение ALT+TAB при переключении между приложениями.

  1. В приложении «Настройки» на устройстве с Windows, выберите Системный > Многозадачность или используйте следующую ссылку:

    Многозадачность

  2. В разделе Показывать вкладки из приложений при привязке или нажатии клавиш ALT+TAB выберите один из следующих параметров:

  • Не показывать вкладки. Этот параметр позволяет переключаться только между открытыми окнами на текущем рабочем столе.

  • N последних вкладок. Этот параметр позволяет переключаться между открытыми окнами, а также включает в себя определенное количество последних вкладок, открытых в браузере Microsoft Edge.

Снимок экрана: параметры data-lazy-src=

«Представление задач»

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

Чтобы открыть представление задач, можно:

  • Нажмите кнопку представления задач на панели задач

  • Нажмите клавишу Клавиша Windows​​​​​​​  + TAB.

Снимок экрана: переключение задач в Windows при использовании кнопки переключения задач на панели задач.

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

Несколько рабочих столов

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

Снимок экрана: несколько рабочих столов в Windows.

Ниже описано, как создать рабочий стол.

  1. Откройте представление задач: наведите указатель мыши на значок представления задач на панели задач или нажмитеКлавиша Windows​​​​​​​  + TAB.

  2. Выберите Новый рабочий стол

  3. Откройте приложения, которые вы хотите использовать на этом рабочем столе

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

Переключиться между рабочими столами можно с помощью следующих параметров:

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

  • Используя сочетания клавиш, нажав клавиши Клавиша Windows​​​​​​​  + CTRL + СТРЕЛКА ВЛЕВО , чтобы переключиться на рабочий стол слева, и Клавиша Windows​​​​​​​  + CTRL + СТРЕЛКА ВПРАВО для переключения на рабочий стол справа

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

Перемещение окон между рабочими столами — это удобный способ упорядочить рабочую область. Это можно сделать следующим образом:

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

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

Вы можете настроить некоторые аспекты нескольких рабочих столов, включая возможность выбора различных фонов для каждого рабочего стола. Дополнительные сведения см. в статье Настройка нескольких рабочих столов в Windows.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

Марат Хайрулин, эксперт Microsoft в России, продолжает исследовать нюансы работы с несколькими задачами и рассказывает о совмещении окон и разделении экрана, о вашей личной машине времени для сайтов и документов, и о реальной пользе виртуальных столов.

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

Переключение по-старому и по-новому

Переключение между приложениями – наверное то, что большинство из нас делает «на автомате», и никого, конечно, не удивит сочетание клавиш Alt + Tab. Но если одновременно нажать также и Ctrl (то есть Ctrl + Alt + Tab), то эта комбинация зафиксирует меню со всеми открытыми окнами на экране и позволит выбрать нужное приложение одним кликом мыши или касанием пальца (выбрать окно можно также с помощью стрелок на клавиатуре, а открыть – с помощью Enter). Может быть полезно, когда у вас открыто много окон.

Чуть менее известное, но тоже классическое сочетание клавиш Windows + Tab дает больше возможностей, чем кажется на первый взгляд.

Нажимая эти клавиши в актуальных версиях Windows 10, мы попадаем в раздел «Представление задач». Здесь можно не только переключаться между приложениями, но и воспользоваться «Временной шкалой» и «Виртуальными рабочими столами». К слову, вместо горячих клавиш вы можете кликнуть по кнопке «Представление задач» (обычно она расположена рядом с кнопкой «Пуск») или провести пальцем от левого края к центру сенсорного экрана. Кстати, если у вас современный ноутбук – попробуйте жест для тачпада: проведите по нему тремя пальцами вверх.

Режим Представление задач

«Временная шкала»

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

Для меня «Временная шкала» стала своеобразной машиной времени. Работа над многими проектами длится несколько дней. И если, допустим, в прошлую пятницу я работал с определенными сайтами и документами, вернувшись к этому проекту в среду, я смогу легко восстановить картину. Я просто отмотаю шкалу до нужной даты – той самой пятницы, увижу и смогу открыть те самые сайты и документы, в которые я тогда был погружен.

Поиск на Временной шкале

Поиск на «Временной шкале» тоже не раз меня выручал. В отличие от обычного поиска по файлам, я смогу искать не среди всех документов на устройстве (а их может быть очень много), а именно среди тех, с которыми я работал в последние дни. Возможно, вам знакомо сочетание Ctrl + F, запускающее поиск в Проводнике и во многих приложениях. Эта комбинация сработает и на экране «Представление задач»: то есть можно нажать сначала Windows + Tab, а затем – Ctrl + F и ввести искомое слово для поиска по «Временной шкале».

* Подробная справка по настройкам «Временной шкалы».

Виртуальные рабочие столы Windows 10

Концепция виртуальных рабочих столов далеко не нова. Если говорить о Windows, то одним из вариантов их использования была утилита Desktops, которую когда-то (последняя версия вышла в 2012 году) разработал Марк Руссинович. В Windows 10 виртуальные рабочие столы встроены в систему и помогают разделять потоки задач, переключаться между ними.

Если раньше вы не работали с виртуальными столами, для понимания их логики представьте такую аналогию: вам доступно несколько мониторов, на каждом вы можете открыть нужные программы, разделив их по рабочим потокам, например: на одном мониторе – работа с почтой и календарем, на другом – работа с несколькими документами Word, а на третьем – работа с браузером и OneNote. В каждый момент вы смотрите только на один монитор (виртуальный рабочий стол) со своим набором приложений. А переключаясь между виртуальными столами, вы как будто переводите взгляд с одного монитора на другой.

Перетаскивание окна для переноса его на новый виртуальный рабочий стол

Создать новый виртуальный рабочий стол можно на экране «Представление задач»: нажмите Windows + Tab и перетащите нужные окна открытых приложений на поле с надписью «+ Создать рабочий стол», и они будут перемещены на другой виртуальный рабочий стол. Можно также создать новый, пустой виртуальный стол (Windows + Ctrl + D) и уже затем открыть на нем нужные программы.

«Переводить взгляд» (то есть переключаться между настроенными рабочими столами) можно, выбирая нужный стол на экране «Представление задач», но намного удобнее переключаться с помощью горячих клавиш: Windows + Ctrl + стрелки вправо/влево, а на современных тачпадах – 4 пальца влево или вправо.

Полезные решения для работы с несколькими приложениями

Теперь еще об одной повседневной необходимости – работе с несколькими приложениями одновременно.

Разделение экрана

Первой возможности, о которой хочу напомнить, уже много лет, и в первоначальном виде (под названием Aero Snap) она появилась еще в Windows 7. В Windows 10 ее возможности расширили и назвали Snap Assist. Речь про разделение экрана для закрепления двух (а в Windows 10 – до четырех) приложений.

Snap Assist предлагает выбрать второе окно для закрепления справа

Чтобы это сделать, нужно взять приложение за самую верхнюю полоску, поднести его к правой или левой границе экрана до появления на экране его «тени» и отпустить (тем самым, закрепив первое приложение), а затем в появившихся рядом миниатюрах других приложений выбрать второе для закрепления рядом.  Сценарий несложный, работает и для мыши, и для пальца. Еще проще это можно сделать с помощью сочетания клавиш Windows + клавиши со стрелками вправо/влево. Этому сочетанию уже больше 10 лет, но у тех, кто применяет его впервые, и сейчас порой возникает ощущение «цифровой магии».

Любознательным пользователям также напомню, что в Windows 10 можно отправлять приложение в «четвертинку» экрана, перенеся его в угол (или используя дополнительно клавиши Windows + стрелки вверх/вниз). При закреплении двух приложений можно перемещать границу между ними, выделяя какому-то из приложений больше места. Чтобы выбрать приложения для закрепления на экране, можно кликнуть правой кнопкой мыши по их миниатюрам на экране «Представление задач».

Окно поверх

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

Мини-режим встроенного видеоплеера (приложение «Кино и ТВ», которое воспроизводит видео в Windows 10 по умолчанию). Запустите видео и нажмите на небольшую кнопку в правом нижнем углу (Воспроизвести в мини-режиме), окно с видеороликом будет размещено поверх всех окон.

Видео в режиме Окно поверх

Аналогичную возможность, только с закреплением поверх всех приложений окна браузера, можно получить с использованием отдельных утилит. Однажды мне потребовалось работать над документом, постоянно сверяясь при этом с сайтом одного онлайн-сервиса, и меня выручило приложение Always on Top, доступное в Microsoft Store. Оно встраивается в меню «Поделиться» в Edge и позволяет отправить любой сайт в окно, расположенное поверх всех приложений. Я мог бы пошутить, что этот вариант отлично подошел бы для просмотра каналов на YouTube «одним глазком» во время работы, например, над сводными таблицами в Excel. Но как мы и обсуждали в первой заметке, такая многозадачность скорее повредит и просмотру, и работе.

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

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

Сколько из лайфхаков вы использовали?

47.12% 2-3. И они пригождаются49

9.62% Ни одного (и теперь это в прошлом)10

30.77% Сижу на Linux/MacOS32

Проголосовали 104 пользователя. Воздержались 10 пользователей.

  1. Нажмите комбинацию клавиш Win+I, чтобы открыть раздел Настройки, перейдите в раздел Система (System), а затем перейдите в раздел Многозадачность (Multitasking).

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

    Чтобы отключить этот режим, выключите переключатель функции Прикрепление окон (Snap windows).

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

Чтобы развернуть окно на весь экран:

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

    Чтобы развернуть окно на пол-экрана:

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

  2. Нажмите правой кнопкой мыши на верхнюю левую опцию.

  3. Окно будет развернуто на пол-экрана.

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

Чтобы развернуть окно на четверть экрана:

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

  2. Наведите курсор на опцию отображения четырех окон и нажмите на нее правой кнопкой мыши.

  3. Окно отобразится на четверть экрана.

Вы также можете использовать сочетания клавиш, чтобы прикрепить окна к углам экрана.

  • Одновременно нажмите на кнопку Пуск и на стрелку вверх, чтобы развернуть окно на весь экран. Одновременно нажмите на кнопку Пуск и на стрелку вниз, чтобы вернуть окно в исходное положение.
  • Одновременно нажмите на кнопку Пуск и на стрелку влево/вправо, чтобы развернуть окно на пол-экрана. Одновременно нажмите на кнопку Пуск и на стрелку вправо/влево, чтобы вернуть окно в исходное положение.
  • Одновременно нажмите на кнопку Пуск, на стрелку влево/вправо и на стрелку вверх/вниз, чтобы развернуть окно на четверть экрана. Снова одновременно нажмите на кнопку Пуск, на стрелку вправо/влево и на стрелку вверх/вниз, чтобы вернуть окно в исходное положение.

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

https://youtu.be/vOZq-Hty9MQ

Пропустить расположение приложений на экране

Часто, открыв сразу несколько приложений, мы переключались между ними в процессе работы. Теперь благодаря улучшениям режима Snap в Windows 10 размещать окна приложений стало еще проще. Вы сможете быстро расставить на экране до четырех приложений, просто перетащив их в углы. Система даже предложит вам выбрать, каким из открытых приложений следует заполнить пустые места.

Контроль над рабочим столом

Иногда нам приходится работать с множеством приложений, документов и файлов одновременно. Поэтому мы добавили в Windows 10 кнопку представления задач. Теперь вы сможете одним кликом просмотреть все открытые окна в едином представлении. А если вам покажется, что для одного экрана открыто слишком много окон, вы можете создать виртуальный рабочий стол. Это позволит освободить место и сосредоточиться на вашей задаче.

Multi-doing-image

Единый центр уведомлений

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

Windows 10 — это лучшие возможности для выполнения привычных задач. Так что не теряйте время: обновите систему и оцените ее удобство!

Многозада́чность (англ. 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[источник не указан 1344 дня], которая после долгой доработки системы, изначально обладавшей кооперативной многозадачностью, аналогичной 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. 1 2 [Герберт Шилдт «Полный справочник по Java», 7-е издание.:Пер. с англ.-М.:ООО «И. Д. Вильямс», 2007, стр. 253—254]
  2. Mealy G. H., Witt B. I., Clark W. A. The functional structure of OS/360. IBM Systems Journal, 5, № 1, 1966
  3. Белецкий Я. ТопСпид: Расширенная версия языка Модула-2 для персональных компьютеров IBM. — М.: «Машиностроение», 1993
  4. Янг С. Алгоритмические языки реального времени
  Аспекты операционных систем (история • список)
Ядро

Гибридное • Микро • Модульное • Монолитное • Нано • Экзо • Драйвер • Пространство пользователя • Область пользователя

Управление
процессами

Режимы (супервизора • реальный • защищённый) • Прерывание • Кольца защиты • Переключение контекста • Многозадачность (вытесняющая • кооперативная • мультипрограммирование) • Процесс • Управление процессом • Планировщик задач • Многопоточность

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

Защита памяти • Сегментная адресация памяти • Страничная память • Менеджер виртуальной памяти • Ошибка сегментации • Общая ошибка защиты

Прочее

Загрузчик ОС • API • VFS • Компьютерная сеть • GUI • Слой аппаратных абстракций (HAL)

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как удалить все ненужные файлы с компьютера windows 11
  • Перезагрузить сетевой интерфейс windows
  • Ваша копия не прошла проверку на подлинность windows 7 как убрать
  • Как сбросить учетную запись майкрософт на windows 10 при входе в систему через биос
  • Сетевой диск windows 10 пропадает